From 61cd78cd9f8258861fde3d12f38411c13e93e981 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:20:13 -0700 Subject: [PATCH 1/9] feat: upgrade to cosmos sdk v0.50 (#408) Co-authored-by: John Letey --- .changelog/v4.1.0/summary.md | 4 +- .changelog/v8.0.0/summary.md | 27 + .github/mergify.yml | 16 - .github/workflows/e2e-tests.yaml | 4 +- .github/workflows/simulation-tests.yaml | 19 - .github/workflows/unit-tests.yaml | 19 - .gitignore | 1 + CHANGELOG.md | 34 +- Makefile | 139 +- ante.go | 68 + app.go | 314 + app.yaml | 120 + app/ante.go | 76 - app/app.go | 1001 - app/export.go | 144 - app/genesis.go | 21 - app/simulation_test.go | 97 - app/upgrades/numus/constants.go | 10 - app/upgrades/numus/store.go | 16 - app/upgrades/numus/upgrade.go | 63 - buf.work.yaml | 3 - chains.yaml | 7 - cmd/commands.go | 160 + cmd/cosmosapp.go | 40 - cmd/encoding.go | 44 - cmd/genaccounts.go | 190 - cmd/nobled/main.go | 40 +- cmd/prefixes.go | 19 - cmd/root.go | 496 +- cmd/util.go | 189 - docs/airdrop/noble_airdrop.json | 77842 ---------------- docs/docs.go | 6 - docs/modules/globalfee.md | 224 - docs/modules/tariff.md | 44 - docs/static/openapi.yml | 73202 --------------- docs/tokenfactory_quickstart.md | 37 - e2e/cctp_deposit_for_burn_test.go | 190 + e2e/cctp_deposit_for_burn_with_caller_test.go | 189 + .../cctp_receive_message_test.go | 151 +- .../cctp_receive_message_with_caller_test.go | 157 +- .../cctp_replace_deposit_for_burn_test.go | 134 +- e2e/cctp_roles_test.go | 129 + e2e/go.mod | 294 + {interchaintest => e2e}/go.sum | 1604 +- {interchaintest => e2e}/readme.md | 0 e2e/utils.go | 727 + export.go | 42 + go.mod | 299 +- go.sum | 1753 +- go.work | 6 + go.work.sum | 2193 + interchaintest/cctp_deposit_for_burn_test.go | 224 - .../cctp_deposit_for_burn_with_caller_test.go | 225 - interchaintest/cctp_roles_test.go | 282 - interchaintest/forwarding_test.go | 341 - interchaintest/genesis_test.go | 600 - interchaintest/globalfee_test.go | 141 - interchaintest/go.mod | 200 - interchaintest/ibc_bps_fee_test.go | 175 - .../ibc_client_expire_substitute_test.go | 181 - interchaintest/paramauthority_test.go | 196 - interchaintest/upgrade_argon_test.go | 292 - interchaintest/upgrade_grand-1_test.go | 166 - interchaintest/upgrade_noble-1_test.go | 153 - interchaintest/upgrade_radon_test.go | 106 - interchaintest/upgrade_test.go | 293 - legacy.go | 130 + local.sh | 36 + play.sh | 158 - proto/Dockerfile | 23 - proto/buf.gen.yaml | 8 - proto/buf.lock | 8 - proto/buf.yaml | 17 - proto/generate.sh | 6 - proto/globalfee/genesis.proto | 35 - proto/globalfee/query.proto | 23 - proto/tariff/genesis.proto | 12 - proto/tariff/params.proto | 49 - proto/tariff/query.proto | 21 - proto/tokenfactory/blacklisted.proto | 8 - proto/tokenfactory/blacklister.proto | 8 - proto/tokenfactory/genesis.proto | 32 - proto/tokenfactory/master_minter.proto | 8 - proto/tokenfactory/minter_controller.proto | 9 - proto/tokenfactory/minters.proto | 12 - proto/tokenfactory/minting_denom.proto | 8 - proto/tokenfactory/owner.proto | 8 - proto/tokenfactory/params.proto | 11 - proto/tokenfactory/paused.proto | 8 - proto/tokenfactory/pauser.proto | 8 - proto/tokenfactory/query.proto | 175 - proto/tokenfactory/tx.proto | 135 - testutil/keeper/bankkeeper.go | 27 - testutil/keeper/fiattokenfactory.go | 50 - testutil/keeper/tokenfactory.go | 50 - testutil/network/network.go | 136 - testutil/nullify/nullify.go | 57 - testutil/sample/sample.go | 39 - upgrade/constants.go | 12 + upgrade/store.go | 22 + upgrade/upgrade.go | 202 + x/globalfee/README.md | 5 - x/globalfee/alias.go | 9 - x/globalfee/ante/antetest/fee_test.go | 625 - x/globalfee/ante/antetest/fee_test_setup.go | 90 - x/globalfee/ante/antetest/fee_utils_test.go | 415 - x/globalfee/ante/fee.go | 158 - x/globalfee/ante/fee_utils.go | 196 - x/globalfee/client/cli/query.go | 48 - x/globalfee/genesis_test.go | 122 - x/globalfee/module.go | 134 - x/globalfee/querier.go | 46 - x/globalfee/querier_test.go | 57 - x/globalfee/types/genesis.go | 40 - x/globalfee/types/genesis.pb.go | 578 - x/globalfee/types/keys.go | 8 - x/globalfee/types/params.go | 155 - x/globalfee/types/params_test.go | 101 - x/globalfee/types/query.pb.go | 533 - x/globalfee/types/query.pb.gw.go | 153 - x/tariff/README.md | 3 - x/tariff/abci.go | 12 - x/tariff/client/cli/query.go | 49 - x/tariff/genesis.go | 21 - x/tariff/keeper/allocation.go | 63 - x/tariff/keeper/keeper.go | 133 - x/tariff/keeper/params.go | 17 - x/tariff/keeper/query_server.go | 17 - x/tariff/module.go | 158 - x/tariff/module_simulation.go | 30 - x/tariff/types/expected_keepers.go | 21 - x/tariff/types/genesis.go | 14 - x/tariff/types/genesis.pb.go | 320 - x/tariff/types/keys.go | 6 - x/tariff/types/params.go | 151 - x/tariff/types/params.pb.go | 825 - x/tariff/types/query.pb.go | 530 - x/tariff/types/query.pb.gw.go | 153 - x/tokenfactory/client/cli/query.go | 38 - .../client/cli/query_blacklisted.go | 73 - .../client/cli/query_blacklisted_test.go | 165 - .../client/cli/query_blacklister.go | 36 - .../client/cli/query_blacklister_test.go | 72 - .../client/cli/query_master_minter.go | 36 - .../client/cli/query_master_minter_test.go | 72 - .../client/cli/query_minter_controller.go | 74 - .../cli/query_minter_controller_test.go | 161 - x/tokenfactory/client/cli/query_minters.go | 73 - .../client/cli/query_minters_test.go | 161 - .../client/cli/query_minting_denom.go | 36 - .../client/cli/query_minting_denom_test.go | 84 - x/tokenfactory/client/cli/query_owner.go | 36 - x/tokenfactory/client/cli/query_owner_test.go | 72 - x/tokenfactory/client/cli/query_params.go | 34 - x/tokenfactory/client/cli/query_paused.go | 36 - .../client/cli/query_paused_test.go | 72 - x/tokenfactory/client/cli/query_pauser.go | 36 - .../client/cli/query_pauser_test.go | 72 - x/tokenfactory/client/cli/tx.go | 39 - x/tokenfactory/client/cli/tx_accept_owner.go | 38 - x/tokenfactory/client/cli/tx_blacklist.go | 40 - x/tokenfactory/client/cli/tx_burn.go | 44 - .../client/cli/tx_configure_minter.go | 46 - .../cli/tx_configure_minter_controller.go | 42 - x/tokenfactory/client/cli/tx_mint.go | 46 - x/tokenfactory/client/cli/tx_pause.go | 38 - x/tokenfactory/client/cli/tx_remove_minter.go | 40 - .../client/cli/tx_remove_minter_controller.go | 41 - x/tokenfactory/client/cli/tx_unblacklist.go | 40 - x/tokenfactory/client/cli/tx_unpause.go | 38 - .../client/cli/tx_update_blacklister.go | 40 - .../client/cli/tx_update_master_minter.go | 40 - x/tokenfactory/client/cli/tx_update_owner.go | 40 - x/tokenfactory/client/cli/tx_update_pauser.go | 40 - x/tokenfactory/genesis.go | 93 - x/tokenfactory/genesis_test.go | 81 - x/tokenfactory/keeper/blacklisted.go | 49 - x/tokenfactory/keeper/blacklisted_test.go | 76 - x/tokenfactory/keeper/blacklister.go | 27 - x/tokenfactory/keeper/blacklister_test.go | 30 - x/tokenfactory/keeper/grpc_query.go | 7 - .../keeper/grpc_query_blacklisted.go | 60 - .../keeper/grpc_query_blacklisted_test.go | 131 - .../keeper/grpc_query_blacklister.go | 24 - .../keeper/grpc_query_blacklister_test.go | 49 - .../keeper/grpc_query_master_minter.go | 24 - .../keeper/grpc_query_master_minter_test.go | 49 - .../keeper/grpc_query_minter_controller.go | 58 - .../grpc_query_minter_controller_test.go | 126 - x/tokenfactory/keeper/grpc_query_minters.go | 57 - .../keeper/grpc_query_minters_test.go | 126 - .../keeper/grpc_query_minting_denom.go | 22 - .../keeper/grpc_query_minting_denom_test.go | 49 - x/tokenfactory/keeper/grpc_query_owner.go | 24 - .../keeper/grpc_query_owner_test.go | 50 - x/tokenfactory/keeper/grpc_query_params.go | 19 - .../keeper/grpc_query_params_test.go | 21 - x/tokenfactory/keeper/grpc_query_paused.go | 22 - .../keeper/grpc_query_paused_test.go | 49 - x/tokenfactory/keeper/grpc_query_pauser.go | 24 - .../keeper/grpc_query_pauser_test.go | 49 - x/tokenfactory/keeper/keeper.go | 79 - x/tokenfactory/keeper/master_minter.go | 27 - x/tokenfactory/keeper/master_minter_test.go | 30 - x/tokenfactory/keeper/minter_controller.go | 64 - .../keeper/minter_controller_test.go | 64 - x/tokenfactory/keeper/minters.go | 63 - x/tokenfactory/keeper/minters_test.go | 63 - x/tokenfactory/keeper/minting_denom.go | 51 - x/tokenfactory/keeper/minting_denom_test.go | 31 - x/tokenfactory/keeper/msg_server.go | 17 - .../keeper/msg_server_accept_owner.go | 31 - x/tokenfactory/keeper/msg_server_blacklist.go | 44 - x/tokenfactory/keeper/msg_server_burn.go | 65 - .../keeper/msg_server_configure_minter.go | 46 - .../msg_server_configure_minter_controller.go | 32 - x/tokenfactory/keeper/msg_server_mint.go | 80 - x/tokenfactory/keeper/msg_server_pause.go | 33 - .../keeper/msg_server_remove_minter.go | 42 - .../msg_server_remove_minter_controller.go | 32 - .../keeper/msg_server_unblacklist.go | 40 - x/tokenfactory/keeper/msg_server_unpause.go | 33 - .../keeper/msg_server_update_blacklister.go | 39 - .../keeper/msg_server_update_master_minter.go | 39 - .../keeper/msg_server_update_owner.go | 37 - .../keeper/msg_server_update_pauser.go | 39 - x/tokenfactory/keeper/owner.go | 53 - x/tokenfactory/keeper/owner_test.go | 37 - x/tokenfactory/keeper/params.go | 16 - x/tokenfactory/keeper/params_test.go | 18 - x/tokenfactory/keeper/paused.go | 27 - x/tokenfactory/keeper/paused_test.go | 29 - x/tokenfactory/keeper/pauser.go | 27 - x/tokenfactory/keeper/pauser_test.go | 30 - x/tokenfactory/module.go | 163 - x/tokenfactory/module_simulation.go | 306 - x/tokenfactory/simulation/blacklist.go | 29 - x/tokenfactory/simulation/burn.go | 29 - x/tokenfactory/simulation/configure_minter.go | 29 - .../simulation/configure_minter_controller.go | 29 - x/tokenfactory/simulation/helpers.go | 15 - x/tokenfactory/simulation/mint.go | 29 - x/tokenfactory/simulation/pause.go | 29 - x/tokenfactory/simulation/remove_minter.go | 29 - .../simulation/remove_minter_controller.go | 29 - x/tokenfactory/simulation/unblacklist.go | 29 - x/tokenfactory/simulation/unpause.go | 29 - .../simulation/update_blacklister.go | 29 - .../simulation/update_master_minter.go | 29 - x/tokenfactory/simulation/update_owner.go | 29 - x/tokenfactory/simulation/update_pauser.go | 29 - x/tokenfactory/types/blacklisted.pb.go | 317 - x/tokenfactory/types/blacklister.pb.go | 315 - x/tokenfactory/types/codec.go | 59 - x/tokenfactory/types/errors.go | 21 - x/tokenfactory/types/expected_keepers.go | 23 - x/tokenfactory/types/genesis.go | 138 - x/tokenfactory/types/genesis.pb.go | 883 - x/tokenfactory/types/genesis_test.go | 186 - x/tokenfactory/types/keys.go | 49 - x/tokenfactory/types/master_minter.pb.go | 315 - x/tokenfactory/types/message_accept_owner.go | 45 - x/tokenfactory/types/message_blacklist.go | 50 - .../types/message_blacklist_test.go | 51 - x/tokenfactory/types/message_burn.go | 59 - x/tokenfactory/types/message_burn_test.go | 42 - .../types/message_configure_minter.go | 61 - .../message_configure_minter_controller.go | 55 - ...essage_configure_minter_controller_test.go | 63 - .../types/message_configure_minter_test.go | 53 - x/tokenfactory/types/message_mint.go | 65 - x/tokenfactory/types/message_mint_test.go | 53 - x/tokenfactory/types/message_pause.go | 45 - x/tokenfactory/types/message_pause_test.go | 40 - x/tokenfactory/types/message_remove_minter.go | 50 - .../types/message_remove_minter_controller.go | 50 - .../message_remove_minter_controller_test.go | 51 - .../types/message_remove_minter_test.go | 51 - x/tokenfactory/types/message_unblacklist.go | 50 - .../types/message_unblacklist_test.go | 51 - x/tokenfactory/types/message_unpause.go | 45 - x/tokenfactory/types/message_unpause_test.go | 40 - .../types/message_update_blacklister.go | 50 - .../types/message_update_blacklister_test.go | 51 - .../types/message_update_master_minter.go | 50 - .../message_update_master_minter_test.go | 51 - x/tokenfactory/types/message_update_owner.go | 50 - .../types/message_update_owner_test.go | 51 - x/tokenfactory/types/message_update_pauser.go | 50 - .../types/message_update_pauser_test.go | 51 - x/tokenfactory/types/minter_controller.pb.go | 369 - x/tokenfactory/types/minters.pb.go | 375 - x/tokenfactory/types/minting_denom.pb.go | 315 - x/tokenfactory/types/owner.pb.go | 314 - x/tokenfactory/types/params.go | 39 - x/tokenfactory/types/params.pb.go | 264 - x/tokenfactory/types/paused.pb.go | 304 - x/tokenfactory/types/pauser.pb.go | 314 - x/tokenfactory/types/query.pb.go | 5076 - x/tokenfactory/types/query.pb.gw.go | 1095 - x/tokenfactory/types/tx.pb.go | 5881 -- 301 files changed, 7320 insertions(+), 190267 deletions(-) create mode 100644 .changelog/v8.0.0/summary.md delete mode 100644 .github/mergify.yml delete mode 100644 .github/workflows/simulation-tests.yaml delete mode 100644 .github/workflows/unit-tests.yaml create mode 100644 ante.go create mode 100644 app.go create mode 100644 app.yaml delete mode 100644 app/ante.go delete mode 100644 app/app.go delete mode 100644 app/export.go delete mode 100644 app/genesis.go delete mode 100644 app/simulation_test.go delete mode 100644 app/upgrades/numus/constants.go delete mode 100644 app/upgrades/numus/store.go delete mode 100644 app/upgrades/numus/upgrade.go delete mode 100644 buf.work.yaml delete mode 100644 chains.yaml create mode 100644 cmd/commands.go delete mode 100644 cmd/cosmosapp.go delete mode 100644 cmd/encoding.go delete mode 100644 cmd/genaccounts.go delete mode 100644 cmd/prefixes.go delete mode 100644 cmd/util.go delete mode 100644 docs/airdrop/noble_airdrop.json delete mode 100644 docs/docs.go delete mode 100644 docs/modules/globalfee.md delete mode 100644 docs/modules/tariff.md delete mode 100644 docs/static/openapi.yml delete mode 100644 docs/tokenfactory_quickstart.md create mode 100644 e2e/cctp_deposit_for_burn_test.go create mode 100644 e2e/cctp_deposit_for_burn_with_caller_test.go rename {interchaintest => e2e}/cctp_receive_message_test.go (56%) rename {interchaintest => e2e}/cctp_receive_message_with_caller_test.go (56%) rename {interchaintest => e2e}/cctp_replace_deposit_for_burn_test.go (68%) create mode 100644 e2e/cctp_roles_test.go create mode 100644 e2e/go.mod rename {interchaintest => e2e}/go.sum (53%) rename {interchaintest => e2e}/readme.md (100%) create mode 100644 e2e/utils.go create mode 100644 export.go create mode 100644 go.work create mode 100644 go.work.sum delete mode 100644 interchaintest/cctp_deposit_for_burn_test.go delete mode 100644 interchaintest/cctp_deposit_for_burn_with_caller_test.go delete mode 100644 interchaintest/cctp_roles_test.go delete mode 100644 interchaintest/forwarding_test.go delete mode 100644 interchaintest/genesis_test.go delete mode 100644 interchaintest/globalfee_test.go delete mode 100644 interchaintest/go.mod delete mode 100644 interchaintest/ibc_bps_fee_test.go delete mode 100644 interchaintest/ibc_client_expire_substitute_test.go delete mode 100644 interchaintest/paramauthority_test.go delete mode 100644 interchaintest/upgrade_argon_test.go delete mode 100644 interchaintest/upgrade_grand-1_test.go delete mode 100644 interchaintest/upgrade_noble-1_test.go delete mode 100644 interchaintest/upgrade_radon_test.go delete mode 100644 interchaintest/upgrade_test.go create mode 100644 legacy.go create mode 100644 local.sh delete mode 100755 play.sh delete mode 100644 proto/Dockerfile delete mode 100644 proto/buf.gen.yaml delete mode 100644 proto/buf.lock delete mode 100644 proto/buf.yaml delete mode 100644 proto/generate.sh delete mode 100644 proto/globalfee/genesis.proto delete mode 100644 proto/globalfee/query.proto delete mode 100644 proto/tariff/genesis.proto delete mode 100644 proto/tariff/params.proto delete mode 100644 proto/tariff/query.proto delete mode 100644 proto/tokenfactory/blacklisted.proto delete mode 100644 proto/tokenfactory/blacklister.proto delete mode 100644 proto/tokenfactory/genesis.proto delete mode 100644 proto/tokenfactory/master_minter.proto delete mode 100644 proto/tokenfactory/minter_controller.proto delete mode 100644 proto/tokenfactory/minters.proto delete mode 100644 proto/tokenfactory/minting_denom.proto delete mode 100644 proto/tokenfactory/owner.proto delete mode 100644 proto/tokenfactory/params.proto delete mode 100644 proto/tokenfactory/paused.proto delete mode 100644 proto/tokenfactory/pauser.proto delete mode 100644 proto/tokenfactory/query.proto delete mode 100644 proto/tokenfactory/tx.proto delete mode 100644 testutil/keeper/bankkeeper.go delete mode 100644 testutil/keeper/fiattokenfactory.go delete mode 100644 testutil/keeper/tokenfactory.go delete mode 100644 testutil/network/network.go delete mode 100644 testutil/nullify/nullify.go delete mode 100644 testutil/sample/sample.go create mode 100644 upgrade/constants.go create mode 100644 upgrade/store.go create mode 100644 upgrade/upgrade.go delete mode 100644 x/globalfee/README.md delete mode 100644 x/globalfee/alias.go delete mode 100644 x/globalfee/ante/antetest/fee_test.go delete mode 100644 x/globalfee/ante/antetest/fee_test_setup.go delete mode 100644 x/globalfee/ante/antetest/fee_utils_test.go delete mode 100644 x/globalfee/ante/fee.go delete mode 100644 x/globalfee/ante/fee_utils.go delete mode 100644 x/globalfee/client/cli/query.go delete mode 100644 x/globalfee/genesis_test.go delete mode 100644 x/globalfee/module.go delete mode 100644 x/globalfee/querier.go delete mode 100644 x/globalfee/querier_test.go delete mode 100644 x/globalfee/types/genesis.go delete mode 100644 x/globalfee/types/genesis.pb.go delete mode 100644 x/globalfee/types/keys.go delete mode 100644 x/globalfee/types/params.go delete mode 100644 x/globalfee/types/params_test.go delete mode 100644 x/globalfee/types/query.pb.go delete mode 100644 x/globalfee/types/query.pb.gw.go delete mode 100644 x/tariff/README.md delete mode 100644 x/tariff/abci.go delete mode 100644 x/tariff/client/cli/query.go delete mode 100644 x/tariff/genesis.go delete mode 100644 x/tariff/keeper/allocation.go delete mode 100644 x/tariff/keeper/keeper.go delete mode 100644 x/tariff/keeper/params.go delete mode 100644 x/tariff/keeper/query_server.go delete mode 100644 x/tariff/module.go delete mode 100644 x/tariff/module_simulation.go delete mode 100644 x/tariff/types/expected_keepers.go delete mode 100644 x/tariff/types/genesis.go delete mode 100644 x/tariff/types/genesis.pb.go delete mode 100644 x/tariff/types/keys.go delete mode 100644 x/tariff/types/params.go delete mode 100644 x/tariff/types/params.pb.go delete mode 100644 x/tariff/types/query.pb.go delete mode 100644 x/tariff/types/query.pb.gw.go delete mode 100644 x/tokenfactory/client/cli/query.go delete mode 100644 x/tokenfactory/client/cli/query_blacklisted.go delete mode 100644 x/tokenfactory/client/cli/query_blacklisted_test.go delete mode 100644 x/tokenfactory/client/cli/query_blacklister.go delete mode 100644 x/tokenfactory/client/cli/query_blacklister_test.go delete mode 100644 x/tokenfactory/client/cli/query_master_minter.go delete mode 100644 x/tokenfactory/client/cli/query_master_minter_test.go delete mode 100644 x/tokenfactory/client/cli/query_minter_controller.go delete mode 100644 x/tokenfactory/client/cli/query_minter_controller_test.go delete mode 100644 x/tokenfactory/client/cli/query_minters.go delete mode 100644 x/tokenfactory/client/cli/query_minters_test.go delete mode 100644 x/tokenfactory/client/cli/query_minting_denom.go delete mode 100644 x/tokenfactory/client/cli/query_minting_denom_test.go delete mode 100644 x/tokenfactory/client/cli/query_owner.go delete mode 100644 x/tokenfactory/client/cli/query_owner_test.go delete mode 100644 x/tokenfactory/client/cli/query_params.go delete mode 100644 x/tokenfactory/client/cli/query_paused.go delete mode 100644 x/tokenfactory/client/cli/query_paused_test.go delete mode 100644 x/tokenfactory/client/cli/query_pauser.go delete mode 100644 x/tokenfactory/client/cli/query_pauser_test.go delete mode 100644 x/tokenfactory/client/cli/tx.go delete mode 100644 x/tokenfactory/client/cli/tx_accept_owner.go delete mode 100644 x/tokenfactory/client/cli/tx_blacklist.go delete mode 100644 x/tokenfactory/client/cli/tx_burn.go delete mode 100644 x/tokenfactory/client/cli/tx_configure_minter.go delete mode 100644 x/tokenfactory/client/cli/tx_configure_minter_controller.go delete mode 100644 x/tokenfactory/client/cli/tx_mint.go delete mode 100644 x/tokenfactory/client/cli/tx_pause.go delete mode 100644 x/tokenfactory/client/cli/tx_remove_minter.go delete mode 100644 x/tokenfactory/client/cli/tx_remove_minter_controller.go delete mode 100644 x/tokenfactory/client/cli/tx_unblacklist.go delete mode 100644 x/tokenfactory/client/cli/tx_unpause.go delete mode 100644 x/tokenfactory/client/cli/tx_update_blacklister.go delete mode 100644 x/tokenfactory/client/cli/tx_update_master_minter.go delete mode 100644 x/tokenfactory/client/cli/tx_update_owner.go delete mode 100644 x/tokenfactory/client/cli/tx_update_pauser.go delete mode 100644 x/tokenfactory/genesis.go delete mode 100644 x/tokenfactory/genesis_test.go delete mode 100644 x/tokenfactory/keeper/blacklisted.go delete mode 100644 x/tokenfactory/keeper/blacklisted_test.go delete mode 100644 x/tokenfactory/keeper/blacklister.go delete mode 100644 x/tokenfactory/keeper/blacklister_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query.go delete mode 100644 x/tokenfactory/keeper/grpc_query_blacklisted.go delete mode 100644 x/tokenfactory/keeper/grpc_query_blacklisted_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_blacklister.go delete mode 100644 x/tokenfactory/keeper/grpc_query_blacklister_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_master_minter.go delete mode 100644 x/tokenfactory/keeper/grpc_query_master_minter_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minter_controller.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minter_controller_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minters.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minters_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minting_denom.go delete mode 100644 x/tokenfactory/keeper/grpc_query_minting_denom_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_owner.go delete mode 100644 x/tokenfactory/keeper/grpc_query_owner_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_params.go delete mode 100644 x/tokenfactory/keeper/grpc_query_params_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_paused.go delete mode 100644 x/tokenfactory/keeper/grpc_query_paused_test.go delete mode 100644 x/tokenfactory/keeper/grpc_query_pauser.go delete mode 100644 x/tokenfactory/keeper/grpc_query_pauser_test.go delete mode 100644 x/tokenfactory/keeper/keeper.go delete mode 100644 x/tokenfactory/keeper/master_minter.go delete mode 100644 x/tokenfactory/keeper/master_minter_test.go delete mode 100644 x/tokenfactory/keeper/minter_controller.go delete mode 100644 x/tokenfactory/keeper/minter_controller_test.go delete mode 100644 x/tokenfactory/keeper/minters.go delete mode 100644 x/tokenfactory/keeper/minters_test.go delete mode 100644 x/tokenfactory/keeper/minting_denom.go delete mode 100644 x/tokenfactory/keeper/minting_denom_test.go delete mode 100644 x/tokenfactory/keeper/msg_server.go delete mode 100644 x/tokenfactory/keeper/msg_server_accept_owner.go delete mode 100644 x/tokenfactory/keeper/msg_server_blacklist.go delete mode 100644 x/tokenfactory/keeper/msg_server_burn.go delete mode 100644 x/tokenfactory/keeper/msg_server_configure_minter.go delete mode 100644 x/tokenfactory/keeper/msg_server_configure_minter_controller.go delete mode 100644 x/tokenfactory/keeper/msg_server_mint.go delete mode 100644 x/tokenfactory/keeper/msg_server_pause.go delete mode 100644 x/tokenfactory/keeper/msg_server_remove_minter.go delete mode 100644 x/tokenfactory/keeper/msg_server_remove_minter_controller.go delete mode 100644 x/tokenfactory/keeper/msg_server_unblacklist.go delete mode 100644 x/tokenfactory/keeper/msg_server_unpause.go delete mode 100644 x/tokenfactory/keeper/msg_server_update_blacklister.go delete mode 100644 x/tokenfactory/keeper/msg_server_update_master_minter.go delete mode 100644 x/tokenfactory/keeper/msg_server_update_owner.go delete mode 100644 x/tokenfactory/keeper/msg_server_update_pauser.go delete mode 100644 x/tokenfactory/keeper/owner.go delete mode 100644 x/tokenfactory/keeper/owner_test.go delete mode 100644 x/tokenfactory/keeper/params.go delete mode 100644 x/tokenfactory/keeper/params_test.go delete mode 100644 x/tokenfactory/keeper/paused.go delete mode 100644 x/tokenfactory/keeper/paused_test.go delete mode 100644 x/tokenfactory/keeper/pauser.go delete mode 100644 x/tokenfactory/keeper/pauser_test.go delete mode 100644 x/tokenfactory/module.go delete mode 100644 x/tokenfactory/module_simulation.go delete mode 100644 x/tokenfactory/simulation/blacklist.go delete mode 100644 x/tokenfactory/simulation/burn.go delete mode 100644 x/tokenfactory/simulation/configure_minter.go delete mode 100644 x/tokenfactory/simulation/configure_minter_controller.go delete mode 100644 x/tokenfactory/simulation/helpers.go delete mode 100644 x/tokenfactory/simulation/mint.go delete mode 100644 x/tokenfactory/simulation/pause.go delete mode 100644 x/tokenfactory/simulation/remove_minter.go delete mode 100644 x/tokenfactory/simulation/remove_minter_controller.go delete mode 100644 x/tokenfactory/simulation/unblacklist.go delete mode 100644 x/tokenfactory/simulation/unpause.go delete mode 100644 x/tokenfactory/simulation/update_blacklister.go delete mode 100644 x/tokenfactory/simulation/update_master_minter.go delete mode 100644 x/tokenfactory/simulation/update_owner.go delete mode 100644 x/tokenfactory/simulation/update_pauser.go delete mode 100644 x/tokenfactory/types/blacklisted.pb.go delete mode 100644 x/tokenfactory/types/blacklister.pb.go delete mode 100644 x/tokenfactory/types/codec.go delete mode 100644 x/tokenfactory/types/errors.go delete mode 100644 x/tokenfactory/types/expected_keepers.go delete mode 100644 x/tokenfactory/types/genesis.go delete mode 100644 x/tokenfactory/types/genesis.pb.go delete mode 100644 x/tokenfactory/types/genesis_test.go delete mode 100644 x/tokenfactory/types/keys.go delete mode 100644 x/tokenfactory/types/master_minter.pb.go delete mode 100644 x/tokenfactory/types/message_accept_owner.go delete mode 100644 x/tokenfactory/types/message_blacklist.go delete mode 100644 x/tokenfactory/types/message_blacklist_test.go delete mode 100644 x/tokenfactory/types/message_burn.go delete mode 100644 x/tokenfactory/types/message_burn_test.go delete mode 100644 x/tokenfactory/types/message_configure_minter.go delete mode 100644 x/tokenfactory/types/message_configure_minter_controller.go delete mode 100644 x/tokenfactory/types/message_configure_minter_controller_test.go delete mode 100644 x/tokenfactory/types/message_configure_minter_test.go delete mode 100644 x/tokenfactory/types/message_mint.go delete mode 100644 x/tokenfactory/types/message_mint_test.go delete mode 100644 x/tokenfactory/types/message_pause.go delete mode 100644 x/tokenfactory/types/message_pause_test.go delete mode 100644 x/tokenfactory/types/message_remove_minter.go delete mode 100644 x/tokenfactory/types/message_remove_minter_controller.go delete mode 100644 x/tokenfactory/types/message_remove_minter_controller_test.go delete mode 100644 x/tokenfactory/types/message_remove_minter_test.go delete mode 100644 x/tokenfactory/types/message_unblacklist.go delete mode 100644 x/tokenfactory/types/message_unblacklist_test.go delete mode 100644 x/tokenfactory/types/message_unpause.go delete mode 100644 x/tokenfactory/types/message_unpause_test.go delete mode 100644 x/tokenfactory/types/message_update_blacklister.go delete mode 100644 x/tokenfactory/types/message_update_blacklister_test.go delete mode 100644 x/tokenfactory/types/message_update_master_minter.go delete mode 100644 x/tokenfactory/types/message_update_master_minter_test.go delete mode 100644 x/tokenfactory/types/message_update_owner.go delete mode 100644 x/tokenfactory/types/message_update_owner_test.go delete mode 100644 x/tokenfactory/types/message_update_pauser.go delete mode 100644 x/tokenfactory/types/message_update_pauser_test.go delete mode 100644 x/tokenfactory/types/minter_controller.pb.go delete mode 100644 x/tokenfactory/types/minters.pb.go delete mode 100644 x/tokenfactory/types/minting_denom.pb.go delete mode 100644 x/tokenfactory/types/owner.pb.go delete mode 100644 x/tokenfactory/types/params.go delete mode 100644 x/tokenfactory/types/params.pb.go delete mode 100644 x/tokenfactory/types/paused.pb.go delete mode 100644 x/tokenfactory/types/pauser.pb.go delete mode 100644 x/tokenfactory/types/query.pb.go delete mode 100644 x/tokenfactory/types/query.pb.gw.go delete mode 100644 x/tokenfactory/types/tx.pb.go diff --git a/.changelog/v4.1.0/summary.md b/.changelog/v4.1.0/summary.md index 3c0584a5..9fb350e7 100644 --- a/.changelog/v4.1.0/summary.md +++ b/.changelog/v4.1.0/summary.md @@ -7,9 +7,9 @@ It allows users to create a new account type, where the receipt of funds into that account triggers an automatic IBC transfer over a specified channel to a recipient address. This allows for one-click transfers to any IBC-enabled chain, and can be used in tandem with, for example, the receipt of funds from a -[Circle Mint][mint] account or via [CCTP]. +[Circle Mint][mint] account or via [CCTP][cctp-docs]. Other notable changes include are documented below. -[cctp]: https://www.circle.com/en/cross-chain-transfer-protocol +[cctp-docs]: https://www.circle.com/en/cross-chain-transfer-protocol [mint]: https://www.circle.com/en/circle-mint diff --git a/.changelog/v8.0.0/summary.md b/.changelog/v8.0.0/summary.md new file mode 100644 index 00000000..4349cecb --- /dev/null +++ b/.changelog/v8.0.0/summary.md @@ -0,0 +1,27 @@ +*Oct 17, 2024* + +This is the Helium major release of Noble. It upgrades the Noble's core +dependencies, namely CometBFT (f.k.a. Tendermint), Cosmos SDK, and IBC to their +latest stable release [Eden]. In addition to this upgrade, it also replaces the +legacy [ParamAuthority] module with an in-house build [Authority] module. This +module allows the Noble Maintenance Multisig to enact governance gated actions +like chain upgrades and IBC client substitutions. + +The following modules have specifically been upgraded to Cosmos SDK `v0.50.x` + +- [FiatTokenFactory] — Circle's USD Coin +- [CCTP] — Circle's Cross Chain Transfer Protocol +- [Aura] — Ondo's US Dollar Yield Token +- [Halo] — Hashnote's US Yield Coin +- [Florin] — Monerium's EUR emoney +- [Forwarding] — Noble's Intents System + +[aura]: https://github.com/ondoprotocol/usdy-noble +[authority]: https://github.com/noble-assets/authority +[cctp]: https://github.com/circlefin/noble-cctp +[eden]: https://medium.com/the-interchain-foundation/elevating-the-cosmos-sdk-eden-v0-50-20a554e16e43 +[florin]: https://github.com/monerium/module-noble +[forwarding]: https://github.com/noble-assets/forwarding +[halo]: https://github.com/noble-assets/halo +[fiattokenfactory]: https://github.com/circlefin/noble-fiattokenfactory +[paramauthority]: https://github.com/strangelove-ventures/paramauthority diff --git a/.github/mergify.yml b/.github/mergify.yml deleted file mode 100644 index 0cc2b005..00000000 --- a/.github/mergify.yml +++ /dev/null @@ -1,16 +0,0 @@ -defaults: - actions: - backport: - # By default, all backport PRs are assigned to the original author. - assignees: - - "{{ author }}" - -pull_request_rules: - - name: backport patches to v5.0.x branch - conditions: - - base=main - - label=backport/v5.0.x - actions: - backport: - branches: - - v5.0.x diff --git a/.github/workflows/e2e-tests.yaml b/.github/workflows/e2e-tests.yaml index 7e1442c4..faea4051 100644 --- a/.github/workflows/e2e-tests.yaml +++ b/.github/workflows/e2e-tests.yaml @@ -53,7 +53,7 @@ jobs: id: set-matrix run: | # Run the command and convert its output to a JSON array - TESTS=$(cd interchaintest && go test -list . | grep -v "^ok " | jq -R -s -c 'split("\n")[:-1]') + TESTS=$(cd e2e && go test -list . | grep -v "^ok " | jq -R -s -c 'split("\n")[:-1]') echo "matrix=${TESTS}" >> $GITHUB_OUTPUT test: @@ -85,4 +85,4 @@ jobs: run: docker image load -i ${{ env.TAR_PATH }} - name: Run Tests - run: cd interchaintest && go test -race -v -timeout 30m -run ^${{ matrix.test }}$ . + run: cd e2e && go test -race -v -timeout 30m -run ^${{ matrix.test }}$ . diff --git a/.github/workflows/simulation-tests.yaml b/.github/workflows/simulation-tests.yaml deleted file mode 100644 index 516b9339..00000000 --- a/.github/workflows/simulation-tests.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: Simulation Tests - -on: - workflow_dispatch: - -jobs: - simulation-tests: - runs-on: ubuntu-latest - steps: - - name: Checkout Repository - uses: actions/checkout@v4 - - - name: Install Go - uses: actions/setup-go@v5 - with: - go-version: '>=1.21' - - - name: Run Unit Tests - run: go test -bench BenchmarkSimulation ./app diff --git a/.github/workflows/unit-tests.yaml b/.github/workflows/unit-tests.yaml deleted file mode 100644 index 9495fc70..00000000 --- a/.github/workflows/unit-tests.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: Unit Tests - -on: - pull_request: - -jobs: - unit-tests: - - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Set up Go - uses: actions/setup-go@v5 - with: - go-version: '>=1.21' - - - name: Run Unit Tests - run: go test -v ./... diff --git a/.gitignore b/.gitignore index 0860cd9e..c4bdef15 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ release/ play_sh/ /heighliner* bin/ +build/ \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8286e8a2..5b8e4b3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,35 @@ # CHANGELOG +## v8.0.0 + +*Oct 17, 2024* + +This is the Helium major release of Noble. It upgrades the Noble's core +dependencies, namely CometBFT (f.k.a. Tendermint), Cosmos SDK, and IBC to their +latest stable release [Eden]. In addition to this upgrade, it also replaces the +legacy [ParamAuthority] module with an in-house build [Authority] module. This +module allows the Noble Maintenance Multisig to enact governance gated actions +like chain upgrades and IBC client substitutions. + +The following modules have specifically been upgraded to Cosmos SDK `v0.50.x` + +- [FiatTokenFactory] — Circle's USD Coin +- [CCTP] — Circle's Cross Chain Transfer Protocol +- [Aura] — Ondo's US Dollar Yield Token +- [Halo] — Hashnote's US Yield Coin +- [Florin] — Monerium's EUR emoney +- [Forwarding] — Noble's Intents System + +[aura]: https://github.com/ondoprotocol/usdy-noble +[authority]: https://github.com/noble-assets/authority +[cctp]: https://github.com/circlefin/noble-cctp +[eden]: https://medium.com/the-interchain-foundation/elevating-the-cosmos-sdk-eden-v0-50-20a554e16e43 +[florin]: https://github.com/monerium/module-noble +[forwarding]: https://github.com/noble-assets/forwarding +[halo]: https://github.com/noble-assets/halo +[fiattokenfactory]: https://github.com/circlefin/noble-fiattokenfactory +[paramauthority]: https://github.com/strangelove-ventures/paramauthority + ## v7.0.0 *Sep 13, 2024* @@ -112,11 +142,11 @@ It allows users to create a new account type, where the receipt of funds into that account triggers an automatic IBC transfer over a specified channel to a recipient address. This allows for one-click transfers to any IBC-enabled chain, and can be used in tandem with, for example, the receipt of funds from a -[Circle Mint][mint] account or via [CCTP]. +[Circle Mint][mint] account or via [CCTP][cctp-docs]. Other notable changes include are documented below. -[cctp]: https://www.circle.com/en/cross-chain-transfer-protocol +[cctp-docs]: https://www.circle.com/en/cross-chain-transfer-protocol [mint]: https://www.circle.com/en/circle-mint ### DEPENDENCIES diff --git a/Makefile b/Makefile index cbae3beb..7c1e9d12 100644 --- a/Makefile +++ b/Makefile @@ -1,151 +1,60 @@ -#!/usr/bin/make -f - BRANCH := $(shell git rev-parse --abbrev-ref HEAD) COMMIT := $(shell git log -1 --format='%H') -DOCKER := $(shell which docker) -DOCKER_BUF := $(DOCKER) run --rm -v $(CURDIR):/workspace --workdir /workspace bufbuild/buf -# don't override user values ifeq (,$(VERSION)) - VERSION := $(shell echo $(shell git describe --tags) | sed 's/^v//') - # if VERSION is empty, then populate it with branch's name and raw commit hash + VERSION := $(shell git describe --exact-match 2>/dev/null) ifeq (,$(VERSION)) - VERSION := $(BRANCH)-$(COMMIT) - endif -endif - -CHAIN_NAME = noble -DAEMON_NAME = nobled - -LEDGER_ENABLED ?= true -TM_VERSION := $(shell go list -m github.com/tendermint/tendermint | sed 's:.* ::') # grab everything after the space in "github.com/tendermint/tendermint v0.34.7" -BUILDDIR ?= $(CURDIR)/build - -export GO111MODULE = on - -# process build tags - -build_tags = netgo -ifeq ($(LEDGER_ENABLED),true) - ifeq ($(OS),Windows_NT) - GCCEXE = $(shell where gcc.exe 2> NUL) - ifeq ($(GCCEXE),) - $(error gcc.exe not installed for ledger support, please install or set LEDGER_ENABLED=false) - else - build_tags += ledger - endif - else - UNAME_S = $(shell uname -s) - ifeq ($(UNAME_S),OpenBSD) - $(warning OpenBSD detected, disabling ledger support (https://github.com/cosmos/cosmos-sdk/issues/1988)) + ifeq ($(shell git status --porcelain),) + VERSION := $(BRANCH) else - GCC = $(shell command -v gcc 2> /dev/null) - ifeq ($(GCC),) - $(error gcc not installed for ledger support, please install or set LEDGER_ENABLED=false) - else - build_tags += ledger - endif + VERSION := $(BRANCH)-dirty endif endif endif -build_tags += $(BUILD_TAGS) -build_tags := $(strip $(build_tags)) - -whitespace := -whitespace += $(whitespace) -comma := , -build_tags_comma_sep := $(subst $(whitespace),$(comma),$(build_tags)) - -# process linker flags - -ldflags = -X github.com/cosmos/cosmos-sdk/version.Name=$(CHAIN_NAME) \ - -X github.com/cosmos/cosmos-sdk/version.AppName=$(DAEMON_NAME) \ - -X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ - -X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) \ - -X "github.com/cosmos/cosmos-sdk/version.BuildTags=$(build_tags_comma_sep)" \ - -X github.com/tendermint/tendermint/version.TMCoreSemVer=$(TM_VERSION) - -ldflags += $(LDFLAGS) +ldflags := $(LDFLAGS) +ldflags += -X github.com/cosmos/cosmos-sdk/version.Name=Noble \ + -X github.com/cosmos/cosmos-sdk/version.AppName=nobled \ + -X github.com/cosmos/cosmos-sdk/version.Version=$(VERSION) \ + -X github.com/cosmos/cosmos-sdk/version.Commit=$(COMMIT) ldflags := $(strip $(ldflags)) -BUILD_FLAGS := -tags "$(build_tags)" -ldflags '$(ldflags)' +BUILD_FLAGS := -ldflags '$(ldflags)' ############################################################################### ### Building / Install ### ############################################################################### -all: install - install: go.sum - go install -mod=readonly $(BUILD_FLAGS) ./cmd/nobled + @echo "🤖 Installing nobled..." + @go install -mod=readonly $(BUILD_FLAGS) ./cmd/nobled + @echo "✅ Completed install!" build: - go build $(BUILD_FLAGS) -o bin/nobled ./cmd/nobled - + @echo "🤖 Building nobled..." + @go build -mod=readonly $(BUILD_FLAGS) -o "$(PWD)/build/" ./... + @echo "✅ Completed build!" ############################################################################### -### Linting ### +### Testing ### ############################################################################### -lint: - @echo "--> Running linter" - @go run github.com/golangci/golangci-lint/cmd/golangci-lint run --timeout=10m - - - -############################################################################### -### INTERCHAINTEST (ictest) ### -############################################################################### - -test: - go test -v -race ./... - -############################################################################### -### Build Image ### -############################################################################### -get-heighliner: - git clone https://github.com/strangelove-ventures/heighliner.git - cd heighliner && go install - local-image: ifeq (,$(shell which heighliner)) - echo 'heighliner' binary not found. Consider running `make get-heighliner` + echo 'heighliner' binary not found. Please install: https://github.com/strangelove-ventures/heighliner else - heighliner build -c noble --local -f ./chains.yaml + heighliner build -c noble --local endif -.PHONY: all build-linux install lint test \ - go-mod-cache build interchaintest get-heighliner local-image \ ############################################################################### -### Protobuf ### +### Linting ### ############################################################################### -BUF_VERSION=1.40 - -proto-all: proto-format proto-lint proto-gen - -proto-format: - @echo "🤖 Running protobuf formatter..." - @docker run --rm --volume "$(PWD)":/workspace --workdir /workspace \ - bufbuild/buf:$(BUF_VERSION) format --diff --write - @echo "✅ Completed protobuf formatting!" - -proto-gen: - @echo "🤖 Generating code from protobuf..." - @docker run --rm --volume "$(PWD)":/workspace --workdir /workspace \ - noble-proto sh ./proto/generate.sh - @echo "✅ Completed code generation!" +lint: + @echo "--> Running linter" + @go run github.com/golangci/golangci-lint/cmd/golangci-lint run --timeout=10m -proto-lint: - @echo "🤖 Running protobuf linter..." - @docker run --rm --volume "$(PWD)":/workspace --workdir /workspace \ - bufbuild/buf:$(BUF_VERSION) lint - @echo "✅ Completed protobuf linting!" -proto-setup: - @echo "🤖 Setting up protobuf environment..." - @docker build --rm --tag noble-proto:latest --file proto/Dockerfile . - @echo "✅ Setup protobuf environment!" +.PHONY: install build local-image lint \ No newline at end of file diff --git a/ante.go b/ante.go new file mode 100644 index 00000000..ca6a1902 --- /dev/null +++ b/ante.go @@ -0,0 +1,68 @@ +package noble + +import ( + errorsmod "cosmossdk.io/errors" + "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory" + ftfkeeper "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/keeper" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + ibcante "github.com/cosmos/ibc-go/v8/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" +) + +// HandlerOptions extends the options required by the default Cosmos SDK +// AnteHandler for our custom ante decorators. +type HandlerOptions struct { + ante.HandlerOptions + cdc codec.Codec + FTFKeeper *ftfkeeper.Keeper + IBCKeeper *ibckeeper.Keeper +} + +// NewAnteHandler extends the default Cosmos SDK AnteHandler with custom ante decorators. +func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { + if options.AccountKeeper == nil { + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "account keeper is required for ante builder") + } + + if options.BankKeeper == nil { + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "bank keeper is required for ante builder") + } + + if options.FTFKeeper == nil { + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "fiattokenfactory keeper is required for ante builder") + } + + if options.IBCKeeper == nil { + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "ibc keeper is required for ante builder") + } + + if options.SignModeHandler == nil { + return nil, errorsmod.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") + } + + anteDecorators := []sdk.AnteDecorator{ + ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first + ante.NewExtensionOptionsDecorator(options.ExtensionOptionChecker), + ante.NewValidateBasicDecorator(), + ante.NewTxTimeoutHeightDecorator(), + ante.NewValidateMemoDecorator(options.AccountKeeper), + + fiattokenfactory.NewIsPausedDecorator(options.cdc, options.FTFKeeper), + fiattokenfactory.NewIsBlacklistedDecorator(options.FTFKeeper), + + ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), + ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper, options.TxFeeChecker), + ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators + ante.NewValidateSigCountDecorator(options.AccountKeeper), + ante.NewSigGasConsumeDecorator(options.AccountKeeper, options.SigGasConsumer), + ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), + ante.NewIncrementSequenceDecorator(options.AccountKeeper), + + ibcante.NewRedundantRelayDecorator(options.IBCKeeper), + } + + return sdk.ChainAnteDecorators(anteDecorators...), nil +} diff --git a/app.go b/app.go new file mode 100644 index 00000000..6465844d --- /dev/null +++ b/app.go @@ -0,0 +1,314 @@ +package noble + +import ( + _ "embed" + "fmt" + "io" + "os" + "path/filepath" + + "cosmossdk.io/core/appconfig" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/types/module" + "github.com/cosmos/cosmos-sdk/x/auth/ante" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + "github.com/noble-assets/noble/v8/upgrade" + + _ "cosmossdk.io/x/evidence" + _ "cosmossdk.io/x/feegrant/module" + _ "cosmossdk.io/x/upgrade" + _ "github.com/circlefin/noble-cctp/x/cctp" + _ "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory" + _ "github.com/cosmos/cosmos-sdk/x/auth" + _ "github.com/cosmos/cosmos-sdk/x/auth/vesting" + _ "github.com/cosmos/cosmos-sdk/x/authz/module" + _ "github.com/cosmos/cosmos-sdk/x/bank" + _ "github.com/cosmos/cosmos-sdk/x/consensus" + _ "github.com/cosmos/cosmos-sdk/x/crisis" + _ "github.com/cosmos/cosmos-sdk/x/params" + _ "github.com/cosmos/cosmos-sdk/x/slashing" + _ "github.com/cosmos/cosmos-sdk/x/staking" + _ "github.com/monerium/module-noble/v2" + _ "github.com/noble-assets/authority" + _ "github.com/noble-assets/forwarding/v2/x/forwarding" + _ "github.com/noble-assets/halo/v2" + _ "github.com/ondoprotocol/usdy-noble/v2" + + // Cosmos Modules + evidencekeeper "cosmossdk.io/x/evidence/keeper" + feegrantkeeper "cosmossdk.io/x/feegrant/keeper" + upgradekeeper "cosmossdk.io/x/upgrade/keeper" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" + "github.com/cosmos/cosmos-sdk/x/genutil" + genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" + slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" + // IBC Modules + pfmkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" + transferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + // Circle Modules + cctpkeeper "github.com/circlefin/noble-cctp/x/cctp/keeper" + ftfkeeper "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/keeper" + // Ondo Modules + aurakeeper "github.com/ondoprotocol/usdy-noble/v2/keeper" + // Hashnote Modules + halokeeper "github.com/noble-assets/halo/v2/keeper" + // Monerium Modules + florinkeeper "github.com/monerium/module-noble/v2/keeper" + // Noble Modules + authoritykeeper "github.com/noble-assets/authority/keeper" + forwardingkeeper "github.com/noble-assets/forwarding/v2/x/forwarding/keeper" +) + +var DefaultNodeHome string + +//go:embed app.yaml +var AppConfigYAML []byte + +var ( + _ runtime.AppI = (*App)(nil) + _ servertypes.Application = (*App)(nil) +) + +// App defines the interface of Noble's Cosmos SDK-based application that extends the default ABCI interface. +type App struct { + *runtime.App + legacyAmino *codec.LegacyAmino + appCodec codec.Codec + txConfig client.TxConfig + interfaceRegistry codectypes.InterfaceRegistry + + // Cosmos Modules + AccountKeeper authkeeper.AccountKeeper + AuthzKeeper authzkeeper.Keeper + BankKeeper bankkeeper.Keeper + ConsensusKeeper consensuskeeper.Keeper + CrisisKeeper *crisiskeeper.Keeper + EvidenceKeeper evidencekeeper.Keeper + FeeGrantKeeper feegrantkeeper.Keeper + ParamsKeeper paramskeeper.Keeper + SlashingKeeper slashingkeeper.Keeper + StakingKeeper *stakingkeeper.Keeper + UpgradeKeeper *upgradekeeper.Keeper + // IBC Modules + CapabilityKeeper *capabilitykeeper.Keeper + IBCKeeper *ibckeeper.Keeper + ICAHostKeeper icahostkeeper.Keeper + PFMKeeper *pfmkeeper.Keeper + TransferKeeper transferkeeper.Keeper + // Circle Modules + CCTPKeeper *cctpkeeper.Keeper + FTFKeeper *ftfkeeper.Keeper + // Ondo Modules + AuraKeeper *aurakeeper.Keeper + // Hashnote Modules + HaloKeeper *halokeeper.Keeper + // Monerium Modules + FlorinKeeper *florinkeeper.Keeper + // Noble Modules + AuthorityKeeper *authoritykeeper.Keeper + ForwardingKeeper *forwardingkeeper.Keeper +} + +func init() { + userHomeDir, err := os.UserHomeDir() + if err != nil { + panic(err) + } + + DefaultNodeHome = filepath.Join(userHomeDir, ".noble") +} + +// AppConfig returns the default app config. +func AppConfig() depinject.Config { + return depinject.Configs( + appconfig.LoadYAML(AppConfigYAML), + depinject.Supply( + // supply custom module basics + map[string]module.AppModuleBasic{ + genutiltypes.ModuleName: genutil.NewAppModuleBasic(genutiltypes.DefaultMessageValidator), + }, + ), + ) +} + +// NewApp initializes and returns a new Noble application. +func NewApp( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + loadLatest bool, + appOpts servertypes.AppOptions, + baseAppOptions ...func(*baseapp.BaseApp), +) (*App, error) { + var ( + app = &App{} + appBuilder *runtime.AppBuilder + ) + + if err := depinject.Inject( + depinject.Configs( + AppConfig(), + depinject.Supply( + logger, + appOpts, + ), + ), + &appBuilder, + &app.appCodec, + &app.legacyAmino, + &app.txConfig, + &app.interfaceRegistry, + // Cosmos Modules + &app.AccountKeeper, + &app.AuthzKeeper, + &app.BankKeeper, + &app.ConsensusKeeper, + &app.CrisisKeeper, + &app.EvidenceKeeper, + &app.FeeGrantKeeper, + &app.ParamsKeeper, + &app.SlashingKeeper, + &app.StakingKeeper, + &app.UpgradeKeeper, + // Circle Modules + &app.CCTPKeeper, + &app.FTFKeeper, + // Hashnote Modules + &app.HaloKeeper, + // Monerium Modules + &app.FlorinKeeper, + // Ondo Modules + &app.AuraKeeper, + // Noble Modules + &app.AuthorityKeeper, + &app.ForwardingKeeper, + ); err != nil { + return nil, err + } + + app.App = appBuilder.Build(db, traceStore, baseAppOptions...) + + if err := app.RegisterLegacyModules(); err != nil { + return nil, err + } + + anteHandler, err := NewAnteHandler(HandlerOptions{ + HandlerOptions: ante.HandlerOptions{ + AccountKeeper: app.AccountKeeper, + BankKeeper: app.BankKeeper, + FeegrantKeeper: app.FeeGrantKeeper, + SignModeHandler: app.txConfig.SignModeHandler(), + }, + cdc: app.appCodec, + FTFKeeper: app.FTFKeeper, + IBCKeeper: app.IBCKeeper, + }) + if err != nil { + return nil, err + } + app.SetAnteHandler(anteHandler) + + if err := app.RegisterUpgradeHandler(); err != nil { + return nil, err + } + + if err := app.RegisterStreamingServices(appOpts, app.kvStoreKeys()); err != nil { + return nil, err + } + + if err := app.Load(loadLatest); err != nil { + return nil, err + } + + return app, nil +} + +func (app *App) LegacyAmino() *codec.LegacyAmino { + return app.legacyAmino +} + +func (app *App) SimulationManager() *module.SimulationManager { + return nil +} + +// + +func (app *App) GetKey(storeKey string) *storetypes.KVStoreKey { + key, _ := app.UnsafeFindStoreKey(storeKey).(*storetypes.KVStoreKey) + return key +} + +func (app *App) GetMemKey(memKey string) *storetypes.MemoryStoreKey { + key, _ := app.UnsafeFindStoreKey(memKey).(*storetypes.MemoryStoreKey) + return key +} + +func (app *App) GetSubspace(moduleName string) paramstypes.Subspace { + subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) + return subspace +} + +func (app *App) RegisterUpgradeHandler() error { + app.UpgradeKeeper.SetUpgradeHandler( + upgrade.UpgradeName, + upgrade.CreateUpgradeHandler( + app.ModuleManager, + app.Configurator(), + app.appCodec, + app.Logger(), + app.GetKey(capabilitytypes.StoreKey), + app.AccountKeeper, + app.AuthorityKeeper, + app.BankKeeper, + app.CapabilityKeeper, + app.IBCKeeper.ClientKeeper, + app.ConsensusKeeper, + app.ParamsKeeper, + app.StakingKeeper, + ), + ) + + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() + if err != nil { + return fmt.Errorf("failed to read upgrade info from disk: %w", err) + } + if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + return nil + } + + if upgradeInfo.Name == upgrade.UpgradeName { + app.SetStoreLoader(upgrade.CreateStoreLoader(upgradeInfo.Height)) + } + + return nil +} + +func (app *App) kvStoreKeys() map[string]*storetypes.KVStoreKey { + keys := make(map[string]*storetypes.KVStoreKey) + for _, k := range app.GetStoreKeys() { + if kv, ok := k.(*storetypes.KVStoreKey); ok { + keys[kv.Name()] = kv + } + } + + return keys +} diff --git a/app.yaml b/app.yaml new file mode 100644 index 00000000..962f3075 --- /dev/null +++ b/app.yaml @@ -0,0 +1,120 @@ +modules: + - name: runtime + config: + "@type": cosmos.app.runtime.v1alpha1.Module + app_name: Noble + pre_blockers: [ upgrade ] + begin_blockers: [ capability, authority, slashing, evidence, staking, ibc, authz ] + end_blockers: [ crisis, staking, feegrant, forwarding ] + init_genesis: [ capability, transfer, auth, bank, staking, slashing, crisis, fiat-tokenfactory, genutil, ibc, interchainaccounts, packetfowardmiddleware, evidence, authz, feegrant, params, upgrade, vesting, cctp, forwarding, aura, halo, florin, authority ] + override_store_keys: + - module_name: auth + kv_store_key: acc + - module_name: fiat-tokenfactory + kv_store_key: fiattokenfactory + - name: auth + config: + "@type": cosmos.auth.module.v1.Module + bech32_prefix: noble + module_account_permissions: + - account: fee_collector + - account: interchainaccounts + - account: bonded_tokens_pool + permissions: [ burner, staking ] + - account: not_bonded_tokens_pool + permissions: [ burner, staking ] + - account: transfer + permissions: [ burner, minter ] + - account: fiat-tokenfactory + permissions: [ burner, minter ] + - account: cctp + - account: halo + permissions: [ burner, minter ] + - account: florin + permissions: [ burner, minter ] + - account: aura + permissions: [ burner, minter ] + authority: authority # Utilize our custom x/authority module. + - name: authz + config: + "@type": cosmos.authz.module.v1.Module + - name: bank + config: + "@type": cosmos.bank.module.v1.Module + blocked_module_accounts_override: + [ auth, bonded_tokens_pool, not_bonded_tokens_pool ] + authority: authority # Utilize our custom x/authority module. + - name: consensus + config: + "@type": cosmos.consensus.module.v1.Module + authority: authority # Utilize our custom x/authority module. + - name: crisis + config: + "@type": cosmos.crisis.module.v1.Module + authority: authority # Utilize our custom x/authority module. + - name: evidence + config: + "@type": cosmos.evidence.module.v1.Module + - name: feegrant + config: + "@type": cosmos.feegrant.module.v1.Module + - name: genutil + config: + "@type": cosmos.genutil.module.v1.Module + - name: params + config: + "@type": cosmos.params.module.v1.Module + - name: slashing + config: + "@type": cosmos.slashing.module.v1.Module + authority: authority # Utilize our custom x/authority module. + - name: staking + config: + "@type": cosmos.staking.module.v1.Module + authority: authority # Utilize our custom x/authority module. + - name: tx + config: + "@type": cosmos.tx.config.v1.Config + - name: upgrade + config: + "@type": cosmos.upgrade.module.v1.Module + authority: authority # Utilize our custom x/authority module. + - name: vesting + config: + "@type": cosmos.vesting.module.v1.Module + + # Circle Modules + - name: cctp + config: + "@type": circle.cctp.module.v1.Module + - name: fiat-tokenfactory + config: + "@type": circle.fiattokenfactory.module.v1.Module + + # Ondo Modules + - name: aura + config: + "@type": aura.module.v1.Module + denom: ausdy + + # Hashnote Modules + - name: halo + config: + "@type": halo.module.v1.Module + denom: uusyc + underlying: uusdc + + # Monerium Modules + - name: florin + config: + "@type": florin.module.v1.Module + authority: authority # Utilize our custom x/authority module. + + # Noble Modules + - name: authority + config: + "@type": noble.authority.module.v1.Module + - name: forwarding + config: + "@type": noble.forwarding.module.v1.Module + authority: authority # Utilize our custom x/authority module. diff --git a/app/ante.go b/app/ante.go deleted file mode 100644 index bd1ae20a..00000000 --- a/app/ante.go +++ /dev/null @@ -1,76 +0,0 @@ -package app - -import ( - "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory" - fiattokenfactorykeeper "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/keeper" - "github.com/cosmos/cosmos-sdk/codec" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - ibcante "github.com/cosmos/ibc-go/v4/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper" - "github.com/noble-assets/forwarding/x/forwarding" - forwardingkeeper "github.com/noble-assets/forwarding/x/forwarding/keeper" - feeante "github.com/noble-assets/noble/v7/x/globalfee/ante" -) - -type HandlerOptions struct { - ante.HandlerOptions - cdc codec.Codec - fiatTokenFactoryKeeper *fiattokenfactorykeeper.Keeper - IBCKeeper *ibckeeper.Keeper - GlobalFeeSubspace paramtypes.Subspace - StakingSubspace paramtypes.Subspace - ForwardingKeeper *forwardingkeeper.Keeper -} - -// maxTotalBypassMinFeeMsgGasUsage is the allowed maximum gas usage -// for all the bypass msgs in a transactions. -// A transaction that contains only bypass message types and the gas usage does not -// exceed maxTotalBypassMinFeeMsgGasUsage can be accepted with a zero fee. -// For details, see gaiafeeante.NewFeeDecorator() -var maxTotalBypassMinFeeMsgGasUsage uint64 = 1_000_000 - -// NewAnteHandler returns an AnteHandler that checks and increments sequence -// numbers, checks signatures & account numbers, and deducts fees from the first -// signer -func NewAnteHandler(options HandlerOptions) (sdk.AnteHandler, error) { - if options.AccountKeeper == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "account keeper is required for AnteHandler") - } - if options.BankKeeper == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "bank keeper is required for AnteHandler") - } - if options.SignModeHandler == nil { - return nil, sdkerrors.Wrap(sdkerrors.ErrLogic, "sign mode handler is required for ante builder") - } - sigGasConsumer := options.SigGasConsumer - if sigGasConsumer == nil { - sigGasConsumer = ante.DefaultSigVerificationGasConsumer - } - - anteDecorators := []sdk.AnteDecorator{ - ante.NewSetUpContextDecorator(), // outermost AnteDecorator. SetUpContext must be called first - ante.NewRejectExtensionOptionsDecorator(), - fiattokenfactory.NewIsBlacklistedDecorator(options.fiatTokenFactoryKeeper), - fiattokenfactory.NewIsPausedDecorator(options.cdc, options.fiatTokenFactoryKeeper), - forwarding.NewAnteDecorator(options.ForwardingKeeper, options.AccountKeeper), - ante.NewMempoolFeeDecorator(), - ante.NewValidateBasicDecorator(), - ante.NewTxTimeoutHeightDecorator(), - ante.NewValidateMemoDecorator(options.AccountKeeper), - ante.NewConsumeGasForTxSizeDecorator(options.AccountKeeper), - feeante.NewFeeDecorator(options.GlobalFeeSubspace, options.StakingSubspace, maxTotalBypassMinFeeMsgGasUsage), - - ante.NewDeductFeeDecorator(options.AccountKeeper, options.BankKeeper, options.FeegrantKeeper), - ante.NewSetPubKeyDecorator(options.AccountKeeper), // SetPubKeyDecorator must be called before all signature verification decorators - ante.NewValidateSigCountDecorator(options.AccountKeeper), - ante.NewSigGasConsumeDecorator(options.AccountKeeper, sigGasConsumer), - ante.NewSigVerificationDecorator(options.AccountKeeper, options.SignModeHandler), - ante.NewIncrementSequenceDecorator(options.AccountKeeper), - ibcante.NewAnteDecorator(options.IBCKeeper), - } - return sdk.ChainAnteDecorators(anteDecorators...), nil - -} diff --git a/app/app.go b/app/app.go deleted file mode 100644 index afe81b51..00000000 --- a/app/app.go +++ /dev/null @@ -1,1001 +0,0 @@ -package app - -import ( - "fmt" - "io" - "net/http" - "os" - "path/filepath" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/grpc/tmservice" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/server/api" - "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/version" - "github.com/cosmos/cosmos-sdk/x/auth" - "github.com/cosmos/cosmos-sdk/x/auth/ante" - authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" - authsims "github.com/cosmos/cosmos-sdk/x/auth/simulation" - authtx "github.com/cosmos/cosmos-sdk/x/auth/tx" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/auth/vesting" - vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - "github.com/cosmos/cosmos-sdk/x/authz" - authzkeeper "github.com/cosmos/cosmos-sdk/x/authz/keeper" - authzmodule "github.com/cosmos/cosmos-sdk/x/authz/module" - "github.com/cosmos/cosmos-sdk/x/bank" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/capability" - capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" - distr "github.com/cosmos/cosmos-sdk/x/distribution" - distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" - "github.com/cosmos/cosmos-sdk/x/evidence" - evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" - evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" - "github.com/cosmos/cosmos-sdk/x/feegrant" - feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" - feegrantmodule "github.com/cosmos/cosmos-sdk/x/feegrant/module" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/cosmos/cosmos-sdk/x/slashing" - slashingkeeper "github.com/cosmos/cosmos-sdk/x/slashing/keeper" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v4/packetforward" - packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v4/packetforward/keeper" - packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v4/packetforward/types" - ica "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts" - icahost "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/types" - "github.com/cosmos/ibc-go/v4/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v4/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v4/modules/core" - ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" - ibcporttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v4/modules/core/24-host" - ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper" - "github.com/spf13/cast" - paramauthorityibc "github.com/strangelove-ventures/paramauthority/x/ibc" - paramauthorityibctypes "github.com/strangelove-ventures/paramauthority/x/ibc/types" - paramauthority "github.com/strangelove-ventures/paramauthority/x/params" - paramauthoritykeeper "github.com/strangelove-ventures/paramauthority/x/params/keeper" - paramauthorityupgrade "github.com/strangelove-ventures/paramauthority/x/upgrade" - paramauthorityupgradekeeper "github.com/strangelove-ventures/paramauthority/x/upgrade/keeper" - - abci "github.com/tendermint/tendermint/abci/types" - tmjson "github.com/tendermint/tendermint/libs/json" - "github.com/tendermint/tendermint/libs/log" - tmos "github.com/tendermint/tendermint/libs/os" - dbm "github.com/tendermint/tm-db" - - "github.com/circlefin/noble-fiattokenfactory/x/blockibc" - fiattokenfactorymodule "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory" - fiattokenfactorymodulekeeper "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/keeper" - fiattokenfactorymoduletypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" - "github.com/cosmos/cosmos-sdk/x/staking" - stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/noble-assets/noble/v7/app/upgrades/numus" - "github.com/noble-assets/noble/v7/cmd" - "github.com/noble-assets/noble/v7/docs" - "github.com/noble-assets/noble/v7/x/globalfee" - tariff "github.com/noble-assets/noble/v7/x/tariff" - tariffkeeper "github.com/noble-assets/noble/v7/x/tariff/keeper" - tarifftypes "github.com/noble-assets/noble/v7/x/tariff/types" - tokenfactorymodule "github.com/noble-assets/noble/v7/x/tokenfactory" - tokenfactorymodulekeeper "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - tokenfactorymoduletypes "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/circlefin/noble-cctp/x/cctp" - cctpkeeper "github.com/circlefin/noble-cctp/x/cctp/keeper" - cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - - "github.com/noble-assets/forwarding/x/forwarding" - forwardingkeeper "github.com/noble-assets/forwarding/x/forwarding/keeper" - forwardingtypes "github.com/noble-assets/forwarding/x/forwarding/types" - - "github.com/ondoprotocol/usdy-noble/x/aura" - aurakeeper "github.com/ondoprotocol/usdy-noble/x/aura/keeper" - auratypes "github.com/ondoprotocol/usdy-noble/x/aura/types" - - "github.com/noble-assets/halo/x/halo" - halokeeper "github.com/noble-assets/halo/x/halo/keeper" - halotypes "github.com/noble-assets/halo/x/halo/types" - - "github.com/monerium/module-noble/x/florin" - florinkeeper "github.com/monerium/module-noble/x/florin/keeper" - florintypes "github.com/monerium/module-noble/x/florin/types" -) - -const ( - AccountAddressPrefix = "noble" - Name = "noble" - ChainID = "noble-1" -) - -// this line is used by starport scaffolding # stargate/wasm/app/enabledProposals - -var ( - // DefaultNodeHome default home directories for the application daemon - DefaultNodeHome string - - // ModuleBasics defines the module BasicManager is in charge of setting up basic, - // non-dependant module elements, such as codec registration - // and genesis verification. - ModuleBasics = module.NewBasicManager( - auth.AppModuleBasic{}, - authzmodule.AppModuleBasic{}, - genutil.AppModuleBasic{}, - bank.AppModuleBasic{}, - staking.AppModuleBasic{}, - distr.AppModuleBasic{}, - capability.AppModuleBasic{}, - paramauthority.AppModuleBasic{}, - crisis.AppModuleBasic{}, - slashing.AppModuleBasic{}, - feegrantmodule.AppModuleBasic{}, - ibc.AppModuleBasic{}, - paramauthorityupgrade.AppModuleBasic{}, - evidence.AppModuleBasic{}, - transfer.AppModuleBasic{}, - ica.AppModuleBasic{}, - vesting.AppModuleBasic{}, - tokenfactorymodule.AppModuleBasic{}, - fiattokenfactorymodule.AppModuleBasic{}, - packetforward.AppModuleBasic{}, - globalfee.AppModuleBasic{}, - tariff.AppModuleBasic{}, - cctp.AppModuleBasic{}, - paramauthorityibc.AppModuleBasic{}, - forwarding.AppModuleBasic{}, - aura.AppModuleBasic{}, - halo.AppModuleBasic{}, - florin.AppModuleBasic{}, - ) - - // module account permissions - maccPerms = map[string][]string{ - authtypes.FeeCollectorName: nil, - distrtypes.ModuleName: nil, - icatypes.ModuleName: nil, - ibctransfertypes.ModuleName: {authtypes.Minter, authtypes.Burner}, - tokenfactorymoduletypes.ModuleName: {authtypes.Minter, authtypes.Burner, authtypes.Staking}, - fiattokenfactorymoduletypes.ModuleName: {authtypes.Minter, authtypes.Burner, authtypes.Staking}, - stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking}, - stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking}, - cctptypes.ModuleName: nil, - auratypes.ModuleName: {authtypes.Burner, authtypes.Minter}, - halotypes.ModuleName: {authtypes.Burner, authtypes.Minter}, - florintypes.ModuleName: {authtypes.Burner, authtypes.Minter}, - } -) - -var ( - _ cmd.App = (*App)(nil) - _ servertypes.Application = (*App)(nil) - _ simapp.App = (*App)(nil) -) - -func init() { - userHomeDir, err := os.UserHomeDir() - if err != nil { - panic(err) - } - - DefaultNodeHome = filepath.Join(userHomeDir, "."+Name) -} - -// App extends an ABCI application, but with most of its parameters exported. -// They are exported for convenience in creating helper functions, as object -// capabilities aren't needed for testing. -type App struct { - *baseapp.BaseApp - - cdc *codec.LegacyAmino - appCodec codec.Codec - interfaceRegistry types.InterfaceRegistry - - invCheckPeriod uint - - // keys to access the substores - keys map[string]*storetypes.KVStoreKey - tkeys map[string]*storetypes.TransientStoreKey - memKeys map[string]*storetypes.MemoryStoreKey - - // keepers - AccountKeeper authkeeper.AccountKeeper - AuthzKeeper authzkeeper.Keeper - BankKeeper bankkeeper.Keeper - StakingKeeper stakingkeeper.Keeper - CapabilityKeeper *capabilitykeeper.Keeper - SlashingKeeper slashingkeeper.Keeper - DistrKeeper distrkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper - UpgradeKeeper paramauthorityupgradekeeper.Keeper - ParamsKeeper paramauthoritykeeper.Keeper - IBCKeeper *ibckeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly - EvidenceKeeper evidencekeeper.Keeper - TransferKeeper ibctransferkeeper.Keeper - ICAHostKeeper icahostkeeper.Keeper - FeeGrantKeeper feegrantkeeper.Keeper - PacketForwardKeeper *packetforwardkeeper.Keeper - - // make scoped keepers public for test purposes - ScopedIBCKeeper capabilitykeeper.ScopedKeeper - ScopedTransferKeeper capabilitykeeper.ScopedKeeper - ScopedICAHostKeeper capabilitykeeper.ScopedKeeper - ScopedCCVConsumerKeeper capabilitykeeper.ScopedKeeper - - TokenFactoryKeeper *tokenfactorymodulekeeper.Keeper - FiatTokenFactoryKeeper *fiattokenfactorymodulekeeper.Keeper - TariffKeeper tariffkeeper.Keeper - CCTPKeeper *cctpkeeper.Keeper - ForwardingKeeper *forwardingkeeper.Keeper - AuraKeeper *aurakeeper.Keeper - HaloKeeper *halokeeper.Keeper - FlorinKeeper *florinkeeper.Keeper - - // this line is used by starport scaffolding # stargate/app/keeperDeclaration - - // mm is the module manager - mm *module.Manager - - // sm is the simulation manager - sm *module.SimulationManager - configurator module.Configurator -} - -// New returns a reference to an initialized blockchain app -func New( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - loadLatest bool, - skipUpgradeHeights map[int64]bool, - homePath string, - invCheckPeriod uint, - encodingConfig cmd.EncodingConfig, - appOpts servertypes.AppOptions, - baseAppOptions ...func(*baseapp.BaseApp), -) cmd.App { - appCodec := encodingConfig.Marshaler - cdc := encodingConfig.Amino - interfaceRegistry := encodingConfig.InterfaceRegistry - - bApp := baseapp.NewBaseApp(Name, logger, db, encodingConfig.TxConfig.TxDecoder(), baseAppOptions...) - bApp.SetCommitMultiStoreTracer(traceStore) - bApp.SetVersion(version.Version) - bApp.SetInterfaceRegistry(interfaceRegistry) - - keys := sdk.NewKVStoreKeys( - authtypes.StoreKey, authz.ModuleName, banktypes.StoreKey, slashingtypes.StoreKey, distrtypes.StoreKey, - paramstypes.StoreKey, ibchost.StoreKey, upgradetypes.StoreKey, feegrant.StoreKey, evidencetypes.StoreKey, - ibctransfertypes.StoreKey, icahosttypes.StoreKey, capabilitytypes.StoreKey, - tokenfactorymoduletypes.StoreKey, fiattokenfactorymoduletypes.StoreKey, packetforwardtypes.StoreKey, stakingtypes.StoreKey, - cctptypes.StoreKey, forwardingtypes.StoreKey, auratypes.ModuleName, halotypes.ModuleName, florintypes.ModuleName, - ) - tkeys := sdk.NewTransientStoreKeys( - paramstypes.TStoreKey, - forwardingtypes.TransientStoreKey, - ) - memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey) - - app := &App{ - BaseApp: bApp, - cdc: cdc, - appCodec: appCodec, - interfaceRegistry: interfaceRegistry, - invCheckPeriod: invCheckPeriod, - keys: keys, - tkeys: tkeys, - memKeys: memKeys, - } - - app.ParamsKeeper = initParamsKeeper( - appCodec, - cdc, - keys[paramstypes.StoreKey], - tkeys[paramstypes.TStoreKey], - ) - - // set the BaseApp's parameter store - bApp.SetParamStore(app.ParamsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramskeeper.ConsensusParamsKeyTable())) - - // add capability keeper and ScopeToModule for ibc module - app.CapabilityKeeper = capabilitykeeper.NewKeeper( - appCodec, - keys[capabilitytypes.StoreKey], - memKeys[capabilitytypes.MemStoreKey], - ) - - // grant capabilities for the ibc and ibc-transfer modules - scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibchost.ModuleName) - scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(ibctransfertypes.ModuleName) - scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) - // this line is used by starport scaffolding # stargate/app/scopedKeeper - - // add keepers - app.AccountKeeper = authkeeper.NewAccountKeeper( - appCodec, - keys[authtypes.StoreKey], - app.GetSubspace(authtypes.ModuleName), - authtypes.ProtoBaseAccount, - maccPerms, - ) - - app.AuthzKeeper = authzkeeper.NewKeeper( - keys[authz.ModuleName], - appCodec, - app.MsgServiceRouter(), - ) - - app.AuraKeeper = aurakeeper.NewKeeper( - appCodec, - keys[auratypes.ModuleName], - "ausdy", - nil, - ) - - app.HaloKeeper = halokeeper.NewKeeper( - appCodec, - keys[halotypes.ModuleName], - "uusyc", - "uusdc", - app.AccountKeeper, - nil, - nil, - interfaceRegistry, - ) - - app.FlorinKeeper = florinkeeper.NewKeeper( - keys[florintypes.ModuleName], - app.AccountKeeper, - nil, - ) - - app.BankKeeper = bankkeeper.NewBaseKeeper( - appCodec, - keys[banktypes.StoreKey], - app.AccountKeeper, - app.GetSubspace(banktypes.ModuleName), - app.BlockedModuleAccountAddrs(), - ). - WithSendCoinsRestriction(app.AuraKeeper.SendRestrictionFn). - WithSendCoinsRestriction(app.HaloKeeper.SendRestrictionFn). - WithSendCoinsRestriction(app.FlorinKeeper.SendRestrictionFn) - app.AuraKeeper.SetBankKeeper(app.BankKeeper) - app.HaloKeeper.SetBankKeeper(app.BankKeeper) - app.FlorinKeeper.SetBankKeeper(app.BankKeeper) - - app.StakingKeeper = stakingkeeper.NewKeeper( - appCodec, - keys[stakingtypes.StoreKey], - app.AccountKeeper, - app.BankKeeper, - app.GetSubspace(stakingtypes.ModuleName), - ) - - app.DistrKeeper = distrkeeper.NewKeeper( - appCodec, - app.keys[distrtypes.StoreKey], - app.GetSubspace(distrtypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - &app.StakingKeeper, - authtypes.FeeCollectorName, - app.ModuleAccountAddrs(), - ) - - app.SlashingKeeper = slashingkeeper.NewKeeper( - appCodec, - keys[slashingtypes.StoreKey], - &app.StakingKeeper, - app.GetSubspace(slashingtypes.ModuleName), - ) - - app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), - invCheckPeriod, - app.BankKeeper, - authtypes.FeeCollectorName, - ) - - app.FeeGrantKeeper = feegrantkeeper.NewKeeper( - appCodec, - keys[feegrant.StoreKey], - app.AccountKeeper, - ) - - app.UpgradeKeeper = paramauthorityupgradekeeper.NewKeeper( - skipUpgradeHeights, - keys[upgradetypes.StoreKey], - appCodec, - homePath, - app.BaseApp, - app.GetSubspace(upgradetypes.ModuleName), - ) - - // register the staking hooks - // NOTE: stakingKeeper above is passed by reference, so that it will contain these hooks - app.StakingKeeper = *app.StakingKeeper.SetHooks(app.SlashingKeeper.Hooks()) - - // ... other modules keepers - - // Create IBC Keeper - app.IBCKeeper = ibckeeper.NewKeeper( - appCodec, keys[ibchost.StoreKey], - app.GetSubspace(ibchost.ModuleName), - &app.StakingKeeper, - app.UpgradeKeeper, - scopedIBCKeeper, - ) - - app.TariffKeeper = tariffkeeper.NewKeeper( - app.GetSubspace(tarifftypes.ModuleName), - app.AccountKeeper, - app.BankKeeper, - authtypes.FeeCollectorName, - app.IBCKeeper.ChannelKeeper, - ) - - app.PacketForwardKeeper = packetforwardkeeper.NewKeeper( - appCodec, - keys[packetforwardtypes.StoreKey], - app.GetSubspace(packetforwardtypes.ModuleName), - app.TransferKeeper, // will be zero-value here. reference set later on with SetTransferKeeper. - app.IBCKeeper.ChannelKeeper, - app.DistrKeeper, - app.BankKeeper, - app.TariffKeeper, - ) - - // Create Transfer Keepers - app.TransferKeeper = ibctransferkeeper.NewKeeper( - appCodec, - keys[ibctransfertypes.StoreKey], - app.GetSubspace(ibctransfertypes.ModuleName), - app.PacketForwardKeeper, - app.IBCKeeper.ChannelKeeper, - &app.IBCKeeper.PortKeeper, - app.AccountKeeper, - app.BankKeeper, - scopedTransferKeeper, - ) - - app.PacketForwardKeeper.SetTransferKeeper(app.TransferKeeper) - - transferModule := transfer.NewAppModule(app.TransferKeeper) - - app.ICAHostKeeper = icahostkeeper.NewKeeper( - appCodec, keys[icahosttypes.StoreKey], - app.GetSubspace(icahosttypes.SubModuleName), - app.IBCKeeper.ChannelKeeper, - &app.IBCKeeper.PortKeeper, - app.AccountKeeper, - scopedICAHostKeeper, - app.MsgServiceRouter(), - ) - icaModule := ica.NewAppModule(nil, &app.ICAHostKeeper) - icaHostIBCModule := icahost.NewIBCModule(app.ICAHostKeeper) - - // Create evidence Keeper for to register the IBC light client misbehaviour evidence route - evidenceKeeper := evidencekeeper.NewKeeper( - appCodec, - keys[evidencetypes.StoreKey], - &app.StakingKeeper, - app.SlashingKeeper, - ) - // If evidence needs to be handled for the app, set routes in router here and seal - app.EvidenceKeeper = *evidenceKeeper - - app.TokenFactoryKeeper = tokenfactorymodulekeeper.NewKeeper( - appCodec, - keys[tokenfactorymoduletypes.StoreKey], - app.GetSubspace(tokenfactorymoduletypes.ModuleName), - - app.BankKeeper, - ) - tokenfactoryModule := tokenfactorymodule.NewAppModule(appCodec, app.TokenFactoryKeeper, app.AccountKeeper, app.BankKeeper) - - app.FiatTokenFactoryKeeper = fiattokenfactorymodulekeeper.NewKeeper( - appCodec, - keys[fiattokenfactorymoduletypes.StoreKey], - app.GetSubspace(fiattokenfactorymoduletypes.ModuleName), - - app.BankKeeper, - ) - app.HaloKeeper.SetFTFKeeper(app.FiatTokenFactoryKeeper) - fiattokenfactorymodule := fiattokenfactorymodule.NewAppModule(appCodec, app.FiatTokenFactoryKeeper, app.AccountKeeper, app.BankKeeper) - - app.CCTPKeeper = cctpkeeper.NewKeeper( - appCodec, - keys[cctptypes.StoreKey], - app.GetSubspace(cctptypes.ModuleName), - app.BankKeeper, - app.FiatTokenFactoryKeeper, - ) - - app.ForwardingKeeper = forwardingkeeper.NewKeeper( - appCodec, - keys[forwardingtypes.StoreKey], - tkeys[forwardingtypes.TransientStoreKey], - app.AccountKeeper, - app.BankKeeper, - app.IBCKeeper.ChannelKeeper, - app.TransferKeeper, - ) - - var transferStack ibcporttypes.IBCModule - transferStack = transfer.NewIBCModule(app.TransferKeeper) - transferStack = forwarding.NewMiddleware(transferStack, app.AccountKeeper, app.ForwardingKeeper) - transferStack = packetforward.NewIBCMiddleware( - transferStack, - app.PacketForwardKeeper, - 0, - packetforwardkeeper.DefaultForwardTransferPacketTimeoutTimestamp, - packetforwardkeeper.DefaultRefundTransferPacketTimeoutTimestamp, - ) - transferStack = blockibc.NewIBCMiddleware(transferStack, app.FiatTokenFactoryKeeper) - - // Create static IBC router, add transfer route, then set and seal it - ibcRouter := ibcporttypes.NewRouter() - ibcRouter.AddRoute(icahosttypes.SubModuleName, icaHostIBCModule). - AddRoute(ibctransfertypes.ModuleName, transferStack) - - // this line is used by starport scaffolding # ibc/app/router - app.IBCKeeper.SetRouter(ibcRouter) - - /**** Module Options ****/ - - // NOTE: we may consider parsing `appOpts` inside module constructors. For the moment - // we prefer to be more strict in what arguments the modules expect. - var skipGenesisInvariants = cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) - - // NOTE: Any module instantiated in the module manager that is later modified - // must be passed by reference here. - - app.mm = module.NewManager( - genutil.NewAppModule( - app.AccountKeeper, app.StakingKeeper, app.BaseApp.DeliverTx, - encodingConfig.TxConfig, - ), - auth.NewAppModule(appCodec, app.AccountKeeper, nil), - authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry), - vesting.NewAppModule(app.AccountKeeper, app.BankKeeper), - bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), - capability.NewAppModule(appCodec, *app.CapabilityKeeper), - feegrantmodule.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.FeeGrantKeeper, app.interfaceRegistry), - crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), - slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - distr.NewAppModule(appCodec, app.DistrKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), - paramauthorityupgrade.NewAppModule(app.UpgradeKeeper), - evidence.NewAppModule(app.EvidenceKeeper), - ibc.NewAppModule(app.IBCKeeper), - paramauthority.NewAppModule(app.ParamsKeeper), - transferModule, - icaModule, - tokenfactoryModule, - fiattokenfactorymodule, - packetforward.NewAppModule(app.PacketForwardKeeper), - staking.NewAppModule(appCodec, app.StakingKeeper, app.AccountKeeper, app.BankKeeper), - globalfee.NewAppModule(app.GetSubspace(globalfee.ModuleName)), - tariff.NewAppModule(appCodec, app.TariffKeeper, app.AccountKeeper, app.BankKeeper), - cctp.NewAppModule(appCodec, app.AccountKeeper, app.BankKeeper, app.CCTPKeeper), - forwarding.NewAppModule(app.ForwardingKeeper), - aura.NewAppModule(app.AuraKeeper), - halo.NewAppModule(app.HaloKeeper), - florin.NewAppModule(app.FlorinKeeper), - ) - - // During begin block slashing happens after distr.BeginBlocker so that - // there is nothing left over in the validator fee pool, so as to keep the - // CanWithdrawInvariant invariant. - // NOTE: staking module is required if HistoricalEntries param > 0 - app.mm.SetOrderBeginBlockers( - // upgrades should be run first - upgradetypes.ModuleName, - capabilitytypes.ModuleName, - tarifftypes.ModuleName, - distrtypes.ModuleName, - slashingtypes.ModuleName, - evidencetypes.ModuleName, - stakingtypes.ModuleName, - authtypes.ModuleName, - banktypes.ModuleName, - crisistypes.ModuleName, - ibctransfertypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - genutiltypes.ModuleName, - packetforwardtypes.ModuleName, - authz.ModuleName, - feegrant.ModuleName, - paramstypes.ModuleName, - vestingtypes.ModuleName, - tokenfactorymoduletypes.ModuleName, - fiattokenfactorymoduletypes.ModuleName, - globalfee.ModuleName, - cctptypes.ModuleName, - forwardingtypes.ModuleName, - auratypes.ModuleName, - halotypes.ModuleName, - florintypes.ModuleName, - ) - - app.mm.SetOrderEndBlockers( - crisistypes.ModuleName, - stakingtypes.ModuleName, - ibctransfertypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - packetforwardtypes.ModuleName, - capabilitytypes.ModuleName, - authtypes.ModuleName, - banktypes.ModuleName, - distrtypes.ModuleName, - slashingtypes.ModuleName, - genutiltypes.ModuleName, - evidencetypes.ModuleName, - authz.ModuleName, - feegrant.ModuleName, - paramstypes.ModuleName, - upgradetypes.ModuleName, - vestingtypes.ModuleName, - tokenfactorymoduletypes.ModuleName, - fiattokenfactorymoduletypes.ModuleName, - globalfee.ModuleName, - tarifftypes.ModuleName, - cctptypes.ModuleName, - forwardingtypes.ModuleName, - auratypes.ModuleName, - halotypes.ModuleName, - florintypes.ModuleName, - ) - - // NOTE: The genutils module must occur after staking so that pools are - // properly initialized with tokens from genesis accounts. - // NOTE: Capability module must occur first so that it can initialize any capabilities - // so that other modules that want to create or claim capabilities afterwards in InitChain - // can do so safely. - app.mm.SetOrderInitGenesis( - capabilitytypes.ModuleName, - ibctransfertypes.ModuleName, - authtypes.ModuleName, - banktypes.ModuleName, - stakingtypes.ModuleName, - tarifftypes.ModuleName, - distrtypes.ModuleName, - slashingtypes.ModuleName, - crisistypes.ModuleName, - fiattokenfactorymoduletypes.ModuleName, - genutiltypes.ModuleName, - ibchost.ModuleName, - icatypes.ModuleName, - packetforwardtypes.ModuleName, - evidencetypes.ModuleName, - authz.ModuleName, - feegrant.ModuleName, - paramstypes.ModuleName, - upgradetypes.ModuleName, - vestingtypes.ModuleName, - tokenfactorymoduletypes.ModuleName, - globalfee.ModuleName, - cctptypes.ModuleName, - forwardingtypes.ModuleName, - auratypes.ModuleName, - halotypes.ModuleName, - florintypes.ModuleName, - - // this line is used by starport scaffolding # stargate/app/initGenesis - ) - - // Uncomment if you want to set a custom migration order here. - // app.mm.SetOrderMigrations(custom order) - - app.mm.RegisterInvariants(&app.CrisisKeeper) - app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) - - app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) - app.mm.RegisterServices(app.configurator) - - // Register authoritative IBC client update and IBC upgrade msg handlers - paramauthorityibctypes.RegisterMsgServer( - app.configurator.MsgServer(), - paramauthorityibc.NewMsgServer(app.UpgradeKeeper, app.IBCKeeper.ClientKeeper), - ) - - // create the simulation manager and define the order of the modules for deterministic simulations - overrideModules := map[string]module.AppModuleSimulation{ - authtypes.ModuleName: auth.NewAppModule(app.appCodec, app.AccountKeeper, authsims.RandomGenesisAccounts), - } - app.sm = module.NewSimulationManagerFromAppModules(app.mm.Modules, overrideModules) - app.sm.RegisterStoreDecoders() - - // initialize stores - app.MountKVStores(keys) - app.MountTransientStores(tkeys) - app.MountMemoryStores(memKeys) - - // initialize BaseApp - anteHandler, err := NewAnteHandler( - HandlerOptions{ - HandlerOptions: ante.HandlerOptions{ - AccountKeeper: app.AccountKeeper, - BankKeeper: app.BankKeeper, - FeegrantKeeper: app.FeeGrantKeeper, - SignModeHandler: encodingConfig.TxConfig.SignModeHandler(), - SigGasConsumer: ante.DefaultSigVerificationGasConsumer, - }, - cdc: appCodec, - fiatTokenFactoryKeeper: app.FiatTokenFactoryKeeper, - - IBCKeeper: app.IBCKeeper, - GlobalFeeSubspace: app.GetSubspace(globalfee.ModuleName), - StakingSubspace: app.GetSubspace(stakingtypes.ModuleName), - - ForwardingKeeper: app.ForwardingKeeper, - }, - ) - if err != nil { - panic(fmt.Errorf("failed to create AnteHandler: %s", err)) - } - - app.SetAnteHandler(anteHandler) - app.SetInitChainer(app.InitChainer) - app.SetBeginBlocker(app.BeginBlocker) - app.SetEndBlocker(app.EndBlocker) - app.setupUpgradeHandlers() - - if loadLatest { - if err := app.LoadLatestVersion(); err != nil { - tmos.Exit(err.Error()) - } - } - - app.ScopedIBCKeeper = scopedIBCKeeper - app.ScopedTransferKeeper = scopedTransferKeeper - // this line is used by starport scaffolding # stargate/app/beforeInitReturn - - return app -} - -// Name returns the name of the App -func (app *App) Name() string { return app.BaseApp.Name() } - -// GetBaseApp returns the base app of the application -func (app App) GetBaseApp() *baseapp.BaseApp { return app.BaseApp } - -// BeginBlocker application updates every begin block -func (app *App) BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock { - return app.mm.BeginBlock(ctx, req) -} - -// EndBlocker application updates every end block -func (app *App) EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock { - return app.mm.EndBlock(ctx, req) -} - -// InitChainer application update at chain initialization -func (app *App) InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain { - var genesisState GenesisState - if err := tmjson.Unmarshal(req.AppStateBytes, &genesisState); err != nil { - panic(err) - } - app.UpgradeKeeper.SetModuleVersionMap(ctx, app.mm.GetVersionMap()) - return app.mm.InitGenesis(ctx, app.appCodec, genesisState) -} - -// LoadHeight loads a particular height -func (app *App) LoadHeight(height int64) error { - return app.LoadVersion(height) -} - -// ModuleAccountAddrs returns all the app's module account addresses. -func (app *App) ModuleAccountAddrs() map[string]bool { - modAccAddrs := make(map[string]bool) - for acc := range maccPerms { - modAccAddrs[authtypes.NewModuleAddress(acc).String()] = true - } - - return modAccAddrs -} - -// BlockedModuleAccountAddrs returns all the app's blocked module account -// addresses. -func (app *App) BlockedModuleAccountAddrs() map[string]bool { - modAccAddrs := app.ModuleAccountAddrs() - return modAccAddrs -} - -// LegacyAmino returns SimApp's amino codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *App) LegacyAmino() *codec.LegacyAmino { - return app.cdc -} - -// AppCodec returns an app codec. -// -// NOTE: This is solely to be used for testing purposes as it may be desirable -// for modules to register their own custom testing types. -func (app *App) AppCodec() codec.Codec { - return app.appCodec -} - -// InterfaceRegistry returns an InterfaceRegistry -func (app *App) InterfaceRegistry() types.InterfaceRegistry { - return app.interfaceRegistry -} - -// GetKey returns the KVStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (app *App) GetKey(storeKey string) *storetypes.KVStoreKey { - return app.keys[storeKey] -} - -// GetTKey returns the TransientStoreKey for the provided store key. -// -// NOTE: This is solely to be used for testing purposes. -func (app *App) GetTKey(storeKey string) *storetypes.TransientStoreKey { - return app.tkeys[storeKey] -} - -// GetMemKey returns the MemStoreKey for the provided mem key. -// -// NOTE: This is solely used for testing purposes. -func (app *App) GetMemKey(storeKey string) *storetypes.MemoryStoreKey { - return app.memKeys[storeKey] -} - -// GetSubspace returns a param subspace for a given module name. -// -// NOTE: This is solely to be used for testing purposes. -func (app *App) GetSubspace(moduleName string) paramstypes.Subspace { - subspace, _ := app.ParamsKeeper.GetSubspace(moduleName) - return subspace -} - -// RegisterAPIRoutes registers all application module routes with the provided -// API server. -func (app *App) RegisterAPIRoutes(apiSvr *api.Server, apiConfig config.APIConfig) { - clientCtx := apiSvr.ClientCtx - // Register new tx routes from grpc-gateway. - authtx.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - // Register new tendermint queries routes from grpc-gateway. - tmservice.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // Register grpc-gateway routes for all modules. - ModuleBasics.RegisterGRPCGatewayRoutes(clientCtx, apiSvr.GRPCGatewayRouter) - - // register app's OpenAPI routes. - apiSvr.Router.Handle("/static/openapi.yml", http.FileServer(http.FS(docs.Docs))) -} - -// RegisterTxService implements the Application.RegisterTxService method. -func (app *App) RegisterTxService(clientCtx client.Context) { - authtx.RegisterTxService(app.BaseApp.GRPCQueryRouter(), clientCtx, app.BaseApp.Simulate, app.interfaceRegistry) -} - -// RegisterTendermintService implements the Application.RegisterTendermintService method. -func (app *App) RegisterTendermintService(clientCtx client.Context) { - tmservice.RegisterTendermintService( - app.BaseApp.GRPCQueryRouter(), - clientCtx, - app.interfaceRegistry, - ) -} - -// GetMaccPerms returns a copy of the module account permissions -func GetMaccPerms() map[string][]string { - dupMaccPerms := make(map[string][]string) - for k, v := range maccPerms { - dupMaccPerms[k] = v - } - return dupMaccPerms -} - -// initParamsKeeper init params keeper and its subspaces -func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino, key, tkey storetypes.StoreKey) paramauthoritykeeper.Keeper { - paramsKeeper := paramauthoritykeeper.NewKeeper(appCodec, legacyAmino, key, tkey) - - paramsKeeper.Subspace(authtypes.ModuleName) - paramsKeeper.Subspace(banktypes.ModuleName) - paramsKeeper.Subspace(stakingtypes.ModuleName) - paramsKeeper.Subspace(tarifftypes.ModuleName) - paramsKeeper.Subspace(distrtypes.ModuleName) - paramsKeeper.Subspace(slashingtypes.ModuleName) - paramsKeeper.Subspace(crisistypes.ModuleName) - paramsKeeper.Subspace(ibctransfertypes.ModuleName) - paramsKeeper.Subspace(packetforwardtypes.ModuleName).WithKeyTable(packetforwardtypes.ParamKeyTable()) - paramsKeeper.Subspace(ibchost.ModuleName) - paramsKeeper.Subspace(icahosttypes.SubModuleName) - paramsKeeper.Subspace(tokenfactorymoduletypes.ModuleName) - paramsKeeper.Subspace(fiattokenfactorymoduletypes.ModuleName) - paramsKeeper.Subspace(upgradetypes.ModuleName) - paramsKeeper.Subspace(globalfee.ModuleName) - paramsKeeper.Subspace(cctptypes.ModuleName) - // this line is used by starport scaffolding # stargate/app/paramSubspace - - return paramsKeeper -} - -func (app *App) setupUpgradeHandlers() { - app.UpgradeKeeper.SetUpgradeHandler( - numus.UpgradeName, - numus.CreateUpgradeHandler( - app.mm, - app.configurator, - app.BankKeeper, - app.FlorinKeeper, - app.ParamsKeeper, - ), - ) - - upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() - if err != nil { - panic(fmt.Errorf("failed to read upgrade info from disk: %w", err)) - } - if app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { - return - } - - var storeLoader baseapp.StoreLoader - - switch upgradeInfo.Name { - case numus.UpgradeName: - storeLoader = numus.CreateStoreLoader(upgradeInfo.Height) - } - - if storeLoader != nil { - // configure store loader that checks if version == upgradeHeight and applies store upgrades - app.SetStoreLoader(storeLoader) - } -} - -// SimulationManager implements the SimulationApp interface -func (app *App) SimulationManager() *module.SimulationManager { - return app.sm -} - -// ConsumerApp interface implementations for e2e tests - -// GetTxConfig implements the TestingApp interface. -func (app *App) GetTxConfig() client.TxConfig { - return cmd.MakeEncodingConfig(ModuleBasics).TxConfig -} - -// GetIBCKeeper implements the TestingApp interface. -func (app *App) GetIBCKeeper() *ibckeeper.Keeper { - return app.IBCKeeper -} - -// GetStakingKeeper implements the TestingApp interface. -func (app *App) GetStakingKeeper() ibcclienttypes.StakingKeeper { - return &app.StakingKeeper -} - -// GetScopedIBCKeeper implements the TestingApp interface. -func (app *App) GetScopedIBCKeeper() capabilitykeeper.ScopedKeeper { - return app.ScopedIBCKeeper -} diff --git a/app/export.go b/app/export.go deleted file mode 100644 index dcabba98..00000000 --- a/app/export.go +++ /dev/null @@ -1,144 +0,0 @@ -package app - -import ( - "encoding/json" - "log" - - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - - servertypes "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" - slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" - "github.com/cosmos/cosmos-sdk/x/staking" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" -) - -// ExportAppStateAndValidators exports the state of the application for a genesis -// file. -func (app *App) ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, -) (servertypes.ExportedApp, error) { - - // as if they could withdraw from the start of the next block - ctx := app.NewContext(true, tmproto.Header{Height: app.LastBlockHeight()}) - - // We export at last height + 1, because that's the height at which - // Tendermint will start InitChain. - height := app.LastBlockHeight() + 1 - if forZeroHeight { - height = 0 - app.prepForZeroHeightGenesis(ctx, jailAllowedAddrs) - } - - genState := app.mm.ExportGenesis(ctx, app.appCodec) - appState, err := json.MarshalIndent(genState, "", " ") - if err != nil { - return servertypes.ExportedApp{}, err - } - - validators, err := staking.WriteValidators(ctx, app.StakingKeeper) - if err != nil { - return servertypes.ExportedApp{}, err - } - return servertypes.ExportedApp{ - AppState: appState, - Validators: validators, - Height: height, - ConsensusParams: app.BaseApp.GetConsensusParams(ctx), - }, nil -} - -// prepare for fresh start at zero height -// NOTE zero height genesis is a temporary feature which will be deprecated -// -// in favour of export at a block height -func (app *App) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs []string) { - applyAllowedAddrs := false - - // check if there is a allowed address list - if len(jailAllowedAddrs) > 0 { - applyAllowedAddrs = true - } - - allowedAddrsMap := make(map[string]bool) - - for _, addr := range jailAllowedAddrs { - _, err := sdk.ValAddressFromBech32(addr) - if err != nil { - log.Fatal(err) - } - allowedAddrsMap[addr] = true - } - - /* Just to be safe, assert the invariants on current state. */ - app.CrisisKeeper.AssertInvariants(ctx) - - /* Handle fee distribution state. */ - - // set context height to zero - height := ctx.BlockHeight() - ctx = ctx.WithBlockHeight(0) - - // reset context height - ctx = ctx.WithBlockHeight(height) - - /* Handle staking state. */ - - // iterate through redelegations, reset creation height - app.StakingKeeper.IterateRedelegations(ctx, func(_ int64, red stakingtypes.Redelegation) (stop bool) { - for i := range red.Entries { - red.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetRedelegation(ctx, red) - return false - }) - - // iterate through unbonding delegations, reset creation height - app.StakingKeeper.IterateUnbondingDelegations(ctx, func(_ int64, ubd stakingtypes.UnbondingDelegation) (stop bool) { - for i := range ubd.Entries { - ubd.Entries[i].CreationHeight = 0 - } - app.StakingKeeper.SetUnbondingDelegation(ctx, ubd) - return false - }) - - // Iterate through validators by power descending, reset bond heights, and - // update bond intra-tx counters. - store := ctx.KVStore(app.keys[stakingtypes.StoreKey]) - iter := sdk.KVStoreReversePrefixIterator(store, stakingtypes.ValidatorsKey) - counter := int16(0) - - for ; iter.Valid(); iter.Next() { - addr := sdk.ValAddress(iter.Key()[1:]) - validator, found := app.StakingKeeper.GetValidator(ctx, addr) - if !found { - panic("expected validator, not found") - } - - validator.UnbondingHeight = 0 - if applyAllowedAddrs && !allowedAddrsMap[addr.String()] { - validator.Jailed = true - } - - app.StakingKeeper.SetValidator(ctx, validator) - counter++ - } - - iter.Close() - - if _, err := app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx); err != nil { - panic(err) - } - - /* Handle slashing state. */ - - // reset start height on signing infos - app.SlashingKeeper.IterateValidatorSigningInfos( - ctx, - func(addr sdk.ConsAddress, info slashingtypes.ValidatorSigningInfo) (stop bool) { - info.StartHeight = 0 - app.SlashingKeeper.SetValidatorSigningInfo(ctx, addr, info) - return false - }, - ) -} diff --git a/app/genesis.go b/app/genesis.go deleted file mode 100644 index 5bf0c1da..00000000 --- a/app/genesis.go +++ /dev/null @@ -1,21 +0,0 @@ -package app - -import ( - "encoding/json" - - "github.com/cosmos/cosmos-sdk/codec" -) - -// The genesis state of the blockchain is represented here as a map of raw json -// messages key'd by a identifier string. -// The identifier is used to determine which module genesis information belongs -// to so it may be appropriately routed during init chain. -// Within this application default genesis information is retrieved from -// the ModuleBasicManager which populates json from each BasicModule -// object provided to it during init. -type GenesisState map[string]json.RawMessage - -// NewDefaultGenesisState generates the default state for the application. -func NewDefaultGenesisState(cdc codec.JSONCodec) GenesisState { - return ModuleBasics.DefaultGenesis(cdc) -} diff --git a/app/simulation_test.go b/app/simulation_test.go deleted file mode 100644 index 8deacb53..00000000 --- a/app/simulation_test.go +++ /dev/null @@ -1,97 +0,0 @@ -package app_test - -import ( - "os" - "testing" - - "github.com/noble-assets/noble/v7/app" - "github.com/noble-assets/noble/v7/cmd" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - simulationtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/stretchr/testify/require" - abci "github.com/tendermint/tendermint/abci/types" -) - -func init() { - simapp.GetSimulatorFlags() -} - -type SimApp interface { - cmd.App - GetBaseApp() *baseapp.BaseApp - AppCodec() codec.Codec - SimulationManager() *module.SimulationManager - ModuleAccountAddrs() map[string]bool - Name() string - LegacyAmino() *codec.LegacyAmino - BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock - EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock - InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain -} - -// BenchmarkSimulation run the chain simulation -// Running using starport command: -// `starport chain simulate -v --numBlocks 200 --blockSize 50` -// Running as go benchmark test: -// `go test -benchmem -run=^$ -bench ^BenchmarkSimulation ./app -NumBlocks=200 -BlockSize 50 -Commit=true -Verbose=true -Enabled=true` -func BenchmarkSimulation(b *testing.B) { - simapp.FlagNumBlocksValue = 250 - simapp.FlagBlockSizeValue = 50 - simapp.FlagCommitValue = true - simapp.FlagVerboseValue = true - simapp.FlagEnabledValue = true - - config, db, dir, logger, _, err := simapp.SetupSimulation("goleveldb-app-sim", "Simulation") - require.NoError(b, err, "simulation setup failed") - - b.Cleanup(func() { - db.Close() - err = os.RemoveAll(dir) - require.NoError(b, err) - }) - - encoding := cmd.MakeEncodingConfig(app.ModuleBasics) - - app := app.New( - logger, - db, - nil, - true, - map[int64]bool{}, - app.DefaultNodeHome, - 0, - encoding, - simapp.EmptyAppOptions{}, - ) - - simApp, ok := app.(SimApp) - require.True(b, ok, "can't use simapp") - - // Run randomized simulations - _, simParams, simErr := simulation.SimulateFromSeed( - b, - os.Stdout, - simApp.GetBaseApp(), - simapp.AppStateFn(simApp.AppCodec(), simApp.SimulationManager()), - simulationtypes.RandomAccounts, - simapp.SimulationOperations(simApp, simApp.AppCodec(), config), - simApp.ModuleAccountAddrs(), - config, - simApp.AppCodec(), - ) - - // export state and simParams before the simulation error is checked - err = simapp.CheckExportSimulation(simApp, config, simParams) - require.NoError(b, err) - require.NoError(b, simErr) - - if config.Commit { - simapp.PrintStats(db) - } -} diff --git a/app/upgrades/numus/constants.go b/app/upgrades/numus/constants.go deleted file mode 100644 index cdff7c56..00000000 --- a/app/upgrades/numus/constants.go +++ /dev/null @@ -1,10 +0,0 @@ -package numus - -// UpgradeName is the name of this specific software upgrade used on-chain. -const UpgradeName = "numus" - -// MainnetChainID is the Chain ID of the Noble mainnet. -const MainnetChainID = "noble-1" - -// TestnetChainID is the Chain ID of the Noble testnet. -const TestnetChainID = "grand-1" diff --git a/app/upgrades/numus/store.go b/app/upgrades/numus/store.go deleted file mode 100644 index f1ac84e7..00000000 --- a/app/upgrades/numus/store.go +++ /dev/null @@ -1,16 +0,0 @@ -package numus - -import ( - "github.com/cosmos/cosmos-sdk/baseapp" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - florintypes "github.com/monerium/module-noble/x/florin/types" -) - -func CreateStoreLoader(upgradeHeight int64) baseapp.StoreLoader { - storeUpgrades := storetypes.StoreUpgrades{ - Added: []string{florintypes.ModuleName}, - } - - return upgradetypes.UpgradeStoreLoader(upgradeHeight, &storeUpgrades) -} diff --git a/app/upgrades/numus/upgrade.go b/app/upgrades/numus/upgrade.go deleted file mode 100644 index 9076e3ce..00000000 --- a/app/upgrades/numus/upgrade.go +++ /dev/null @@ -1,63 +0,0 @@ -package numus - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - florinkeeper "github.com/monerium/module-noble/x/florin/keeper" - paramskeeper "github.com/strangelove-ventures/paramauthority/x/params/keeper" -) - -func CreateUpgradeHandler( - mm *module.Manager, - cfg module.Configurator, - bankKeeper bankkeeper.Keeper, - florinKeeper *florinkeeper.Keeper, - paramsKeeper paramskeeper.Keeper, -) upgradetypes.UpgradeHandler { - return func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { - vm, err := mm.RunMigrations(ctx, cfg, vm) - if err != nil { - return vm, err - } - - authority := paramsKeeper.GetAuthority(ctx) - florinKeeper.SetAuthority(ctx, authority) - - switch ctx.ChainID() { - case TestnetChainID: - florinKeeper.SetOwner(ctx, "ueure", "noble1tv9u97jln0k3anpzhahkeahh66u74dug302pyn") - florinKeeper.SetBlacklistOwner(ctx, "noble1tv9u97jln0k3anpzhahkeahh66u74dug302pyn") - case MainnetChainID: - florinKeeper.SetOwner(ctx, "ueure", "noble1ya7ggnwv78qcnkv89lte30yge54ztzst3usgmw") - florinKeeper.SetBlacklistOwner(ctx, "noble1ya7ggnwv78qcnkv89lte30yge54ztzst3usgmw") - default: - return vm, fmt.Errorf("%s upgrade not allowed to execute on %s chain", UpgradeName, ctx.ChainID()) - } - - bankKeeper.SetDenomMetaData(ctx, banktypes.Metadata{ - Description: "Monerium EUR emoney", - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: "ueure", - Exponent: 0, - Aliases: []string{"microeure"}, - }, - { - Denom: "eure", - Exponent: 6, - }, - }, - Base: "ueure", - Display: "eure", - Name: "Monerium EUR emoney", - Symbol: "EURe", - }) - - return vm, nil - } -} diff --git a/buf.work.yaml b/buf.work.yaml deleted file mode 100644 index 1878b341..00000000 --- a/buf.work.yaml +++ /dev/null @@ -1,3 +0,0 @@ -version: v1 -directories: - - proto diff --git a/chains.yaml b/chains.yaml deleted file mode 100644 index d084e6ec..00000000 --- a/chains.yaml +++ /dev/null @@ -1,7 +0,0 @@ -# This file is used to create docker images using the heighliner binary. - -- name: noble - dockerfile: cosmos - build-target: make install - binaries: - - /go/bin/nobled diff --git a/cmd/commands.go b/cmd/commands.go new file mode 100644 index 00000000..2247bd28 --- /dev/null +++ b/cmd/commands.go @@ -0,0 +1,160 @@ +package cmd + +import ( + "cosmossdk.io/log" + confixcmd "cosmossdk.io/tools/confix/cmd" + "errors" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/debug" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/keys" + "github.com/cosmos/cosmos-sdk/client/pruning" + "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/client/snapshot" + "github.com/cosmos/cosmos-sdk/server" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/x/crisis" + genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" + "github.com/noble-assets/noble/v8" + "github.com/spf13/cobra" + "github.com/spf13/viper" + "io" +) + +func initRootCmd(rootCmd *cobra.Command, txConfig client.TxConfig, basicManager module.BasicManager) { + cfg := sdk.GetConfig() + cfg.Seal() + + rootCmd.AddCommand( + genutilcli.InitCmd(basicManager, noble.DefaultNodeHome), + debug.Cmd(), + confixcmd.ConfigCommand(), + pruning.Cmd(newApp, noble.DefaultNodeHome), + snapshot.Cmd(newApp), + ) + + server.AddCommands(rootCmd, noble.DefaultNodeHome, newApp, appExport, func(startCmd *cobra.Command) { + crisis.AddModuleInitFlags(startCmd) + }) + + // add keybase, auxiliary RPC, query, genesis, and tx child commands + rootCmd.AddCommand( + server.StatusCommand(), + genutilcli.Commands(txConfig, basicManager, noble.DefaultNodeHome), + queryCommand(), + txCommand(), + keys.Commands(), + ) +} + +func queryCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "query", + Aliases: []string{"q"}, + Short: "Querying subcommands", + DisableFlagParsing: false, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + rpc.ValidatorCommand(), + server.QueryBlockCmd(), + authcmd.QueryTxsByEventsCmd(), + server.QueryBlocksCmd(), + authcmd.QueryTxCmd(), + server.QueryBlockResultsCmd(), + ) + + return cmd +} + +func txCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "tx", + Short: "Transactions subcommands", + DisableFlagParsing: false, + SuggestionsMinimumDistance: 2, + RunE: client.ValidateCmd, + } + + cmd.AddCommand( + authcmd.GetSignCommand(), + authcmd.GetSignBatchCommand(), + authcmd.GetMultiSignCommand(), + authcmd.GetMultiSignBatchCmd(), + authcmd.GetValidateSignaturesCommand(), + authcmd.GetBroadcastCommand(), + authcmd.GetEncodeCommand(), + authcmd.GetDecodeCommand(), + authcmd.GetSimulateCmd(), + ) + + return cmd +} + +// newApp is an appCreator +func newApp(logger log.Logger, db dbm.DB, traceStore io.Writer, appOpts servertypes.AppOptions) servertypes.Application { + baseappOptions := server.DefaultBaseappOptions(appOpts) + app, err := noble.NewApp(logger, db, traceStore, true, appOpts, baseappOptions...) + if err != nil { + panic(err) + } + + return app +} + +// appExport creates a new app (optionally at a given height) and exports state. +func appExport( + logger log.Logger, + db dbm.DB, + traceStore io.Writer, + height int64, + forZeroHeight bool, + jailAllowedAddrs []string, + appOpts servertypes.AppOptions, + modulesToExport []string, +) (servertypes.ExportedApp, error) { + var ( + app *noble.App + err error + ) + + // this check is necessary as we use the flag in x/upgrade. + // we can exit more gracefully by checking the flag here. + homePath, ok := appOpts.Get(flags.FlagHome).(string) + if !ok || homePath == "" { + return servertypes.ExportedApp{}, errors.New("application home not set") + } + + viperAppOpts, ok := appOpts.(*viper.Viper) + if !ok { + return servertypes.ExportedApp{}, errors.New("appOpts is not viper.Viper") + } + + // overwrite the FlagInvCheckPeriod + viperAppOpts.Set(server.FlagInvCheckPeriod, 1) + appOpts = viperAppOpts + + if height != -1 { + app, err = noble.NewApp(logger, db, traceStore, false, appOpts) + if err != nil { + return servertypes.ExportedApp{}, err + } + + if err := app.LoadHeight(height); err != nil { + return servertypes.ExportedApp{}, err + } + } else { + app, err = noble.NewApp(logger, db, traceStore, true, appOpts) + if err != nil { + return servertypes.ExportedApp{}, err + } + } + + return app.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs, modulesToExport) +} diff --git a/cmd/cosmosapp.go b/cmd/cosmosapp.go deleted file mode 100644 index 525f2f8d..00000000 --- a/cmd/cosmosapp.go +++ /dev/null @@ -1,40 +0,0 @@ -package cmd - -import ( - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/server/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// CosmosApp implements the common methods for a Cosmos SDK-based application -// specific blockchain. -type CosmosApp interface { - // Name is the assigned name of the app. - Name() string - - // The application types codec. - // NOTE: This should be sealed before being returned. - LegacyAmino() *codec.LegacyAmino - - // BeginBlocker updates every begin block. - BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock) abci.ResponseBeginBlock - - // EndBlocker updates every end block. - EndBlocker(ctx sdk.Context, req abci.RequestEndBlock) abci.ResponseEndBlock - - // InitChainer updates at chain (i.e app) initialization. - InitChainer(ctx sdk.Context, req abci.RequestInitChain) abci.ResponseInitChain - - // LoadHeight loads the app at a given height. - LoadHeight(height int64) error - - // ExportAppStateAndValidators exports the state of the application for a genesis file. - ExportAppStateAndValidators( - forZeroHeight bool, jailAllowedAddrs []string, - ) (types.ExportedApp, error) - - // ModuleAccountAddrs are registered module account addreses. - ModuleAccountAddrs() map[string]bool -} diff --git a/cmd/encoding.go b/cmd/encoding.go deleted file mode 100644 index 91124d63..00000000 --- a/cmd/encoding.go +++ /dev/null @@ -1,44 +0,0 @@ -package cmd - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/std" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/cosmos/cosmos-sdk/x/auth/tx" -) - -// EncodingConfig specifies the concrete encoding types to use for a given app. -// This is provided for compatibility between protobuf and amino implementations. -type EncodingConfig struct { - InterfaceRegistry types.InterfaceRegistry - Marshaler codec.Codec - TxConfig client.TxConfig - Amino *codec.LegacyAmino -} - -// makeEncodingConfig creates an EncodingConfig for an amino based test configuration. -func makeEncodingConfig() EncodingConfig { - amino := codec.NewLegacyAmino() - interfaceRegistry := types.NewInterfaceRegistry() - marshaler := codec.NewProtoCodec(interfaceRegistry) - txCfg := tx.NewTxConfig(marshaler, tx.DefaultSignModes) - - return EncodingConfig{ - InterfaceRegistry: interfaceRegistry, - Marshaler: marshaler, - TxConfig: txCfg, - Amino: amino, - } -} - -// MakeEncodingConfig creates an EncodingConfig for testing -func MakeEncodingConfig(moduleBasics module.BasicManager) EncodingConfig { - encodingConfig := makeEncodingConfig() - std.RegisterLegacyAminoCodec(encodingConfig.Amino) - std.RegisterInterfaces(encodingConfig.InterfaceRegistry) - moduleBasics.RegisterLegacyAminoCodec(encodingConfig.Amino) - moduleBasics.RegisterInterfaces(encodingConfig.InterfaceRegistry) - return encodingConfig -} diff --git a/cmd/genaccounts.go b/cmd/genaccounts.go deleted file mode 100644 index 422e7c43..00000000 --- a/cmd/genaccounts.go +++ /dev/null @@ -1,190 +0,0 @@ -package cmd - -import ( - "bufio" - "encoding/json" - "errors" - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - "github.com/cosmos/cosmos-sdk/server" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/genutil" - genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" - "github.com/spf13/cobra" -) - -const ( - flagVestingStart = "vesting-start-time" - flagVestingEnd = "vesting-end-time" - flagVestingAmt = "vesting-amount" -) - -// AddGenesisAccountCmd returns add-genesis-account cobra Command. -func AddGenesisAccountCmd(defaultNodeHome string) *cobra.Command { - cmd := &cobra.Command{ - Use: "add-genesis-account [address_or_key_name] [coin][,[coin]]", - Short: "Add a genesis account to genesis.json", - Long: `Add a genesis account to genesis.json. The provided account must specify -the account address or key name and a list of initial coins. If a key name is given, -the address will be looked up in the local Keybase. The list of initial tokens must -contain valid denominations. Accounts may optionally be supplied with vesting parameters. -`, - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - depCdc := clientCtx.Codec - cdc := depCdc - - serverCtx := server.GetServerContextFromCmd(cmd) - config := serverCtx.Config - - config.SetRoot(clientCtx.HomeDir) - - coins, err := sdk.ParseCoinsNormalized(args[1]) - if err != nil { - return fmt.Errorf("failed to parse coins: %w", err) - } - - addr, err := sdk.AccAddressFromBech32(args[0]) - if err != nil { - inBuf := bufio.NewReader(cmd.InOrStdin()) - keyringBackend, err := cmd.Flags().GetString(flags.FlagKeyringBackend) - if err != nil { - return err - } - - // attempt to lookup address from Keybase if no address was provided - kb, err := keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.HomeDir, inBuf) - if err != nil { - return fmt.Errorf("failed to lookup keyring: %w", err) - } - - info, err := kb.Key(args[0]) - if err != nil { - return fmt.Errorf("failed to get address from Keybase: %w", err) - } - - addr = info.GetAddress() - } - - vestingStart, err := cmd.Flags().GetInt64(flagVestingStart) - if err != nil { - return err - } - vestingEnd, err := cmd.Flags().GetInt64(flagVestingEnd) - if err != nil { - return err - } - vestingAmtStr, err := cmd.Flags().GetString(flagVestingAmt) - if err != nil { - return err - } - - vestingAmt, err := sdk.ParseCoinsNormalized(vestingAmtStr) - if err != nil { - return fmt.Errorf("failed to parse vesting amount: %w", err) - } - - // create concrete account type based on input parameters - var genAccount authtypes.GenesisAccount - - balances := banktypes.Balance{Address: addr.String(), Coins: coins.Sort()} - baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0) - - if !vestingAmt.IsZero() { - baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd) - - if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) || - baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) { - return errors.New("vesting amount cannot be greater than total amount") - } - - switch { - case vestingStart != 0 && vestingEnd != 0: - genAccount = authvesting.NewContinuousVestingAccountRaw(baseVestingAccount, vestingStart) - - case vestingEnd != 0: - genAccount = authvesting.NewDelayedVestingAccountRaw(baseVestingAccount) - - default: - return errors.New("invalid vesting parameters; must supply start and end time or end time") - } - } else { - genAccount = baseAccount - } - - if err := genAccount.Validate(); err != nil { - return fmt.Errorf("failed to validate new genesis account: %w", err) - } - - genFile := config.GenesisFile() - appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile) - if err != nil { - return fmt.Errorf("failed to unmarshal genesis state: %w", err) - } - - authGenState := authtypes.GetGenesisStateFromAppState(cdc, appState) - - accs, err := authtypes.UnpackAccounts(authGenState.Accounts) - if err != nil { - return fmt.Errorf("failed to get accounts from any: %w", err) - } - - if accs.Contains(addr) { - return fmt.Errorf("cannot add account at existing address %s", addr) - } - - // Add the new account to the set of genesis accounts and sanitize the - // accounts afterwards. - accs = append(accs, genAccount) - accs = authtypes.SanitizeGenesisAccounts(accs) - - genAccs, err := authtypes.PackAccounts(accs) - if err != nil { - return fmt.Errorf("failed to convert accounts into any's: %w", err) - } - authGenState.Accounts = genAccs - - authGenStateBz, err := cdc.MarshalJSON(&authGenState) - if err != nil { - return fmt.Errorf("failed to marshal auth genesis state: %w", err) - } - - appState[authtypes.ModuleName] = authGenStateBz - - bankGenState := banktypes.GetGenesisStateFromAppState(cdc, appState) - bankGenState.Balances = append(bankGenState.Balances, balances) - bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances) - - bankGenStateBz, err := cdc.MarshalJSON(bankGenState) - if err != nil { - return fmt.Errorf("failed to marshal bank genesis state: %w", err) - } - - appState[banktypes.ModuleName] = bankGenStateBz - - appStateJSON, err := json.Marshal(appState) - if err != nil { - return fmt.Errorf("failed to marshal application genesis state: %w", err) - } - - genDoc.AppState = appStateJSON - return genutil.ExportGenesisFile(genDoc, genFile) - }, - } - - cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test)") - cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory") - cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts") - cmd.Flags().Int64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts") - cmd.Flags().Int64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts") - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/cmd/nobled/main.go b/cmd/nobled/main.go index d7724dec..ba7c08ab 100644 --- a/cmd/nobled/main.go +++ b/cmd/nobled/main.go @@ -1,25 +1,39 @@ package main import ( - "os" - + "fmt" svrcmd "github.com/cosmos/cosmos-sdk/server/cmd" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/noble-assets/noble/v8" + "github.com/noble-assets/noble/v8/cmd" + "os" +) - "github.com/noble-assets/noble/v7/app" - "github.com/noble-assets/noble/v7/cmd" +var ( + // Bech32PrefixAccAddr defines the Bech32 prefix of an account's address. + Bech32PrefixAccAddr = "noble" + // Bech32PrefixAccPub defines the Bech32 prefix of an account's public key. + Bech32PrefixAccPub = Bech32PrefixAccAddr + "pub" + // Bech32PrefixValAddr defines the Bech32 prefix of a validator's operator address. + Bech32PrefixValAddr = Bech32PrefixAccAddr + "valoper" + // Bech32PrefixValPub defines the Bech32 prefix of a validator's operator public key. + Bech32PrefixValPub = Bech32PrefixAccAddr + "valoperpub" + // Bech32PrefixConsAddr defines the Bech32 prefix of a consensus node address. + Bech32PrefixConsAddr = Bech32PrefixAccAddr + "valcons" + // Bech32PrefixConsPub defines the Bech32 prefix of a consensus node public key. + Bech32PrefixConsPub = Bech32PrefixAccAddr + "valconspub" ) func main() { - rootCmd, _ := cmd.NewRootCmd( - app.Name, - app.AccountAddressPrefix, - app.DefaultNodeHome, - app.ChainID, - app.ModuleBasics, - app.New, - ) + config := sdk.GetConfig() + config.SetBech32PrefixForAccount(Bech32PrefixAccAddr, Bech32PrefixAccPub) + config.SetBech32PrefixForValidator(Bech32PrefixValAddr, Bech32PrefixValPub) + config.SetBech32PrefixForConsensusNode(Bech32PrefixConsAddr, Bech32PrefixConsPub) + config.Seal() - if err := svrcmd.Execute(rootCmd, app.DefaultNodeHome); err != nil { + rootCmd := cmd.NewRootCmd() + if err := svrcmd.Execute(rootCmd, "", noble.DefaultNodeHome); err != nil { + fmt.Fprintln(rootCmd.OutOrStderr(), err) os.Exit(1) } } diff --git a/cmd/prefixes.go b/cmd/prefixes.go deleted file mode 100644 index 799fdef8..00000000 --- a/cmd/prefixes.go +++ /dev/null @@ -1,19 +0,0 @@ -package cmd - -import sdk "github.com/cosmos/cosmos-sdk/types" - -func SetPrefixes(accountAddressPrefix string) { - // Set prefixes - accountPubKeyPrefix := accountAddressPrefix + "pub" - validatorAddressPrefix := accountAddressPrefix + "valoper" - validatorPubKeyPrefix := accountAddressPrefix + "valoperpub" - consNodeAddressPrefix := accountAddressPrefix + "valcons" - consNodePubKeyPrefix := accountAddressPrefix + "valconspub" - - // Set and seal config - config := sdk.GetConfig() - config.SetBech32PrefixForAccount(accountAddressPrefix, accountPubKeyPrefix) - config.SetBech32PrefixForValidator(validatorAddressPrefix, validatorPubKeyPrefix) - config.SetBech32PrefixForConsensusNode(consNodeAddressPrefix, consNodePubKeyPrefix) - config.Seal() -} diff --git a/cmd/root.go b/cmd/root.go index 46d72799..f4c0056b 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,436 +1,168 @@ package cmd import ( - "errors" - "io" "os" - "path/filepath" - "github.com/cosmos/cosmos-sdk/baseapp" + "cosmossdk.io/client/v2/autocli" + clientv2keyring "cosmossdk.io/client/v2/autocli/keyring" + "cosmossdk.io/core/address" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/depinject" + "cosmossdk.io/log" + cmtcfg "github.com/cometbft/cometbft/config" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" - "github.com/cosmos/cosmos-sdk/client/debug" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/keys" - "github.com/cosmos/cosmos-sdk/client/rpc" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/crypto/keyring" "github.com/cosmos/cosmos-sdk/server" serverconfig "github.com/cosmos/cosmos-sdk/server/config" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/snapshots" - "github.com/cosmos/cosmos-sdk/store" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" - authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" + "github.com/cosmos/cosmos-sdk/types/tx/signing" + "github.com/cosmos/cosmos-sdk/x/auth/tx" + txmodule "github.com/cosmos/cosmos-sdk/x/auth/tx/config" "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" - "github.com/spf13/cast" + pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" + pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" + "github.com/cosmos/ibc-go/modules/capability" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" + icatypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v8/modules/core" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + soloclient "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine" + tmclient "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + "github.com/noble-assets/noble/v8" "github.com/spf13/cobra" - "github.com/spf13/pflag" - tmcli "github.com/tendermint/tendermint/libs/cli" - "github.com/tendermint/tendermint/libs/log" - dbm "github.com/tendermint/tm-db" ) -type ( - // AppBuilder is a method that allows to build an app - AppBuilder func( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - loadLatest bool, - skipUpgradeHeights map[int64]bool, - homePath string, - invCheckPeriod uint, - encodingConfig EncodingConfig, - appOpts servertypes.AppOptions, - baseAppOptions ...func(*baseapp.BaseApp), - ) App - - // App represents a Cosmos SDK application that can be run as a server and with an exportable state - App interface { - servertypes.Application - ExportableApp - } - - // ExportableApp represents an app with an exportable state - ExportableApp interface { - ExportAppStateAndValidators( - forZeroHeight bool, - jailAllowedAddrs []string, - ) (servertypes.ExportedApp, error) - LoadHeight(height int64) error - } - - // appCreator is an app creator - appCreator struct { - encodingConfig EncodingConfig - buildApp AppBuilder - } -) - -// Option configures root command option. -type Option func(*rootOptions) - -// scaffoldingOptions keeps set of options to apply scaffolding. -type rootOptions struct { - addSubCmds []*cobra.Command - startCmdCustomizer func(*cobra.Command) - envPrefix string -} - -func newRootOptions(options ...Option) rootOptions { - opts := rootOptions{} - opts.apply(options...) - return opts -} - -func (s *rootOptions) apply(options ...Option) { - for _, o := range options { - o(s) - } -} - -// AddSubCmd adds sub commands. -func AddSubCmd(cmd ...*cobra.Command) Option { - return func(o *rootOptions) { - o.addSubCmds = append(o.addSubCmds, cmd...) - } -} - -// CustomizeStartCmd accepts a handler to customize the start command. -func CustomizeStartCmd(h func(startCmd *cobra.Command)) Option { - return func(o *rootOptions) { - o.startCmdCustomizer = h - } -} +// NewRootCmd creates a new root command for nobled. It is called once in the main function. +func NewRootCmd() *cobra.Command { + var ( + txConfigOpts tx.ConfigOptions + autoCliOpts autocli.AppOptions + moduleBasicManager module.BasicManager + clientCtx client.Context + ) -// WithEnvPrefix accepts a new prefix for environment variables. -func WithEnvPrefix(envPrefix string) Option { - return func(o *rootOptions) { - o.envPrefix = envPrefix + if err := depinject.Inject( + depinject.Configs(noble.AppConfig(), + depinject.Supply( + log.NewNopLogger(), + ), + depinject.Provide( + ProvideClientContext, + ProvideKeyring, + ), + ), + &txConfigOpts, + &autoCliOpts, + &moduleBasicManager, + &clientCtx, + ); err != nil { + panic(err) } -} - -// NewRootCmd creates a new root command for a Cosmos SDK application -func NewRootCmd( - appName, - accountAddressPrefix, - defaultNodeHome, - defaultChainID string, - moduleBasics module.BasicManager, - buildApp AppBuilder, - options ...Option, -) (*cobra.Command, EncodingConfig) { - rootOptions := newRootOptions(options...) - - // Set config for prefixes - SetPrefixes(accountAddressPrefix) - - encodingConfig := MakeEncodingConfig(moduleBasics) - initClientCtx := client.Context{}. - WithCodec(encodingConfig.Marshaler). - WithInterfaceRegistry(encodingConfig.InterfaceRegistry). - WithTxConfig(encodingConfig.TxConfig). - WithLegacyAmino(encodingConfig.Amino). - WithInput(os.Stdin). - WithAccountRetriever(types.AccountRetriever{}). - WithBroadcastMode(flags.BroadcastBlock). - WithHomeDir(defaultNodeHome). - WithViper(rootOptions.envPrefix) rootCmd := &cobra.Command{ - Use: appName + "d", - Short: "Noble App", + Use: "nobled", PersistentPreRunE: func(cmd *cobra.Command, _ []string) error { // set the default command outputs cmd.SetOut(cmd.OutOrStdout()) cmd.SetErr(cmd.ErrOrStderr()) - initClientCtx, err := client.ReadPersistentCommandFlags(initClientCtx, cmd.Flags()) + + clientCtx = clientCtx.WithCmdContext(cmd.Context()) + clientCtx, err := client.ReadPersistentCommandFlags(clientCtx, cmd.Flags()) if err != nil { return err } - initClientCtx, err = config.ReadFromClientConfig(initClientCtx) + + clientCtx, err = config.ReadFromClientConfig(clientCtx) if err != nil { return err } - if err := client.SetCmdClientContextHandler(initClientCtx, cmd); err != nil { - return err + // sign mode textual is only available in online mode + if !clientCtx.Offline { + // This needs to go after ReadFromClientConfig, as that function ets the RPC client needed for SIGN_MODE_TEXTUAL. + txConfigOpts.EnabledSignModes = append(txConfigOpts.EnabledSignModes, signing.SignMode_SIGN_MODE_TEXTUAL) + txConfigOpts.TextualCoinMetadataQueryFn = txmodule.NewGRPCCoinMetadataQueryFn(clientCtx) + txConfigWithTextual, err := tx.NewTxConfigWithOptions(codec.NewProtoCodec(clientCtx.InterfaceRegistry), txConfigOpts) + if err != nil { + return err + } + + clientCtx = clientCtx.WithTxConfig(txConfigWithTextual) } - customAppTemplate, customAppConfig := initAppConfig() - - // We have copied InterceptConfigsPreRunHandler from the Cosmos SDK - // so that we can override the default commit timeout to 500 milliseconds. - if err := InterceptConfigsPreRunHandler(cmd, customAppTemplate, customAppConfig); err != nil { + if err := client.SetCmdClientContextHandler(clientCtx, cmd); err != nil { return err } - // startProxyForTunneledPeers(initClientCtx, cmd) - - return nil - }, - } - - initRootCmd( - rootCmd, - encodingConfig, - defaultNodeHome, - moduleBasics, - buildApp, - rootOptions, - ) - overwriteFlagDefaults(rootCmd, map[string]string{ - flags.FlagChainID: defaultChainID, - flags.FlagKeyringBackend: "test", - }) - - return rootCmd, encodingConfig -} - -func initRootCmd( - rootCmd *cobra.Command, - encodingConfig EncodingConfig, - defaultNodeHome string, - moduleBasics module.BasicManager, - buildApp AppBuilder, - options rootOptions, -) { - rootCmd.AddCommand( - genutilcli.InitCmd(moduleBasics, defaultNodeHome), - genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, defaultNodeHome), - genutilcli.MigrateGenesisCmd(), - genutilcli.GenTxCmd( - moduleBasics, - encodingConfig.TxConfig, - banktypes.GenesisBalancesIterator{}, - defaultNodeHome, - ), - genutilcli.ValidateGenesisCmd(moduleBasics), - AddGenesisAccountCmd(defaultNodeHome), - tmcli.NewCompletionCmd(rootCmd, true), - debug.Cmd(), - config.Cmd(), - server.RosettaCommand(encodingConfig.InterfaceRegistry, encodingConfig.Marshaler), - ) - - a := appCreator{ - encodingConfig, - buildApp, - } - - // add server commands - server.AddCommands( - rootCmd, - defaultNodeHome, - a.newApp, - a.appExport, - func(cmd *cobra.Command) { - addModuleInitFlags(cmd) + // overwrite the minimum gas price from the app configuration + srvCfg := serverconfig.DefaultConfig() + srvCfg.MinGasPrices = "0uusdc" + srvCfg.API.Enable = true - if options.startCmdCustomizer != nil { - options.startCmdCustomizer(cmd) - } + return server.InterceptConfigsPreRunHandler(cmd, serverconfig.DefaultConfigTemplate, srvCfg, cmtcfg.DefaultConfig()) }, - ) - - // add keybase, auxiliary RPC, query, and tx child commands - rootCmd.AddCommand( - rpc.StatusCommand(), - queryCommand(moduleBasics), - txCommand(moduleBasics), - keys.Commands(defaultNodeHome), - ) - - // add user given sub commands. - for _, cmd := range options.addSubCmds { - rootCmd.AddCommand(cmd) - } -} - -// queryCommand returns the sub-command to send queries to the app -func queryCommand(moduleBasics module.BasicManager) *cobra.Command { - cmd := &cobra.Command{ - Use: "query", - Aliases: []string{"q"}, - Short: "Querying subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetAccountCmd(), - rpc.ValidatorCommand(), - rpc.BlockCommand(), - authcmd.QueryTxsByEventsCmd(), - authcmd.QueryTxCmd(), - ) - - moduleBasics.AddQueryCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -// txCommand returns the sub-command to send transactions to the app -func txCommand(moduleBasics module.BasicManager) *cobra.Command { - cmd := &cobra.Command{ - Use: "tx", - Short: "Transactions subcommands", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand( - authcmd.GetSignCommand(), - authcmd.GetSignBatchCommand(), - authcmd.GetMultiSignCommand(), - authcmd.GetValidateSignaturesCommand(), - flags.LineBreak, - authcmd.GetBroadcastCommand(), - authcmd.GetEncodeCommand(), - authcmd.GetDecodeCommand(), - ) - - moduleBasics.AddTxCommands(cmd) - cmd.PersistentFlags().String(flags.FlagChainID, "", "The network chain ID") - - return cmd -} - -func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) -} - -func overwriteFlagDefaults(c *cobra.Command, defaults map[string]string) { - set := func(s *pflag.FlagSet, key, val string) { - if f := s.Lookup(key); f != nil { - f.DefValue = val - f.Value.Set(val) //nolint - } - } - for key, val := range defaults { - set(c.Flags(), key, val) - set(c.PersistentFlags(), key, val) } - for _, c := range c.Commands() { - overwriteFlagDefaults(c, defaults) - } -} - -// newApp creates a new Cosmos SDK app -func (a appCreator) newApp( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - appOpts servertypes.AppOptions, -) servertypes.Application { - var cache sdk.MultiStorePersistentCache - if cast.ToBool(appOpts.Get(server.FlagInterBlockCache)) { - cache = store.NewCommitKVStoreCacheManager() + // Since the IBC modules don't support dependency injection, we need to + // manually register the modules on the client side. + // This needs to be removed after IBC supports App Wiring. + modules := map[string]appmodule.AppModule{ + capabilitytypes.ModuleName: capability.AppModule{}, + ibcexported.ModuleName: ibc.AppModule{}, + icatypes.ModuleName: ica.AppModule{}, + pfmtypes.ModuleName: pfm.AppModule{}, + transfertypes.ModuleName: transfer.AppModule{}, + tmclient.ModuleName: tmclient.AppModule{}, + soloclient.ModuleName: soloclient.AppModule{}, } - - skipUpgradeHeights := make(map[int64]bool) - for _, h := range cast.ToIntSlice(appOpts.Get(server.FlagUnsafeSkipUpgrades)) { - skipUpgradeHeights[int64(h)] = true + for name, mod := range modules { + moduleBasicManager[name] = module.CoreAppModuleBasicAdaptor(name, mod) + moduleBasicManager[name].RegisterInterfaces(clientCtx.InterfaceRegistry) + autoCliOpts.Modules[name] = mod } - pruningOpts, err := server.GetPruningOptionsFromFlags(appOpts) - if err != nil { - panic(err) - } + initRootCmd(rootCmd, clientCtx.TxConfig, moduleBasicManager) - snapshotDir := filepath.Join(cast.ToString(appOpts.Get(flags.FlagHome)), "data", "snapshots") - snapshotDB, err := dbm.NewDB("metadata", dbm.GoLevelDBBackend, snapshotDir) - if err != nil { - panic(err) - } - snapshotStore, err := snapshots.NewStore(snapshotDB, snapshotDir) - if err != nil { + if err := autoCliOpts.EnhanceRootCommand(rootCmd); err != nil { panic(err) } - return a.buildApp( - logger, - db, - traceStore, - true, - skipUpgradeHeights, - cast.ToString(appOpts.Get(flags.FlagHome)), - cast.ToUint(appOpts.Get(server.FlagInvCheckPeriod)), - a.encodingConfig, - appOpts, - baseapp.SetPruning(pruningOpts), - baseapp.SetMinGasPrices(cast.ToString(appOpts.Get(server.FlagMinGasPrices))), - baseapp.SetMinRetainBlocks(cast.ToUint64(appOpts.Get(server.FlagMinRetainBlocks))), - baseapp.SetHaltHeight(cast.ToUint64(appOpts.Get(server.FlagHaltHeight))), - baseapp.SetHaltTime(cast.ToUint64(appOpts.Get(server.FlagHaltTime))), - baseapp.SetInterBlockCache(cache), - baseapp.SetTrace(cast.ToBool(appOpts.Get(server.FlagTrace))), - baseapp.SetIndexEvents(cast.ToStringSlice(appOpts.Get(server.FlagIndexEvents))), - baseapp.SetSnapshotStore(snapshotStore), - baseapp.SetSnapshotInterval(cast.ToUint64(appOpts.Get(server.FlagStateSyncSnapshotInterval))), - baseapp.SetSnapshotKeepRecent(cast.ToUint32(appOpts.Get(server.FlagStateSyncSnapshotKeepRecent))), - ) + return rootCmd } -// appExport creates a new simapp (optionally at a given height) -func (a appCreator) appExport( - logger log.Logger, - db dbm.DB, - traceStore io.Writer, - height int64, - forZeroHeight bool, - jailAllowedAddrs []string, - appOpts servertypes.AppOptions, -) (servertypes.ExportedApp, error) { - var exportableApp ExportableApp - - homePath, ok := appOpts.Get(flags.FlagHome).(string) - if !ok || homePath == "" { - return servertypes.ExportedApp{}, errors.New("application home not set") - } - - exportableApp = a.buildApp( - logger, - db, - traceStore, - height == -1, // -1: no height provided - map[int64]bool{}, - homePath, - uint(1), - a.encodingConfig, - appOpts, - ) +func ProvideClientContext( + appCodec codec.Codec, + interfaceRegistry codectypes.InterfaceRegistry, + txConfig client.TxConfig, + legacyAmino *codec.LegacyAmino, +) client.Context { + clientCtx := client.Context{}. + WithCodec(appCodec). + WithInterfaceRegistry(interfaceRegistry). + WithTxConfig(txConfig). + WithLegacyAmino(legacyAmino). + WithInput(os.Stdin). + WithAccountRetriever(types.AccountRetriever{}). + WithHomeDir(noble.DefaultNodeHome). + WithViper("") // env variable prefix - if height != -1 { - if err := exportableApp.LoadHeight(height); err != nil { - return servertypes.ExportedApp{}, err - } - } + // Read the config again to overwrite the default values with the values from the config file + clientCtx, _ = config.ReadFromClientConfig(clientCtx) - return exportableApp.ExportAppStateAndValidators(forZeroHeight, jailAllowedAddrs) + return clientCtx } -// initAppConfig helps to override default appConfig template and configs. -// return "", nil if no custom configuration is required for the application. -func initAppConfig() (string, interface{}) { - type CustomAppConfig struct { - serverconfig.Config - } - - srvCfg := serverconfig.DefaultConfig() - - srvCfg.MinGasPrices = "0stake" - - config := CustomAppConfig{ - Config: *srvCfg, +func ProvideKeyring(clientCtx client.Context, addressCodec address.Codec) (clientv2keyring.Keyring, error) { + kb, err := client.NewKeyringFromBackend(clientCtx, clientCtx.Keyring.Backend()) + if err != nil { + return nil, err } - return serverconfig.DefaultConfigTemplate, config + return keyring.NewAutoCLIKeyring(kb) } diff --git a/cmd/util.go b/cmd/util.go deleted file mode 100644 index 26c7f937..00000000 --- a/cmd/util.go +++ /dev/null @@ -1,189 +0,0 @@ -package cmd - -import ( - "fmt" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/server" - "github.com/cosmos/cosmos-sdk/server/config" - "github.com/rs/zerolog" - "github.com/spf13/cobra" - "github.com/spf13/pflag" - "github.com/spf13/viper" - tmcfg "github.com/tendermint/tendermint/config" - "io" - "os" - "path" - "path/filepath" - "strings" - "time" -) - -func bindFlags(basename string, cmd *cobra.Command, v *viper.Viper) (err error) { - defer func() { - recover() - }() - - cmd.Flags().VisitAll(func(f *pflag.Flag) { - // Environment variables can't have dashes in them, so bind them to their equivalent - // keys with underscores, e.g. --favorite-color to STING_FAVORITE_COLOR - err = v.BindEnv(f.Name, fmt.Sprintf("%s_%s", basename, strings.ToUpper(strings.ReplaceAll(f.Name, "-", "_")))) - if err != nil { - panic(err) - } - - err = v.BindPFlag(f.Name, f) - if err != nil { - panic(err) - } - - // Apply the viper config value to the flag when the flag is not set and viper has a value - if !f.Changed && v.IsSet(f.Name) { - val := v.Get(f.Name) - err = cmd.Flags().Set(f.Name, fmt.Sprintf("%v", val)) - if err != nil { - panic(err) - } - } - }) - - return -} - -// InterceptConfigsPreRunHandler performs a pre-run function for the root daemon -// application command. It will create a Viper literal and a default server -// Context. The server Tendermint configuration will either be read and parsed -// or created and saved to disk, where the server Context is updated to reflect -// the Tendermint configuration. It takes custom app config template and config -// settings to create a custom Tendermint configuration. If the custom template -// is empty, it uses default-template provided by the server. The Viper literal -// is used to read and parse the application configuration. Command handlers can -// fetch the server Context to get the Tendermint configuration or to get access -// to Viper. -func InterceptConfigsPreRunHandler(cmd *cobra.Command, customAppConfigTemplate string, customAppConfig interface{}) error { - serverCtx := server.NewDefaultContext() - - // Get the executable name and configure the viper instance so that environmental - // variables are checked based off that name. The underscore character is used - // as a separator - executableName, err := os.Executable() - if err != nil { - return err - } - - basename := path.Base(executableName) - - // Configure the viper instance - serverCtx.Viper.BindPFlags(cmd.Flags()) - serverCtx.Viper.BindPFlags(cmd.PersistentFlags()) - serverCtx.Viper.SetEnvPrefix(basename) - serverCtx.Viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_", "-", "_")) - serverCtx.Viper.AutomaticEnv() - - // intercept configuration files, using both Viper instances separately - config, err := interceptConfigs(serverCtx.Viper, customAppConfigTemplate, customAppConfig) - if err != nil { - return err - } - - // return value is a tendermint configuration object - serverCtx.Config = config - if err = bindFlags(basename, cmd, serverCtx.Viper); err != nil { - return err - } - - var logWriter io.Writer - if strings.ToLower(serverCtx.Viper.GetString(flags.FlagLogFormat)) == tmcfg.LogFormatPlain { - logWriter = zerolog.ConsoleWriter{Out: os.Stderr} - } else { - logWriter = os.Stderr - } - - logLvlStr := serverCtx.Viper.GetString(flags.FlagLogLevel) - logLvl, err := zerolog.ParseLevel(logLvlStr) - if err != nil { - return fmt.Errorf("failed to parse log level (%s): %w", logLvlStr, err) - } - - serverCtx.Logger = server.ZeroLogWrapper{zerolog.New(logWriter).Level(logLvl).With().Timestamp().Logger()} - - return server.SetCmdServerContext(cmd, serverCtx) -} - -// interceptConfigs parses and updates a Tendermint configuration file or -// creates a new one and saves it. It also parses and saves the application -// configuration file. The Tendermint configuration file is parsed given a root -// Viper object, whereas the application is parsed with the private package-aware -// viperCfg object. -func interceptConfigs(rootViper *viper.Viper, customAppTemplate string, customConfig interface{}) (*tmcfg.Config, error) { - rootDir := rootViper.GetString(flags.FlagHome) - configPath := filepath.Join(rootDir, "config") - tmCfgFile := filepath.Join(configPath, "config.toml") - - conf := tmcfg.DefaultConfig() - - switch _, err := os.Stat(tmCfgFile); { - case os.IsNotExist(err): - tmcfg.EnsureRoot(rootDir) - - if err = conf.ValidateBasic(); err != nil { - return nil, fmt.Errorf("error in config file: %v", err) - } - - conf.RPC.PprofListenAddress = "localhost:6060" - conf.P2P.RecvRate = 5120000 - conf.P2P.SendRate = 5120000 - conf.Consensus.TimeoutCommit = 500 * time.Millisecond // NOBLE - tmcfg.WriteConfigFile(tmCfgFile, conf) - - case err != nil: - return nil, err - - default: - rootViper.SetConfigType("toml") - rootViper.SetConfigName("config") - rootViper.AddConfigPath(configPath) - - if err := rootViper.ReadInConfig(); err != nil { - return nil, fmt.Errorf("failed to read in %s: %w", tmCfgFile, err) - } - } - - // Read into the configuration whatever data the viper instance has for it. - // This may come from the configuration file above but also any of the other - // sources viper uses. - if err := rootViper.Unmarshal(conf); err != nil { - return nil, err - } - - conf.SetRoot(rootDir) - - appCfgFilePath := filepath.Join(configPath, "app.toml") - if _, err := os.Stat(appCfgFilePath); os.IsNotExist(err) { - if customAppTemplate != "" { - config.SetConfigTemplate(customAppTemplate) - - if err = rootViper.Unmarshal(&customConfig); err != nil { - return nil, fmt.Errorf("failed to parse %s: %w", appCfgFilePath, err) - } - - config.WriteConfigFile(appCfgFilePath, customConfig) - } else { - appConf, err := config.ParseConfig(rootViper) - if err != nil { - return nil, fmt.Errorf("failed to parse %s: %w", appCfgFilePath, err) - } - - config.WriteConfigFile(appCfgFilePath, appConf) - } - } - - rootViper.SetConfigType("toml") - rootViper.SetConfigName("app") - rootViper.AddConfigPath(configPath) - - if err := rootViper.MergeInConfig(); err != nil { - return nil, fmt.Errorf("failed to merge configuration: %w", err) - } - - return conf, nil -} diff --git a/docs/airdrop/noble_airdrop.json b/docs/airdrop/noble_airdrop.json deleted file mode 100644 index 08b2ca71..00000000 --- a/docs/airdrop/noble_airdrop.json +++ /dev/null @@ -1,77842 +0,0 @@ -[ - { - "total_amount": 369185356, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/3KHM776sdtJbUReWBNkBpxwsh/WhwBHuns3QO108D5" - }, - "address": "`noble`1930tyngqn9z5thqz4y4p7ya6eqnscjyk3gednl", - "percent": "0.0%", - "airdrop": 6485.014717700273 - }, - { - "total_amount": 50425732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1mpqY40yHSfpDhj6yVz/tDgEPoGKPqn92TtMXewv/Zo" - }, - "address": "noble18sdews8g2caqfcgq9wx483kvr7t6vcse80l6tu", - "percent": "0.0%", - "airdrop": 885.7653990230577 - }, - { - "total_amount": 300000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kbDefv8fOhqyTVQO3EcF0iORKZJBpvlSA0Xa/9xUZ9" - }, - "address": "noble18utj2rlxnptfgqsc256t5vlcx7ksufhtsmv855", - "percent": "0.0%", - "airdrop": 5269.722603271625 - }, - { - "total_amount": 904065207, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhS9EARtGQeByVUOb38i68e8F8RxsUpN7SheXd8MuZlW" - }, - "address": "noble1g6t6jltmx9up5yl6z3pdskh3phlp6c7ar74m33", - "percent": "0.01%", - "airdrop": 15880.576187197805 - }, - { - "total_amount": 6634000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwhQukK/9Bf9m+96qf/052FTiqySMXX4GWgYLRXeI+lZ" - }, - "address": "noble1futtnnue5tlr0vzhf7y05q50ag24yu9jx44v3t", - "percent": "0.04%", - "airdrop": 116531.13250034655 - }, - { - "total_amount": 221163927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1nI/zrurmZaYfnooUr+O8ads+RMY6ug5E4OqqvcfVu9" - }, - "address": "noble1tngsl3htr8ltdtcqmjv05207tsvesezkkcjulc", - "percent": "0.0%", - "airdrop": 3884.9084838007198 - }, - { - "total_amount": 207000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvrR8/ad3LM8CKIvD9i3sOznBahDmQPt0Dkp14SnKNKL" - }, - "address": "noble1dk85ltut7ef89yngn829j6mlvr59zxelvqlua2", - "percent": "0.0%", - "airdrop": 3636.1085962574216 - }, - { - "total_amount": 1127554457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7CRqEUupueCdRfogGKhrsuD98diiz/4LxnVYXGA7EGm" - }, - "address": "noble1sae36n0g8plkxl9z56zcmqt8pyezpappuq56yz", - "percent": "0.01%", - "airdrop": 19806.33069490855 - }, - { - "total_amount": 1874755557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArUJLrj6dvGwcd7bOOe7b9bhOS44zUHqtP0jhQyS+KZZ" - }, - "address": "noble134ultcrapjnu8nxttt5rlc05tgeex2jauzeq80", - "percent": "0.01%", - "airdrop": 32931.47244777329 - }, - { - "total_amount": 3770969834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3XC2UuwGR+diz7teACbjeV7DX5uxeVz9o+jN6WwpEX8" - }, - "address": "noble1jm54064qqj802atcn9eqt7u9duwz43uqzz3kd0", - "percent": "0.02%", - "airdrop": 66239.88323495084 - }, - { - "total_amount": 372585435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtjbdEyl5NC0DpAKXVvwYEfeIXCtbyM8/rBsktomB+4u" - }, - "address": "noble1ny9csk46tsyajf4ulj2wnkaxc8rn0rsapzyxyp", - "percent": "0.0%", - "airdrop": 6544.739628230971 - }, - { - "total_amount": 203156195, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4jEKT7x3p9JmKbK406eIvYlCCBsvZaL/D1d7m3saa5c" - }, - "address": "noble1ky7m39mszht0rveq9y0ramqnash6jp5kwst4ta", - "percent": "0.0%", - "airdrop": 3568.5893092871934 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az3hKN8vNv3+keFSo+v4abCNiL4+ez2Y137qpOVrMNX8" - }, - "address": "noble1uc2un2zttpvpdfarcjtyp382sszkv8zjdlmvks", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8vq1RJlll2L9QCFtIAQbKZ7vVoN+bT/x+35+cvLSo6Q" - }, - "address": "noble1a9h8ffdjrhx5v4q0r5v2zxwdsgfpqv8j7cx4re", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 94375579, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A78pH4r4jr9xP/LYlE6gjug3ynH4Z4y/tY903YEVly5E" - }, - "address": "noble17y95w75m4q4j6293qza3kq2vsfgqlpj3y047y5", - "percent": "0.0%", - "airdrop": 1657.7770728438231 - }, - { - "total_amount": 609090607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoEvMKhpcGia30yJYo//Vnicl1yC8Io72SuOt4LVi6e8" - }, - "address": "evmos1pgpcvgspyqdvgzq2rddng909rknaytxcsrrlj3", - "percent": "0.0%", - "airdrop": 10699.128463827781 - }, - { - "total_amount": 388827539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqLXojYN5a4y2TKKwAumSh12oHBbLhiJ/wJSrmyj2Tsh" - }, - "address": "evmos13e5pe6t7wx5ldvemzcn4utyuapj7e6ea9sn0ut", - "percent": "0.0%", - "airdrop": 6830.044236809265 - }, - { - "total_amount": 179100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Qv2PaWHYsHSGdLpzYSKJm8fByZqMPMkKZig2lRJ5mg" - }, - "address": "evmos1h8cmxtdmay5fcuefnk2zt88av2p2cfpukkewq8", - "percent": "0.0%", - "airdrop": 3146.0243941531608 - }, - { - "total_amount": 129226542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axojdj7pK6ZqGNGC2rUy8iYERZpdpTmN0ykmq2eYH7Ov" - }, - "address": "evmos1ehajvp9zn0e2gpsx5pxp4wjzwafzhu5mwp5a82", - "percent": "0.0%", - "airdrop": 2269.9600977334335 - }, - { - "total_amount": 4723312704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agpt5OnQgMMvanbAw83BpyXyBqBgrTFMfK2TYX03P7pM" - }, - "address": "evmos1ju83dqcvkagyk2a7fshsvgemhygevagsemd364", - "percent": "0.03%", - "airdrop": 82968.49239529608 - }, - { - "total_amount": 140196743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apqt8YaLw5R/GyjaPqk4Uc6ztOJaGUT3PXS8WuBgX/uX" - }, - "address": "noble1qfl26hc5nug48y7z8mm5q5zds9tvxylknq4m5a", - "percent": "0.0%", - "airdrop": 2462.65981830721 - }, - { - "total_amount": 1231843809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AggVpyP8u+kbPJb/ts/+EpphmoC+olLJOYB7RVr6zkT3" - }, - "address": "noble1qtkhhm2g3feulw5fc3qtynfpe8qa5wk5npx4cf", - "percent": "0.01%", - "airdrop": 21638.25054662505 - }, - { - "total_amount": 12035891557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auue96Ak0zd7iXFPYcKHFikQyRTy9yTVtSSXWdtn2ZAa" - }, - "address": "noble1qh4q0ay9u48wyrc9sxj2uqxhqep3ammkvqkxjg", - "percent": "0.06999999999999999%", - "airdrop": 211419.36596149675 - }, - { - "total_amount": 17856043467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj9suV0DNVpnaw3ZsKx5pKrZEDutFyB/1aBp2abfl6is" - }, - "address": "noble1ypejmkpfqrqmv5w7cscq874xf8rlggq7xkqtgq", - "percent": "0.1%", - "airdrop": 313654.6528768352 - }, - { - "total_amount": 218552418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwmcccC1OevLW/iRaTBVWPYxJefZBem5YYqfYZK6HVO1" - }, - "address": "noble1yxgefa7h4hnta2cfglm2e7r5cnlwpkxfm5qtdv", - "percent": "0.0%", - "airdrop": 3839.035390447562 - }, - { - "total_amount": 50685810, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au8WPbOje5ZQglLNoBFXOyehx83Chz9LzXeWJ1xbkK0C" - }, - "address": "noble190pu4ykcw6c7n3egzyl4kkpgaq8y657dg7qnv5", - "percent": "0.0%", - "airdrop": 890.33386207377 - }, - { - "total_amount": 310131522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5M21mS05w0wosEH5eTolmlyUIAID32w/k3eyM/QdCj0" - }, - "address": "noble1xpe0fr4elxw00a0evs3l7kgqrzlv52ahlyw666", - "percent": "0.0%", - "airdrop": 5447.690304901438 - }, - { - "total_amount": 825188608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1uCu8OnD3OmhHaZHy0WlYgPyyo4M5sQZTfhTQhN5Hey" - }, - "address": "noble1g9u5hpjyluwpwruy8lrf0vuwyntn2h3yv8a02x", - "percent": "0.0%", - "airdrop": 14495.050198466164 - }, - { - "total_amount": 1116377604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqTJxTkRHRcebqdTdCqUS5OwPf+vtNo8hanoZDDKYCCJ" - }, - "address": "noble1fvk4770fhf3dxcz2gmgunvrngv28rrvrngegy4", - "percent": "0.01%", - "airdrop": 19610.000978616736 - }, - { - "total_amount": 162632608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhyQ9zIuLNmbPkCsFDiJYzR12IgkZm6ItT4upbA7s4jF" - }, - "address": "noble1fud4kz22pn80crazx02e789lkal98ds6qp567s", - "percent": "0.0%", - "airdrop": 2856.762434688713 - }, - { - "total_amount": 172957047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxA3iOEvPzBt1HC3XYwu3iU8R+Dl7uHj678G8FCrr/Bv" - }, - "address": "noble1tjh3rzqvcd0vz0z62rvfr2t6vukues99hf0c85", - "percent": "0.0%", - "airdrop": 3038.1188665700433 - }, - { - "total_amount": 118205426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlpKsdlRhxW66Br8DsawypKGQ6zZR7yjFq/v72smomoV" - }, - "address": "noble1vfga73yc98melxja48z6l6me9y8plcf2g80xwa", - "percent": "0.0%", - "airdrop": 2076.366017405172 - }, - { - "total_amount": 300935451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxeW7KM2fDhX518q/LPPzIzxP1kGLspw19/nJmp47kdI" - }, - "address": "noble1v72mdgdgw4r4dp9uyzqqsrx5ex28sdmqqkrnkj", - "percent": "0.0%", - "airdrop": 5286.15449420147 - }, - { - "total_amount": 1303673064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArBswg+F+iZVwYO5pSnzhLEA/5pzKCAXOdX+0/Ohn5Qd" - }, - "address": "noble1ddl9hnacgqfls5xgm7jy30uvc3lll4jdr4sf60", - "percent": "0.01%", - "airdrop": 22899.984708790587 - }, - { - "total_amount": 165575954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A46hQSed1on2x+k0q0Iob15HmEIPOIdjeyb3HCCxe8cI" - }, - "address": "noble1wdafc5cmg8yltqway03m5zfgdgme747c8qmclz", - "percent": "0.0%", - "airdrop": 2908.464491173543 - }, - { - "total_amount": 4635756090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+PjyPhXeYC3hp+aNO13ftTOzxN+WPHLrxScdqMU7qH" - }, - "address": "noble1s4cxk0pdum82r2ew7vutgj45k9famedt4z3jwh", - "percent": "0.03%", - "airdrop": 81430.49550242364 - }, - { - "total_amount": 24857177786, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Uzv86d0XbmGhBrRaWMq7ZKXm8Tv+1JkyEcKxElcXDL" - }, - "address": "noble13dxg49hnzaevv5rntuf93klcr2q7qnt8a5fk8x", - "percent": "0.15%", - "airdrop": 436634.77210808516 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ZLLpW5URaagIqFLZyvJ8on0bBw190pXm1kwjxTxAWV" - }, - "address": "noble13uxtw430xyr2x387j4d3jkwzs0c03qpn4zmaz4", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 2700218440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A44mhGrQ8mU74Fu6ivP5USwveZXKqTM+uTTgt9H6j5qZ" - }, - "address": "noble137p2qrs3qw00c28679pwu4a76md48q8zspkkl6", - "percent": "0.02%", - "airdrop": 47431.34049012949 - }, - { - "total_amount": 50350000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AykTk5kPK12mlzYYgTuzZVCvhNI/82JTUmvmvneMQH0T" - }, - "address": "noble1jp2c9j2ap28cd7ftzlw2ngf3tfyktzlyx26820", - "percent": "0.0%", - "airdrop": 884.4351102490879 - }, - { - "total_amount": 205255450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2RADuOoEmDPAuempCRyyt71EkgNYyNMUsrd6c4vbhUJ" - }, - "address": "noble1jyrnxj8t97mryfywwt2mvaekdm0geycvcd47c2", - "percent": "0.0%", - "airdrop": 3605.4642810322966 - }, - { - "total_amount": 744649512, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4wQj8IEXJjSd3l1WOJXs2vLT5PXjkq1dOp8oQhd2eEz" - }, - "address": "noble1j42087twdvkmkdqfedg0gq2c6wnp7ycdpma242", - "percent": "0.0%", - "airdrop": 13080.32121633862 - }, - { - "total_amount": 96000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArY9/3667SO/fpxbJx9ylxVHVqfTxxhZ84PhIfq6qsES" - }, - "address": "noble1nk0hvm8xrlgcgvgsvq8dys95a7vjh0z9xyu7gy", - "percent": "0.0%", - "airdrop": 1686.3112330469203 - }, - { - "total_amount": 396047006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2ulWfUcAdiINeY0X/3pV/dsqG4ObC48UGMZpO7eJnu" - }, - "address": "noble1naq5j3w846cjgsltnykzhqx462chqtj8jvst38", - "percent": "0.0%", - "airdrop": 6956.859531587511 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Cjn9gh5+8ia1Yxme3qloWCIsZmOHH31KGSJ+cj2wQZ" - }, - "address": "noble149dd9ynts3tda9fdu08y8u6q3wx88apg7pkne6", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 557386083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0uUIoDBDWGGtbNhps7ERpQqKp6UrRn4JhbCH8SJ0ivB" - }, - "address": "noble1434zluxmfj85vwpc3stk03wrcuzrqllc0ywyhr", - "percent": "0.0%", - "airdrop": 9790.900134447116 - }, - { - "total_amount": 232315543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5vnUpPxjce371L0lAxoi5mMK2QN4ik3SvLQ9/n52VJm" - }, - "address": "noble1knp4syd5vm9l73axl7njpjnjlmqyghk28m7u3m", - "percent": "0.0%", - "airdrop": 4080.794893461404 - }, - { - "total_amount": 1248155856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4eP+XtybNl0hc5bQyMsG5kYzIF80DUwp/4Y46FxU8bX" - }, - "address": "noble1hxnlq5gx8r524dvwqj6ymr2v3d8z0un49cv9ur", - "percent": "0.01%", - "airdrop": 21924.783755896817 - }, - { - "total_amount": 153117738, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMOgpL/e51Z+s4JV5WQxvGT9MrJIlCPxIiZJk5tQ4XK" - }, - "address": "noble1crymk6k8ndccs8pshd9crwn6csl94ha2yur430", - "percent": "0.0%", - "airdrop": 2689.626683001409 - }, - { - "total_amount": 603320201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmKieatddxImcxwL6mpWIjOlJ86kAKSdpOdSOAEXNY8H" - }, - "address": "noble1c8lsry9wyu5npayxfjcucsqpf2n9clftgw9e7d", - "percent": "0.0%", - "airdrop": 10597.767000733604 - }, - { - "total_amount": 648043596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvE/PlOjoHzhMr02ROIExs9akx2fnX98tVFJXx5S7FF/" - }, - "address": "noble1chlmc3um9qrs66g3afvcpwtexfnhdf3agqzmxv", - "percent": "0.0%", - "airdrop": 11383.36661915542 - }, - { - "total_amount": 140788500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiusjrl/BJEIYQcMC10Bo1k/eHCI0UI+iLeKxulqwz7W" - }, - "address": "noble1eqz24hyvcjldec0gyqjvn9uquvadhpm35lvf22", - "percent": "0.0%", - "airdrop": 2473.054469102358 - }, - { - "total_amount": 2365546691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A62ZxgUoDSC7KQ1rFGG1crXcmGEL9w40gDDTf4NgnPe0" - }, - "address": "noble16ksgchg343ce7ff7hw4grvdqh5k6pzfvm3r27l", - "percent": "0.01%", - "airdrop": 41552.582888857 - }, - { - "total_amount": 217900213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zvK4ZmrG4w3zs4B+kDmPG/ozs8llSiVNeZf4oZ6z51" - }, - "address": "noble1md9zaw7gpnrfl2swql6hjvgttjuf6cvktfg6hg", - "percent": "0.0%", - "airdrop": 3827.578925679339 - }, - { - "total_amount": 16304321912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw0/6m7ga+RCJ0zuJfR+ZJTO0Zx2fFss3xS4oL4+MxW9" - }, - "address": "noble1u4evcuc2krznzas3w98knjugxrsf668zglr9k0", - "percent": "0.1%", - "airdrop": 286397.5123689442 - }, - { - "total_amount": 1222864013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIfdGIhnxd6240VDeEfg+OCdsoJlFLZ18wOlC67zq9E" - }, - "address": "noble1u47dtf4e9paqu6mx3jpjdmyr4y9nzgqxyw0252", - "percent": "0.01%", - "airdrop": 21480.51376677849 - }, - { - "total_amount": 184800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiuYLEXW6kPsWrPHZtNgPl1g2kXmftn20hZTdFiWUDB9" - }, - "address": "noble1u6fjqlhwjusmerahrlnmvzdjtt8xxyvdru7m7z", - "percent": "0.0%", - "airdrop": 3246.1491236153215 - }, - { - "total_amount": 104802100, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxqN29HhZl61clXSZ2No5zITc6IEtSyj2ulr1SagKZeo" - }, - "address": "noble1ammx459meute6x7lsp6wds7e69gggzysn82u9d", - "percent": "0.0%", - "airdrop": 1840.926650801111 - }, - { - "total_amount": 204002220, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlnuLL/r01uRif5VWuFN1tL78dZoLGocfilnGMeKjBtp" - }, - "address": "noble17rx4caclnlkqwlkq4hq3aq0cvj993pnfq276le", - "percent": "0.0%", - "airdrop": 3583.45036617197 - }, - { - "total_amount": 301426705, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqCdyhUVLDdOqsclGZ1iSsXP0jfb5HnM9Uho36vPW7ml" - }, - "address": "noble1760d9jkledghjckd65gemglkv8cpq732ew0xlh", - "percent": "0.0%", - "airdrop": 5294.7837352272945 - }, - { - "total_amount": 64578447, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApDRyt6VUezaqtdgIzuR01g1OaHq3ngDHY4FBFCg57zg" - }, - "address": "noble1lx834juvkzskdm33e5ldje49mhu53zr7dwg7aj", - "percent": "0.0%", - "airdrop": 1134.368339466929 - }, - { - "total_amount": 1065568520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1/iPc2CFQTlWz/ahZvhTcqVxAgJ4jt0yfrlRGRhjWn" - }, - "address": "noble1lgyasyg9dp7lsuh8uq6glsku93kxv9sc70nr3l", - "percent": "0.01%", - "airdrop": 18717.501717262312 - }, - { - "total_amount": 6624490318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5dIJiB/5HgGiDSir1/WW6SjwxoB0eceLRgpFriuxY1M" - }, - "address": "noble1lt3zkefmj9y3w06ca30fpnnx94gxk4p3j090l8", - "percent": "0.04%", - "airdrop": 116364.0878797288 - }, - { - "total_amount": 707400000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av08g+HwiQ/NaZua2UtTvDzz8BOUh/3+Ztk20Cjs7Wp1" - }, - "address": "noble1lsp6e8krs54s0ak9k53jas0yp6yrhwkld8ukk0", - "percent": "0.0%", - "airdrop": 12426.005898514493 - }, - { - "total_amount": 202717354, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobE7Uu0cc8QNBaT2mJc/Xu29OTc5De7e1P5OBvcXAlv" - }, - "address": "noble1ln8jezxvnc7h33muy38dmva4qxsuxmpm2znrqx", - "percent": "0.0%", - "airdrop": 3560.8807414973858 - }, - { - "total_amount": 106406901, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ajq1vCt+v98kHMjekRkIqfPk07URfJqES+6098uGT1nf" - }, - "address": "canto1qvca2t68kz6mvwuljqez0exp8uanwvfvfzj2wj", - "percent": "0.0%", - "airdrop": 1869.116171145954 - }, - { - "total_amount": 264694835, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AjiWd3jPfQaJfe0v89/YUemdcX7pgvQIV242olm5MJKf" - }, - "address": "canto1qdx4mg9gfut9838kfvgkguyt69nlgc2hz6ef95", - "percent": "0.0%", - "airdrop": 4649.561183229178 - }, - { - "total_amount": 752084393, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AxabYZMsYI9DOOD8KYL2gRNS2K2kadzfcAhFgAmgHyuz" - }, - "address": "canto1qj47ra6a4hkad3jl0np2nhqgzjeqzujll4lllc", - "percent": "0.0%", - "airdrop": 13210.920417866402 - }, - { - "total_amount": 340865829, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AjH/QwBwbi0sjyC79mzgijBqkAqfmWeXrgKcxunPu7Kx" - }, - "address": "canto1qnkh6egudq9hlke4s6eskctvzc5rvts5muvrg0", - "percent": "0.0%", - "airdrop": 5987.561212547404 - }, - { - "total_amount": 130923243, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AgGdLSAPcZBeb+7Edi5ey0hX9u+QRlSrmd6kbsFxH3aL" - }, - "address": "canto1q5jl5q56kzl8nexu0x9cumcw37eqnk9hm70yug", - "percent": "0.0%", - "airdrop": 2299.763909769079 - }, - { - "total_amount": 55065103, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A3yeEuD1s0VveQSI8cbf+S9B1/B5Qv1PCCFdKTREvqau" - }, - "address": "canto1pz6e6vxxesmqdkxhp94u6c39vzdt3dyfkjpkja", - "percent": "0.0%", - "airdrop": 967.259393101934 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A/HAYF2Cbi1m9iwiLFxmJEvDCdFyDio+w3/r/fqNagAu" - }, - "address": "canto1pxlp2947j6jmznuxxczvspqay8zxt2syt89hmf", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AnS4u8W0/oAgV3Eps/RWhOmSMHHRjqQMMPE1mZXEDfAf" - }, - "address": "canto1p27spa4krvg4j0gfgn5hau0klcjfqsmnqt9fn5", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 102135589, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AkuSZUD7I8GNXdylF4Yj7Qu0N+5gxp6IUU3PyFTTy6uT" - }, - "address": "canto1pjjtyqfh9946fuzs4dvdm59tsx0md6frjs8cnj", - "percent": "0.0%", - "airdrop": 1794.0874065058695 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A1ssJL8FXMQ+NbOSm+CtXLh37KJ7BgB/ZPfICme/B0Xl" - }, - "address": "canto1p5qllnturgt7hpm3s3cv5tezwztjxnx4lp73hx", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A6QRT0IqM199NOEyXmm+3nSyRg8qN/M3A2559nW5G0Fa" - }, - "address": "canto1pc6ddg5rkklnd93jacy08utdy46wtu0dm8r2qp", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 322977529, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Al/tSonVxmm2d0vC93G3gXBYHyFw537FqykFgVO02CIC" - }, - "address": "canto1zr6agkz5uquqw9y94j0yqgcge7qd95h7h6l9vs", - "percent": "0.0%", - "airdrop": 5673.339949733724 - }, - { - "total_amount": 250000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AjJWkSWz0zmzFiEGlfPF7VsIXn4yD4kR1NTe6m7wocLJ" - }, - "address": "canto1z9zgk90mcx9uwnna469e9zkaz9uyyjgnjprrm4", - "percent": "0.0%", - "airdrop": 4391.435502726355 - }, - { - "total_amount": 2500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AtjzWmoJqtIESghnchIhJOUUR0uJFpEfZCIL9LNlIUXa" - }, - "address": "canto1z03p0hmpcnnldpa9uqmx27u4g7xfca5nncqy29", - "percent": "0.01%", - "airdrop": 43914.35502726355 - }, - { - "total_amount": 2678202985, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AiqZCpXSxIipZltYAamefydWwbWjlXuKhuKY2kd3zIcH" - }, - "address": "canto1znn77vx8xzyrcnxtac5pl4ve5uzg09vh8qy2fv", - "percent": "0.02%", - "airdrop": 47044.6226873468 - }, - { - "total_amount": 206992685, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AipuQPFSDEDMfFzrN9hLisiBySpp4asSHepCsAAq8GnF" - }, - "address": "canto1z530hrf99qam2hsxratsgtsmcpr7ykvzctqkkm", - "percent": "0.0%", - "airdrop": 3635.980102854612 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2fOTFFPdJSEZU31NQgEaAFcXLeOKrPXqmsR+7M1syy8" - }, - "address": "canto1rzjjqsy4ssjh44j5jusl06423up5yfqlqduw9m", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AntZLUibJtYmP16aBiL0GQtBCMcC9fBuEBHKBf1NMCQe" - }, - "address": "canto1ry7dfuatg5pz9cg7yj3ql4y2u94za4yx30vjea", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5GaePqWXHOY0aLec/P/D4RJpPqTBMP6KLtYd80aZwZY" - }, - "address": "canto1rxc2cxftmdayjkkmga59dgtyd54fyap2jn6zl4", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 159285109, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A9lE7j48m54ejYplbOwxUxTam1oFP5Oy9qfBXk9PLrYI" - }, - "address": "canto1rgydp524wkxc9zzwas5p23jgdgx62cqtgnatpc", - "percent": "0.0%", - "airdrop": 2797.961130872949 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AuCYQiSkHWtX9FW3KEGcwPqYnGfUTCFfOj3VyA72LJaN" - }, - "address": "canto1r2dyjvhndvmyra0k86v0wlu2ru5dshddgud9q5", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A0nSNSJJdaRT1dK/pC+NEecaupklxo/Kan8q7I86C5G1" - }, - "address": "canto1r078ky4e2z5gxuv506h7zgcjd63a2v22pw8x4r", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 52743224, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A6VIu+YDVh1lt91l9DlKd660EshnYZp5FE1n7CxZxlvx" - }, - "address": "canto1rhxcwc7qr9su9wa4a4vvdegl2kcn0pvfzdjpqq", - "percent": "0.0%", - "airdrop": 926.4738656073949 - }, - { - "total_amount": 89865710, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2GcJRywM/M+vSzYhZVSyidS2DFfhZisO/xNfxjO7Eew" - }, - "address": "canto1rlwqx4merqwlydjkeaq8see3wluud2z4e3k76p", - "percent": "0.0%", - "airdrop": 1578.5578774868432 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2d8dkC50SewCxCtphOs7rax4ecMQasDCTs2wuEBwwir" - }, - "address": "canto1y8cgqhg80pnp46gw374c38sjpelfelx4avkywe", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 224918604, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2tLiIdYVXnMgtPyezIRiinl0cC0cm4gZwU4Rc7eFmaq" - }, - "address": "canto1yfqrp7y3qpk8dmexkwnk34me96xgn2tq6n72kx", - "percent": "0.0%", - "airdrop": 3950.862171317 - }, - { - "total_amount": 140000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A9g0lUiGIbSkUKEh01BM27EV+U2nVs2GvELGyXUR4DXC" - }, - "address": "canto1yvgcmdap247dlp5upry785rdyvvf8vt2gc6sf4", - "percent": "0.0%", - "airdrop": 2459.2038815267583 - }, - { - "total_amount": 64457899, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A4IWB1nhFxjdpK2KRNQwj6/f/KQAXB+9UZWPSiu6c3hq" - }, - "address": "canto1yscax5ha8dapdc89h80dtuuncdf0gjmu8uycqj", - "percent": "0.0%", - "airdrop": 1132.2508243989985 - }, - { - "total_amount": 120000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AkIlauzf6qkxlTIUqyR0oxPtHFRj9HO9hdREcAcd1PP/" - }, - "address": "canto19zxrjl0hs79yaud5ke9as5qrcg8a4kcll8knqc", - "percent": "0.0%", - "airdrop": 2107.8890413086506 - }, - { - "total_amount": 1463699681, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AwuxpObyZCz5CUTrBkFY8yi/iwpsL2nRPdWpMnEX34i/" - }, - "address": "canto19d37yvlt86dqx5zhghf4mdw8cup4adaa03y4fp", - "percent": "0.01%", - "airdrop": 25710.970977890564 - }, - { - "total_amount": 700000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "ApBiDMGIeSAB7LTpUnoYKrwZQMGdTuYuo5WvavCKqiLa" - }, - "address": "canto193p5se7j3kj32jwl7ahmzf7wy2u653kx28y2cd", - "percent": "0.0%", - "airdrop": 12296.019407633794 - }, - { - "total_amount": 90000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A7jzXyXVdP9GD5O+zrrgSKbtmks8Vp0z9cXr79rrllG9" - }, - "address": "canto19kr3nnc0uxtcy9q2u9hwcqun32t02g5tpmzz23", - "percent": "0.0%", - "airdrop": 1580.9167809814878 - }, - { - "total_amount": 969782054, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AjIRyjpc7RVjl6OmtP48g9dAJmzYY0gw7q7dKS/1wwhM" - }, - "address": "canto19c9rnwhmlrsx9camgk7yseyyp04x7axv978x8r", - "percent": "0.01%", - "airdrop": 17034.94136736995 - }, - { - "total_amount": 300000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AzhW+7KuL7w0s+SklWJHflXRIyH2f29dRiJqy45OauK7" - }, - "address": "canto1xgrtfr7qnlurztnwwyc4vyku4n3z70xnwt08hk", - "percent": "0.0%", - "airdrop": 5269.722603271625 - }, - { - "total_amount": 75575907, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ask1BkErSD7OpMJ7J6NAw3/YsGm95bEK5KXag2G1+eBH" - }, - "address": "canto1xtw972wnnpnmrn4j3yvkxkrfjrslfywa6c9jgf", - "percent": "0.0%", - "airdrop": 1327.546884602181 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AsFHLeNk5br29e30leAmqYruMtf3FqvyYqlxd+FT3UPV" - }, - "address": "canto1xwl39s8hdthhhv5jk6rzuhzrrsd7mfu7ahc7dj", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 174644362, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A6ZRgMY+F6vMvwdD9kFyjb8rCVvKw4xFWEYI3EQZevXE" - }, - "address": "canto1x38epcfrg3de28ykxgqtwcltj4ugqwvdurs2r7", - "percent": "0.0%", - "airdrop": 3067.7578065511743 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ax8q5lh7sC/ja4FywkvoTFg09esOQ0qV52k8NCr8E3Fs" - }, - "address": "canto1xed3c28z7mzg4jcvlggtefdn5fcxgyhdqslvj9", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 193037687, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AhzEB8yZNvQEIdpb9ZWScOdEOevD31tTEaZK6M9Y629Y" - }, - "address": "canto18rdtd8dl506srqnhnvnqs0jrherddm8qkrjuen", - "percent": "0.0%", - "airdrop": 3390.850208223911 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5CojGmfYkrT5CFF3KiIsdIBoft5Me7wa7xHpavoqfmd" - }, - "address": "canto18yujt5y2trwfuuej47cv9ejjp39h4tlxfq0utj", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2F3/gnPIA0GZr4PpuNDzKqJiOmpnie5BzB1tCKtRK2I" - }, - "address": "canto189tv55lrek67wcy0k06lpaancy7kgzkhfu6l9a", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "ApPRgRaV3myPn7tL8/B86SWnvkjTLbjQxcetydy9qkg0" - }, - "address": "canto18x2sfc44grk9w9f730wv3g9hxud2zt0x7chy0v", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ag67lA0tp/x2aV+MxhSB1OFnVFcuQCWFLtz6E6GvFscf" - }, - "address": "canto18t8ptpjy5y3mvnz6sw65kajtc2ll9uhctdzpar", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 71000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A0RqrTeOCkg07bxy/Kzfo3mR0hYGYSr8DnnnBIeAKhbd" - }, - "address": "canto18wnzjlzya8ufcz9mcfk7hvgrvwm74vn6ms9key", - "percent": "0.0%", - "airdrop": 1247.167682774285 - }, - { - "total_amount": 90922200, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AgTfK6PJXoT9gv02AsuqCn9+yJuNK7+OV0PLXkn8F6mL" - }, - "address": "canto18eqwe0uwka8mwz9cen4z3swfxynf0t7af2js2r", - "percent": "0.0%", - "airdrop": 1597.1159082639447 - }, - { - "total_amount": 590876696, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A3ZUJFOXGoRsPfR9g9byULUn1HiBkv23j5RU3AXzxTaM" - }, - "address": "canto18uk34eh95mmvzy4t0wumss3vldxwkpfanuem9g", - "percent": "0.0%", - "airdrop": 10379.187602192189 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ao9Wcj8ew6VnyEoqAdseaxF3Izmt6cQPU3Gk/o80bAqz" - }, - "address": "canto1g26hd0lfjfjn0nky4ql3gx5jqj3lj2dq7qzsnp", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AmoGM4na3mL69ggwuIXe8Zc6HjaOUvwIDNjucF4e5lYk" - }, - "address": "canto1gwfsluzdrzjmtxq9z5wpadqrc4v8qeq7srm7dp", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 101690113, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AwVuzyMLiKDoUA8RVi7bZl8POrE8MFOBgLfCjjPEKKYQ" - }, - "address": "canto1ffmaejmvunlqkpdw44retxh4qhhxy0snfa5w3l", - "percent": "0.0%", - "airdrop": 1786.2622900178194 - }, - { - "total_amount": 129130773, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A6M96RMxdY88246H88UI1YpZKINpTp9pHPJ2FsmL8u4e" - }, - "address": "canto1f0y7a8yrywfnm3r0dw7t9t9jr8ldaunjtm7v72", - "percent": "0.0%", - "airdrop": 2268.2778441867913 - }, - { - "total_amount": 71513825, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A4rsZjSv3lGRge3XnpV5fe7EI7fhkYNymSvIrSwTrMwp" - }, - "address": "canto12zvtqz5ad9rkr68tglet6z3fvt0ex2u0ht6p6f", - "percent": "0.0%", - "airdrop": 1256.1934001630384 - }, - { - "total_amount": 75000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2DJ2YkVDNkh6kF4J9pOFqyYSEKeJD/kM6TMX4gaPDXu" - }, - "address": "canto12fxpxw5mx3egcjcdh3evpp0j5s3z6jwjwzp306", - "percent": "0.0%", - "airdrop": 1317.4306508179063 - }, - { - "total_amount": 157038186, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A7JeG3sid7UDDUfZXp599BovS7EinMMZ3Y7XiiRyATI6" - }, - "address": "canto123qlqftqszum2q858hhmcmhy22px9523a3s2kq", - "percent": "0.0%", - "airdrop": 2758.4922611365796 - }, - { - "total_amount": 238862771, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AmsM4/vNBRUg8vLc7M1hAqk4KgZFhxSDLYcD/P6fTWt9" - }, - "address": "canto12jtxuhnuf358m9yysy8glnp9z7sf683keg8qjz", - "percent": "0.0%", - "airdrop": 4195.801811395981 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A4wQAQw82n+ShjD2ZM7d55s1SaRiSn2aehGCCMGe8vWo" - }, - "address": "canto12j5arf80jkkvjxyjxlf7hngp2cvc83sgdgr36j", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 65812571, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5tRc/HdD7U3N06D9vgNEFPZUFzPwwLEainQviqlVCT0" - }, - "address": "canto12j4g6fcpyq77almjqsu3v69sdcnzcz3frgzcc8", - "percent": "0.0%", - "airdrop": 1156.0466432603957 - }, - { - "total_amount": 253626562, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Am2Ga4E6P74jBHrvN0St3XJImHquG/TCl9eofDQXjh9H" - }, - "address": "canto125xtj0cjj7u7rk6vpjxh247z40cylp9784rm03", - "percent": "0.0%", - "airdrop": 4455.138755204908 - }, - { - "total_amount": 345134256, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A1OAjQl5cu8m2rA9ANr0xF49bTYM+m9NBSy2cK4mZ8pH" - }, - "address": "canto12mvswyec8v9ax07g7nh2uax2gelf9vst48vldr", - "percent": "0.0%", - "airdrop": 6062.539300021786 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AvGhFFB64zMiegd7KxtG6wlCQPGBTjPLd1/Tqsvwvhmh" - }, - "address": "canto1t9pcltmrpy00g9j4nfkvq5el4350up4cynppcy", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 2690000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AoKi9F7GdfGfPn+7wMwpM54mDvRnqOo7+AhE8HeCYBnB" - }, - "address": "canto1thjqzze8s8ll0k64vtm5y7gh087fuy0gwhf9uk", - "percent": "0.02%", - "airdrop": 47251.84600933558 - }, - { - "total_amount": 90003000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5ZJoqnhSJ8y9RV1uq2P1ukROeldhHcBDjKDEIoSgP7O" - }, - "address": "canto1t6gpwnv3vns62tuyhkk6tc66jgxexasx5zrfk0", - "percent": "0.0%", - "airdrop": 1580.9694782075205 - }, - { - "total_amount": 52888000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5egYwKZPJcohF1/9A8O1KQ4gjzRBP+vQvRFcipbw/II" - }, - "address": "canto1t7222x2g6gmk4562d7kl5f2yuegmwjuk5mnlev", - "percent": "0.31%", - "airdrop": 929016.9634727659 - }, - { - "total_amount": 642264421, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Azd5+NV4p5Aa7ggcVjZhZGA4nid14pTp/UhB1pVJoDQh" - }, - "address": "canto1tl74amaak20kyec08d0hgzymy6unah85c7c57j", - "percent": "0.0%", - "airdrop": 11281.851122069545 - }, - { - "total_amount": 96000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AtyAHCJGwojPLVJYZkWYnbvHkQGeWzL+k7YkZJX33Ows" - }, - "address": "canto1vqca9s20vw8xjyffsck9lqnx8eh8r6yzt9p4c5", - "percent": "0.0%", - "airdrop": 1686.3112330469203 - }, - { - "total_amount": 263859237, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AmS/5DcuYTdXm4h/k8BNsEWBXBErZ8WRl3N9HmGOtGLP" - }, - "address": "canto1v3059rk9ys4ytj42enwgkwx3zq23vjjmjse2rz", - "percent": "0.0%", - "airdrop": 4634.88328433635 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AluEjmNPmsEDj0ZZXPtonv3Qy+uqhm4lYvbp4cCUBh45" - }, - "address": "canto1dza45mg5et82hpnqx7c4qft97ka6zagxttncyp", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 166638477, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A3JVIeTp/vXBBa3ohTT4o8CuqcjdZkkf3szR75ex0EOR" - }, - "address": "canto1dwpscx4lgqfv5lfa0yct9xrjn38kxgx3vwg0gn", - "percent": "0.0%", - "airdrop": 2927.1284960721964 - }, - { - "total_amount": 275800000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Amf//27VQuwUd2ejGt2UHBvFgoJw9zvseLohSMCf2/Xr" - }, - "address": "canto1dnh3tcmnjtcn6zrnmsvyjl9gpp7xs8sp5e32n5", - "percent": "0.0%", - "airdrop": 4844.631646607715 - }, - { - "total_amount": 72992408, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ak1j6mXtQAEfLL/cf44NvTGHMHhzhjVVLX8sM/HPWzDE" - }, - "address": "canto1d48e00y5de6m8elvmkydakktu3kdgxrs8ar5d0", - "percent": "0.0%", - "airdrop": 1282.165807682749 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2VUkhu+AFMzLfqApV6t0o/Ps1lX7Ii2HkLPOmimlAcD" - }, - "address": "canto1dcfgxpcdqnumku8ecqrmjymk3jpylzqml20pfw", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 63535729, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "As0OUIcRBqoWDbZtty4ybbHq5bC7TuoZek8OwVCZzLWA" - }, - "address": "canto1wgc3whhczxld80a5t84ljhcw8ttkdvsgd9knt2", - "percent": "0.0%", - "airdrop": 1116.0522240888017 - }, - { - "total_amount": 91385600, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AtEuC5m6qr5vbu+3ia/IQig/vSSBd7oZeLSY4kyPXSbU" - }, - "address": "canto108cavjscqzr99l9z49amtxq8u9xc9j6v5qw0mp", - "percent": "0.0%", - "airdrop": 1605.2558731117983 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5iv13ffvEiWG/gZ/hew0rc/ik5OB8MSSndE6akjkeh9" - }, - "address": "canto104xy65uqeghec7sfrwmz9wqxz0d8at5vpfsfc4", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Auo8xQsYx4L+9qtY+iBluuPX5pmWT98yGyEILIeNBvSs" - }, - "address": "canto10ehehyjjwr4s4ux7uwhnejr83k5zpzluyes4zv", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 80891067, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AuZogOFo1GTcz1DgDEcrDT8XZvcLaKTht9pWq6Wlc2jE" - }, - "address": "canto1s8x3k8jttlv7rr7tfuttretvjw0w9fw50es985", - "percent": "0.0%", - "airdrop": 1420.911613908865 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AttdVBwtIizIfiRhwmh0+diSB2e9pcsQHtVWAcb908kx" - }, - "address": "canto1sdhglurwegmxv5va6l256jjjy0d5w99wtwkw9e", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 66839205, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ag7MeqBvRTOm4w1U5sl7hxHgc+Y0VfyB/DSc5vx+Ocvx" - }, - "address": "canto1shdge53kxayldp9q97furlxcx792v5n5lul6gj", - "percent": "0.0%", - "airdrop": 1174.0802312440194 - }, - { - "total_amount": 206022612, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AuB8uchLH8OZq3AGaKcIFa8D4Atpv/RraiIv8jB+kv/X" - }, - "address": "canto1suscz38m26eu3df0q2mztfuqrhs4w6ycslwjzj", - "percent": "0.0%", - "airdrop": 3618.940050804867 - }, - { - "total_amount": 63808067, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AqSDrmNr2i/9mKGYljrzeotXbtGO+swkRfCEBCYM5Enl" - }, - "address": "canto1sam9n777vjw269v8qpttlp2eypp0xfaxfhreua", - "percent": "0.0%", - "airdrop": 1120.8360431365677 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Awsz6CWL+Eid5oQZCLZBi0XUeYvpOyOOOpyWxrRNTrGC" - }, - "address": "canto138g6vca484whsv0kwuvl9ljfxtuz28uuu046lq", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 81244706, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5NYnzQ+VyenswtArPfHq9i/DyJzaQ9DuBua1EsYVR2w" - }, - "address": "canto13sk9pffmrsevwc0l78ngyy9h65lmerdlex2v8f", - "percent": "0.0%", - "airdrop": 1427.1235453478596 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AhEnImjG8HTEmbuO9mzb3RCQ+21jazIdYGXMONjKZobQ" - }, - "address": "canto13k8rcfj7juvhd9zygj4z39kay0faxjr0fef6f6", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Aw3NfAYY0EVQHlOWSIWQIoDwk0aDg16tenZXJBNLNlu6" - }, - "address": "canto13lstgp90a73u0zgav5x9etw4qsuyq028z5m2p7", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 329022163, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "ArFSJa5JBb1vc0Pktmkjv9rg1giUDZMZYnb55SsNHhXG" - }, - "address": "canto1jyflp5wk2swylctt2krn4fuaf2gtp0xqs54l0y", - "percent": "0.0%", - "airdrop": 5779.51843112807 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5t2qLhu40/Cs3Tovsyxl01YIv/gAfnzj8u8tBolpbvQ" - }, - "address": "canto1jxmqpfrjqxr3pvxhjxs86nc93kax4fzr7ml7ra", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 598783438, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Avl5eQgPs0qXQ6kmhOMSV5484CoWhbFOsNW6qahNTq/F" - }, - "address": "canto1jfv6trm6jeptqwevh5v7rxn6qjjw878mgsqg4t", - "percent": "0.0%", - "airdrop": 10518.07539231098 - }, - { - "total_amount": 2800000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Axzt4OAm7SA9ObJuIVSCb0Qd4B1iS32Ksfs2Tb5et4c5" - }, - "address": "canto1j4ednqhp9kuajj9aeeuxr5vx6lqf3yxac2nfrh", - "percent": "0.02%", - "airdrop": 49184.077630535176 - }, - { - "total_amount": 401238578, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ax4CzgRxt2SYxwW9qx/EGjznLoD/s5/4C3Dl/WY57Zcz" - }, - "address": "canto1nrfhjmxty0v8ncyfuazmyp07xr466gew6cn9jf", - "percent": "0.0%", - "airdrop": 7048.053345970551 - }, - { - "total_amount": 7500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AyzvciW/zRl89qwb1llWgxHHKaZ5Bd4k8iRDRCXxRuvW" - }, - "address": "canto1n6hptqm6fhn2dehqvx2r9tafkadfz0z8xwdge3", - "percent": "0.04%", - "airdrop": 131743.06508179064 - }, - { - "total_amount": 1022445862, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A0b02L47SKlk+FeJ1qHRdh/Ec2PSvx3+6+zZmDNe+3C7" - }, - "address": "canto1nufud6xdr6j279ys7qw3vuu4sfc0prg8llaq0m", - "percent": "0.01%", - "airdrop": 17960.020232009807 - }, - { - "total_amount": 56271218, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A9CzxifMHmXMuhYD3MPswLCypXpdKCqMDLUjMUQvZB05" - }, - "address": "canto15tsma46upu8xx8m37uzffv8t0njeh7cals3r4u", - "percent": "0.0%", - "airdrop": 988.4456980274173 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A4u+wTAprqagxE8ALGQUAmP0FNZpL0c9MOdoMq9oCDqK" - }, - "address": "canto15tm7d69e9ffvuks4qpk6yn38svfef0jhantr3j", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AkwM45kVL7/q+UlqsZdtXRsK5CXB1v9XZKHwymwAdlsK" - }, - "address": "canto154hjs9uwh72dazw7wrants69ts35mz4z4e4rar", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A6Xhhh+ybBlqGycv79PlZr94XVLIEmgPDw7B5VeEeKag" - }, - "address": "canto15a8xt797aqd8zl0z9nzf67vv4gglkj22upwhgu", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A4Gphxg6/QCVi4pNzIJ4qeqhNSOJrGHbZ53zchGYRxfm" - }, - "address": "canto14g3yu3ae80cqgkf8lrdp74plp0przwzthq5d22", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 70000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AwBlJMc/pHao943bwbydnpBfqfsKQBogddHPWf55Pl/9" - }, - "address": "canto14w2py7f0wm0y4w2vfcwlj53tdje2v5fw7tzrlr", - "percent": "0.0%", - "airdrop": 1229.6019407633792 - }, - { - "total_amount": 128706381, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A7YeVwCFVAKMXiP1kHqVnARnFNurLJpXNx+xM9hPvR5h" - }, - "address": "canto143fjejrwpmklgn9ntw06g375y5cth0hmwel80m", - "percent": "0.0%", - "airdrop": 2260.823083803299 - }, - { - "total_amount": 52344314, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AopBG0Srzd2SfBQ40xPeO+j0k8cq4UGPxso/qrmNiDpD" - }, - "address": "canto14kqjnkq53vgqyje0cdf8ehjg6dnlm2dmkqx6y4", - "percent": "0.0%", - "airdrop": 919.4667154618247 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AtqvB7FivzkKBHkdCFTcKdIw1OXeDxyxEiLr6tZvFUR5" - }, - "address": "canto1kplx8af9ymtd3le7lhfwe0gjda6tek9rlnv2zn", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AuygXkEJwpDKFLg256AD3s/P+zCUdGeqWVYxG35n9G4C" - }, - "address": "canto1h0pasyyqdxcs5kze5z8nr52qh8e40ael00hxgs", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 356699076, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ag3ZDQmnUNUNeLmJPeKWDODdcDpvp4jGaUshTk/rexzs" - }, - "address": "canto1hhfxf8qf9vt5ucynatptee3kh3aw0g26tpjpqy", - "percent": "0.0%", - "airdrop": 6265.683944544345 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "ArJCsjKixfTFSSY9nXiyk0VpjOy0HkUIZ5ZaRZLY+etY" - }, - "address": "canto1cqenq2nnyufrvxve5skt6swej7z9c2wdhq0m5n", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AgvpuD6UZhUmVcOwaed0BazTPPWD9M9BXuwuTYxH2pBN" - }, - "address": "canto1cxz4mfrv8qnqpc2hzjzdpzqdf9n7skhws43jxy", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 240238030, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AqZS+OQ0VkEaBu5AND0jaztByd1JiWngVhQEa4DF0qll" - }, - "address": "canto1c82tlk2fpx6cn0hpjp3wxaw30w74ueue4utwdl", - "percent": "0.0%", - "airdrop": 4219.959256188156 - }, - { - "total_amount": 97917926, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2E7alLc1EmW/2tuISF3RqhuEtYvN8dgzcvHdaCAJ0fT" - }, - "address": "canto1c09ycralynjlcwymnp4s3jsgana9sv58rumfrz", - "percent": "0.0%", - "airdrop": 1720.0010263589281 - }, - { - "total_amount": 133047487, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AwWnbmFDQu27KojUlLa/CmIqccT/Xp3yLXOIftYHPFRb" - }, - "address": "canto1cn6s3vkxy7axtl43av4yrx4s7havdyls0jecwl", - "percent": "0.0%", - "airdrop": 2337.0778318412927 - }, - { - "total_amount": 104948374, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5DjhFrTkocwPpIcZct69XeqbYffJ4P34WlkPjfO/oYL" - }, - "address": "canto1cupptwmwhdzlknka0kkwj2uggfmu6n4r6v29w9", - "percent": "0.0%", - "airdrop": 1843.496062148014 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A8SFYj2vExSUq2r8Tzq6sO3401vzgFOFWZgehnK5oAqo" - }, - "address": "canto1ezekgsde9q9k6js963gwzvtx5mr9ngvtsrqs9d", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 1289452352, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A+JnR5bhIMX25hDy0zLidhzqdldMhkKv9hz+hhILWGMr" - }, - "address": "canto1erlz5ln3fjed40h9wygj65uy2xyg8uswzpyj2y", - "percent": "0.01%", - "airdrop": 22650.187350587203 - }, - { - "total_amount": 110000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AhhrVPUg8L1O0i9m7YCW3nH55BjraUrXPzuDkRKU1ZHW" - }, - "address": "canto1e99lfxxd0hcpx9hafp56usgy7yxc869s8fl6rs", - "percent": "0.0%", - "airdrop": 1932.2316211995962 - }, - { - "total_amount": 103224979, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AzXxzI03C3ZlyaG7Ok3TrDaibglVEIqDQLU361flbZuV" - }, - "address": "canto1escq08ff37ksykvpazl30p86mchjjufpjwgr4n", - "percent": "0.0%", - "airdrop": 1813.2233501951298 - }, - { - "total_amount": 1573248726, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AiXL65lbskCdL/LdzcWoxtgQgi37iNYqeHUj5t7Ajkq7" - }, - "address": "canto1ejkq0xyntn8zy0djnkuggvkcyst83srtx0x0z6", - "percent": "0.01%", - "airdrop": 27635.28123990163 - }, - { - "total_amount": 98329348, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AvKI4jLKmzoCJFfNBuL9CUbFFvk0Bk/rn+13wETbteKk" - }, - "address": "canto1e6jkr6ztc2qa43crgezd3l0j8y7pvhcp3nvf2m", - "percent": "0.0%", - "airdrop": 1727.227959068539 - }, - { - "total_amount": 534710613, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AxLE2RA2skSu/uYipfhGM/WSM+Y6uQlueO2B0J7vNw8j" - }, - "address": "canto1e7y05mhx6ygmqjlfkph0d7kkh4nfrwyvvya7vq", - "percent": "0.0%", - "airdrop": 9392.58867845109 - }, - { - "total_amount": 56945173, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AzmStd1WywThy9MofmReE7yVLxRpxsZifFV9xZ8Lpwup" - }, - "address": "canto1e759vh4rk0vxu56cenlgcccn5e4c7mtu5c0sk6", - "percent": "0.0%", - "airdrop": 1000.284217684377 - }, - { - "total_amount": 101486060, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AjXCObiRwZ5a/Fu2qK4NDD6BFF7BZQN2Q2RT8Qb8J/I2" - }, - "address": "canto16dn932tepxlvw7sxagjs5gjkuw5ee5ljcyvkh0", - "percent": "0.0%", - "airdrop": 1782.6779476632682 - }, - { - "total_amount": 2203855563, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ap2RtrnEy/Ssn1M/qzMa4FWRJnfE1AZK32gkCPS0E0Se" - }, - "address": "canto163xrm6llgz5fctwlp704u99zrw8eegzp2mj7nz", - "percent": "0.01%", - "airdrop": 38712.35824895672 - }, - { - "total_amount": 122000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Azo+IXPkUK9IVguHpfz18kjs2jocJP+9yg3HEWtUiOFD" - }, - "address": "canto16hl48ay0zn55px6creq6fnwlur5hm3eyjakjwp", - "percent": "0.0%", - "airdrop": 2143.020525330461 - }, - { - "total_amount": 460939476, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5d7rI4VG1zgJGOy0DYJjgYM2K4ISALBzompjzw+P3zO" - }, - "address": "canto1mz7rv9xlnuldmf3qzjuae39y42np39rwgzdu9x", - "percent": "0.0%", - "airdrop": 8096.74391805793 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A0XHQeMdrG4SNH9O4v7WsCXEFbeCMcKOCFMs01eSwbYk" - }, - "address": "canto1m27cueyc27mywjwknqrj758eyztm25m32fpcjt", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 130929976, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A9zBBtVHBaCjcDx6lBUb9PGbCBHdp28zvWbUZGBSurTg" - }, - "address": "canto1m0vtwpv45g9pkk96k30tmdgv4jtuppuzwl77dj", - "percent": "0.0%", - "airdrop": 2299.8821799100388 - }, - { - "total_amount": 55109039, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Apo3qXDFg9IB/if8u3PDoGWCMlSicceREPwTwgD/qyhw" - }, - "address": "canto1m4wmdyq8hrlr6dsr4wfeasxy46mu425slytnqz", - "percent": "0.0%", - "airdrop": 968.0311615429252 - }, - { - "total_amount": 1095443401, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AzuS6ph2hKJHd1FPgTnn11niGK0ZgfZ4bo+x+o2Fzn0l" - }, - "address": "canto1uy5w6xmqxukyq658r3xtc5r8hjrggf26f8a4r5", - "percent": "0.01%", - "airdrop": 19242.276169514815 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AnXBzlgO8YL5CLgokR0IZ2Qkxwu8+JXeFuqa9ggEH8Jr" - }, - "address": "canto1u90tketnf9hadps0wx2zs5m4lw2vnf7zw4jf7m", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 79180917, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Azzw+FgzDwTeHR+ptkhfv+hpB/iVZcIjSxSO6zbjWX3T" - }, - "address": "canto1uxplslltfy32w3egdcz7c55g6jef3hlehn7wel", - "percent": "0.0%", - "airdrop": 1390.8715602089153 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A66KZwK/6/l5up7DqXh9/tGGe9l9m1KbXyr92KW041Zk" - }, - "address": "canto1udx56uukmr444kuxcgep6259ax9klhlrvq8vgl", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AlBRDw48ZX2tcjWfUOQc0VL7UOtPVnbSnEE01YqWFVrc" - }, - "address": "canto1u5yrjtxh9lpqwfz3w6wc3qm0m9ks054ey3xx9v", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AxO40o9HWng7yZa4U1vo4JFAeUafF4nlBT4uurPxqDg9" - }, - "address": "canto1uk65tj83c657e0zn679n52gklncxtw6rwh85dv", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 84084425, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A1daz1JWdv/6gyorcC1H7llQobMq8wU08jGEALGHR9Pq" - }, - "address": "canto1uhf0dpn94rudyxmp3rg7g405u9xmdfrfcd7s79", - "percent": "0.0%", - "airdrop": 1477.0053166853259 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A3COi6VD645B0QnwkfUYzWq+vQ2tPegUshssNyW71Wgn" - }, - "address": "canto1uu4xq96cz4d2jkxn75hx3t52zlxyw0cctadct2", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A5mdwkbDWE6wvYEy/fLkiYiFJVF6knRD+Ku68XSyVBBX" - }, - "address": "canto1ulxavkpmva9035gt3xyeky6vgxzxmg9lv0wecw", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 148253249, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AnT3X8pv79XqhiTMg5OsQa/QhvoDFL3Us5o24eetahX3" - }, - "address": "canto1ape5evz6y9av289cmvvv09pfwzp7r8sw7nuqnl", - "percent": "0.0%", - "airdrop": 2604.1783242125216 - }, - { - "total_amount": 294725835, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Aj7YfTw0Ap/MTbNWTmtmy7ydKSCKFquTH8wwc/y4xS35" - }, - "address": "canto1axzpyph5wefrl68sxgwaml4a6xvkmp66sna6q9", - "percent": "0.0%", - "airdrop": 5177.077981558679 - }, - { - "total_amount": 333131665, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AowTlz73mOV0INwta3QrAceuZ9UrN0fQn9oJMNNkv4F5" - }, - "address": "canto1axtkexvk9ndm3evea2rchljtvl8z9xyyr6rcfx", - "percent": "0.0%", - "airdrop": 5851.70488305337 - }, - { - "total_amount": 396705886, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Axwqh74grlWLL0SVMKa+Qq0pyxBfkE5GvZuTmsNDsGAW" - }, - "address": "canto1algfejg6x3jekndzt0pzh5x38qxtc3lvxs8z7f", - "percent": "0.0%", - "airdrop": 6968.433247683656 - }, - { - "total_amount": 127182863, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AycVnXtp5hSYUeTuSMrQdAY5laGnp2Pme5r0CDrs7ZfL" - }, - "address": "canto17py5dsg3y7sfd0xk54evq8yfc9j097sjfwrs0a", - "percent": "0.0%", - "airdrop": 2234.0613596663284 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AqwwX3aKZfyOGHdt6M9ASxMrpBE0iAVlVDvpYQpNABbB" - }, - "address": "canto178ejcvt2ddzarlwlttu56uecmx6uzgure6zmdh", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 35000000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AyaSq4p8pxs3hg5f6RByY74iPo4R5haeEUdGt2iTPhC8" - }, - "address": "canto17gugrqmk2zjzzvtt0zhfecztvl69hwhvv67lu2", - "percent": "0.2%", - "airdrop": 614800.9703816896 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "ApeHlQWaj2Cksl3T+9yTLXuwXb18RRDJoQvxttLDwbWO" - }, - "address": "canto17350v2dldkuddwuuq7yurvwugsa05hzxnf479s", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 472794778, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Ar2bl8eRMovKOiLd4xJf8zo7JiltsBVt2DYqaFX5KrTj" - }, - "address": "canto17j5exd3t3tmnnvpskwjjsd9ejsk7fdnyfswr7z", - "percent": "0.0%", - "airdrop": 8304.991094451301 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AxUqHylyZy0Y0/BUZ8/XYJ9j33BsroAQidjKfdL+uEuq" - }, - "address": "canto1755mdax0uyggnqmd4c6gyl0hqh4a6kjeqm35pg", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A2CnvnyzUEKrSle+54Dobyhtnk09qPe75CYj5dlLSJGi" - }, - "address": "canto17h228w0mwlga2cq2zrswr3806yhehe630ycn02", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 292583705, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Agguw835xTVWUXoJNGw48sMlDeTorWELuuJPC5a5Q24B" - }, - "address": "canto17u42s3hv70573ahmyz99hjt82avsnx56h57kzv", - "percent": "0.0%", - "airdrop": 5139.449878624858 - }, - { - "total_amount": 7057860238, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "A/I/a7/hNMP0/NiHbwjYHEgRxW6eoNc4NccrtgKwYYtn" - }, - "address": "canto17uk4szspzcakqy4wwc3a7a3p6agg8yfl79dd60", - "percent": "0.04%", - "airdrop": 123976.55208973553 - }, - { - "total_amount": 52982246, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "AuK+u9J4zjYWnSu0Ev2IK6SCvuuKcUeyfcSleyudC3Lq" - }, - "address": "canto1l2mwd0e6msljkuy3q73vcrju79y4fw2r2ngt9d", - "percent": "0.0%", - "airdrop": 930.6724643943256 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Asz826xYAPbaSLJ4xkani3bFHy1sfjHhxYZDYLtJZJI5" - }, - "address": "canto1l4yse7zkzg47qkkky4d7sdhydfqld43uvufaat", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/ethermint.crypto.v1.ethsecp256k1.PubKey", - "key": "Aial6gL5+HwrTnNaSoBO8FHIUaFoccrzYfV4z7XCrGn+" - }, - "address": "canto1ll8h4hjf8krn88fvpckupszqa4yvuuf9ejfv96", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkxWoQeWThHxjhsVD9PPzAMJHpI0ZZI1lBE4f6/whGE2" - }, - "address": "noble1qzvrc782mglck54ryefg4rp25jh45rvjzuzqjw", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 50050000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6HyJEInBXU41dSUBPgljSJ6AvZCblhMOhg5ka3Uojzf" - }, - "address": "noble1q2unr0g47z2ynca223y9pjxrk8vrczhw6tu0zv", - "percent": "0.0%", - "airdrop": 879.1653876458163 - }, - { - "total_amount": 108116408, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApwmKfeZPKnBpcCr5ruEaCanyQGLNg4tM9rk4FIp5rom" - }, - "address": "noble1q6hkmm2hj3g7yqhq3qx8gahq30zuxqdg5yvxz9", - "percent": "0.0%", - "airdrop": 1899.1449300737909 - }, - { - "total_amount": 50275472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2nxOmSFwy/fUg9JlSLhpAPTLLg1U+sPzsiHXrHfw3Sk" - }, - "address": "noble1qm8ttsqm99uucnjqg7h2qzlrl6rxcay7e95ryu", - "percent": "0.0%", - "airdrop": 883.1259706284992 - }, - { - "total_amount": 50010000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au5ymHUEOsdPp4/mxyYf0bbVFVXXk4qyT/fsjKbigEby" - }, - "address": "noble1pysm5c9aw72wykdhx5uzxcjttrfmycmr6v2z99", - "percent": "0.0%", - "airdrop": 878.4627579653801 - }, - { - "total_amount": 1198034111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7jcCMP6pGqy1cQFxMOJxfVSGpjC6QqOkiCUvekuanx3" - }, - "address": "noble1p9lujm5arq9zdzdzr4ffx5rj77urffu26xk8q4", - "percent": "0.01%", - "airdrop": 21044.358114090424 - }, - { - "total_amount": 957341564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6pmuIJe//dZwYGX5OmM3a5UQAy8iCT9zhDidXRg6Wie" - }, - "address": "noble1p06guptkql3eannp5cl5qeqh27xwhzjqz60x4d", - "percent": "0.01%", - "airdrop": 16816.4149295407 - }, - { - "total_amount": 6104421599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9SzpIUR3j7VDev1NqXM7+o4Vfflyp2cit21bgYPMoMl" - }, - "address": "noble1ps2etypf9yn5t4zh48n8l9j5vwluuunz57ad5c", - "percent": "0.04%", - "airdrop": 107228.69493383274 - }, - { - "total_amount": 248554760, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az1LiGoJ/b1C9/A5WtC4FtwzlRxS3dMGsUa4MM1+wuNt" - }, - "address": "noble1p57tugeszvnp6zm9r02lgjsqsffsudf5au44vd", - "percent": "0.0%", - "airdrop": 4366.048789742514 - }, - { - "total_amount": 6363925399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgtXMvSDLvldGG6IsRRzeHaWgADJp+Qi3T5asfLFAYwb" - }, - "address": "noble1pa54vad8qdlkmaaxdlmw4cv26gph9nuch4pqnd", - "percent": "0.04%", - "airdrop": 111787.07173548234 - }, - { - "total_amount": 297855576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2v4hzeifGbKQhlxMf9eGqp91cK5KiLRfiosMXX5L1Rh" - }, - "address": "noble1zgqjy7na29y4lx8xmg4krv4mw27hwe2uwt8edu", - "percent": "0.0%", - "airdrop": 5232.0542045256325 - }, - { - "total_amount": 797504826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A28RN9/aVPiCj9mY4PM1eqjtPQj+NraF1xsOLByw+FC7" - }, - "address": "noble1zgaj2w950llsludydz5xmcp609uk02ysefgdyg", - "percent": "0.0%", - "airdrop": 14008.764025968017 - }, - { - "total_amount": 190147664, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6uSGLTG1oBOkNsN3yC2TZhFk9wDmCITObDUefN2xr37" - }, - "address": "noble1zvd8c2wk0dup5rxctysa6p0y6ruu0c3407d957", - "percent": "0.0%", - "airdrop": 3340.084809800328 - }, - { - "total_amount": 51145228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awo309ha/jBuLn0h2CdU6WWA5DuJT4efyfvbviAv9CMr" - }, - "address": "noble1zaa0pd6n6cpgpmfruqz8ky7uda828qg67x2f80", - "percent": "0.0%", - "airdrop": 898.4038801369361 - }, - { - "total_amount": 103600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayg4dZ2NUoC1zzfYQI+b8O9cyQcWHZ9wYvjEINRERlKy" - }, - "address": "noble1z75hq00728pagjzmezhml3y49hwpys5kgy7ff6", - "percent": "0.0%", - "airdrop": 1819.8108723298014 - }, - { - "total_amount": 823569649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A95tk2oRoJpibqfMC2eoT2RG05L+Dzhljd1W3vkruGSh" - }, - "address": "noble1zlkgx5c5qx6wlfs7enpq3gqy4a4zmj9nz5cr8a", - "percent": "0.0%", - "airdrop": 14466.61198234593 - }, - { - "total_amount": 57579530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AntMU2zzTOnb2wGkX5bbQezvndqeDdm69K0Diz2Kdpcl" - }, - "address": "noble1ryu2zpqjyf6zd6cxhlcszrg4ykt5lk2ag6qrrx", - "percent": "0.0%", - "airdrop": 1011.427169089189 - }, - { - "total_amount": 52143860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqe3bsGTy8vsj28zUuKrUg0tkXRrmTA/oGjAuh3W3c4x" - }, - "address": "noble1rxkmasezf2n63edgvxlp7q2udwatqf335pc72k", - "percent": "0.0%", - "airdrop": 915.9455922127706 - }, - { - "total_amount": 117944513, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8oZ7HGJF05NHhP5gaIbi4HrtZ5pfZIXX1Q0SmQNYmx/" - }, - "address": "noble1rt6c6fs94xrcn50mve809vr7u9mugt74eu2vxe", - "percent": "0.0%", - "airdrop": 2071.7828869598807 - }, - { - "total_amount": 91822484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8d7Je10sOmDq7UhjD7Nzq6Vu+W/LxAQNlhLbtCvH/rH" - }, - "address": "noble1rml8k35002dpcq4kenwk4h4jfhukyqytxszqey", - "percent": "0.0%", - "airdrop": 1612.9300647444907 - }, - { - "total_amount": 190487326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A61etUX+pHZaUW+WW7uNMB59bzqNDfEYA092gWgHDeIW" - }, - "address": "noble1rlmuqh8f96yzdetdnctj4r6prktpt77np7mz5c", - "percent": "0.0%", - "airdrop": 3346.0512248632363 - }, - { - "total_amount": 51450433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzjmmWTbAA9oKOGxxiCsGzueXseSLDyv/H1rFenRinWX" - }, - "address": "noble1yrcmray9zf0wpq8yfdvdvwd6wj9mxeug4ms6fs", - "percent": "0.0%", - "airdrop": 903.7650324273745 - }, - { - "total_amount": 1230428265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2WYqDuDpHBhTAH5OzRGzlEC6VR7mgABO3R20YEP0Bev" - }, - "address": "noble1y0dkly2dqh6ahuslgrprzuu84l8s2twl7p3man", - "percent": "0.01%", - "airdrop": 21613.385465915966 - }, - { - "total_amount": 123331901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw8qrbgXbVdKtpR3/7Rt35Q532dtQAwNJS7WBxfy/GL8" - }, - "address": "noble1ynwffs48v2ug92d43gxxw4gqre7f53gglujm87", - "percent": "0.0%", - "airdrop": 2166.416354680528 - }, - { - "total_amount": 111760180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkWB9WFX9Iti/5TnP10BNayQ7F8Ktht6HqhaRCGwRZyZ" - }, - "address": "noble19qm5uj7ndchwrxysa6wrrlcklrn8s4z4zq64dt", - "percent": "0.0%", - "airdrop": 1963.1504889723517 - }, - { - "total_amount": 66872877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiy5+lVOZMMO9iCk+KeiVSAT7OGf+qDntMapX4GZuqwV" - }, - "address": "noble198vyl9thq8kvfydknp0vq47ghtz0fuuucm8k0w", - "percent": "0.0%", - "airdrop": 1174.671704909011 - }, - { - "total_amount": 52864693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37wF2XcR2RxqY0TMRCqdPx1LycID27b7KvzA/qk30Q+" - }, - "address": "noble198sh29hmxempfws4fylteyze2ejal036mpq8mn", - "percent": "0.0%", - "airdrop": 928.6075587237177 - }, - { - "total_amount": 30085052808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8lgWSL1sSs88RqkxrhNC8BtR/X5dp52RDNuBWUGxKH7" - }, - "address": "noble19fc22a6lqq5m37tsynt6jypt0e76r0j8pwh0d4", - "percent": "0.18%", - "airdrop": 528466.2760097936 - }, - { - "total_amount": 565568429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiqrZCcovY/e9dtVvLJfGmWDAvI28BhK8XB+ht7cHZOs" - }, - "address": "noble19s7nrzxwlwwt4pdk4dnk9wltnr67w6sd3dgvn5", - "percent": "0.0%", - "airdrop": 9934.629113327079 - }, - { - "total_amount": 744625936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4m5bvGU0Sb5pI6sW87MtEzh3yPpctQG+BWXoEKt+9VO" - }, - "address": "noble19uraxqsucmfvzvdhjhu2ycypqfh2z8k0zxvf8f", - "percent": "0.0%", - "airdrop": 13079.90708640497 - }, - { - "total_amount": 163272773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6aWze1ZY6NSs1ZG0uPUSXVl4rS/4RlMit2ABhKpRQ2k" - }, - "address": "noble1xrs0vpdpspv38pz8uag2mcxf35jqmklm0wrxu5", - "percent": "0.0%", - "airdrop": 2868.007407923124 - }, - { - "total_amount": 152600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atrvb3qbkZygCwIsBDMY7F1TOHLZspRalNNAGgMZ27Vj" - }, - "address": "noble1x9au3m6xwp6u3wrvl64jrxd9tdq5mwk8j26y3l", - "percent": "0.0%", - "airdrop": 2680.532230864167 - }, - { - "total_amount": 177277185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrpehBk4o1RHeb8TLuTmHNMmPJeMk+vRo+CrfGmbD1H" - }, - "address": "noble1xspr9c0e032zr8j4er79fw3vm85exsg2yyn4fn", - "percent": "0.0%", - "airdrop": 3114.0052961295523 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnTXxs1XGIGrqsHS1LxbHGFr8FdR/mHtkshHYqyZMBQP" - }, - "address": "noble1xn6ayqyefzckhfg7fnsd2sacq5ks09a3m9xx5a", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 301364062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ZbHGfWd+J1zttjJKiRh0SFQfqg+ikxNCX28wMsx5vl" - }, - "address": "noble1xu3kvl4kjcw8d3uh8gahq2g2fhfdrqjmrzr28v", - "percent": "0.0%", - "airdrop": 5293.683364450506 - }, - { - "total_amount": 51219658, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arr/0fzfCwzEG8p63BqvWm1XEfhst5FZ0ZGEJurxJvyD" - }, - "address": "noble1xaqlvk4655rh99qp44e42vw4qv6m8nnwypucrt", - "percent": "0.0%", - "airdrop": 899.7112983148079 - }, - { - "total_amount": 2216535949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhPkV3Tqxk1JEf53CkKzgqNdKaPwUo+RhArhwiXxYROy" - }, - "address": "noble1x7744zhq30ar4gsttje932g57mzvmuu4gd0965", - "percent": "0.01%", - "airdrop": 38935.09863803141 - }, - { - "total_amount": 343502524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgsaWTEjXVYjBpwEiDzWDjotywH/ZYyrVFF0CG9GKAhu" - }, - "address": "noble18qd7snrmect6u4xy7a6jggdg7sa7xnwexzr9ay", - "percent": "0.0%", - "airdrop": 6033.8767166788475 - }, - { - "total_amount": 51489289, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmJPIcmakvEbMg6O6sQUU4lwW13LTZGWbBYKYghCTcgR" - }, - "address": "noble18ymqectd5wca4f5aa3xyqwave837j0k80xvv6k", - "percent": "0.0%", - "airdrop": 904.4475668989503 - }, - { - "total_amount": 54664709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak94yH1keSzpLmMOXfOfcJ06/zFvJ3I1ldMHghcRvPe9" - }, - "address": "noble180u2pakfaczrurlw89wgmqr9qv7mt6q47t8dch", - "percent": "0.0%", - "airdrop": 960.2261753952197 - }, - { - "total_amount": 625947788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkwFAizy5yuCN3hW4XRm6+R6x0GC/z5cECsYl+fOZoM7" - }, - "address": "noble1gzr8qv7dp3dzx0a6mya78z5jr3qfeyt9d9z2ry", - "percent": "0.0%", - "airdrop": 10995.23735630492 - }, - { - "total_amount": 141389254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmWqfR+RvKTB8YW+5C8EK8sGgmkXvfUdXhoHuPKdf1oH" - }, - "address": "noble1g9rn5sy6vch0w6d242t3eq4wzu7ck73scsj03l", - "percent": "0.0%", - "airdrop": 2483.607158878377 - }, - { - "total_amount": 3253800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al1ndmPRmfe+AvqLoVJOGY4OMVsNPlqkYZdn9dbY05rx" - }, - "address": "noble1gggmvyk3y5e4geyzn98weqnssmsdur3aj7pzjn", - "percent": "0.02%", - "airdrop": 57155.411355084056 - }, - { - "total_amount": 915683922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxzCRSV1TfRnjuLIpVNGGl2T7pU5knLFqiirRbKGTgi/" - }, - "address": "noble1gfzx4rfhyx76v753j82npusu7zsklleckahmmp", - "percent": "0.01%", - "airdrop": 16084.667537386042 - }, - { - "total_amount": 50025093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUm3uJ6XsB7lfngopUxYje6k3xqDXJ9o6sF+aM2ufw6" - }, - "address": "noble1gdkxypp057g2mcjtyae9jezd8epqae9l73zkxe", - "percent": "0.0%", - "airdrop": 878.7278777095506 - }, - { - "total_amount": 572238532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5uGGcOdmpAk1M/tfpEFs01IstSmZrbux455v+SI9PHx" - }, - "address": "noble1gwqkt8rka8kg67x4f0jnsvw4hgv6rejg7kxe5h", - "percent": "0.0%", - "airdrop": 10051.794421811244 - }, - { - "total_amount": 315396551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5025+FERc7+tGJQU0s4DSNLbdGzQ3SGdGiBLhx5ZoHO" - }, - "address": "noble1gwk3r3zrnfxcasat9xapyua0prsvmfvxr34jsc", - "percent": "0.0%", - "airdrop": 5540.174445995374 - }, - { - "total_amount": 120597956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xlVpepTg1kEopPs2nGGauI65zts/o9GdOZ6CWXQFX9" - }, - "address": "noble1g0jrtexysatzgfcrpu2akdemg225583uhmgwut", - "percent": "0.0%", - "airdrop": 2118.3925821385233 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsohPch3lyI9L45OPtMHFPsMny7klgNFNxi8d/S/VNXf" - }, - "address": "noble1g5cwvxvmvz4ymgkux6hqnw2j5eurqd3pmy4vsp", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 128260180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3eaZocedtf7hVtdEvNM95JlgrA1ifJU6wfCNDU9SupN" - }, - "address": "noble1g5umt5khy605ftaczhvfp5jsxl6mt02v92k4w2", - "percent": "0.0%", - "airdrop": 2252.985232152291 - }, - { - "total_amount": 514426751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzO4mPf839fCWbmlUP8z30W66z81QbWzw6KdRgY89KHT" - }, - "address": "noble1gcj6dduz4nde39xc28v3ftrwujxje3nauaz4ea", - "percent": "0.0%", - "airdrop": 9036.28759157428 - }, - { - "total_amount": 1698872627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhRYt/cb7smlQRzMO1VCnkMc4fcLrTVx7KbYwgsmzzja" - }, - "address": "noble1g6hp8n8mefwmg8x3fhg4zc33d68rgfp8anhy0g", - "percent": "0.01%", - "airdrop": 29841.958275271154 - }, - { - "total_amount": 824268415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtIofV7agoTkSUH7uijKuE7poWITpJCW4am6cRMgEFmd" - }, - "address": "noble1gm4jceunfw78eee8a0n2wa5cq6q5sf8p6njvdx", - "percent": "0.0%", - "airdrop": 14478.886325627922 - }, - { - "total_amount": 3284879756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj6ix8gbZyZZJveBKvXO2saDMKx0Eie8x9hlJ7+9oMWb" - }, - "address": "noble1ga8g7krapufvfpjh6yfpm6zklafhd88z89tyxy", - "percent": "0.02%", - "airdrop": 57701.350330741945 - }, - { - "total_amount": 412957921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzPZ07mBL0dtu3VQEBn4ggh8vEKpMSb6PA1RiKJnWu/" - }, - "address": "noble1fqe73f7zx5jvuxj72wzmlmqgm0ju3s69pktjzz", - "percent": "0.0%", - "airdrop": 7253.912301645862 - }, - { - "total_amount": 1156212856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao/y7OJb5b/WAGqNf53o7laPIO34YDqxP9AhwwQ+/OCu" - }, - "address": "noble1fyg7dwx032m8cxv9sc0d6c75l854sgc08cyndn", - "percent": "0.01%", - "airdrop": 20309.73673818814 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A33OwE/UZYQ+pVsUNHSnzBdzL0dY/ptgQYJnz6nBn15n" - }, - "address": "noble1ft92z9xr8tyaa9n7ulsc3hkn09e5m9es4ct6tf", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 456250295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7tJdnUuFGPjUgbFgHM/6lZeEbaWgmd7hm9ZEuDp20N8" - }, - "address": "noble1fsczk3dj3eqp62qeeg4jcwvg939zwa67y4rjdq", - "percent": "0.0%", - "airdrop": 8014.374974369491 - }, - { - "total_amount": 2935407365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4D/Fo7KASG6UTh1ZpRGNpBiRZ4IG/9hlBDb/Y+uIxai" - }, - "address": "noble1fe4mvh5f7t0830fwcucuulj5w22vxtecuhnksh", - "percent": "0.02%", - "airdrop": 51562.60847050168 - }, - { - "total_amount": 81664251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmFL4LMUX5P+Cid9DdX2O/D8vdZ6doiJfKDrWRbKTTlf" - }, - "address": "noble1fek2ezdctakw3y9g69xhtjpxx8078eysshgfs5", - "percent": "0.0%", - "airdrop": 1434.493164579825 - }, - { - "total_amount": 348822217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwrvPctTIpqcg1SCQ/PEm0RBVZxNUVAYUoRmStS4WlSU" - }, - "address": "noble1f6jkdh46tw9vr7zfzj0m70f0l6zgsapnjfjw27", - "percent": "0.0%", - "airdrop": 6127.321071494067 - }, - { - "total_amount": 5684886175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7mDEONHVymWedbaYJwOCASmC/MHNihekHSmKKGml0rq" - }, - "address": "noble1fllwdtmryvjtu2qdgnmkstw39xnzwdj7h64h6a", - "percent": "0.03%", - "airdrop": 99859.24391141291 - }, - { - "total_amount": 79500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8ZxkIIagdSaWqUmrSwwaVYKkSnzQ2oM0Iqf2JsWksR" - }, - "address": "noble12gjn843vmsnmpd63vgk9rqwazvpqae4v2szr3u", - "percent": "0.0%", - "airdrop": 1396.476489866981 - }, - { - "total_amount": 83722269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyqG26bhbPglPBMvNm/Zo7yyUlvHgudJJgQmisj6Yrnk" - }, - "address": "noble12wsqtnzh4efvullp3y37sz5kvn0shy3eale5e4", - "percent": "0.0%", - "airdrop": 1470.6437778216246 - }, - { - "total_amount": 51343630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlBgM3jwj5GKICTM4xpXnd0/0mqLAqoWRJGoYr+5dQiC" - }, - "address": "noble12whal2edj7wy5uazx3azmagzjspqxwvyyqnqzk", - "percent": "0.0%", - "airdrop": 901.8889584833839 - }, - { - "total_amount": 2736527306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsxNHv736krHE/Gdp3pGU1/KzKhffJycyX8jqyA8mUq7" - }, - "address": "noble127mmczyaz74qgqmesc29nuue5r233k0n8plhav", - "percent": "0.02%", - "airdrop": 48069.13266299404 - }, - { - "total_amount": 109338257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A952l96qz8A+1r0DiR7Fg5BRsfX4nXOHa+yfcp/yb7D4" - }, - "address": "noble1trrgphjtst6glc6vpk4hd8qur70ajersnzhfk6", - "percent": "0.0%", - "airdrop": 1920.6076143840737 - }, - { - "total_amount": 105650202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkaETLqfLehNducwUB2wjSB0Kfya8we7qCky4rs4Jik4" - }, - "address": "noble1t9msdp9ujy365wlqjxddkg7xt9eqnk0rgkdju2", - "percent": "0.0%", - "airdrop": 1855.8241917320436 - }, - { - "total_amount": 111993929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8dBvjhQ9mCPQRuTMrnYDh+GddHLyD56DIBVXB8pZltC" - }, - "address": "noble1t88nadw8e4ccjf6yzfeu6vkt9z6029fq4634km", - "percent": "0.0%", - "airdrop": 1967.2564636016587 - }, - { - "total_amount": 21284206804, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+J6KvhYkGHwUZd+pzmpF4LX5WMGwo9+Zr9Bbdj4tDbV" - }, - "address": "noble1tgs7a0ej04t7k0ywdfhk3lddd7a2tmgv2dvwkg", - "percent": "0.12%", - "airdrop": 373872.8856258218 - }, - { - "total_amount": 674881302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+K/g/Gc46q3a5g+lftEgMBnXIRt8nsM9qxKwH4DaaIi" - }, - "address": "noble1tshwngxafaaetznslcppa8exqc0zhfr4v7auxq", - "percent": "0.0%", - "airdrop": 11854.790838915947 - }, - { - "total_amount": 1609247514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajgal59F4WVjeSW0Rsk4RcABxjkCjYJNCTdoF0Sxj9W0" - }, - "address": "noble1t34fwuzgdcxl37403wu8gx94mazl6lqth9tyqu", - "percent": "0.01%", - "airdrop": 28267.626662614904 - }, - { - "total_amount": 27593395851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah102hAJO3Xz3NJ47rMdT6a/DgT5QczLDeq/Yf3VrObG" - }, - "address": "noble1tk57w5udfjqvetszwzecaawn4ps4rm9a34wrpf", - "percent": "0.16%", - "airdrop": 484698.472723454 - }, - { - "total_amount": 608618657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8C5iMYy201WZ5XQXTiyV2Nfb7qAbExVnfN0V7Y8UOM" - }, - "address": "noble1tc2hll3wfhu247scwnvu6ppgrwgc6sjz06plka", - "percent": "0.0%", - "airdrop": 10690.838311885736 - }, - { - "total_amount": 384771209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArgO5ax2lb8IrYrQb1/+LwC2SOqHZ4Zc6tbaolY8pyFo" - }, - "address": "noble1vp64x8tey8funx7rleh9s90v8r2trp2kgjjh7p", - "percent": "0.0%", - "airdrop": 6758.791790518169 - }, - { - "total_amount": 55283414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6QFUoKI3c7yUlLDvEZVdtp6IWanieHd8IrIDYZvs8Jm" - }, - "address": "noble1v2xh06d7jywnnrhu0shyfejn7uff7l4nr8dcfq", - "percent": "0.0%", - "airdrop": 971.0941878060769 - }, - { - "total_amount": 51667816, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao5SDwXQqSOqvS9xa7SmvtuFZiq/fJNxldCG0suoUp3X" - }, - "address": "noble1v0xrfcdm78aplyysk677g0vtf9v6wm99r3x9d4", - "percent": "0.0%", - "airdrop": 907.5835261229312 - }, - { - "total_amount": 57553970, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqAjXISlD/GcwCqeEzeKCmjrD3jcujonyGoG8S9RrXoV" - }, - "address": "noble1v5s42qmh7zy8l0y3nnnf76kfkltfsvr7tls9ly", - "percent": "0.0%", - "airdrop": 1010.9781887233902 - }, - { - "total_amount": 171991534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1UQGh1wOME1jrgA/HSz394kJZ5mad7rDkiup6hn7Mth" - }, - "address": "noble1v63q6ckkym7znwmey36gzc0tzzrapckmfwyr2y", - "percent": "0.0%", - "airdrop": 3021.1589143038677 - }, - { - "total_amount": 51240011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFUB2/hgpM54aEl/B90SBbBiPr8xFG25G+7ydFb/Wiy" - }, - "address": "noble1vm5s3h4ldravcksvh3acl50ndlx8tz5q3sj2fx", - "percent": "0.0%", - "airdrop": 900.0688138619558 - }, - { - "total_amount": 61869843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmyztA2cLqHMsjgLjOvEmue4PKIMAXu+JKvpRhM9S9iB" - }, - "address": "noble1dzdz6hwegce4p00z58jnufklzdmfcr5mw8kj45", - "percent": "0.0%", - "airdrop": 1086.7897003932226 - }, - { - "total_amount": 51272976, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6lgOCd5P0ShwVLQV5G1FpASwRC+xnEFBBlNelSUzSMp" - }, - "address": "noble1dg4uy4n26ch2reavur7y8h5lsjzpmupjmrsnmt", - "percent": "0.0%", - "airdrop": 900.6478685473453 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayt3DBOIhUgmdPGjhBAJ8E442Fq6ujT5mvyCIs8vvW5F" - }, - "address": "noble1dg6hqewqpqkxs9tw7a5mxecdh9whe9ad0ydaaw", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 851690000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2cub6HJzewSaErUmCXEp7KDXo57e1E8Kp5CC/eG7HVS" - }, - "address": "noble1d25uxlhdynu6hdkl4xelwxn7jz08u5fau523y9", - "percent": "0.0%", - "airdrop": 14960.566813268037 - }, - { - "total_amount": 162789398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3A5QmmukeAeq/47PKXN8iE3eul1Hq3itZmIIEl25N3/" - }, - "address": "noble1dttxj6ns28rxvzpawk9gmqm7hvg20le32a3hr7", - "percent": "0.0%", - "airdrop": 2859.5165673786028 - }, - { - "total_amount": 80947305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A50/xzOJZj2AAz3maPB+c4F1j3WI6DslyJGtvE1R8gRU" - }, - "address": "noble1d0t2wa0rzs8xz0l7def5u3zh79n225jalrz2tn", - "percent": "0.0%", - "airdrop": 1421.8994761080744 - }, - { - "total_amount": 111762482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xqtZBWbO1ZVodEfb39Fw1To8Dulv06B86Yq0ufE4Qr" - }, - "address": "noble1d52fldvmqqaarr7q5w7022efgw0lvlc9spkddm", - "percent": "0.0%", - "airdrop": 1963.190925310461 - }, - { - "total_amount": 51586250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8nPBfJ4S34LJfSq6sr4uamk2JUqqhY7FVHMnWqa57Bk" - }, - "address": "noble1dufr6fh5kx5app0rtxg3dkr4r2rspzt9nly92r", - "percent": "0.0%", - "airdrop": 906.1507588100696 - }, - { - "total_amount": 1544678543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgIKyelgM09MWGtA1bxHTPd3Lk1FreEmflBHNks+uNvz" - }, - "address": "noble1wqx8gt8tsn05eanmwfl6qjr4np2mgeyhu2fave", - "percent": "0.01%", - "airdrop": 27133.42477611927 - }, - { - "total_amount": 1568942274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+LCA/76HFuNoUjp4CaeZNy4IoOzHa/H2+mokyGxAnbN" - }, - "address": "noble1wq5s4f7n95f5lad7p9faczepcygl6qffumf7sk", - "percent": "0.01%", - "airdrop": 27559.63521508728 - }, - { - "total_amount": 50019694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Rye3cpXd+RHdx0TgPA/2x5KTjNRqm0YuWxIlR448mJ" - }, - "address": "noble1wzxntdngsjr7zrm2ve9wk55m6x8gjhn8w3e4jl", - "percent": "0.0%", - "airdrop": 878.6330402684338 - }, - { - "total_amount": 186540288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2mAxhf1PRBZ/3bxCAgAFhsLdgNbife+LiF1NdaqJ8kD" - }, - "address": "noble1wd26spzpm098dxu6e3hcrelzsdyt49mnxutkkc", - "percent": "0.0%", - "airdrop": 3276.718573647996 - }, - { - "total_amount": 1870285663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A59kZ5uQHQqmLFSYmYQYRMTzOvZ/FMcT6ansR7sgNaV2" - }, - "address": "noble1wjjg0mvsfgnskjj7qq28uaxqwq5h38q68p4gew", - "percent": "0.01%", - "airdrop": 32852.95544295319 - }, - { - "total_amount": 54797402271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlHFuv5lN0zeix9oP8mymzH6uVd2ijYFJv8nwexzj9JH" - }, - "address": "noble1wkjfgveqeq9ts57km0jqy99gpz3nqv3j77juyn", - "percent": "0.32%", - "airdrop": 962557.0311601887 - }, - { - "total_amount": 459243264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5b8O4Pf/VG1JaYpJdEIz+HPyCJpJm5B46H3xqSNjxVH" - }, - "address": "noble1wkc6k2743gs0xe2nkxw6273jryj226skkljk8l", - "percent": "0.0%", - "airdrop": 8066.9486956701285 - }, - { - "total_amount": 63289518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AistZD79co33Gv9JGmH4EmumQ/qexGF7DyX3Ie0IOIMd" - }, - "address": "noble1wcdxv5vkj2jcy0gngmj9q9t3n65u7antm39l5k", - "percent": "0.0%", - "airdrop": 1111.727345182555 - }, - { - "total_amount": 77807337, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlHhBQej1MDztusHB6e/A/LcLpsWZ5j9cgVTrL4v3q4S" - }, - "address": "noble1wef73f786tgm7auqxepn9q985dlvjaavq62pmd", - "percent": "0.0%", - "airdrop": 1366.7436082975755 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AndOnQTy9IZYJqeUYk1q4uoPwOkiwesFI4kGFOdgfnm6" - }, - "address": "noble1weh88ed7gu0gytzkz65lhullasscsgghmd977s", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 247588352, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ER/d2u8vijL4XX9HPKQu9sWyK25Ew+TOFu73l+jmOI" - }, - "address": "noble1w6juwwfxzepmgvsgxyj3772a3yap64ynk3gtck", - "percent": "0.0%", - "airdrop": 4349.073116137239 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4y9CMwviBVDbvzdY+TWsVLQczp4LihmtID8z6j8nFjT" - }, - "address": "noble1wur0sl7x4x4kp3d2m3x8378f6ptdgn30p27jgr", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 107184929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBMZRvpue6UVIUdeRdOXre4THIIDhFABiAhhtfJJBwO" - }, - "address": "noble10zt8j3l2p9dy24kdn8ctlupz9c0l0gtwny3mxz", - "percent": "0.0%", - "airdrop": 1882.7828102712147 - }, - { - "total_amount": 264182255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6IG9Y5LnUEAIixqPDIEMNsYgvRcI2DJsv1Ruk9dX/vx" - }, - "address": "noble10xjmyvkaz4v7n8mu498n54hvrkgzuyeap57tnw", - "percent": "0.0%", - "airdrop": 4640.557335189229 - }, - { - "total_amount": 62000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/aFNiN9gG5v6h3g2P1mm0F4aACpVmGZt8j6Tr1Z6w/t" - }, - "address": "noble10vd29pt2dkczxqygwhwzjhem52g4dnewg77mja", - "percent": "0.0%", - "airdrop": 1089.0760046761359 - }, - { - "total_amount": 66171514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3adlnyD5CYFPzbXJYt24HKciJcTUFwRZxhwXfvHm6u5" - }, - "address": "noble10dk5a94a5k0xtnntu0d2267j07dd6nt5kfvxv0", - "percent": "0.0%", - "airdrop": 1162.3517433950162 - }, - { - "total_amount": 106339238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak9IbTDFepfmZ/x4ef4r4OzVhXf60koHKGrzO52FkPhv" - }, - "address": "noble10wzy683u6sadh72txntmr08x4y4gdy27an4t3r", - "percent": "0.0%", - "airdrop": 1867.92762034427 - }, - { - "total_amount": 50100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5yljL0tPXIOOp3hkX9C6tT1FqZ0fe+nVW/nJjJh0cuE" - }, - "address": "noble103rqha0kps4kl9wr0lzqcjahfp3p6d5us4hv6a", - "percent": "0.0%", - "airdrop": 880.0436747463615 - }, - { - "total_amount": 53813736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azxm4u8juZzgpRqmTDRbMFG11miBoGfNbgWA73TeHylD" - }, - "address": "noble1039adywrgqqdsk8urlf5le6nfmy5n30stwcnpp", - "percent": "0.0%", - "airdrop": 945.2782032189733 - }, - { - "total_amount": 5167772662, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6QGulqlhpmG8i/36AaJvYspSFl8PDOvqmqYbnjzuWKC" - }, - "address": "noble104y8llwm2tvkvcpw2wsf9sgzpdlhdshlj3vxp0", - "percent": "0.03%", - "airdrop": 90775.76135170193 - }, - { - "total_amount": 337314787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzjLB7rom0+MsrvmZJ72PL5ZdPOdIgQMKl1TV1KBS8by" - }, - "address": "noble10k9w6vffw47vq3zzze9gx3h4zkfle3dqk6a3pm", - "percent": "0.0%", - "airdrop": 5925.184524905513 - }, - { - "total_amount": 50114802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJdHPstgLAP+6X8eR7bosacWoz/IG+cLYZRP+6xfgQ7" - }, - "address": "noble10kxz4mk2ggcqjx20fg3kkwxjw537gxt7lrv6g8", - "percent": "0.0%", - "airdrop": 880.303682859607 - }, - { - "total_amount": 51644779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A09TD2b/Z0AVMHJ45KMJPKGAkRO9PypdcFNih3exVJY8" - }, - "address": "noble10a8n3x4frqvut9xlampu569fxt0g9ct9xsd74p", - "percent": "0.0%", - "airdrop": 907.1788641242259 - }, - { - "total_amount": 181367723, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auqv/+Th0RfrmIegN5HVjrw0PjKKyvlBX7W2LDHXEezc" - }, - "address": "noble1szenn458l2crlddnypsjsmrndsd2wuhhkdnzpy", - "percent": "0.0%", - "airdrop": 3185.858631323357 - }, - { - "total_amount": 1213741130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7OfiEzD3K79vzGIKHzCOpdkzg05W/BF+XRokEtY4zRe" - }, - "address": "noble1sr7mqqft0v8atkjg2mhytyjurxd3yft4v0phwa", - "percent": "0.01%", - "airdrop": 21320.26355760482 - }, - { - "total_amount": 52687136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agz4WD7G0y9EozM1R1XceW6oHMZmDIpjiOocW8yWymS4" - }, - "address": "noble1s2l6va7ze4hwky2dsxeyw52nuw7n6zavr6xsvv", - "percent": "0.0%", - "airdrop": 925.4886382694874 - }, - { - "total_amount": 659783996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkF0DOa6zkCUq/5d4Id7m/nfWU+kjg441vtH6olDcmbw" - }, - "address": "noble1st9y369mkl6ymwftzyms60s9j8l924343fwda9", - "percent": "0.0%", - "airdrop": 11589.595456660254 - }, - { - "total_amount": 50855128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHzIVXZvmIs658GLbDEFV3lFNIsTtimmc71AXyff877" - }, - "address": "noble1s3tuua3z2yst3war3pjrd904n8n4x4dmmam8vl", - "percent": "0.0%", - "airdrop": 893.3080583795726 - }, - { - "total_amount": 482559174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj1CyiWUKFabTbRDVgqY5Ov4IHxPLiMLzjpcEwaZ26db" - }, - "address": "noble1sn2hpzc7d3jq74d5ctsp402qeqvjs4qxc30a23", - "percent": "0.0%", - "airdrop": 8476.509955479618 - }, - { - "total_amount": 263505587, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApmFa6aOWooL2ast8gYlI5Mhu+jIMTDmp6XtQ2IOJ7UJ" - }, - "address": "noble1sexphnd83876gnz2z8hzd27rfu9kxh447qwncp", - "percent": "0.0%", - "airdrop": 4628.671159674193 - }, - { - "total_amount": 268806587, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYbhfM4Ous/2TBgvqiGMn7hv7aYAKByqYo0ZFjdtr7I" - }, - "address": "noble1s7lexxw79la3qmadvvflwgpjdyu0vmj3xt8jxm", - "percent": "0.0%", - "airdrop": 4721.787158074002 - }, - { - "total_amount": 50000819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXDv7KnIEBst2Vak8NpmQSoHdMK84SC25GOeHR6d9/X" - }, - "address": "noble13qy8ej6ucvfxf78ran5e7kfqey3anyvm9h5qqa", - "percent": "0.0%", - "airdrop": 878.301486887978 - }, - { - "total_amount": 64852383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJ1BEzJZMJDiw74I8Cw98fxXuufJa6G/M42FZhqA8sm" - }, - "address": "noble13rh56rly06a3q0gd9jgax3j66ygaw4r4py9hsd", - "percent": "0.0%", - "airdrop": 1139.1802285704284 - }, - { - "total_amount": 511311896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNxCUz+iGyssaG7PU7DgXXyJfua2UpgA/NfWXFHmWNP" - }, - "address": "noble138gmy4j3mp8t6hsnddwrfa4m0t2hvcfp6spwyf", - "percent": "0.0%", - "airdrop": 8981.572852242904 - }, - { - "total_amount": 432415250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+7MeW9z9GJHfRxf9FmIq211C/uj26khI7/E+QK+VWjN" - }, - "address": "noble13vwzpmmada8aangxtjyfschf04fh7mfj2hrrfn", - "percent": "0.0%", - "airdrop": 7595.694723081169 - }, - { - "total_amount": 1731874363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7LWGpsjgTIh0Ylz3CclDwDgUjaiGIljBCwzDGdlt4wR" - }, - "address": "noble133t8m00w7llsslnf05zdhehharntly8dtjqjkw", - "percent": "0.01%", - "airdrop": 30421.658255759165 - }, - { - "total_amount": 692906677, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzEtZZH4WhmmFdLcqCJdOxV9QOwJNyrTWgUGvZcAmgFW" - }, - "address": "noble1370fn26kj4r7780clfsuqxg5xrw2jf66efw4nf", - "percent": "0.0%", - "airdrop": 12171.419925815773 - }, - { - "total_amount": 170480180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJJBCiILW2fXBowrZ3A1814FTqpaL/78+4ONuZnb1NE" - }, - "address": "noble1jzq75cxp8w6qeknwe6hf4lr707u0s9880n2n59", - "percent": "0.0%", - "airdrop": 2994.610859852718 - }, - { - "total_amount": 639928283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnpZ6Xo+tluL4A9th4s1hp7/ne1XAnr5pApjmOeJxda9" - }, - "address": "noble1jy3ygr6kldcyqcr2yk9z5hen5lgj5827vz47lw", - "percent": "0.0%", - "airdrop": 11240.815124659672 - }, - { - "total_amount": 51802118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+nXaRqbcmb2h+r7oULiz/RXVILVL08k4819ZfuW8T9j" - }, - "address": "noble1jfncfv0gltxjmw6kfvqval372djr4h7zvql8v5", - "percent": "0.0%", - "airdrop": 909.9426404064799 - }, - { - "total_amount": 115832434, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3OziFSIBGY79hTyCaP2WuhTr+KrNXRhTahlPJpoFfOw" - }, - "address": "noble1jvcptzzt6y85pg4rfaralkyl5kdhezhm7crhak", - "percent": "0.0%", - "airdrop": 2034.6826521392293 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjOVrR/L2/K/iH1odGH6rd0qlRPBz2h3fywHgFB7boO+" - }, - "address": "noble1j4gq0a65lkkdh2d5gum5gptd24v83g9n4yfq3j", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 113843521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al7wdfRX0X0gjqlLIh/FQjAJ9g+1Kopb1P38BcZ+cfR5" - }, - "address": "noble1j657wffpjdghjzwlahvzl47rlq22fjkhy7jxqe", - "percent": "0.0%", - "airdrop": 1999.7459194990934 - }, - { - "total_amount": 300875410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As21Y3Q+bzPdUpvqq4UJJgwnZr2kEXTZXbPtd+oQTVZ5" - }, - "address": "noble1juz68vx5dlplqmv4kyg6mvncqxm40gam4xj8jy", - "percent": "0.0%", - "airdrop": 5285.099829485393 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0BIWxeorQEN9rWiJWSUDt6zi/lRON+xLolV5P/ZBWju" - }, - "address": "noble1jauxf65wkd26cxxcqfjqqq0ttzz9rrslt097an", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 115993239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+nhgDf7CkFCP6qNGhjhP463TRCNcbBDQp10oQyqxndN" - }, - "address": "noble1jlfh2fsl28mccmyfgvcm9ntpr3xwnhtr3awxl5", - "percent": "0.0%", - "airdrop": 2037.5073112832931 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFIssZDy0IXAW9ywmNnbLpKkzea1PryGEEnQcEtaJuF" - }, - "address": "noble1nr6t7medswm6pu9mg3z84hyjv76pupuwm7tus7", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgQQEX0xCDcevE3PWsT3jiCqwZUmjY7WilmeYAUbcZ5s" - }, - "address": "noble1n3h89z43uygnw88wqzq6ggx09rzcx7gzmwtvns", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 90994181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atpltw2NsGA3/dk7aME6uYTOs/egqU9EJE+UHhztNBzT" - }, - "address": "noble1n5fd6lp26vz7dfhp3knq5wpe43d6yh3vfaucl6", - "percent": "0.0%", - "airdrop": 1598.3803079396318 - }, - { - "total_amount": 205334904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhwVIwgHYLNmXWrc7LJthwiI/wAqtKp8BQJAGXlKvPXD" - }, - "address": "noble1n6mk4wx2aqyc3eamw8tnw5erfwmnpwhkwnaql8", - "percent": "0.0%", - "airdrop": 3606.8599494980313 - }, - { - "total_amount": 2207358254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax1cyFQ6hssK5iE5bNa5DyzH9IIUrkJPKVu+Mo21ZcsF" - }, - "address": "noble1nm50zycnm9yf33rv8n6lpks24usxzahkl8u6lf", - "percent": "0.01%", - "airdrop": 38773.88561540664 - }, - { - "total_amount": 467340095, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5M2+uN1s+XxpFAtJyTOdi7V6VkxsfziMeVB+3Uq74I" - }, - "address": "noble15fug4ff6uwxl3yev52gl8dstv0dadxv42x8wf4", - "percent": "0.0%", - "airdrop": 8209.175540122029 - }, - { - "total_amount": 51336075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahaq7Vu+YcQepTSN8wWgbsq6osShgfeeVZNMRoTnWTVk" - }, - "address": "noble15tnau3se9mhrvkwxsffd9unn0ngqyc6e8sqsac", - "percent": "0.0%", - "airdrop": 901.7562493024915 - }, - { - "total_amount": 124844858, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AghVmyfpcQrTdxYRzLGT9KrhdExth7b7jWffzmbpHJZI" - }, - "address": "noble15vm0jnwuvy2j4zrr254g8qrfwcv3wcr3dsg433", - "percent": "0.0%", - "airdrop": 2192.9925670161215 - }, - { - "total_amount": 50621912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4NFL52+oNaZqE5TScFrxxNdfR1VBlAXoSNhxVG/NAOC" - }, - "address": "noble15c2f36jgv3wuv3wh2enj6t4zeztn9hys5uazqu", - "percent": "0.0%", - "airdrop": 889.2114462907573 - }, - { - "total_amount": 572237882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQv+NG0lGuj/KqCZVsd+OTswiOCPcjJgpdpIPW8Jmf+" - }, - "address": "noble1565t6hv8tvkk2e39rs9m05034uuue8q3uerf55", - "percent": "0.0%", - "airdrop": 10051.783004078938 - }, - { - "total_amount": 269489896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Gk7E29c4EVEbEkt9E6PomMW0YECA6RLANj51qvUL4+" - }, - "address": "noble14q809c4fhnvqktpeef4nz8lk7hgsqxwj2yj7p2", - "percent": "0.0%", - "airdrop": 4733.789987681733 - }, - { - "total_amount": 596237829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuWjPsOJufGlZXVUKcQr8cgbU2FmCnSsbNA8NXV5SaHF" - }, - "address": "noble14rt5w9u8xn8ty8axa4k5m9g64x8qsedr8eznaa", - "percent": "0.0%", - "airdrop": 10473.359881356342 - }, - { - "total_amount": 50100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AplR5PYTQoy107XyXNpbEaidRQA4/tvGSYz5d8fryZuu" - }, - "address": "noble14rm6elyhsx5u9xxvenfwx8anef0hsqwlyujx7n", - "percent": "0.0%", - "airdrop": 880.0436747463615 - }, - { - "total_amount": 645303347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7zuBYwN3gAtuzqM4m4D0HidszHqhWQvR2bP5e5AVm2N" - }, - "address": "noble149xu30eqnu5kfl207razavtgtgl6dgxdr39pdt", - "percent": "0.0%", - "airdrop": 11335.232112175778 - }, - { - "total_amount": 57619149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4GZtMuF00uDGh1Jc7JwiPDNflLwuGtDOWmAwsFqRnnn" - }, - "address": "noble14x5ewfqnx3smh0qzyejg0sl7mn4exh5ztsw4gh", - "percent": "0.0%", - "airdrop": 1012.1231062219191 - }, - { - "total_amount": 73296293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3VBS8UsXUbnW/twg3fPcvyzlaTtmTWrng+V4o31duc9" - }, - "address": "noble14svelezkrxzp53xul6dr6p6awnet7hc5gq4aw9", - "percent": "0.0%", - "airdrop": 1287.5037731937327 - }, - { - "total_amount": 1500185533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJKld8vrrtF6iHgMjXnJQmPx79DuHDuZF+ZNxEorc8N" - }, - "address": "noble1kpe47ua8dcvnxlwcm0zrxt9c5rkmjyep9545y4", - "percent": "0.01%", - "airdrop": 26351.872041170638 - }, - { - "total_amount": 51598151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asob66OY2m3jiYR56HCq4ZfcchrKFSuAXNw6YAX9g57o" - }, - "address": "noble1ky3hr78xz4mm2c7erdujetzzmrs2ywfnglunc6", - "percent": "0.0%", - "airdrop": 906.3598087057414 - }, - { - "total_amount": 634181902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/E/rCu7zXwNmqIgcZCEOKYP6iUb7ipEffJZscMm+r7S" - }, - "address": "noble1kfc5gyquzwug4hg9ykeavauwpc2j5q0ce28dnp", - "percent": "0.0%", - "airdrop": 11139.875678517303 - }, - { - "total_amount": 51121693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0gMp97RfZmatuZ8b4jTd6SGWz59pIFNhRIlnR5zx/E3" - }, - "address": "noble1k4cdyku436kc7l8z37nkt09f3fvgnk3mc7fz87", - "percent": "0.0%", - "airdrop": 897.9904703987095 - }, - { - "total_amount": 51218893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A55iuvfUPZyQSDGicFXZA9v/9bHSgUYfK3EiGFM3QB7A" - }, - "address": "noble1ku4kf3dnr2a5f0f6a2athv58vlzl3sxkdtsla5", - "percent": "0.0%", - "airdrop": 899.6978605221695 - }, - { - "total_amount": 50544120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anebo+c2JXV2hMasRENF4MGD/qs1use2rT+AMbFo2Zti" - }, - "address": "noble1hgtcaelfhadyx4ka239p7ded05rlxse2snufnu", - "percent": "0.0%", - "airdrop": 887.8449720882448 - }, - { - "total_amount": 140052146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6OKwjAlc0C5oBX018WnVLKadogP/yfsilGky83jS8YX" - }, - "address": "noble1hw89arhsyfp982lwttamfnptxsfh4shynyr8vn", - "percent": "0.0%", - "airdrop": 2460.1198647096594 - }, - { - "total_amount": 161268989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av2/hxJnZjx+wtuRv1BtGAI8rZBxsa+WrheqAeChY9AT" - }, - "address": "noble1hsx3u8gs2ddpc830wdywqvemk4je9vsc5vy7l7", - "percent": "0.0%", - "airdrop": 2832.809455133544 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AteeROfA1TCx00HI3jsKQzkiS7iDal6ui47KOZwSIySH" - }, - "address": "noble1hs8v0vxjlw796zjjsj25hjckgq80scjesutpxk", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 111760180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5xFqqWCZpiqEUtAimUKRqvQuCKVpBFigliF3PKJHJ2a" - }, - "address": "noble1hck6upjtf8gwwyleqyyaq6wp6awx06hrdywaec", - "percent": "0.0%", - "airdrop": 1963.1504889723517 - }, - { - "total_amount": 3470340332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/JspXxjlbHcPuJ0uH++bNiD/gwJVPrcmCyKsvVWdA7b" - }, - "address": "noble1hu8sqfqfuqkxjg7xdeh2479ru5jnytj7xqytql", - "percent": "0.02%", - "airdrop": 60959.10296195186 - }, - { - "total_amount": 64221998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmjrMQVmKrvmwL0AW7xhVcefyZCu4yieR4BW16t5tir2" - }, - "address": "noble1cxful6l52eh0aknkufwtwmre7c4lvhv3p8amzm", - "percent": "0.0%", - "airdrop": 1128.1070482928837 - }, - { - "total_amount": 3049063630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7VJLoYUaMgOeYlnNu8mM7A31L0XSMZEosYKm0g6aST" - }, - "address": "noble1c8euqte3749d4dkcazlfpsh5cd3qcwdcavzet4", - "percent": "0.02%", - "airdrop": 53559.06509941478 - }, - { - "total_amount": 23199284051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av+dDjTJW1OryPjvBARg1oL4HD3grXxcJflxI0kUpHW5" - }, - "address": "noble1c24ktf5kck3ywxyyxuvyhgmwv9hqxahfkewyue", - "percent": "0.13999999999999999%", - "airdrop": 407512.63847757876 - }, - { - "total_amount": 109309199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXWGUWDSjMHm/gX3QuNwNjv2RuQb4hicNIjHn8Vtkvi" - }, - "address": "noble1ctaq63xfx38fyjhedcmfvzex59gl3nl49fx9k4", - "percent": "0.0%", - "airdrop": 1920.0971890527205 - }, - { - "total_amount": 255833406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AprLpGinHgK8yzErjncfZUNUj+EisCMAdP0CC0LD0NBI" - }, - "address": "noble1ch20ap73dqudanw0ufhpn2jpvl6zayqe4mf22x", - "percent": "0.0%", - "airdrop": 4493.903607567223 - }, - { - "total_amount": 108918963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMbWc1QGK+ErVI9/YmNnDzVOc3kD66zucnOeXI1sTxg" - }, - "address": "noble1c69yrjgrka9yafg7wcx4a0kwru9jwvwq0493v6", - "percent": "0.0%", - "airdrop": 1913.242404153353 - }, - { - "total_amount": 58925287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBa0jsA1OPwpNC1alyXb29UEDKS3TygTphnYhs5lKQM" - }, - "address": "noble1egxxwtcrcst7e5c3jlre475d5e22vtcv66esu9", - "percent": "0.0%", - "airdrop": 1035.066389360559 - }, - { - "total_amount": 183547309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aydqt3SU6NEeaJvcBjtgsFMiVKrj9FEWrId/rqP+CXe7" - }, - "address": "noble1ef4vvgqlkfp55tfxsudlfev4tvhcc0lxzxs5n5", - "percent": "0.0%", - "airdrop": 3224.1446766899385 - }, - { - "total_amount": 63473160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvcV07YByu+6ztnFdzoJYsaA87TxlQySN2hsIy9vTrPm" - }, - "address": "noble1ewygtmxypd678rn7p70p96l3v82fgzv6nrl0p0", - "percent": "0.0%", - "airdrop": 1114.9531531769214 - }, - { - "total_amount": 743616114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqkfbuWfNIKmOTXTt+UgExK+SJ7xdRVO464cyinadvaW" - }, - "address": "noble1ekj60f38vatr9fxy4p2t04mwedpc3mc6q6pqhs", - "percent": "0.0%", - "airdrop": 13062.168813676035 - }, - { - "total_amount": 62117862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An0DCfeK6wopvAXgME1sfTFqc4KMimRrQ3G1GjTPLFGc" - }, - "address": "noble1ekk7qgsfw2h6tn6n0556qsssp94gt7ex82yqml", - "percent": "0.0%", - "airdrop": 1091.1463381610254 - }, - { - "total_amount": 134213513, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak2CQ1OOWadyeEUgpr6HY6Cqc65bNZ0kvgwfDxHBzfz2" - }, - "address": "noble1elf09a8uers67ljhtlj9nyu2g38syzsjexsa8z", - "percent": "0.0%", - "airdrop": 2357.5599437353007 - }, - { - "total_amount": 124874686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8jec0GSTsRkVtRQPa8dekyCTPEXibDeBTuMPxm6NrLl" - }, - "address": "noble16q94fnf07nntyegrrgzwf9gy6tqrvxcgf73t7e", - "percent": "0.0%", - "airdrop": 2193.516517968823 - }, - { - "total_amount": 8991600403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2AaFltfeailypmdPHfeR5Uapl8+zteUSXp2b9danes+" - }, - "address": "noble16z4jzpnmhg0rdagywex4z5glldq77zuuzqwfzn", - "percent": "0.05%", - "airdrop": 157944.1329442512 - }, - { - "total_amount": 269044496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBN/abmcOe0c8DlmhUF+MUIM2QskQDr1GKZ1NwddjM5" - }, - "address": "noble16sknqh6mfamcymz5pjc4pe9xg0zrl8pru769ay", - "percent": "0.0%", - "airdrop": 4725.966206190075 - }, - { - "total_amount": 111680180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8fLZMKoHzoQQNQBfZI8TWoJfZl4fI6QWGT5PXUntEa5" - }, - "address": "noble16shxk3mvjjhmuvcl3sthuvvdnywzfv3utrmyzz", - "percent": "0.0%", - "airdrop": 1961.7452296114793 - }, - { - "total_amount": 1168966833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkvTcG8Gj4e8SKm82TxNiNQlM48P0x/zyUoFX2e+fE6E" - }, - "address": "noble1653w9rvfnlyfmzdlwe9ygcjgexx6a7dk5efl3c", - "percent": "0.01%", - "airdrop": 20533.76980778316 - }, - { - "total_amount": 112053692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30eXT4YRNqw98g99X6jVXRCG+0mggVDtuibwvsOgeGz" - }, - "address": "noble16l6ue8er04pq75dgm7psnt85msysrn948tay53", - "percent": "0.0%", - "airdrop": 1968.3062450414566 - }, - { - "total_amount": 1479843684, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A38YmtBFOfSNP9+gIAWG+0x0NugvcikHUTDyomJQpyL5" - }, - "address": "noble1m234dnn4huwga92r44f23xmu03qa90xm5gsn2q", - "percent": "0.01%", - "airdrop": 25994.552369611847 - }, - { - "total_amount": 101403866, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmMqy5PMMaZPAZ8QETlkMKTVdl1GfGRxhDUPu+HpFQgN" - }, - "address": "noble1mvgt2mgadtn5yl85eexzzyr93nrfpd3v73sn4r", - "percent": "0.0%", - "airdrop": 1781.2341490644237 - }, - { - "total_amount": 50500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6pyrWckQ1OA/ovo2Vw1g5RPBkja+fq3zV+ByYqqWpJA" - }, - "address": "noble1mvhxsra0pupxh3rs44xqnlyq0ar7gceaz7jyqr", - "percent": "0.0%", - "airdrop": 887.0699715507237 - }, - { - "total_amount": 1598794404, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7hOCg7QjhnCfLLRdHCex+ctK/d/edi5TTDTDwN9o1xD" - }, - "address": "noble1mn8wfxmzn8uz94j59v8xpszjts297rand2t3uk", - "percent": "0.01%", - "airdrop": 28084.01002914329 - }, - { - "total_amount": 50500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6SLDCPR+oODFykkzuX59z797lJiqbDXcevr7hO4wcA/" - }, - "address": "noble1mngqe960fvyfurmvt6sn6lkrvhqpu7l3dqs9nr", - "percent": "0.0%", - "airdrop": 887.0699715507237 - }, - { - "total_amount": 88011665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhkcEk40yQ7VB3PVXflzBRsOSWBujTTezVYeyfALPEm4" - }, - "address": "noble1m5zxm623c7x4ru33anzk002p063pzzjy6h0vht", - "percent": "0.0%", - "airdrop": 1545.990201340234 - }, - { - "total_amount": 69785920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An7+uW8UFU7bUOzpM8fowBayN9gGeWxuJG86OnqGu+ft" - }, - "address": "noble1me5yzkkqu082qsseexhcry8d6trmre5054kayg", - "percent": "0.0%", - "airdrop": 1225.841466713685 - }, - { - "total_amount": 4300867415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+w7kK0EiQKmNUDhZGaUxiodzsPV6AsprdVvhdnYMlAj" - }, - "address": "noble1mapv2ahhkyac5jjwslntpcta92zvr6ha80yh8f", - "percent": "0.03%", - "airdrop": 75547.9274349997 - }, - { - "total_amount": 630325101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApDZDVAeHugtiLei/8Mesd91DT4DLdqgSQHUm1FJ+0oh" - }, - "address": "noble1uquzkexvtetfnrh3fjwrtp2sk938yddv0zeh2h", - "percent": "0.0%", - "airdrop": 11072.128107163902 - }, - { - "total_amount": 174870665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AidA/TDcQ7ltKqMYEhsoZpSDhwwBB8fESFMw0abmxkHW" - }, - "address": "noble1uzxywty57wdwcym8s6ud0la85fukcdrzfn2m2w", - "percent": "0.0%", - "airdrop": 3071.732986665468 - }, - { - "total_amount": 697529820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av++d4JDLRR4fdHNH305KRhNpagZrjoSgHgoUtvGwFma" - }, - "address": "noble1ufvcwvzcfzm3ft4u54kweuy8y9zz3llr5zly2p", - "percent": "0.0%", - "airdrop": 12252.628863033295 - }, - { - "total_amount": 156863411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSyadRjo0W8SdJPQj69RrA/F57GeOK5gXYFxoCif/Tp" - }, - "address": "noble1udnzzdhhvxc4zfxyn0hx3r5kdu3xgq2eq55mnq", - "percent": "0.0%", - "airdrop": 2755.4222085766232 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7LPbMpq7+GSQ5r0QFeLdAhteeZmNz5rVKzBQKlqymdh" - }, - "address": "noble1u3m6z6nwx9fq6uq2yvfkl52c0dr4sn7s2ch9vf", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 220241799, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A35vH/08EJCrt5ARuCILXLs4u5uR2jPWv09YFc4VYnwm" - }, - "address": "noble1u4sekxjld05shhx5fhy2jlqwevmlkm5na5awsm", - "percent": "0.0%", - "airdrop": 3868.7106212516874 - }, - { - "total_amount": 62068600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/zzFhzFh0Hu9yk31Y7pxpRE5Bq5OWDP+tdTWrS794i" - }, - "address": "noble1uez08r6dlez5jap003ncu8lrmxcnc435z8glu7", - "percent": "0.0%", - "airdrop": 1090.281014578084 - }, - { - "total_amount": 152606924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A79gAbIroWPDFumfeeyExDpKG5R/81iG8EAv42Wb7sdD" - }, - "address": "noble1azrjw348fw2uy2ycgmyk3xrm3tg3gl3dqyaftf", - "percent": "0.0%", - "airdrop": 2680.6538560618505 - }, - { - "total_amount": 8311125617, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anz0KrePYwxYfG4tKMCPqv64lLKI5i6qU+2jeKCIrPrF" - }, - "address": "noble1azthaxvpucmlp967n9uf948449rwqztevhpzzg", - "percent": "0.05%", - "airdrop": 145991.08840844914 - }, - { - "total_amount": 51675710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77maUjXmYdkEtNHPnpvHueZQqGKj2BV+Q0ulAybIP2v" - }, - "address": "noble1a8jjn0nvzgh6sxlrgn0zuxhy6err0e7ps2jslt", - "percent": "0.0%", - "airdrop": 907.7221900903653 - }, - { - "total_amount": 55888256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9PrERbPLyflfS3Kqnzo6nlZcBoA/U6hYhgyf7Qb2H3H" - }, - "address": "noble1agcf0rhsrv8759upwrr5mlttz5sx0y2v82lhku", - "percent": "0.0%", - "airdrop": 981.7186863354368 - }, - { - "total_amount": 114138318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As5BPp36hPkCqlczzEnyBpp3vBGuUbrrWUNHaMLvYCR4" - }, - "address": "noble1a2fcn0zzg8p2gjugkcwa8ywyjsxajfdfhtsht4", - "percent": "0.0%", - "airdrop": 2004.9242475466822 - }, - { - "total_amount": 117546222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2PsPvZgS3pR3aaezgGpCYhP1hF+Tpln+graqaamPDEf" - }, - "address": "noble1akv78wqjzvmyuyvaf93vss4fnh2utsfkl66uxj", - "percent": "0.0%", - "airdrop": 2064.786610008615 - }, - { - "total_amount": 111760180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+gv63AzQhAb/pWZTAxU7/pt5edRmir3ZqAviGjxH0s3" - }, - "address": "noble1a7kg3qg5z2cun5e83472sdu50dq6dlppj3reg6", - "percent": "0.0%", - "airdrop": 1963.1504889723517 - }, - { - "total_amount": 51146539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJNMMHWV6Cb8a2cTM4SwmkSH/XHmWf2Quv7uGmagUSs" - }, - "address": "noble172ekg7xukx0zm34cq7r4fzshtmcv8s2r4zul2g", - "percent": "0.0%", - "airdrop": 898.4269088247124 - }, - { - "total_amount": 503109032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3m+hhuWaaz34SIHuTT0QoDrNAYbsHtU8ifZvox9E9rx" - }, - "address": "noble17uwr4v9y2883d5ql3dr5wzw3uppt2yureyjua8", - "percent": "0.0%", - "airdrop": 8837.48345946836 - }, - { - "total_amount": 50990235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgLyXjhQa7k3lnX9FEhOo4emGsneRYr5yudJ0EV+yLd4" - }, - "address": "noble1lfves0c700c9av4zcmk4ue0frk9lfps30pe9u7", - "percent": "0.0%", - "airdrop": 895.6813130854399 - }, - { - "total_amount": 7706925949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axs9CxzpLdwaejPu1fSSiLHh/Kcx9C+8zfDkgRkqbpf7" - }, - "address": "noble1l23zk6ddgd0ux84gg7zg4jk82new2nywpqnewc", - "percent": "0.05%", - "airdrop": 135377.8729172864 - }, - { - "total_amount": 515239617, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9SNlmY1FJ758mMbEyPJteClVZQatog7yybzutmlLA/9" - }, - "address": "noble1lttjtqh26d9dhy2v2kc74zdpd7yl2xtar49v68", - "percent": "0.0%", - "airdrop": 9050.566186019718 - }, - { - "total_amount": 136716133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1q5iiU22wSFnSb9fV8JUro6W/dkJLhR4NDMa58lE3kI" - }, - "address": "noble1ld2jf2dyj5wwgk35g39hh2fee2zy2a3eqhm9k5", - "percent": "0.0%", - "airdrop": 2401.520321006633 - }, - { - "total_amount": 635122816, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnQMkCSg79xA79ET5zCRb5W1F3KOuE8z5OQbKp6eKSon" - }, - "address": "noble1l0uyf6ljnmdaw4ngqnpfgtrg4t9ym0g4v5mf9h", - "percent": "0.0%", - "airdrop": 11156.403531095753 - }, - { - "total_amount": 4450716133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9qKBB0SUHB9xM8hUClzCxiN1mZScinsJId3WysXP+Xs" - }, - "address": "noble1lsuu3g0xdrpu8d7987ht9qnxqd87xlm9vyen46", - "percent": "0.03%", - "airdrop": 78180.13135605262 - }, - { - "total_amount": 83482961, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4lcezzBLvQBWV5NrnoeM6GFM+EBQ8ulus1hxbRZmHW1" - }, - "address": "noble1l3gudgm30esc7lwhqxgrmgnljmtjdc0xz2ev6s", - "percent": "0.0%", - "airdrop": 1466.4401552324787 - }, - { - "total_amount": 581301910, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0OjtIUCFJM3AobJ9HJTWKP9RZV2+WPcwVjLgsAidrZ/" - }, - "address": "noble1lcsjy2d5s33h0sddd8lpuqvwyz5ruz7jc28afe", - "percent": "0.0%", - "airdrop": 10210.99938150656 - }, - { - "total_amount": 111959541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A20ga7wVY+1RkZTt8yQ7EvPesRWofZlvjSkWyfsLzTDl" - }, - "address": "noble1lujhkwkpwnsems37697fr9t0aja5gd0s6nnr98", - "percent": "0.0%", - "airdrop": 1966.652412865388 - }, - { - "total_amount": 88303099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+MFHe11XOrKlzU9HpOFNLFM8duugir+OyaiDcYnfT5V" - }, - "address": "noble1px9r4nvgfa0mxqxke2yf8lwqtztlsma8el9pt3", - "percent": "0.0%", - "airdrop": 1551.1094557974404 - }, - { - "total_amount": 91814940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iOBSv5hc0sRKsJ5/65TfGkXh9MzAsDnD7Y+2oits03" - }, - "address": "noble1fwcnug7tph0lm7jem86372d3a8q26496ne590n", - "percent": "0.0%", - "airdrop": 1612.7975487867604 - }, - { - "total_amount": 592645070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah/kCRQh5KdUHTZSa9HvS8qV48xHAsueIixF8QrtZpcv" - }, - "address": "noble127ju3sedue92nrnv28g8dqsrarlgx3weganu2f", - "percent": "0.0%", - "airdrop": 10410.250403654984 - }, - { - "total_amount": 160946410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj3oAK8DpxcoLS/nJRVcWvPUQ/hNQj4LP5RSdnQ7Woyu" - }, - "address": "noble1tp6jmrrf6hlhpwa8e4e590jvyvsdkvv8z3ceap", - "percent": "0.0%", - "airdrop": 2827.1431156414083 - }, - { - "total_amount": 374436431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+YQheeBVMctNmzwsiIQZieLaN5r6/aiQFndI4HlH/S" - }, - "address": "noble1dgt9h52dpkjlsglfgsc29rj2asljq0duq34m39", - "percent": "0.0%", - "airdrop": 6577.253746430188 - }, - { - "total_amount": 4157216169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As5agx/mSglt1p/eLNPEsXKosCtsnaHXC2vdMlKMugbk" - }, - "address": "noble1d24ddxn9lqxvhk04xjlufa8hnzcmk6n87vmzl2", - "percent": "0.02%", - "airdrop": 73024.58670821859 - }, - { - "total_amount": 83895082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8tcqqr4R6wqaizvXFTRwRMSzOt3R3YF+1s++UaUzfnE" - }, - "address": "noble1dhhr5lgf3zfvdl4zutqdecxxw934cmanp0e6wc", - "percent": "0.0%", - "airdrop": 1473.679366395755 - }, - { - "total_amount": 89500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5jwljyWDWOfbVSywNgbl1i1yCJTIJ+Yc+yG9f8Z2vrK" - }, - "address": "noble1dey4a7yfqzuzzw06myvm8av5c4y87y3ncsu27x", - "percent": "0.0%", - "airdrop": 1572.133909976035 - }, - { - "total_amount": 1608339350, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VQioKp8/EdpZBKWjIaF3XLPHHo4VXYi5DQhMlmKKl0" - }, - "address": "noble1304vt66qjuqqwfqzh5y4tdhfy083w4rmxv4zra", - "percent": "0.01%", - "airdrop": 28251.674088087315 - }, - { - "total_amount": 566067359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7WshruIklaKuCC5jaCdBN2KkH371W+TBRNEn8/odeJG" - }, - "address": "noble1jqjm409rumq68t3edx5p5kjuyvz6fl3rad9jcj", - "percent": "0.0%", - "airdrop": 9943.393188988579 - }, - { - "total_amount": 99972874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwzVbarp9w8HnsEPAA3Wp0Sv58saBno9V6efh8uaDMKI" - }, - "address": "noble15k90ppfka8skr6c9gyu3fk0jwfceys0zk6a6cj", - "percent": "0.0%", - "airdrop": 1756.0977127727542 - }, - { - "total_amount": 56630630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmlqtGDtUMY59SUWWOjKRFPyR2s7uLNjpd9r2KPpD2bc" - }, - "address": "noble1kg0w2utlkcsca62cq7f2ke477z442e0dryqtqh", - "percent": "0.0%", - "airdrop": 994.7590364950407 - }, - { - "total_amount": 8089245487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArHjlf76A7TqIvi7mCGxgvkhLp3L5lYnzGf+Y8isioEu" - }, - "address": "noble16nys88tf6yqh3k6ua7gpm4dhu27y86447e683x", - "percent": "0.05%", - "airdrop": 142093.59928752296 - }, - { - "total_amount": 66779900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj1viFMvPfgPAYrowopqDiTTqd23+CiJQLW3SrIIzAei" - }, - "address": "noble1a0895y9u9955cegxgdsfgrsfvrgz2ssmhlmp6z", - "percent": "0.0%", - "airdrop": 1173.0384949140628 - }, - { - "total_amount": 79535784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzZ4XqaFxFSKUTJgjCuuh/BqfXFXGMNfpvtZkXSspPJ7" - }, - "address": "noble17gayagnmw9xcm5x592nfcypw0m3vc2dffjzmfp", - "percent": "0.0%", - "airdrop": 1397.105062379099 - }, - { - "total_amount": 55835250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmkgC7bg9/D+kSNPfaXANbPm+ayUWLqOuyF2PGJs2mW7" - }, - "address": "noble1lkd98pq7ea0xxx7nx3tteayjfd0k5hq7877wen", - "percent": "0.0%", - "airdrop": 980.7875966144069 - }, - { - "total_amount": 460000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMtyPKdZwUY3L7sb0SEbDTkaGu2j0PPqjaqn+ySMp9Y" - }, - "address": "noble1qwld869tmzwk5mrmnp0hel5gpyjylm0rnfpxmr", - "percent": "0.0%", - "airdrop": 8080.241325016494 - }, - { - "total_amount": 337356834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9NC3xaEkAct/Kd1yWEGDXbKtq/2BjJoRii/riIZIFvP" - }, - "address": "noble1pvd3uzer0pv4pyc3h7ft9ky082pd3rj3zc9tnj", - "percent": "0.0%", - "airdrop": 5925.923111659846 - }, - { - "total_amount": 70025649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/s86hWyZYQisn6T0GH8z6sHwGYB7UOdNag1Xy5TK87" - }, - "address": "noble1pwxk989lc74wfysdm22mceeahm83e52n3zcxsf", - "percent": "0.0%", - "airdrop": 1230.052484480217 - }, - { - "total_amount": 64556593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AklIuu+RAR+aTnCdchQa0GYQmYl13ZYG8JeFu/zACt5c" - }, - "address": "noble1psrj3my8j2f9qsluw62cph5344ks5jgdf7ymmj", - "percent": "0.0%", - "airdrop": 1133.9844577410227 - }, - { - "total_amount": 125208466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag1i2h5/S66VW1UhBZlTBsaaAYXZfFyEfXNY2VJ20Ogi" - }, - "address": "noble1ze2ye5u5k3qdlexvt2e0nn0508p040946ven7f", - "percent": "0.0%", - "airdrop": 2199.3796113372227 - }, - { - "total_amount": 259418636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlSedqQMvryxg4B58hKqnoi+SA14SZvhdktgHUEWPfzz" - }, - "address": "noble1rpzsesr5cjgwwyj2t3edez45e0x37qxc9sn30r", - "percent": "0.0%", - "airdrop": 4556.880832796981 - }, - { - "total_amount": 80500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5LmyqOfJ0DIU6+akhrpuoT0M/SVRXgBgIDoNztKMtCz" - }, - "address": "noble1rtcsf0v9h8tl597g4c0cnxlrz8jh4320wy9s77", - "percent": "0.0%", - "airdrop": 1414.0422318778865 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A43gmla9++gRKMjZv2t7f6ODpsUOrPw/oYFv9H+bZrRb" - }, - "address": "noble1y83nga220nfjt9zz0mmqc90cd705az95cyejgm", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 65398318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuTUV71uI2X2zkJ6iDO1gUd/NWi/4ZpmimFAg/BXw+U8" - }, - "address": "noble1yhdvjwpz3q00ruy9n4swngx6syufwa02amedkm", - "percent": "0.0%", - "airdrop": 1148.7699819351521 - }, - { - "total_amount": 68070731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhHwgSruRXtVCpES78zXKwwB5pXu5mVOHsDFnwV1uZhN" - }, - "address": "noble19wr4rantyupvgtrvj4gml60j8sc2e25hslrdxp", - "percent": "0.0%", - "airdrop": 1195.7128992397418 - }, - { - "total_amount": 4904233472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apl+vvZJMnG+zuWYd5YcywwSp8fnGYL1OYll2OogQtl1" - }, - "address": "noble195asqpj3alxd3kuus5ryyh7tn6fv0xkhmemlka", - "percent": "0.03%", - "airdrop": 86146.49993039895 - }, - { - "total_amount": 146402236448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZbUSIivYjm/K1Qqjx55IZAHaGy+rdi/Rmz42DtwKLP" - }, - "address": "noble19muml8sjpnecnm8geul4l3zfju24l04mpy8e2z", - "percent": "0.86%", - "airdrop": 2571663.9152651425 - }, - { - "total_amount": 157815666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4XCp0fEX1RAT5VT+1pzgknBbpDlNvc7dLjAlakBtKj1" - }, - "address": "noble1xynzdpcsk36mt5r0ajf4kyqjuq4m46wnzwjycu", - "percent": "0.0%", - "airdrop": 2772.149274235218 - }, - { - "total_amount": 81995348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A//8ET/oCKNt5Y8T70V+ahuvJQRsYvmsZA+8n5bXs1VQ" - }, - "address": "noble1x55jh9spvhjgswe03r9wmyyuurpejr4l7mghd5", - "percent": "0.0%", - "airdrop": 1440.3091290624095 - }, - { - "total_amount": 309563323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkcFgE5jyMctsrvJ9svkVOevlfjSnGxJXHXB1l/CkI9v" - }, - "address": "noble18dcv53lzqhdjzfs2wf8z2d9f5mxfnnf7rszlxn", - "percent": "0.0%", - "airdrop": 5437.7094678565845 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2y6YPcga8i+g9g6/CaUDg3BceiKlLRdy3+i35Lmq7s9" - }, - "address": "noble187m7fxax0asm07rssrveawqy06pkkfnvw8etmw", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 110419457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AotK3SJELIKMiUXzj0thE+At8XRngT3O0vtuHemrUw+H" - }, - "address": "noble1gq9qnkdw7n3vsfa585kadgtvje7ejlh2yh82tl", - "percent": "0.0%", - "airdrop": 1939.5996946462644 - }, - { - "total_amount": 122266472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvVDxqePssxvUEi/CoA4jbhjnxOZTUtbzC2gycgfPsEh" - }, - "address": "noble1gjgjsh74w5trmfaaauq4qt2mwvh8p7gszjxz4s", - "percent": "0.0%", - "airdrop": 2147.7013037355914 - }, - { - "total_amount": 54438197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjShb+DstBzdmoq/Ak5qlXLvQ6jgMtAOufiOPm222VET" - }, - "address": "noble1gatch6e6d2jtnkp2eam7sexpeumkrxn93m63hl", - "percent": "0.0%", - "airdrop": 956.2473240408455 - }, - { - "total_amount": 55348482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkcP+igcbpYeT5SkD3HS/KcxHOah69td8Xmnx0ALtPsZ" - }, - "address": "noble1tmzpdle0r82uzv082sflxts2h3mwynuytsdz6c", - "percent": "0.0%", - "airdrop": 972.2371555072424 - }, - { - "total_amount": 182009472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7KzGbclem5nDcT0uK2OjUWJqYgY7UbnRK3evQzYT6HU" - }, - "address": "noble1vxxfhd8txmrq76jx3gj7sdrvg0vvqret3x86wy", - "percent": "0.0%", - "airdrop": 3197.1314286931133 - }, - { - "total_amount": 142463820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9P24611nX9BsOGTXgD/jCR9CMQQ8e3sHZv4KqDB7gxi" - }, - "address": "noble1vmshheu8872cz8tg9lj6rjw2rduvkqtrhed0hd", - "percent": "0.0%", - "airdrop": 2502.4827080080677 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agm+n/WZisFCVwVZ5g00npzWtf/b42mXgEP4f63B8tBc" - }, - "address": "noble1d44e0e7k5dfwyt0v4j60yuk6meapkaexvddg3a", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhetmhMBHARmzmqsp5oWJyCHSiqPRfPs3B3yY2mrHrXm" - }, - "address": "noble1wq4xrm72wl45g7kjph73hxw7l7t2ptlv4yvr3w", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 250147119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQAtKeyPqPD9Dg+9gQK1LTht0K6IWnILFqSJHoxmigg" - }, - "address": "noble1wp6tf8de2404ur6erkvm7zpj5ayyn9ff0jqyfv", - "percent": "0.0%", - "airdrop": 4394.0197571252575 - }, - { - "total_amount": 50697644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlASnrifhkiJrOpMfZhVsTudIcDOLpGUGgcCedFd1FX7" - }, - "address": "noble1wdmrtflx5w7nvcuy9ln2kffxj2gskexm96dx6c", - "percent": "0.0%", - "airdrop": 890.541735064727 - }, - { - "total_amount": 69392233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YYBL49qDPEqQO8q9pW8YrKeG+ybwlnOuTi1SNTCiKf" - }, - "address": "noble1wccg678rfhdq7jxafvcttz5cm8u3mamssp9guy", - "percent": "0.0%", - "airdrop": 1218.9260624386372 - }, - { - "total_amount": 1836500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+5yK6Eix+JcRMXHYcTHkgZkxNKfjVJH3wWNl9HqVyr" - }, - "address": "noble10vwdjpj95vv7uyta82ap5namrsjpz9l4u6n587", - "percent": "0.01%", - "airdrop": 32259.4852030278 - }, - { - "total_amount": 87492520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AimKIbThfMKd85VGC7QXMsqwQtXmsMJg/y7iWWDOyxRp" - }, - "address": "noble139mktlfq9y4wtvm669ylssqfekmfxrnzyrugwv", - "percent": "0.0%", - "airdrop": 1536.8710342039826 - }, - { - "total_amount": 146215329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ufibeRR+d4AqT4LD3iPDnGHckmk67mUYuuD5vZnRmD" - }, - "address": "noble1337ppcplr90pykhcdkwsa22y36ud5ctnw9af26", - "percent": "0.0%", - "airdrop": 2568.3807472536573 - }, - { - "total_amount": 93807700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqRkpsF+QBKxMfJ9ItX4RrOFBm34vqHWaW9XaKz9eI/" - }, - "address": "noble13nqqq6a00ld5g0wf25cxh0flux77l32cguery9", - "percent": "0.0%", - "airdrop": 1647.8018568364123 - }, - { - "total_amount": 150188373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkNQ6J4dQHmh8Dxgn+CM5GuG0NWLin1Jjslf/9ngd7pH" - }, - "address": "noble1nvynlleuj76n92lv3eenlpqrj04y67qlzx9twj", - "percent": "0.0%", - "airdrop": 2638.170213155633 - }, - { - "total_amount": 2168957874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Z4YNFYkFqTxk3udXCs0Mbu/T8JFZZ+w1JHXB1zUcFA" - }, - "address": "noble1599vr4n8r4mnfl3zzk9kz6sftaldnlqz7hq2e0", - "percent": "0.01%", - "airdrop": 38099.3544472059 - }, - { - "total_amount": 79658700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4FpLWU/2Nw442B2Nu1teYYAYkNL7co1yxUniK2ka1jS" - }, - "address": "noble14zrzsf8p4cp4d65rnveuwf245eex2pwxe22kvt", - "percent": "0.0%", - "airdrop": 1399.2641731241115 - }, - { - "total_amount": 168108908, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBeJqoriW0umg3mrTLTwCVaCgZ9wVbtN7v/kcXDBhy0" - }, - "address": "noble14dy3l0z2azrt4n0tjzw6aghdhf2dsedn2smtsz", - "percent": "0.0%", - "airdrop": 2952.9577076630344 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjtMpOOcCl65q5UebDYeAKL6WHI4Ds6jJ45kqQgBvHwe" - }, - "address": "noble14egnzls6nx5477jm76t889pn4rr68pnq4dsczn", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 1606543864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay/uWIBXT2ucKny81H5taQ5VYUb2JEUihp30XqYFAMlq" - }, - "address": "noble146uhkm9ectfsr26pnjuzxttca7ths760ntx0jf", - "percent": "0.01%", - "airdrop": 28220.135044227125 - }, - { - "total_amount": 135437179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArSpHTTpHAZ17Co4dsgfY0fuF5RAA5OZtxnmZLA2Z6vI" - }, - "address": "noble14lultfckehtszvzw4ehu0apvsr77afvylt4lke", - "percent": "0.0%", - "airdrop": 2379.054544998817 - }, - { - "total_amount": 90000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzwbU+Wx50PuBa3Qc5c5A3bfcNnM7ydyaSAPoQsgsYyf" - }, - "address": "noble1kjgjzvky8qwq34w2qtpmge86rg25xxam3yvv2x", - "percent": "0.0%", - "airdrop": 1580.9167809814878 - }, - { - "total_amount": 56197160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Ix6KJLr35uOuucCZfy4I1fFM9msFvfZPJ5yC5XvkFC" - }, - "address": "noble1hfrgm4xam6s24p7tlsxvax6gp33ye6cungppp3", - "percent": "0.0%", - "airdrop": 987.1448143055736 - }, - { - "total_amount": 64859655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtsrEI8+X82dqnYprl6zW9Uz3uBEs2G2yViYjqIRYtCN" - }, - "address": "noble1h4w306x3tm39gas6evu326c9ycxwrvk4smdzre", - "percent": "0.0%", - "airdrop": 1139.3079666463318 - }, - { - "total_amount": 91559000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmjcDzyCtPbOi12j1Tu7toLLkws8B5s9VAdAoJc/QCdF" - }, - "address": "noble1hktlq6d0d07plg7pqn7mczae66qwv7the9f562", - "percent": "0.0%", - "airdrop": 1608.3017727764893 - }, - { - "total_amount": 83010000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmD3tHm2chl/rvF96NjY7selR23O3V49ZeTEHyhxo+R" - }, - "address": "noble1hl2xg569ljq53282nzjy4qkrp953885k62wpgp", - "percent": "0.0%", - "airdrop": 1458.1322443252589 - }, - { - "total_amount": 157685313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ofoKGWETYzT3yPYjBiLU++u6w0UcZcGOqccqSE9XRI" - }, - "address": "noble1cq7fk0tff2e7n9za8aw0aw4y6czw6r7zl2a9wp", - "percent": "0.0%", - "airdrop": 2769.8595270668707 - }, - { - "total_amount": 66093026, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A98UmzuarReSoyhUSAxGxFi6rWcWS9D/KpTa9yWm7CSv" - }, - "address": "noble1cp23ppq7nh5wmy7xsykn5jqngdajn8y4zmjdgd", - "percent": "0.0%", - "airdrop": 1160.973043436064 - }, - { - "total_amount": 54325594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxqPWkVlm9VvZkuVH10czCBQSc0K8Wikcwzxl0lKlG7p" - }, - "address": "noble1c920v96k8my5g94qaynsepas89tw2ajt3336h0", - "percent": "0.0%", - "airdrop": 954.2693687931913 - }, - { - "total_amount": 160728761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bUFaGea+zLGFLr/L9wEkTp/vuPREm3vLk224NCCcnZ" - }, - "address": "noble1camr3tcas2jchhyzk7q3fjpxs06vw7ksy4djzr", - "percent": "0.0%", - "airdrop": 2823.319949458477 - }, - { - "total_amount": 248999775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6zkl2/Ztx3x4UyTU/4bOoByPYWuyhK8smV2F2lW+08b" - }, - "address": "noble1efhqnc6kwvyq3xmrrzzyr3sgngv72q5unc03a5", - "percent": "0.0%", - "airdrop": 4373.865808423498 - }, - { - "total_amount": 58079222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlLz5eGCUPqR0dc3yiYMAsH5gq5fDTl6nwtm3GZ6ZixD" - }, - "address": "noble16x8gk8fqe8rde5c3vlnl7kzur85sjrqdupm8du", - "percent": "0.0%", - "airdrop": 1020.2046298461023 - }, - { - "total_amount": 1182422052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ays9PEsV9bHvgiwLeuMJjD8/N6hUMyXulamQXYQD5JE1" - }, - "address": "noble1mz84y3tdjvw7ujtn9ejcp2d3sasuhcfppedznw", - "percent": "0.01%", - "airdrop": 20770.12071343739 - }, - { - "total_amount": 54768131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azskk6NmDHvtRuzEBhSsucoV7LTuHiXmnqRclpjuFlgh" - }, - "address": "noble1728s3k0mgzmc38eswpu9seghl0yczupy2qytrz", - "percent": "0.0%", - "airdrop": 962.0428595654715 - }, - { - "total_amount": 139059720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4o+Ql7Kzv1TzpjajpnwqU3dVNI6RCRX0dcSAeBPDOxn" - }, - "address": "noble17dux8dujxvvqnhtewu0vym2nqes7aua83wa880", - "percent": "0.0%", - "airdrop": 2442.6871656287444 - }, - { - "total_amount": 88014386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJJ0PUst2z9DJ1biCVc1P1OwC1v1OgE9owcJveFSQC5" - }, - "address": "noble173dl8x0t290uvnhw5yytlzzvn578n36xurusnk", - "percent": "0.0%", - "airdrop": 1546.037997724246 - }, - { - "total_amount": 62788022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8M5XIm38pB00V5ASOpCk5qNPmw296GXu2Zpt7g1/OM9" - }, - "address": "noble1ls5culcr8nzn3e8sxg62j5qpn3rlgetkvh6h09", - "percent": "0.0%", - "airdrop": 1102.9181958270538 - }, - { - "total_amount": 56997305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwDxcEEgOKPyap4fKTF62bM5+qmoD5I64RiYc6FfQWeB" - }, - "address": "noble1ljn80ky79cq3sv8gv80prmne3esyuxguwr4fmu", - "percent": "0.0%", - "airdrop": 1001.1999549468895 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvEMF7uOuJBMm8nxUBsArFYGxk56Vn7HDydxkcxKr3b+" - }, - "address": "noble1lnuqj2r9x4nxny3fhwypylw27eewq03l77kmyk", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 321592805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/r8e1Hi0v5CJL77u9hMWI6ae5cVeMmYrUww2IJSNbe/" - }, - "address": "noble1qq2j2hfwy0nepnlvttvnzywff95u5v7h2yvv2z", - "percent": "0.0%", - "airdrop": 5649.016245193414 - }, - { - "total_amount": 1834711183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlnVFsnFgXu0ZGzN2oV1KPGGMnTorHSmP5oAZFaPw14x" - }, - "address": "noble1qqnmhakqvy42gtsvkzy6mfmh4feaxdprklu7he", - "percent": "0.01%", - "airdrop": 32228.06330510108 - }, - { - "total_amount": 66041516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgqkE0QZnJmw0J7wySi6PrsxOoyFXnYG6riuPblD+trG" - }, - "address": "noble1qpmg4awdexhp7yu22vknn0dlfjuu0fucjty6gh", - "percent": "0.0%", - "airdrop": 1160.0682320650826 - }, - { - "total_amount": 368423338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AprnSP5cJXh7va+1iHLrgTOyyKZy2m80PsxxdKXh/OE8" - }, - "address": "noble1q8djd00dkce6saghs6sfujkew8gmk2u0nzxscu", - "percent": "0.0%", - "airdrop": 6471.629306104607 - }, - { - "total_amount": 215537924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1/xSdumy/DvooX1B07CJnHS+Ay2c3Pti2VCwUY/hf0x" - }, - "address": "noble1q8w4elmqgwwqv2ckye5xfghlyqwqqkktnqyxrx", - "percent": "0.0%", - "airdrop": 3786.0835665501395 - }, - { - "total_amount": 404900440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9jewB14/ItTuA3e2yHpNWCYC7VyNN+ohgrNq+ZkiTvT" - }, - "address": "noble1qdv9r34uhwr4xm6rgr3r9s08aujfgmwke37rv5", - "percent": "0.0%", - "airdrop": 7112.376669142089 - }, - { - "total_amount": 165329777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkT6V2Gtap0rPfbRDsYH8v+2/JxoWu4HIsNoCTApdbjc" - }, - "address": "noble1q0j03yjnk89akum7j7p8ekt2zntwdxvlf69m8y", - "percent": "0.0%", - "airdrop": 2904.1402095025246 - }, - { - "total_amount": 99800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av2ArphCfaiNqGQWl9gUXR6X5cabWr94oTGRDzkePpHs" - }, - "address": "noble1q3scuwfpapydfzrkfssxuwccspewlp6s5vm28w", - "percent": "0.0%", - "airdrop": 1753.061052688361 - }, - { - "total_amount": 327809838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5azCuWiTiydgxDeslk56T/aNKLvzLz1gvUi6wdUwPtL" - }, - "address": "noble1qj7nm3gxxypwqp5lvrjg27jc7tlhlys7vj8a6w", - "percent": "0.0%", - "airdrop": 5758.2230429447 - }, - { - "total_amount": 86496999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aor923P4fSza1ORk+Qo6HM0oIMpVt9IL5KfwfeSPKeyh" - }, - "address": "noble1qhhenw5ydq05tes7ardrxhu37zpu6ux5ymp8hr", - "percent": "0.0%", - "airdrop": 1519.383969151544 - }, - { - "total_amount": 64717007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQiibXXwY5ZapLTi2gR4AOsp3lEqNv4hvxVhZygfzcu" - }, - "address": "noble1qua5edhat8n7hddgtl4zl42hkyaepc7243q488", - "percent": "0.0%", - "airdrop": 1136.8022486799603 - }, - { - "total_amount": 1748301156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwVkWy+AbT4sZo71V1pZlrUqRZiYTicKkDYDtXyBacBy" - }, - "address": "noble1q79ud0xx4xx339ecj2ckyf2t2dp5u8m5pyqcan", - "percent": "0.01%", - "airdrop": 30710.20706366371 - }, - { - "total_amount": 110920000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4uLPVynXSDO5rJHgBPey4fDkMtiWSR7Xe/Fr607j56x" - }, - "address": "noble1q7h02y4lsqwzl9xlz78fmygynt2fnrty43k546", - "percent": "0.0%", - "airdrop": 1948.3921038496292 - }, - { - "total_amount": 2777866734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1eQ3Tb67eTUB+88hycJEEw0hoXd+gQ18xYoIMDSUmYU" - }, - "address": "noble1q7uhx9pkx74ry9daxldax9hsjf0vj23g5fccfj", - "percent": "0.02%", - "airdrop": 48795.290390120426 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A93671xtPDBnVgkgomc3QT4b/Xf/hhHLPxrmULNduEMP" - }, - "address": "noble1pqz2yp9y6vq0n30eqt3lm6jd8yny4jgc6ek3lz", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 77994891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4TwX1Ba9GBm4bTh9+Tmgu1zGoSaZCzKv0einzMTqMGN" - }, - "address": "noble1pz6l7dzhp2t7lp9j6pymvn3n4s5y26t0gpfqc3", - "percent": "0.0%", - "airdrop": 1370.038133474689 - }, - { - "total_amount": 1137233041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/XMV+zXc+KShYdCBLCFnTZvGsgmstVZbO8AIoxhxfGN" - }, - "address": "noble1p9uc66fnsd3c9h49pm4dj9h3pkq9ls8thl3qzh", - "percent": "0.01%", - "airdrop": 19976.342204483422 - }, - { - "total_amount": 65578351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+z17oMt5eIa+L66EK34zzM9PYKVENiN6CJr/04tbIIj" - }, - "address": "noble1pxa93n7xrvvmzd9rv0zsxgfk0kjude6tea55zf", - "percent": "0.0%", - "airdrop": 1151.9323951666013 - }, - { - "total_amount": 216876021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+VLFzQzK2ZQcXD8ZPwEEcRxBKRJrmBURI9mdRQw9wyl" - }, - "address": "noble1p29yp22efftz22e3cujk6ke3v8cg3y4gcuvmw2", - "percent": "0.0%", - "airdrop": 3809.588233237706 - }, - { - "total_amount": 284390721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzKl2UFzF7k9oSvIOpnQnDk7ATvOdgmwfq+dh5HriiQN" - }, - "address": "noble1p2ddfk0jqlc5gkg2rlhjuzj8n2cdd36d0zy50a", - "percent": "0.0%", - "airdrop": 4995.534035381383 - }, - { - "total_amount": 1002060069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3w0dmvvw6HN64xfxXeGcNf+1Gr8I4s6KAHk8SRGJBNf" - }, - "address": "noble1p2l9grqmt2znq867hlfw2qluj359kd2fl4srps", - "percent": "0.01%", - "airdrop": 17601.928651484082 - }, - { - "total_amount": 86480000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar+sP+Ikh7IHLLl2ObfhNDuaP2v6XqPY3It8OfJovhGN" - }, - "address": "noble1ptcj6s9gtadzx6snhedfczra35vngywrq43dd5", - "percent": "0.0%", - "airdrop": 1519.0853691031007 - }, - { - "total_amount": 234477271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiegnVfL9T4qAj/cAFzFvM0gbhq0t08cPw3ZjMWqtMPJ" - }, - "address": "noble1pds8hqgu23x23ykvdw5dpm75cvg7tdq0jaa6es", - "percent": "0.0%", - "airdrop": 4118.767249807155 - }, - { - "total_amount": 1774543264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmYNv8l4z8XZbqR8iKW2M4vmK6DPABvZlHC1EDHqJYt5" - }, - "address": "noble1pwha5a3hr55wmmur2d4fm0p8rf7q62wnzqe2kf", - "percent": "0.01%", - "airdrop": 31171.169162614027 - }, - { - "total_amount": 90000033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0qW9RupaqGKe8w6KL6IRaldBZ4BnZiKQjMthoTZYmg/" - }, - "address": "noble1p3p92gyvymvejl0uasgmrf76muv79d77yyur80", - "percent": "0.0%", - "airdrop": 1580.9173606509742 - }, - { - "total_amount": 101918544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zv9aIDxBsTOyqmI/nt4eX+78YVlfPcd+6BacyIBNlh" - }, - "address": "noble1p3w3mpt90k8tz59t550em8em6a0m4xyszd0vna", - "percent": "0.0%", - "airdrop": 1790.2748500311127 - }, - { - "total_amount": 592362835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6q8WSE7RYP01eMzXKKAMXiYk0eyTSzYWvKwiDhkQ2W7" - }, - "address": "noble1p5x323sum4wq0y6x97met4zx46leynhkyadns6", - "percent": "0.0%", - "airdrop": 10405.292736458536 - }, - { - "total_amount": 97000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1RksdaU+z+5Y85AEQwTuFeTHXXfn0etR3+Q3aQ8ihIb" - }, - "address": "noble1pk2hslq9zds3y6ndfv8zy9cpm4qv2s2qdz9hxr", - "percent": "0.0%", - "airdrop": 1703.8769750578258 - }, - { - "total_amount": 52814544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Zr7761rGXWLL2YDY0FIpU84wTP0jwb7gwBrXgt6/2u" - }, - "address": "noble1pm8jhqcmjhh85u5ja0yqcahk42n5dsgcq92t0q", - "percent": "0.0%", - "airdrop": 927.7266543276128 - }, - { - "total_amount": 21005736907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0pZF6hmDYqxbjcjr771iQ2sJPUmcf279oZjN40c9zg1" - }, - "address": "noble1pa7enuuvmpqcphkcsvu3vq02sdd652zuxkgyfm", - "percent": "0.12%", - "airdrop": 368981.3552573164 - }, - { - "total_amount": 53917287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4RKsXIh7YweIm7mv6egxqokx//G3p7kRgrCktA0yjYo" - }, - "address": "noble1p7gyng5y74pvrfdnlg2h7yr7vmfs9r6gmdagnv", - "percent": "0.0%", - "airdrop": 947.0971533699446 - }, - { - "total_amount": 908255520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvrTOstmvdQYLQhnjFwffuT/2T5xHQwIY7rymx7uJJ2A" - }, - "address": "noble1pl33er0t5s9ezh2setlwxjgd0a6gxjphd2ye70", - "percent": "0.01%", - "airdrop": 15954.182144300748 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/BvPDoGQeq0EaxgVccqxm4MgJQcdHoD5MDP3aBQvY+6" - }, - "address": "noble1plm3y2al5a7jgrlq3tl2enmwjmc4pl7wqmkpy3", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 3340222406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9QUjzyD9EGxEf0oRrAzoTe1Ph8XvMBJMk5qhhwdB1J1" - }, - "address": "noble1zrtfy4hendy5srwk7v20a0zry3ztq35gfrf99w", - "percent": "0.02%", - "airdrop": 58673.48504284178 - }, - { - "total_amount": 60358552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag4P97NFPzej2I60JeL5nTkDeyd5tzCiLwZgW9uEB3Uh" - }, - "address": "noble1z92n47uyeyxwtmfsw44nawy5plxfdxpnu2hs4f", - "percent": "0.0%", - "airdrop": 1060.2427525838193 - }, - { - "total_amount": 300020000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awd9IeMDlf4Iojlw5qEmWrmu610o0AUNs1RPP2JtkXrJ" - }, - "address": "noble1zxq5sp0wt3tppzdjshdz257my5dtvc250fjmm5", - "percent": "0.0%", - "airdrop": 5270.073918111844 - }, - { - "total_amount": 104445102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajjsx7LG9J6xtZX1qCYYSnCLD+9grZvjogApK/rlNFIL" - }, - "address": "noble1zxg7695uplngjylndt46xms77v9lyxx80ts853", - "percent": "0.0%", - "airdrop": 1834.6557160347018 - }, - { - "total_amount": 6239888181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjurRAg5TTqklGnt3e52Mz/gTTJ2KoixPxgJGj6v/JLz" - }, - "address": "noble1zx7nmp07426hcjz377c7lkwdpgl6gqql54qzlt", - "percent": "0.04%", - "airdrop": 109608.2659643439 - }, - { - "total_amount": 4936184343, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvoCtCx/d9ZesVUimdD16mN6kvJsR/dvdDXWtvEtm5sj" - }, - "address": "noble1zga0mnzc6vp9ec6dp2yc98cryvqhphmsm4vfqz", - "percent": "0.03%", - "airdrop": 86707.74068740867 - }, - { - "total_amount": 51275713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+2v76wYjn45btAX230M66W7pcLPGBDM8Wk1oEgKX8YT" - }, - "address": "noble1z306u88f4pxmdpvattwq9lljrr69gsclc2kr2f", - "percent": "0.0%", - "airdrop": 900.6959459832292 - }, - { - "total_amount": 106500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqi/3IDdv5JC8Pqyy7mDln6q94MBv8ekaZ1PH2OnZb6i" - }, - "address": "noble1zjy63kkmnvvfd396uevx4jjm6k9de7cc50kpul", - "percent": "0.0%", - "airdrop": 1870.7515241614271 - }, - { - "total_amount": 50197943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3SflPiLfhF432+eCiLbeHGSf5eCzBxndrckJo2cxkj5" - }, - "address": "noble1zjspnxj39k0p6kma0fqtzt2d84vjl7j6v9vfkk", - "percent": "0.0%", - "airdrop": 881.7641162161357 - }, - { - "total_amount": 120948368, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlCZ1qIjtkt60PQxc2d+yG5Q2eeeH8L0xtdIJR4FDcZn" - }, - "address": "noble1zkvdwf34h2ldq7fn0xy0cc29yrtgysxrntxyyr", - "percent": "0.0%", - "airdrop": 2124.5478289280486 - }, - { - "total_amount": 343100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhYCRpzaJuNsuYjYGK0uuLyhxuAaKlujtRawe0am2srK" - }, - "address": "noble1zclu3cutly50vvlz5e02r9m23spjd68nt5mpvj", - "percent": "0.0%", - "airdrop": 6026.806083941649 - }, - { - "total_amount": 101542996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArwXY3ttgB4BC6WZqi18pdCK3XDUe4oM7G+NvdKbgacw" - }, - "address": "noble1zmy8y3wz03c5zc0ktl9fjd4duvq6u7jxrn6pts", - "percent": "0.0%", - "airdrop": 1783.678070750401 - }, - { - "total_amount": 1220185933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bcIvwnh5it9tDtmeua1C14DFOP6aHwPz7bQNrvgMnS" - }, - "address": "noble1zm7vax6zax6k5t2nsu7au0undz0axqwugucjlh", - "percent": "0.01%", - "airdrop": 21433.471304413924 - }, - { - "total_amount": 4679201369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A73AO0M7vTPJfGMxgy4MPDSrdPRa0eHmoXotmTbXxP4E" - }, - "address": "noble1zuzl4h9a07hkaye6dyvjztwhzzlf2qjqwy9kh7", - "percent": "0.03%", - "airdrop": 82193.64406492945 - }, - { - "total_amount": 746679398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArHez/xvHwqNH28j9R0kW2msTXUzhnkxLoXR+BjQCELA" - }, - "address": "noble1r2dzhqal8u39ut64twvvql0hhwcvnla7qld2t4", - "percent": "0.0%", - "airdrop": 13115.977670126167 - }, - { - "total_amount": 53278160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgNJ9YiwAPTWipOzcOYqrrILmOBcbsYH+mUpcbYeuSUk" - }, - "address": "noble1rtzzu0r4n5xw5qmwvztzmqkuurypxkt6u4h5az", - "percent": "0.0%", - "airdrop": 935.8704133757407 - }, - { - "total_amount": 57819795, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1uH/5DBjIxnLVmZ3g8bhUH0PCtfmncBVkhOGlm/WWc9" - }, - "address": "noble1rt4h8qwekdk24c4t3npx7mp2v6d0ss0j0sggvd", - "percent": "0.0%", - "airdrop": 1015.6476020934391 - }, - { - "total_amount": 590000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A63nAumoyaZZPofnuL/f7hEQNUZkmyni48mOAUMDnFNX" - }, - "address": "noble1rd33syt52mhllglq072gf9q2m2dcc6fvvjzqxy", - "percent": "0.0%", - "airdrop": 10363.787786434197 - }, - { - "total_amount": 493962842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArlrA/y0Teb2EduqVKB9E5O5jzh8gt2ZHy1k0b8ltSuG" - }, - "address": "noble1r0mpc7qmsxjnu76q62ktltwn2sak0hm0rfufqa", - "percent": "0.0%", - "airdrop": 8676.823845545636 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0EXtVHlLDGLxODfgSVajntvEeoyh4htjWLBrAg9MVm9" - }, - "address": "noble1rscztkkqmus9wemhxw3awufu2luyslr60tmqa7", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 51784413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7YNkOyEvjUjqQpDu0YxFsTkpWoPl2eWftS4Nawsq+re" - }, - "address": "noble1r3qgnteuk5mxslrev4sg9myhhu0jseeydeuh3s", - "percent": "0.0%", - "airdrop": 909.6316389441768 - }, - { - "total_amount": 161022600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvY/kQijGuwiwufK5eXWT/XnlhbcplJcwrTNY3Im6W16" - }, - "address": "noble1rhequ2cpve6zrpdj7ay52pq4uq7v5rwu35z4v8", - "percent": "0.0%", - "airdrop": 2828.481449525219 - }, - { - "total_amount": 70500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AijzfjnU9v4x8S8gDPH2UCFyEUGvfjXfP0VQ+1E4Tp/Q" - }, - "address": "noble1rcvn29c2wzz7cpwy5sm93mydg7et6du4fa6d4u", - "percent": "0.0%", - "airdrop": 1238.3848117688322 - }, - { - "total_amount": 171436142, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A88sz5O/cEyBZF+H97Rktam1Jq0RKweTKi0OBEuMxh9d" - }, - "address": "noble1r6cjw8dqc7cz09euc4zwsxpsgs5pj7xucgccz7", - "percent": "0.0%", - "airdrop": 3011.4030417169474 - }, - { - "total_amount": 50139208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agy7m/SDSStV+BEhG1MDc20/24Sb2jtMydu1szlE5kja" - }, - "address": "noble1rahdzmmafurxr5ern05rxe6sczz7cfpuyv2cm0", - "percent": "0.0%", - "airdrop": 880.732392359125 - }, - { - "total_amount": 1266095024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw0UNgAmyt247fV8iWOYsws239er18N8hgOZRC5M6pif" - }, - "address": "noble1rlpqjukkfqx7w95h33xrm3vv6qh657q6cwtzv9", - "percent": "0.01%", - "airdrop": 22239.898552875107 - }, - { - "total_amount": 2376957113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Tfn6+HXTsbHcS/4SMnwWdlQ2e7YG576S14EHynOfCc" - }, - "address": "noble1yqht6x4gx328ym896j2k6e43qnayg09tp0yaf7", - "percent": "0.01%", - "airdrop": 41753.01541794456 - }, - { - "total_amount": 142938105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/hmI85lBuVfWhK0+2Te8atf4+cXKuapT9e6t02PxRcK" - }, - "address": "noble1yp3j7ggtnlj0a469703qzm8fctufc5vgj3sdvn", - "percent": "0.0%", - "airdrop": 2510.81387595771 - }, - { - "total_amount": 1129019000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyeF29H888sCNAFFqjvxQOs+PBCZT2x3/IBW9s2jZwET" - }, - "address": "noble1yyeuww6ja6kppqa6fgyj7p326n9w2gnnw8hcns", - "percent": "0.01%", - "airdrop": 19832.056479410425 - }, - { - "total_amount": 77178451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArRgP7A04iqPQ7z0gLu6695Q4SREIYO7MO/m2ZjpZmOp" - }, - "address": "noble1y95d5qa739nr4qczyzhfef2xpvkccx437qjk4t", - "percent": "0.0%", - "airdrop": 1355.6967590673055 - }, - { - "total_amount": 2777063725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4X5LkvRbDJfvsojNqJA9XjJjdd6uc+f0ONQHwS7fZ7u" - }, - "address": "noble1y943yr0kh7klzpx7x3m5y84crjs0d2m4525gx7", - "percent": "0.02%", - "airdrop": 48781.18494119399 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ama6lJ3PbPtkt1es5KXWUX3K2Be3PeTWoXgXFchtatf+" - }, - "address": "noble1ygc6un42z2jg96g00kxsxa7sl9j8vjexyawz23", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 177123051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alvq3vqeszwHH137DosrB+UiVAik29J4vIstrEHGC9tM" - }, - "address": "noble1yvw42qt0ucu9lxlffae9wlupzmkxmnpvnuxmej", - "percent": "0.0%", - "airdrop": 3111.2978180504433 - }, - { - "total_amount": 62864174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnFxdTZfWggWZjtA1t6A6IS+jPTOukf8BtuhO0MjeTC7" - }, - "address": "noble1yv5gujp4k93euld25emclqlh8n7ysl9m5tjukc", - "percent": "0.0%", - "airdrop": 1104.2558622126683 - }, - { - "total_amount": 3112697303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtXa8/Tijn2eJURRQ/Fj8A7hz6E2aXZO3qaBPKa4Kn09" - }, - "address": "noble1yv6ssxs863p99m9fmmq0cg086ykk89re20ve7p", - "percent": "0.02%", - "airdrop": 54676.8377825391 - }, - { - "total_amount": 1168632714, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Zh0PCJmYr0wJgCZ888eGPc4mrDhALnTmzY39/7j2vn" - }, - "address": "noble1yd7lkaufyfdcrxmspk99pezvau707nra3s5tzl", - "percent": "0.01%", - "airdrop": 20527.90075962822 - }, - { - "total_amount": 130726290, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuT7BY/Eg+TEFrkwgTchi4Bh022My5zI1/N1E2ooUxK+" - }, - "address": "noble1yse9pwtayptgam4yjkvvhq67m4k84543c3pgwd", - "percent": "0.0%", - "airdrop": 2296.3042841828046 - }, - { - "total_amount": 483097059, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Q4NlYsLUnPauvmsoLpiKGBlUOwQaQVrFcipbsmN+cz" - }, - "address": "noble1ynctr7j2m8kv07eavxxkrtsja4p9r0jea6km2s", - "percent": "0.0%", - "airdrop": 8485.958304621154 - }, - { - "total_amount": 95655000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhYIBYAAyDNOrkaVvEAcrqD8Xyd6G7SuczCCE4X53L8l" - }, - "address": "noble1y4sefvscfru9f6t85uaa5anxyd7rvdppj64nzd", - "percent": "0.0%", - "airdrop": 1680.251052053158 - }, - { - "total_amount": 69437191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As8IbFoT0QTm4nt3ZlAOSxSxbNemKQ6V8DeS9xDa9noE" - }, - "address": "noble1yc3z8dm7y963lk2mhwqy4spktmvnrkgxe5dtsw", - "percent": "0.0%", - "airdrop": 1219.7157830679637 - }, - { - "total_amount": 253673075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AssDTNh6kjxK/wtQmB76IU8AnHc5AzkQZv3MMZJWJ8W4" - }, - "address": "noble1y6k3fas7ejx9h44dfyd3ycxxv3sq4kdgvnk877", - "percent": "0.0%", - "airdrop": 4455.955790563062 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6nLe5y9uqgh0CY8cGxi64E2lEL2xm6YKJ8V7JEUt+bN" - }, - "address": "noble19qcnaajkm823lpf5k4tfh2qsf2d0tle36l2zyt", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 302531703, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgS9ZZfDeU/O1VcTbngVewCzjVD8psua5cYjq7o7oKOC" - }, - "address": "noble199dm0ugv50k4qgcsxjc8p2rertstltxv2j0dt9", - "percent": "0.0%", - "airdrop": 5314.19384501786 - }, - { - "total_amount": 105290501, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6JV8jKYpXX77aNeCjuJaRkLjkkZpR4BaoSVpGQpiP6" - }, - "address": "noble19f6pkzxm6ulfqddn7c70mw2d87ue696syue99t", - "percent": "0.0%", - "airdrop": 1849.505776764979 - }, - { - "total_amount": 788933230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5tLqsiQzGtqscIRhBQfSl2xAv1BdNv0iyE8QayvLEyx" - }, - "address": "noble192wpc837s94vvg5uyagqsyc29yf0r6w3yu5kj6", - "percent": "0.0%", - "airdrop": 13858.197582010309 - }, - { - "total_amount": 158605436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AigNRRBwmOqXAME/8G5sTq2TBfqm3ku8DL1bALWXKqqV" - }, - "address": "noble19vfmjaetyy2sx5lamnylsrpjktwk60k7kaek3v", - "percent": "0.0%", - "airdrop": 2786.0221703031707 - }, - { - "total_amount": 915373102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrvqDjX10spfmJALaTaXfNrSw690nu/wzQ8QLVOGl85" - }, - "address": "noble19dkkjchswv0vtlwxdmr2p6a9c7mcagxapggf8u", - "percent": "0.01%", - "airdrop": 16079.207753454213 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmxmW/vJnsHbByYHM/xJyjUrd7N/20ex79xIBDNp+QhF" - }, - "address": "noble19w62q5e5rfysdh9hrnlu6qzzgd7a24r0k8x6v9", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 106758234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/tTFAZbyouukYz42z+EW/nAJo9MeZsW/aYUKkCoctNi" - }, - "address": "noble190mdu456g4q3s2tfp54ds6r3dduldc778pany0", - "percent": "0.0%", - "airdrop": 1875.2875959838714 - }, - { - "total_amount": 64827365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayn75W8zJu/fWV+iSqwi9CiXK9JoHMNnktSxRKFDEinG" - }, - "address": "noble19s983jfskfjm34xfr77rjjr280hmn48fz3922c", - "percent": "0.0%", - "airdrop": 1138.7407688367996 - }, - { - "total_amount": 173336880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anf9un+E2PKRaxjKjwjetSi8Vs1jjIYHCkUp4P2uIU/N" - }, - "address": "noble1958prgre683fdtcd3ra649y7x3mhdyg5xwm3ye", - "percent": "0.0%", - "airdrop": 3044.7909150552714 - }, - { - "total_amount": 496012798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoNj6bUd1EpG6GsACwF2JzQdw5sNZHEam79y32ijzZ6d" - }, - "address": "noble1957rn90dm66atp2ydf8xfn5p64z6sanz624hnh", - "percent": "0.0%", - "airdrop": 8712.832843775344 - }, - { - "total_amount": 249988948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aha1t1cxra8be22WfZnJlnlnB3O7HNfsoGf19EiRbXMQ" - }, - "address": "noble194swukntjr22803e7j73tssvcnrchpg38muzz9", - "percent": "0.0%", - "airdrop": 4391.24136614565 - }, - { - "total_amount": 2602628288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AykJP41SPeDn28H6Q68s3KXx5peBs6hAR95QEoyMV3FM" - }, - "address": "noble19e4wqyvhecq7ze0s42kcdsy034a6ue7nf25wv6", - "percent": "0.02%", - "airdrop": 45717.09705729245 - }, - { - "total_amount": 719356597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApHfBIdj+5b/YzVLmuCvltkjfBocQN11R4995qnZL8x6" - }, - "address": "noble19euwqzlsaluxrtmjyd0ss6e4dwsvjxmlv0uvat", - "percent": "0.0%", - "airdrop": 12636.03239674486 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuZsILip3J5MYSPz6Ay3o9Zp3SvJQxqOIXLPsT/aDlU1" - }, - "address": "noble1xpumk23t6jr6fxqr2g7fnt2m5hppryx97pa2sc", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 120882468, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao0fqLg46XMtsxPzgDF+HI2o5vlZJfp3XxpwiV8n7rLc" - }, - "address": "noble1xykpps0tfevr26vax4z0axpggytphj0tfcgtd2", - "percent": "0.0%", - "airdrop": 2123.39024652953 - }, - { - "total_amount": 542500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7cg9JdwtyPT1n/xDeLDquxymSG7/mO0vrgc5k07LXUu" - }, - "address": "noble1xyu222n8qm8aakqxpt0sf98ghg0rhsempw9y38", - "percent": "0.0%", - "airdrop": 9529.41504091619 - }, - { - "total_amount": 2266742643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuvuPZVhpSlm2xYg/78EzPyUxYbTcptnu/y80arYS0N2" - }, - "address": "noble1x93u4q54rvzz86vz5f5pjudejmlzzs3j0zwcl2", - "percent": "0.01%", - "airdrop": 39817.01647205589 - }, - { - "total_amount": 56456365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7+6HpjshvgyQjXgNC4QRjONq1QIX3tnQBh8Cy+4SOK" - }, - "address": "noble1xvnnwmewas4rkjnntg6zzdz2vsvyg33r9dezqr", - "percent": "0.0%", - "airdrop": 991.6979424635105 - }, - { - "total_amount": 106677365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/PqfacSEXfkPa3SSbPVXCt58ofCGO2Ps7/1JJxCQtml" - }, - "address": "noble1xd7msw457czev06cawsm5h8hma8w5wrqn94d6g", - "percent": "0.0%", - "airdrop": 1873.8670719931913 - }, - { - "total_amount": 245248957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8EAu8a3DUsKAt8pldxQcISPQo4oFNd6o9ZIv8fXNVlj" - }, - "address": "noble1x0geq60tewsqhcf53u7e9gw68y95ud5x8yu5ga", - "percent": "0.0%", - "airdrop": 4307.979907105637 - }, - { - "total_amount": 505066320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aykn/K1tyrqXTBx2eMpDaRjQUqZXFU72K1VZXQ95AFq4" - }, - "address": "noble1x0jyazq5rpmqrv4pwj8rz4mr4a6zrwk9a0rp83", - "percent": "0.0%", - "airdrop": 8871.8646755174 - }, - { - "total_amount": 1068120736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ann2HGyf5ObTONc1vf3dt3yWLpAfQuToJZbOpY1YY3+b" - }, - "address": "noble1xjfgaw24t5yl094l72r9wdz03tzhpdajw8ns8t", - "percent": "0.01%", - "airdrop": 18762.33328507442 - }, - { - "total_amount": 65461934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+9n3sIuCibhPQtc9mY/DlC1hvXpDf3txmvzCecKsg3J" - }, - "address": "noble1xm59lzff6sjtwmtrfqwy0mwwc08kx5fzfr0qzk", - "percent": "0.0%", - "airdrop": 1149.887444178918 - }, - { - "total_amount": 69416535, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Vu+Isfv9DtG4SAyhH1IW02ESY1KiG3Yf7HhD/WM3Yk" - }, - "address": "noble1xak6jfyp49jx895p4gnq92j2wfskrgw6sjjln9", - "percent": "0.0%", - "airdrop": 1219.3529451009865 - }, - { - "total_amount": 415179717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvYHt1oAQ0fdw7hUJ7XOdNS3A8hEURygkH28Taagvu75" - }, - "address": "noble1x7crmc5lf4s5vxxv8rrlucu8m3kypg0mahcq3l", - "percent": "0.0%", - "airdrop": 7292.939796982723 - }, - { - "total_amount": 91306067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZp5B35PmWaHm/041k8fzbwYNa67Q0UXEzxs0+keNFD" - }, - "address": "noble18zxwcspgdzcjtq4luxgke296qhht5ykpllzkss", - "percent": "0.0%", - "airdrop": 1603.858816952445 - }, - { - "total_amount": 50985717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar6A8/X2WlKnKg6dpCab4X4RRjvrEw0r6EX0C+rydZqp" - }, - "address": "noble18rdhksv3clrenll43nv33ctpdkzv4nv7mjt8xa", - "percent": "0.0%", - "airdrop": 895.6019510630347 - }, - { - "total_amount": 867622157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApLzFczyutRPtKjgbewYHbbPRTCWTgnaeCXEwg2GIlTF" - }, - "address": "noble189g5e2hy7anxhqhaz9uy24z5ylvvqe0sfrg8wm", - "percent": "0.01%", - "airdrop": 15240.426972807278 - }, - { - "total_amount": 181339734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A34YUP6GO7CaTFBTiOO59JrqdZVrt9HWY4US1Nco5m2m" - }, - "address": "noble189evx4ujwly2d4z78khcwstg4d0hsa7qvwnhtr", - "percent": "0.0%", - "airdrop": 3185.366983770214 - }, - { - "total_amount": 124100865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+F19xgHukN2WkgDQZYnY+fTRnWV2pDbuTwDysBLRmp9" - }, - "address": "noble18gxeee0vnhgr7gswzknn77fhqqz7mv3xe0zyjs", - "percent": "0.0%", - "airdrop": 2179.923777920202 - }, - { - "total_amount": 445118321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3lb0o+6h9qbbUV5lyySguqunPFGbw0/uUHOZCLK9emH" - }, - "address": "noble18gaw003c9hx49sdtxavxqmmmmzefhml8d9zu76", - "percent": "0.0%", - "airdrop": 7818.833591013385 - }, - { - "total_amount": 86477025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3RIBZdBeUeVEXLUnC8qWS/qf4LtR8j+ph5esNe2RJWx" - }, - "address": "noble18fzene4sxx7t4852lhwyhwhan9h4yjrs5ezghf", - "percent": "0.0%", - "airdrop": 1519.0331110206182 - }, - { - "total_amount": 235126247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alp+7fF6KVt/e+MdAxsxqxA1fb4LGpIJ1Nsai/yiwTI5" - }, - "address": "noble18fk8pzdg36gwnkheuwaekwag0p69ed8cynztau", - "percent": "0.0%", - "airdrop": 4130.166994794425 - }, - { - "total_amount": 395620264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah2wAkTfWCMC/4hKehPLibGRCBrtGgsWGFF8RKhEgpRT" - }, - "address": "noble18fks04k908j7akymsfvdjevyffajvmld2v4qnj", - "percent": "0.0%", - "airdrop": 6949.363491710293 - }, - { - "total_amount": 149471623, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4xPKI5PmNFKVOIq7lQUeZQuCiZFUiSte46AYLItkrXD" - }, - "address": "noble18v5wsvu4kds7wy6x34c3dkecj6qvf8x4py5qfx", - "percent": "0.0%", - "airdrop": 2625.579967569317 - }, - { - "total_amount": 1200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1zjWLnacfCk51PSrPYExfkDOkHr87vQBbLiYsTBxY8y" - }, - "address": "noble18dqun20zmtm92gzajvwykdahdtd4jth9umy9k2", - "percent": "0.01%", - "airdrop": 21078.8904130865 - }, - { - "total_amount": 1420964498, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRj6/feuIZdGLbPgoJ+mhH1krj1uJv9deQLnrZVtKJy" - }, - "address": "noble18d2l6ys6m8glvps5jgc5j9ksgezdugfflxrx28", - "percent": "0.01%", - "airdrop": 24960.295778523727 - }, - { - "total_amount": 151226000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyyGqTLyfUuGHIBx5+ia2TIQMgU5FANZWwX6j6xCJ6OQ" - }, - "address": "noble180q6rxr6alwtufefhr7rk9p03x3vdau5wnq8ev", - "percent": "0.0%", - "airdrop": 2656.3969013411834 - }, - { - "total_amount": 50600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah9DPCQyKT45+6QAO+eUzGmSWq1/hC7rdEkcc1GC7R8d" - }, - "address": "noble180mq0q9dy6zla43tr54z0e2q8u9k5sr4eupsn3", - "percent": "0.0%", - "airdrop": 888.8265457518143 - }, - { - "total_amount": 485483570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmsDgQ+ThZqZx5OYmEWZNLLp5QrxWSssF7P9NKCaujAv" - }, - "address": "noble18354ft8h8ul0ekuzawymj46try7wgeef32q0n7", - "percent": "0.0%", - "airdrop": 8527.879141153342 - }, - { - "total_amount": 2541353642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0LjFsLuh2padCvUh5GZ8UWInx/9wTUaPeWgEt7oKT61" - }, - "address": "noble18nv7hj0m00dlhqg0m77379gkucc44v3r4thjr4", - "percent": "0.01%", - "airdrop": 44640.762433846896 - }, - { - "total_amount": 91100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3K5lnZj8AjZhRXR46gKPJCdguOpyRmpAOw5EeezaW1b" - }, - "address": "noble18k06k6927s3sem3knr5y92mp78cfnffwyv4mj9", - "percent": "0.0%", - "airdrop": 1600.2390971934838 - }, - { - "total_amount": 93060000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajcdi6Wui7WVb0aCzCPovmtGVuRgj/E9f3Cvln2IefE9" - }, - "address": "noble18ku8fcapkszj5ee8txys6trurcd9xs6mea7dl0", - "percent": "0.0%", - "airdrop": 1634.6679515348583 - }, - { - "total_amount": 60646947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoSQ2e6h5MKCJ5ezhlD1tD/EQHHRDJ9XRESaRED3A+46" - }, - "address": "noble18ccys9tqazazu0tdpqw3luygc7xvg0txy4a9hd", - "percent": "0.0%", - "airdrop": 1065.3086247510544 - }, - { - "total_amount": 1177195244, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhEbDd/tHVFm4diW7AvGCyFMAo/foF8QuX6nQXyUDyvy" - }, - "address": "noble18ey9vs9cj4sszkuwapkh7w6czwnlqcxu83g8k0", - "percent": "0.01%", - "airdrop": 20678.307952568855 - }, - { - "total_amount": 66540496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cb5Yy1ZafzgL4UNepcmiX7kVOroQ4AizsqX7CVHGjc" - }, - "address": "noble18e3vsfma20mdqkpxzjthp6mltjh2sxh79kuszs", - "percent": "0.0%", - "airdrop": 1168.833186013684 - }, - { - "total_amount": 4659128267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ami5kzIGzyeYLmv9SXc1VjZZzqwDPe7w5z9CJWL321cb" - }, - "address": "noble18umk4jenevvqvwcsrxmev65x5n76ml47apafug", - "percent": "0.03%", - "airdrop": 81841.04513383887 - }, - { - "total_amount": 206670506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlRZZEH0vUgZ7eOz893JuNdocvaw00cf5Xq1q1P3BlmT" - }, - "address": "noble1gq9yqlhvhtu6a00vydyt8wztx66yvpjyk7jjjx", - "percent": "0.0%", - "airdrop": 3630.3207896592808 - }, - { - "total_amount": 50105000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArvjPz3aqB5LmIRj6zbnq+ekijz4vw7SxxJQd2LPodvw" - }, - "address": "noble1gqtlmpmxvwatjmfuwk9qhe0fqw0h6r6vft7uyl", - "percent": "0.0%", - "airdrop": 880.131503456416 - }, - { - "total_amount": 61525395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah3Fso149OmMGORUX8gavqTgKg6Psf8Ol6bUiuqtDE9F" - }, - "address": "noble1gy4vw9p6yqfq620w58584r94r7rj8vu6vmnvfk", - "percent": "0.0%", - "airdrop": 1080.7392156890503 - }, - { - "total_amount": 2458093570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aji/wGP69naw7cHIYM0B/L6TGYhbSLJ3YKoOmRPfYirs" - }, - "address": "noble1gxtv4xm36t3g8pyr0cwj4ajmydd8sndr4mn2cj", - "percent": "0.01%", - "airdrop": 43178.23748928548 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq3RvJ8kV23FAaWWPfXIjlPMZtEeADwZJhuSrrWBg06r" - }, - "address": "noble1gv5u4hkjtu06a3veezvs2903af2r5pq5p4vqk6", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 71860071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPrzb436yEg2MmbqJtpxz2pJ1vqfv/htqRl9ZPxrJvd" - }, - "address": "noble1gwcxqnff0t86wt6l0eksen49a6qwlzts8ghjpt", - "percent": "0.0%", - "airdrop": 1262.275468071346 - }, - { - "total_amount": 934631491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoBmV2+D3dxoTkex55A8DyM/1c0+EcrPb9dWI3vDsvGx" - }, - "address": "noble1gma45d9a50xrpwt0cnv9d6lks2xq7h5a3xt98c", - "percent": "0.01%", - "airdrop": 16417.495646173873 - }, - { - "total_amount": 59000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoFpwldMaCq+pv/kwUbbkgOf22+YtqovgrAsdqX/BZnV" - }, - "address": "noble1gasfqhmwtvhkkvz499l4u7jaavcpcpzmh54srw", - "percent": "0.0%", - "airdrop": 1036.3787786434198 - }, - { - "total_amount": 1419291700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amttbv/7Qpdl08Vlbzzgq8DJMghNbUvYEV/FnlTdX7M0" - }, - "address": "noble1g7ryul6kv8wv7p032c3shede4yps74h02gzw73", - "percent": "0.01%", - "airdrop": 24930.91184041937 - }, - { - "total_amount": 58025236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9HUZJ5KkrFzQ2JWaIle8PI0Xtxjs/xzXaR2H/86lYLk" - }, - "address": "noble1g7sfckcgld2yhz064uvegyf8vpardkug29f5q8", - "percent": "0.0%", - "airdrop": 1019.2563256979016 - }, - { - "total_amount": 685000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9zKkWqoOuBT+t2+2VFP8PX88BdN9euWk9msCUmMvq+L" - }, - "address": "noble1fzs6yt4f2fnu0j2r0xsdwf38km4faqh76y74wz", - "percent": "0.0%", - "airdrop": 12032.533277470213 - }, - { - "total_amount": 141265723, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai0c8e9lGBhBal9noxrzzefyHMFkc0qfFWPUibfBG0UO" - }, - "address": "noble1fzkxv7k8hlcphdcy0su38w3yylzvs8mhmc5tj5", - "percent": "0.0%", - "airdrop": 2481.437245202028 - }, - { - "total_amount": 251582702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A36pO3ktp5uWYeU4fojgKHUyXXmYRsnu+QAWNCIW3+4k" - }, - "address": "noble1frnaga49dppugj3mu6v7d6tzp2r2n9a7pfpfn4", - "percent": "0.0%", - "airdrop": 4419.236837738499 - }, - { - "total_amount": 243072915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cdtVxBqvC9r5O55g7/DbdAGZURBsxDRYhLQok7lwCI" - }, - "address": "noble1fyq4lf4cvfc8ytfn93jmw4lktekhahqqcugxec", - "percent": "0.0%", - "airdrop": 4269.756114728742 - }, - { - "total_amount": 190633002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cyHLHTrFV3bA37T9SxkD4NJq8us8QXLpyubzalJ+C8" - }, - "address": "noble1fx4vyh2ds2pgp6k5lkjfv334v66yyx7c34920f", - "percent": "0.0%", - "airdrop": 3348.6101318964165 - }, - { - "total_amount": 492173463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgGhLu+j5QnCyGojPBPBMdqqJevWnNzjl6+CF6fULiyS" - }, - "address": "noble1ftaspupd8n2jwlc64wgu8jdhjm4l8rj056t9ec", - "percent": "0.0%", - "airdrop": 8645.392075671904 - }, - { - "total_amount": 1982870028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Fy+XLeGR2wuOWRisqBg3NeLI/XTbHV53918PeXToOS" - }, - "address": "noble1fddv7kyuayq3wa5cekyxf5ayeht608mqzns2d0", - "percent": "0.01%", - "airdrop": 34830.583353004804 - }, - { - "total_amount": 77986361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/hgOkXwqhDLOut9aLIliqjxIyKZ1qGu1U5H3G2jOINn" - }, - "address": "noble1fwwp7ge56s2xjy4fcsm3yl4xdy63335ww7juks", - "percent": "0.0%", - "airdrop": 1369.888297695336 - }, - { - "total_amount": 2643162057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqoOeBjvwhBWWkoEg+mHFjwYQ8UuSMUeWX0YQMNnHI/S" - }, - "address": "noble1f09hrmjl6ktkhyycn8prh7fqktjczemjh4yz3l", - "percent": "0.02%", - "airdrop": 46429.10278627609 - }, - { - "total_amount": 50105000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+qldmMVTKpc7s79JyHNS4x14OdXKBNzIApBabi0EXh" - }, - "address": "noble1fn0p335ve6v8l48vrxr2spfe0c27pnmhfwlhns", - "percent": "0.0%", - "airdrop": 880.131503456416 - }, - { - "total_amount": 91944362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4tSLI+pN40/yGrRRVd93cWVC++WtSUFFDb2lq/RnY6l" - }, - "address": "noble1f4tfssdyvjuutm4s8w770nhek2f6f7yvh2mt57", - "percent": "0.0%", - "airdrop": 1615.070942249296 - }, - { - "total_amount": 3975886361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai+Tq0HrhIM7rE9/lLHEiGN5TdRnp7qxnJHUaW7sOA3Z" - }, - "address": "noble1fhkga75da3j3fd0er3m76gj9uwtqqngkm9wu9k", - "percent": "0.02%", - "airdrop": 69839.39408200358 - }, - { - "total_amount": 665352405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6DxzLRa75d5ODOItGgvRUDpqtdtkdd7UwmTn8hX3fgA" - }, - "address": "noble1f6zdvdjlav4s3y9gndxaz54upnccjag59lmy02", - "percent": "0.0%", - "airdrop": 11687.408692565457 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az/zB3/DGQjnJ12IHyu1FJcgeVwDQZpbrtKVoYMRIkQz" - }, - "address": "noble12q2af7tjlzganu7lg4q62lsrsvaumf0n0lpmm9", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 192496477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Rj0FeHqG0+r3TTE3o9dL3/vv8Xrt3K1e60xZJN9V4x" - }, - "address": "noble12zmzgh7lhegrzp5lwuj0tmde3yu5dvw4qm64qa", - "percent": "0.0%", - "airdrop": 3381.3434529901892 - }, - { - "total_amount": 3294131999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9lJEToNVtQcQ4vEnHPrCdNLUFqzFHzcp2A8gHuZrvFT" - }, - "address": "noble12yn45s29d6lrc4xlaruvj4tchulc7sy2ekxdyp", - "percent": "0.02%", - "airdrop": 57863.872844302154 - }, - { - "total_amount": 190000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgSmvgiL8/9pCYnFSUsaBCaQB2qaw8VNt/fyuqy2x0Zs" - }, - "address": "noble12yklc36lvt7t2umujhdhk498ssgy398tcugn6q", - "percent": "0.0%", - "airdrop": 3337.49098207203 - }, - { - "total_amount": 63406239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Altn9k8yLixb3EqUKyQTI6AdCCN4k1n0kwWoYUOYBm1d" - }, - "address": "noble12g8caymr4c52ytaqre253zd42h8e42490wvjfr", - "percent": "0.0%", - "airdrop": 1113.7776361558097 - }, - { - "total_amount": 171206808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Pax96EQ8iaFTLRWPoLG0lyqBE7HEqnWK5sGN3FFK26" - }, - "address": "noble12fag9l58tk6z7tlkmy0v6n4n4lmvgxevrlymq7", - "percent": "0.0%", - "airdrop": 3007.3746198386184 - }, - { - "total_amount": 3430351118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq29k5/D2thC9ZkoVstIp/NUBXQd+hC5fU57D/C0vWnq" - }, - "address": "noble12tgjfdzqtrtjcudyps9h8wn58v46kqa9fl6zas", - "percent": "0.02%", - "airdrop": 60256.66274560897 - }, - { - "total_amount": 141000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar2nEt5tCuTWbLW2zSTCw9/uPs3bTMC47q5Kn0MiMnPz" - }, - "address": "noble12te44ds3r9r6jmtpdh9s6fa6zrfz3m95cl5jcy", - "percent": "0.0%", - "airdrop": 2476.7696235376643 - }, - { - "total_amount": 68058747, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsIlvI98FykRYmbE7lQrA9V3kwyHdJ/aQtZ1zo9+VcLv" - }, - "address": "noble12vl8pj5eetqtn5c37usk4n3rx80f0wdt2cvuzc", - "percent": "0.0%", - "airdrop": 1195.5023913874832 - }, - { - "total_amount": 89496769, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwD5ziphqNnbifBDVOnNclnOsiK5OYU1UnBgN03XD5dt" - }, - "address": "noble12d3utk6qvlf7eamegz07ajgas0rrluwuyyzfg8", - "percent": "0.0%", - "airdrop": 1572.077155063598 - }, - { - "total_amount": 88537000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azq+Tx4VpSIkvjfWbMP2bVLa3YL0AFtcnBrhHvFEFNi5" - }, - "address": "noble12dulw2ee8clfsflww3v4949ldz7rakecntf027", - "percent": "0.0%", - "airdrop": 1555.2181004195334 - }, - { - "total_amount": 85926514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7upsxMGVBSqNFTkVplo3zh1wADH7Kf/9oJKYXmK6zGm" - }, - "address": "noble12sm9vfj4m95nr0974kjhjlfx4eyum37h9jjrh7", - "percent": "0.0%", - "airdrop": 1509.3629768204526 - }, - { - "total_amount": 94391732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/xlCJizB4VRoHJN4ven042DS5S3ch/5ufMHSqekIh/" - }, - "address": "noble123e9ptg25hyjsex9pqp8jz9fz0xgnphj7wq5q7", - "percent": "0.0%", - "airdrop": 1658.0608122745255 - }, - { - "total_amount": 99449746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+gxaaWmRj5LK4jIbjm+jWw60neKAMdpB9RrlHhJKu1B" - }, - "address": "noble12j7r4p9kh4swp46ks8cynymxgtadwm7gzvuq0r", - "percent": "0.0%", - "airdrop": 1746.908581286073 - }, - { - "total_amount": 151793885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq0+ONgOhH7lmFqmpcVfczmj5FVLB5k9crCEdQ9yWhMz" - }, - "address": "noble12ncrenhsqwwedf6mrhmql3y5rk8lf9yuyceaf3", - "percent": "0.0%", - "airdrop": 2666.372222743046 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aof3aGXAn+p+fmKZsVfzBE8lum2zgjeIoJINeJ0qOer+" - }, - "address": "noble125e35mxre7aest6rhtrvsmr27ds3h3v0vlj4n7", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 160522956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au1XUfn2VEwcyRWXps66Stta8PY26eL0vB97K85XPRs8" - }, - "address": "noble124tztqwj5lkf434pq9jjcxykda2mn96480z0ln", - "percent": "0.0%", - "airdrop": 2819.704831923922 - }, - { - "total_amount": 63349724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A51bcqk1h4bcvy447jWLNpJl6suqjDYxy7FkXZFn1YBv" - }, - "address": "noble12c9hd4fhgefqlstrmxz74mvdwhm49hfprrhhx2", - "percent": "0.0%", - "airdrop": 1112.7849082460632 - }, - { - "total_amount": 59067385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlN5vXMM6N2tHBVz5+qUjZlTTgfqS2Mq0/8sq4twxHEB" - }, - "address": "noble12udgs9zyfklusttlug8flz9vl8qyhx36efznmq", - "percent": "0.0%", - "airdrop": 1037.5624461688246 - }, - { - "total_amount": 1126578296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzBH99Z4YcpDz761avX6FHE/ZLadU3UD08V083yhTcV0" - }, - "address": "noble12ulsp20qsxcevr8qxg5u8aedveznm2xnelxl77", - "percent": "0.01%", - "airdrop": 19789.18370262144 - }, - { - "total_amount": 61463773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwxKjudg2kMKc24IF8xc7wv9EtyjhGC9Dig3bueWmq1q" - }, - "address": "noble12aj3x6ecfus0n9antc0mx3prqahpc86uzr9xrc", - "percent": "0.0%", - "airdrop": 1079.6567795348542 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqsJtKu0aZN/7z+87dbYfNLvlePREAEdw9KpiGi09eEP" - }, - "address": "noble12anlve3z6f45sahheskdedlrhy7knrjfmagyny", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 51277686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+3Fsm1HL1VqMHSPZRIBweV+pktsXx+ezV4/03nx9/dg" - }, - "address": "noble12l5ntgxhqsyvnv73q7fpgnth9arphxnjvr0agy", - "percent": "0.0%", - "airdrop": 900.7306031922167 - }, - { - "total_amount": 134107207, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArFQ7D9tJviNZzHCYFfsFwe3VlvaM4VsMpBFrvfJ06sX" - }, - "address": "noble1tqz6wutmnwn2me57vlfgga0khp6a8rc0cpqzrv", - "percent": "0.0%", - "airdrop": 2355.69259996509 - }, - { - "total_amount": 2339245369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhQDAKLcZX21b769Nc8yZXuxCyACSgovfz/s1+Q0Ev60" - }, - "address": "noble1tqluwfn2fdvyc6mecdx0t4mptatv89nvpt78wn", - "percent": "0.01%", - "airdrop": 41090.580652059245 - }, - { - "total_amount": 78417848482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/nXdpoeHC437gyAq15l4ppV2oBob6yXGEASH8P7znW6" - }, - "address": "noble1treczrfhsjdvlfvcgldt7d94wj4vhk3r2jp3ys", - "percent": "0.45999999999999996%", - "airdrop": 1377467.6954850832 - }, - { - "total_amount": 381000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgbO3I8TQGQ2x4EoDpiMcucQJpvG6sNwNQuqiDa+yJfV" - }, - "address": "noble1ty24mtn7497n3eulw8e5rqkjs9wryjvyz0alcy", - "percent": "0.0%", - "airdrop": 6692.547706154965 - }, - { - "total_amount": 4620000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4NwhhaPF7PfTl9YBT6B/TaQEhOPhcUwo4xBQfR4XaeL" - }, - "address": "noble1t2mc5hkljp3vgc9ef5u3z9vrh6n95q3wydgsst", - "percent": "0.03%", - "airdrop": 81153.72809038304 - }, - { - "total_amount": 132981826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajh8QN4WnNbKfYw8pCSH/n7c83lGJLwoe+f4UbNp6c9G" - }, - "address": "noble1tvllpe2f7p9yzatpmyz6zhmyj4rnu9kxk4jg0u", - "percent": "0.0%", - "airdrop": 2335.924447655115 - }, - { - "total_amount": 92132387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhfdoQsDbQBAtIxU7q6tvZ26uIW4BjWhMw3RYpVBNneS" - }, - "address": "noble1twg49qpylps5802ma0wpyrnfeszu5xhjjjdrlq", - "percent": "0.0%", - "airdrop": 1618.3737408908962 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmKjQiqFUFO+OfCgJrBxWCj0MlNU/6qLz3GG1qnqIuj4" - }, - "address": "noble1t0ecwfhaptjjstw5ykn8tjvlv3ga3p8nql9uqj", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 93057363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AutcypGEAudztVP/K22mDi820mJ01geiIhuqNAHwYa93" - }, - "address": "noble1tsn0csmjajfn6gj0w8vec9vtc2ah2eghaksd6x", - "percent": "0.0%", - "airdrop": 1634.6216306731756 - }, - { - "total_amount": 106072651, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am7thhvXw1wBHzaWycID5IAzd4fAzdEcv5tGgu0VK8mm" - }, - "address": "noble1t3t2j0ptjvltfpe58hvz5z794c6merfa0p8z0j", - "percent": "0.0%", - "airdrop": 1863.2448218788088 - }, - { - "total_amount": 455047777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Llm4aYRpwc7lzxhIgXGzwGyMWJ9DbdUR5ulTek6IgK" - }, - "address": "noble1t4v3h355vsvexz46nz6h9repmgxgfml82jg5u2", - "percent": "0.0%", - "airdrop": 7993.251853418021 - }, - { - "total_amount": 101851286, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+u0L50TXDoGYmQ89nKIiICSYbTr/8TIfHvRPmsaPZ9X" - }, - "address": "noble1t4045j4t7u7sf03998ze60xc7xwfh6xyqu805g", - "percent": "0.0%", - "airdrop": 1789.093413354943 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/jB65AjhV+dR9g3iYl2zyDUW/eHIuOyzk+om6BSKAwA" - }, - "address": "noble1thcxkkjx0f97q5mne2w7kfwddlw5mg7hx8r5rw", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 67497410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A79H+NVIJYDjj8JqKP0QF4K2IPDw+NE6zu0aPaTMy6KI" - }, - "address": "noble1tcx305cfu5k0fa37fqkp3cqu3z7zpluncgygv6", - "percent": "0.0%", - "airdrop": 1185.6420904643076 - }, - { - "total_amount": 166322973, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDucSDQ6iiihKlkcW3k5gsAmTohv9BwgJCqGwMJZbHE" - }, - "address": "noble1tc75v74h6w45qum92eals3gv0wvezxeg4wlcdn", - "percent": "0.0%", - "airdrop": 2921.586434204788 - }, - { - "total_amount": 1530214824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1KMb1YbRoL9tR+xnDmO2DFoRgw9WTpht87MaFcvn6ly" - }, - "address": "noble1tulnw68jdjjlp2sw3ncj6wj930md4cpzm40jrq", - "percent": "0.01%", - "airdrop": 26879.35881964704 - }, - { - "total_amount": 630582366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnVmHpj76XAg9pKA8YKOs77W38pIKY3Y3ko7MO66q1LJ" - }, - "address": "noble1vr95pdtn60jjjew6had02zymlw0cytyz4gmpx7", - "percent": "0.0%", - "airdrop": 11076.647157782338 - }, - { - "total_amount": 1142034132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw4k8g5xJtCB6kwr+5cvyM3IC5zGwx/Jwyh7NfLTaSvT" - }, - "address": "noble1v9hrw0mdfpjq0l6fdpk5uamf7mcvuljz4ccxsh", - "percent": "0.01%", - "airdrop": 20060.676930360303 - }, - { - "total_amount": 63734344, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2lxIqgC2Sac5AHTmSt3/mFdIWSTQ5MwBBTuJQBqp6Hp" - }, - "address": "noble1v8n2jpmq8a97xtv9j28c557q3ztqn7rkx3hkmg", - "percent": "0.0%", - "airdrop": 1119.5410439382977 - }, - { - "total_amount": 1027645611, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArsMUF7pmrRvkM7VjJ+0Wo16ZrFqkw7r5z48BQHackrH" - }, - "address": "noble1vfwjkxdf8fdxkq4xrt7xx5c9a7pfhxyefknyay", - "percent": "0.01%", - "airdrop": 18051.35768146527 - }, - { - "total_amount": 190057373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPAgYAKovXIVnTUreZIRVCD6Ef0b4bfeIdSuU48wFiV" - }, - "address": "noble1vdgh7u5kne2smy6v0qjrc7d8wpljfcml480eel", - "percent": "0.0%", - "airdrop": 3338.4987813884213 - }, - { - "total_amount": 433000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArBeCpP7gPIGY52KBee0KOfxkuGZLbafHkNNnfIPyPMX" - }, - "address": "noble1vwmhekgfs8xaclvgy4anu6d8h8w6vguaeeyhkr", - "percent": "0.0%", - "airdrop": 7605.966290722047 - }, - { - "total_amount": 106500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiXBLx3GykF9pyu9HZCzzBww1yRzJy+R6p7OFQpiTtxZ" - }, - "address": "noble1vnr3gkjc208xcrj70xxfkskmefldsp2y8lqn09", - "percent": "0.0%", - "airdrop": 1870.7515241614271 - }, - { - "total_amount": 100068286, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9xmk5ZtOuU4oyrTA7k01D8cLRkIQBgLsqJAYr+i/JNk" - }, - "address": "noble1vneyqf8sgxp6tsusjegefsl45t0qvg2lwlnmaf", - "percent": "0.0%", - "airdrop": 1757.7736953494987 - }, - { - "total_amount": 151503179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApQwvgkle3C9b6LrY9uS8ZT4MfGhZ2Z/k8GL4AlAwMzA" - }, - "address": "noble1v5tkhnp6jmuafe0enfe66ydppgna6ddu7x6503", - "percent": "0.0%", - "airdrop": 2661.2657561460237 - }, - { - "total_amount": 74488625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au68GpjwgOTEVJSV+YN3ZClC9XsjL42vy4f4Y2ar7ggG" - }, - "address": "noble1v4c56llwcdyyfhm6ptjnp0e98cdwy09f06f6l9", - "percent": "0.0%", - "airdrop": 1308.4479694970798 - }, - { - "total_amount": 3033638874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak4+bzcBhhOy0nkdXCWKh3mXYR15uAU69TZinDYXcszM" - }, - "address": "noble1vhthgy6gc6l94vpeeaamak9w9qzn9f82un5l33", - "percent": "0.02%", - "airdrop": 53288.117814937614 - }, - { - "total_amount": 104000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiEqFsw99W+3V7yC8fV8zi9PCTL/KeNiCF5oN5nsgP9Y" - }, - "address": "noble1vc9u7uvlr842pzxhn5nch0382a2eh8xjvp3knt", - "percent": "0.0%", - "airdrop": 1826.8371691341636 - }, - { - "total_amount": 51585655072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al4A+v2HY5BnKZb+sw1jHMMHKKRaZF8ZHYoCtxraa53F" - }, - "address": "noble1vcl4tmc85a7wh6av08j4dgc3tc04vyk5ye86st", - "percent": "0.3%", - "airdrop": 906140.3084583067 - }, - { - "total_amount": 1430651723, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ZIeSDuLJ2sPtaBzvU6SazGNUhYPNlWN2utqnuu2coA" - }, - "address": "noble1v60nl7wzelzush0c0vqata60pjffc0rx3an73u", - "percent": "0.01%", - "airdrop": 25130.459073675323 - }, - { - "total_amount": 4241355761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Ce7szrqZ5wBOOmqv3f7g3vxuHC87l8I/7RJXEeGtTQ" - }, - "address": "noble1v6umul8nun2xaml2y24zrhwc3gx2lv38payrmm", - "percent": "0.02%", - "airdrop": 74502.56107419342 - }, - { - "total_amount": 2025441329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arw5gOzH1sNmNySqU701u0pgWvfdBhEnUbMsr/k98iuj" - }, - "address": "noble1dxz5hhlgsvr6ckdx8tegwwsme0c3f5r7dlaq89", - "percent": "0.01%", - "airdrop": 35578.379843439405 - }, - { - "total_amount": 291928085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ulFcqQMmrpCPt63Nk6seMxeZkwXtfNgqOVzzP9YCq0" - }, - "address": "noble1dg372gvfs544dlppqm8qedjaavlkvvlcapwecx", - "percent": "0.0%", - "airdrop": 5127.933426847668 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsWIE/ZACVXptnpCXBhpOdCSBdDGMAiQFKY77Sg8V6EW" - }, - "address": "noble1d2gsye4hdr6st5zv42jf4g42xgxzgj4xdnpnas", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHInF9N7WY2bpT74Tw5xwH5mcL5CXs0fY+Zv2d54L3v" - }, - "address": "noble1dtyk0z4mmfqsh78q59p8h2aujnldxu9nxeuzgd", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 106575089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHy9ot+IfIXASmRv0FimJh7u+AWnLiXRIYkNWxoPlNK" - }, - "address": "noble1dtym3252rkn7666xf48a0qs96cgav4rz6c7uc6", - "percent": "0.0%", - "airdrop": 1872.070518163284 - }, - { - "total_amount": 63737209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3G1mFraimZw8mvuXoim5DhB/JgNTm8w5q+K/Woj+OVU" - }, - "address": "noble1dd8mxyd5606xdxm6xxm468vgm8qfd9heh500t3", - "percent": "0.0%", - "airdrop": 1119.591369789159 - }, - { - "total_amount": 2141794919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzaisOe8cLt4ONQ66G9qi/NxayKTmcSitgQq0vgwnUsq" - }, - "address": "noble1d4dnjdelztk287cl3kk6yxyyt8y4z87wx4r67x", - "percent": "0.01%", - "airdrop": 37622.21698742207 - }, - { - "total_amount": 422353099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An9JOWyLaPLjOzUGeF0dZK5BNVahHTM+Zuq9+k4yHmLV" - }, - "address": "noble1d4exjfqcfntgxajxklgtvyhekysn7974gtuwje", - "percent": "0.0%", - "airdrop": 7418.945574540396 - }, - { - "total_amount": 7845258147, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuNZPag7m/PNvcdxQGcFrbPzHLqiw361WhGstHWabK1i" - }, - "address": "noble1dkc2mfz89srsjtuwvpq3v8ha6lppkckculzszp", - "percent": "0.05%", - "airdrop": 137807.7806191559 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/ooN0C1roRJLakJWyc8C4QtEJuvVNpphJEjSfC2/M4" - }, - "address": "noble1dhtv3q7wpew43f23yeempzyddvy7drjyt2hpsj", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 52694983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aru1XBcCv7sVYF7dGmbd8zY9xPaHbCSE+n7OjBqqHDfK" - }, - "address": "noble1deykmzl98l7lnnnqlen9gwfgsuld46q76jjg0w", - "percent": "0.0%", - "airdrop": 925.626476647047 - }, - { - "total_amount": 312077878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A18raPtYg2gCwKcRA4p2fgIjXkXBfwngPBJbteC6OXpb" - }, - "address": "noble1defk4vkfsj2g9c2fat9pn96yu96xlaz78rmat4", - "percent": "0.0%", - "airdrop": 5481.879492258816 - }, - { - "total_amount": 261777571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw7DWvG4pN3TPzDz1lHIl+kRDBxlyuycs7qEGi3uL6eu" - }, - "address": "noble1delma8qcq9sxfenmyndmd3xgt0xg9rj4gmtwxn", - "percent": "0.0%", - "airdrop": 4598.317276427477 - }, - { - "total_amount": 241082934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRsVIrSPC7Xdbo+oY1QjSOeWOwdgHM/R4z0mwXzkD4X" - }, - "address": "noble1dmmaf7wvw4ldcr7sg5xxh497l26h7nxvfyeej5", - "percent": "0.0%", - "airdrop": 4234.800621876138 - }, - { - "total_amount": 50100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArILeTvoEbPLRe9de4+y4HKHl0Vm0tVG9w2AY4jDgiND" - }, - "address": "noble1dukn56adq5pk7r0r3y6zgvur7epyg2k74292ez", - "percent": "0.0%", - "airdrop": 880.0436747463615 - }, - { - "total_amount": 187161885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4iYpBNZCvW2eBuCR7EhJkTvykTBk3yWQWuqBWtbSnTh" - }, - "address": "noble1duafe7q2kaehevgn5wyd4u0zqtgpgxzx22ttj4", - "percent": "0.0%", - "airdrop": 3287.6373861847487 - }, - { - "total_amount": 583004352, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnpSWYIgwZ4KLChJHiJhmshrlw83yl5KZoxTIbXI5mTB" - }, - "address": "noble1dultlt37nav8y6l96y5tzq3ghz7mfr3ltjhh5u", - "percent": "0.0%", - "airdrop": 10240.904038467092 - }, - { - "total_amount": 2055628254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsAGoIBUVBeluY4LP1nY8GtRUsBZ266hLFYJFEuymJbr" - }, - "address": "noble1dl34yx429w7q5e68tlc9w3ahgycqc7edp2634j", - "percent": "0.01%", - "airdrop": 36108.635580091955 - }, - { - "total_amount": 10581277982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3IAepwxM4Z+0ZNa5QYwFqPYOJPz3RFCbTX9q2TnxoDP" - }, - "address": "noble1wrrddr06wephn8863gja77y7j2fq5y8j8dzyeg", - "percent": "0.06%", - "airdrop": 185867.9991774859 - }, - { - "total_amount": 50788186, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnTKZTX/65MoholIxaIK4H12cVIPaRdwBJXrC8Cjutgk" - }, - "address": "noble1wy4zfasw8u0sazdggxszfft426fn8enl2a634c", - "percent": "0.0%", - "airdrop": 892.1321724778785 - }, - { - "total_amount": 61375746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwLxdFYnCypaqnpw01D8zZYU69KHlkqeBOBB+WnNwJYk" - }, - "address": "noble1wxpq0dgl9rq56n4mv2zmylxjx3cwrzmn0lxvrq", - "percent": "0.0%", - "airdrop": 1078.1105199628603 - }, - { - "total_amount": 1752857378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am37IgRnoUa3Nvp2q89sIpheTWYgrlFyMbGuUhCUA7pe" - }, - "address": "noble1w8vp36sf9mwh8pnulwphdxktq05skhdh77w27m", - "percent": "0.01%", - "airdrop": 30790.24048386012 - }, - { - "total_amount": 1419939959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2E+oe11YhxEj7uAI/dIjkx1ihLi8RdLA84JG0iQRWsj" - }, - "address": "noble1wg22nfxllce99q4az3ts06fh8y299hryusm2ry", - "percent": "0.01%", - "airdrop": 24942.29899076962 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agm4jkx/ujSn7l865ZEkdqL2atTsE6xP1na17MmDULUr" - }, - "address": "noble1wffp6kduyxwymyuaplq06c47qmtd5p7x6rjzwy", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 77375000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An2C75Qw2W+WZ0GzTL/RO1zA07y+NPcoUq8D7lPct2Pz" - }, - "address": "noble1wftezhyeg03jk2qkfk0kad8q7ns454957mwapm", - "percent": "0.0%", - "airdrop": 1359.149288093807 - }, - { - "total_amount": 54386397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wY7jhTp9iqc7Is4dORO9hYj19yEXIVcXcjUhiE1Suc" - }, - "address": "noble1wt9mn7hhu7rlxv4mrn8uxl3phdh9pz8cm60laz", - "percent": "0.0%", - "airdrop": 955.3374186046806 - }, - { - "total_amount": 279360117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah7r59XchmVzcvSb1AMrirskDxPJyK2S4y5W0R5RpeVU" - }, - "address": "noble1wdv7fp49uvrudh3qvx0trywgp2y9l8tp9s7aaf", - "percent": "0.0%", - "airdrop": 4907.167743358353 - }, - { - "total_amount": 162606469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHTsk/Kb7trd6oHPRDNuLY+lLRKIu+cc/e5KDYVhgN6" - }, - "address": "noble1wddy4nkpzy7u7f9trsgs0slq2nrs4ndmtcakcr", - "percent": "0.0%", - "airdrop": 2856.30328375829 - }, - { - "total_amount": 214831416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuuQw1igr1TKr+GyoSaWNSGoRPfqRgiRpk32SZP+N5RM" - }, - "address": "noble1wd02ktcvpananlvd9u6jm3x3ap3vmw59nq9saf", - "percent": "0.0%", - "airdrop": 3773.6732292934985 - }, - { - "total_amount": 2000615914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxAsgY4DdVnB4sOU7u1sGjenQdX8asJA4ucKCnDiRJCn" - }, - "address": "noble1w5w6vywznpu2jaaez5x7tduwe8p3k66evxulp9", - "percent": "0.01%", - "airdrop": 35142.30300823574 - }, - { - "total_amount": 105614151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2KQkZLhCjCLkHp+NSv3zNw+uiYMnBuNsjqwpTwL0Rs4" - }, - "address": "noble1whejvdne3cj6p5pnap8cnvgnlxdyd4dxxlh4su", - "percent": "0.0%", - "airdrop": 1855.1909291668085 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq3ctV8WJvtpbxfyOO9fIaFdRH4dFpWZDsDexu4YsfA2" - }, - "address": "noble1w6vkzz90myudns2pvgjrx9v27ru73ax4j2vry6", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 128998006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZjff0seiOMEQvA5G3139koYHYpItSX0hZG42cCaJlq" - }, - "address": "noble1wu7y8sfs7c97fke02kcr2f9rt7ndl0cpdeucsr", - "percent": "0.0%", - "airdrop": 2265.9456933172296 - }, - { - "total_amount": 52015168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/9ace1Wwjt+Q4I6J1SJI0/YFCc8E5/9vIqeEOUaymy" - }, - "address": "noble1w7y4arj8vw9f72cuf8k385ydwlpp89cyc24f3z", - "percent": "0.0%", - "airdrop": 913.6850217419033 - }, - { - "total_amount": 188169560, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A397sf7seZawUZ4uFvvIBv9zlrl81alvCZjK4NRj0ieC" - }, - "address": "noble1wl5lntmpk3zqf2dar2sg0z7hh6g5hqw4a58k5n", - "percent": "0.0%", - "airdrop": 3305.337945265588 - }, - { - "total_amount": 1061186779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxxyQw7XG1NYz+M2yWxLZpr3MAy7AAUIpSh0s4lLtWcS" - }, - "address": "noble10vhmk3s30mp6p2039udg9ugveds8ctdazrrhd8", - "percent": "0.01%", - "airdrop": 18640.533185297707 - }, - { - "total_amount": 110483309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvSaq3hDnsK6f1hp2Ru+HcLczCx4YslOU+cWyR8d7UsZ" - }, - "address": "noble10w5uu9v5p64erve2enp8xprzhttpgy964tfdt0", - "percent": "0.0%", - "airdrop": 1940.7213024051448 - }, - { - "total_amount": 327185733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AimMXCOnAUtTLCHVB2izUOBoQOfJvqcOUxb0ZgKb163k" - }, - "address": "noble10shzpnweqdpcnsn3q80lhvyuz5w3sm8rn9e967", - "percent": "0.0%", - "airdrop": 5747.260175526984 - }, - { - "total_amount": 723016697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwH6sFWyPexQ12S11CkwVBgaU5RCxKXGGu/MGHZ9ggPB" - }, - "address": "noble10552tcht73k3amgn6lmywqpc9t6gavy4zyhp2t", - "percent": "0.0%", - "airdrop": 12700.324769078976 - }, - { - "total_amount": 82277704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBVffGj4Ie1nmJTHXhjriKvYmsPRx/jD6/KKeuw/fgH" - }, - "address": "noble10548flh6t2mzspekpwka4xgl05dr79sr8x00me", - "percent": "0.0%", - "airdrop": 1445.2689217136408 - }, - { - "total_amount": 72289962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ys53wwr/Ov7BfJ0NTG7l//lZCqOt3XjrY960mwfToG" - }, - "address": "noble10kfuu9tetmu75v9mgpqlzq0rpexmk5kjkdt6np", - "percent": "0.0%", - "airdrop": 1269.8268224701565 - }, - { - "total_amount": 623142162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A64I2F8yW9+W0rsFgqIhLI0FSr/SGbobMlI5iO+D2trj" - }, - "address": "noble10cupf9s43mgjqrte5c4jfnzt5zqlj7whc6e8v5", - "percent": "0.0%", - "airdrop": 10945.954453809833 - }, - { - "total_amount": 65776920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnxUs557Tu9EX4mJl98Da7WxuycYusJ78GxaqsclA88J" - }, - "address": "noble106tepy2xlkdxtpqu3hfhdls2qp4f6qv2l3lc6y", - "percent": "0.0%", - "airdrop": 1155.420406991965 - }, - { - "total_amount": 439935297, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4MDb6z+G4BAekS55/H/03/fsqX23dr95t+E6PiwsR7L" - }, - "address": "noble10uyma2efafv3k5z0k4q592hpv3tkdtfltvt5ru", - "percent": "0.0%", - "airdrop": 7727.7899285930525 - }, - { - "total_amount": 187435980, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq7axi44JoyqdYWOaVQK4zrGe5VnIyVdl03Aqb62ODw4" - }, - "address": "noble10lqlgfkdeajkyvl96n97655t9cjw6wuynd3sld", - "percent": "0.0%", - "airdrop": 3292.452068241228 - }, - { - "total_amount": 1252156719, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjyWG/VgzvhzWxUO8/U1cDlOxZRMtZCl+xFFA3ZcwOmL" - }, - "address": "noble1sqylq95gss5gr2mvf0ssezwqr88wqc4gnan3qv", - "percent": "0.01%", - "airdrop": 21995.061883175793 - }, - { - "total_amount": 1417084130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxS1Ve5GSh2MJOe5auz9DnuHk5d+xeFoMoBUd1Xe5hCI" - }, - "address": "noble1s9xp57kdmu7t54m7uf4wc4rx5hd5dwjxp5alfk", - "percent": "0.01%", - "airdrop": 24892.134235328358 - }, - { - "total_amount": 54118553, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPSF1xy+D8hG7oyjDeafvflriyFwzFm9WnlZz+KN3O5" - }, - "address": "noble1s8w08lhtpcmn0p5sxykwhxcy4r92j209qhu70r", - "percent": "0.0%", - "airdrop": 950.6325400015115 - }, - { - "total_amount": 100445313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7F7wH3jcai7Mb1F9W4EJfM5u1HBjcXBNPUL3Ft01B9D" - }, - "address": "noble1stgw7yr3y2j2vld03m3rdmm8y87cdrpwdpsth3", - "percent": "0.0%", - "airdrop": 1764.3964543626441 - }, - { - "total_amount": 57643582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4sDoobi+/PwIRObOlU16NcB2DbGrtjWNgzUkRExT0F2" - }, - "address": "noble1st3mxct9yep3mef0lwp9gqcj8harcn02cmtu6x", - "percent": "0.0%", - "airdrop": 1012.5522899964715 - }, - { - "total_amount": 217107075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5tFyylVBKPWDjAFrb4TdacGnrCjVDbw7EsarfxEW/hm" - }, - "address": "noble1s0t27aejcypy806h3ve6sw6lhsh2v2yx9zye4h", - "percent": "0.0%", - "airdrop": 3813.646868192294 - }, - { - "total_amount": 76211242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A157p5Uyxijb59yE8fEWtbgOtruSjn39FU8D1BkhGUsL" - }, - "address": "noble1ssaf3wh3ql2jllhuxlffzda0gzw780qecg94hm", - "percent": "0.0%", - "airdrop": 1338.7070153026796 - }, - { - "total_amount": 3163621629, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anma8WZztatHQWEZ6PkwI/PFfGJ8sw5kdq8dGYzojScF" - }, - "address": "noble1sjf0djgcyj4ce0ylaacr8rzzjq9ykd5glnlcf2", - "percent": "0.02%", - "airdrop": 55571.361355134344 - }, - { - "total_amount": 140050255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azl0ka1mOCZugHIDXQew24RBmKmCYZoAiqwtnptJIyxC" - }, - "address": "noble1s4nm8yjnx4l6zvqut92q993ddtd3uztv7ats8v", - "percent": "0.0%", - "airdrop": 2460.086647891517 - }, - { - "total_amount": 495000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AriDWTK/DuFxCvnNEORzpx2U/W+JFfBGhDW0RG7Z+Yp2" - }, - "address": "noble1s4mnrsc75jjnkak4xndwtkuj8e6zrg4eqwekvy", - "percent": "0.0%", - "airdrop": 8695.042295398183 - }, - { - "total_amount": 255680231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aso4cJ5cD6W9fpyt92YV5TvLjk/ukrhM/9rIXYAA8RGx" - }, - "address": "noble1s6gnqsafdr7uvz6smk08yz3fes6z3czp9pm880", - "percent": "0.0%", - "airdrop": 4491.212975034702 - }, - { - "total_amount": 58647365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkD5QnnEyX5Hq3EQjtZrjNwWJgL0dCAdB+3jnz+Ge1V3" - }, - "address": "noble1sm7c84n4fryl39490zf3gr9550cln6g7ryhdja", - "percent": "0.0%", - "airdrop": 1030.184483209404 - }, - { - "total_amount": 615346134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9urLchUS2H3CmIjUg5NnW6BQshyDUaKm7vTy2wJzTis" - }, - "address": "noble1safxn34vsdpy6csyjt2ryqqsyjp3z8s3q7yalw", - "percent": "0.0%", - "airdrop": 10809.011437252037 - }, - { - "total_amount": 1408042673, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap2EKKF+i+qgK6+5pQLzpHYfd7cQcLpnbAShbiLOyxee" - }, - "address": "noble1s7wj8l9ltghel6fejllf02eyjkrgqr8wn6wplg", - "percent": "0.01%", - "airdrop": 24733.31433426366 - }, - { - "total_amount": 1363605413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkYX0vRrmvWQiB8QaiM5YTq121tBPGBGDIQRSJeqkRiU" - }, - "address": "noble1396vzktm4nje2kzkhwkkdwvzaxr9tmrmzxjlsg", - "percent": "0.01%", - "airdrop": 23952.740889432134 - }, - { - "total_amount": 52344711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2razUOZ6CA7hL90WrBl63aXSYX7w2I9LRdhwC2o/P3t" - }, - "address": "noble13gq2nw9quxge28g5yygp88sv6pyshlp04255da", - "percent": "0.0%", - "airdrop": 919.473689061403 - }, - { - "total_amount": 109320000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AumW73wIhezsYzaOI69N8KDmiHxjhMYgC2/9yf1j18MV" - }, - "address": "noble13fgv7mzzr2mmyv8tsf749xvft2z4qgapt25a9q", - "percent": "0.0%", - "airdrop": 1920.2869166321805 - }, - { - "total_amount": 126252937, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0UkFc1GnDp6QUAqZEtIDO/0mF3S/KyuOscLg0tnSPF" - }, - "address": "noble13fjvyrtzrdgjcrccr3kf3knk6mvl9gjfl0pqfd", - "percent": "0.0%", - "airdrop": 2217.726519461095 - }, - { - "total_amount": 91100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AztYc+raLE4rgPa2PtKoEkEVaoc68gNx85Jivr7FQLkI" - }, - "address": "noble130grss6q59fgcwtalt799tjl68cgqtywp6m2na", - "percent": "0.0%", - "airdrop": 1600.2390971934838 - }, - { - "total_amount": 228467273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqObeU3i5bJYKdaeadUFJNjaYfV9Ck3iQSfcB0RdMXma" - }, - "address": "noble130kzrel8jfd0tf92paq7mgxsnpnp9kmdty3ngx", - "percent": "0.0%", - "airdrop": 4013.1971754530978 - }, - { - "total_amount": 1195130217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApfDVI3jGETyaj2iWwgEhGRrnC0csoUGwR43qqlrefKC" - }, - "address": "noble13ss3q47lvqe3v3m5mhms6cdd9l53366ym7g9rc", - "percent": "0.01%", - "airdrop": 20993.349061259414 - }, - { - "total_amount": 162020855, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fDxe9RNtOgBT7rSVbJrjBrTtBdlLZBHNLRGCKt9Koo" - }, - "address": "noble13s7vekg5x3ycj9d5lus4mgh8fh4zylvsgmteqe", - "percent": "0.0%", - "airdrop": 2846.0165393163156 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApylbuLBDZznPL0TSWa5DISucsaZeZEJxwTDFVzEEv3o" - }, - "address": "noble134q7ep5d5tx426zytxhncaztcxgrd3zs899nhk", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 59151811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwsNwNRG1YzwnZYwzBgOoNePCW9uaJ7SgBFVXgftnPNm" - }, - "address": "noble134zmp4x45ayfc8dmkp4vxdzh7wg72e6xpycct4", - "percent": "0.0%", - "airdrop": 1039.0454515038373 - }, - { - "total_amount": 777388328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvhfsGkTh7qkN6HG3Xj1+eFTaCPO4kynODGQsjWz2DKd" - }, - "address": "noble13krpv5hha9ks973xpu2kle4kksvpp0ffjkqqxs", - "percent": "0.0%", - "airdrop": 13655.402811937121 - }, - { - "total_amount": 115387889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiHQK5y4O5bNMK8swiMPU+59DcycLP7O4yO1Rz8NtJ8y" - }, - "address": "noble136pvlx0etm7mpsmxlpaagxphs2f37d4cpj3jnn", - "percent": "0.0%", - "airdrop": 2026.8738893569914 - }, - { - "total_amount": 1000674375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXvjeTt/s/nhrDr7V10SYDySdZr1q0eWQOyXdjvEZLh" - }, - "address": "noble1365qsae24nh764hd23fnqkwsjjrfhcdr707ntf", - "percent": "0.01%", - "airdrop": 17577.587908174024 - }, - { - "total_amount": 69876325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A66po+KmwRr3I40Ls0rFnsxlDKVmVhIaj+MNACillXL2" - }, - "address": "noble13u5y9vkaplwzl4qyj9y855wjwp4krta934xy53", - "percent": "0.0%", - "airdrop": 1227.4294976201807 - }, - { - "total_amount": 193913021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApKTsC0iQXJ7mJhWAITO0+R3i+8U37wgjoI1+3SRJTDR" - }, - "address": "noble13uup3md785lsd74aws4hx2et052mferw8tuunh", - "percent": "0.0%", - "airdrop": 3406.226099441285 - }, - { - "total_amount": 119022793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15kopyGwqwLlQBAZBR3K4PIk03+RHwD4U8NLrb8YQko" - }, - "address": "noble13ad8hy45ztm7y6qtwtn8f5lwwdp5fduw45x33w", - "percent": "0.0%", - "airdrop": 2090.7236752553995 - }, - { - "total_amount": 90231348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArnKKpuzlAvMig01Ri8QNWKjb0cv1o0b+IItX7sPEzSK" - }, - "address": "noble13ahyuh4gxv7uepfh5ygxau4frncnt0hk5u6ksw", - "percent": "0.0%", - "airdrop": 1584.9805802642265 - }, - { - "total_amount": 319699915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHBLM75Hv7K/MS4/QVTH0D9Q7UPu2P7RK7tm8FT9Fr2" - }, - "address": "noble13l9ph442yjtejq8rj58rpjmkd7lgct4v9plx8p", - "percent": "0.0%", - "airdrop": 5615.766227798391 - }, - { - "total_amount": 123863444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arxr+iI9VEDlYtmROhCZsnoYkDK8U4w6+kWbi1Blhhec" - }, - "address": "noble1jqfxtyzlv5h68yfmsr7mnk0ke7x5gqq4d0n6lf", - "percent": "0.0%", - "airdrop": 2175.753301886231 - }, - { - "total_amount": 490473038, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhqYMZE+QwYuYGx8LehI/Moo3aS2t/tgU2vkhVxHvhsJ" - }, - "address": "noble1jpk2snpewp5cjttm5fe6apedk0caa4df7s4fn8", - "percent": "0.0%", - "airdrop": 8615.52284881301 - }, - { - "total_amount": 82825767, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjVpANd+5bYHhch0JEbdKWNtaPTos58OY2YkSgYFCkfE" - }, - "address": "noble1jrrumly8xrjqcerq8un8yhuj2wznyvl8hplrum", - "percent": "0.0%", - "airdrop": 1454.8960549773637 - }, - { - "total_amount": 118200000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2d4lk8LoDivDpcr88ieSh4q/bJ/o7631Up3V6zHgqxx" - }, - "address": "noble1jrjt4eg8txy5mfce5ge87tug5lwvrf9cw8l98q", - "percent": "0.0%", - "airdrop": 2076.2707056890204 - }, - { - "total_amount": 1190999655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxdTMO5xDq6SVLoLtniBui4lBBU8HvTjNBepcHUQaMVR" - }, - "address": "noble1jgmsea4wes0g4wspkfmgnxkswz7nruq6qa08l7", - "percent": "0.01%", - "airdrop": 20920.792674807362 - }, - { - "total_amount": 1085233745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5yxBB5Wy1KCfTJptx9/ykUE/ckC7B14nYaeQwBUUZ1k" - }, - "address": "noble1jf2q6l97huc5xhk467l3skuj0jz4p2l7kx2c70", - "percent": "0.01%", - "airdrop": 19062.93598619872 - }, - { - "total_amount": 59187537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlfmewwwfB2VZ6Wuy8T4Zgpoxc0CxsZNlZ4Hcf5x2uws" - }, - "address": "noble1jsj9hewhd8dvwfckmgf632r70ajaqkdvvqphj0", - "percent": "0.0%", - "airdrop": 1039.673005202919 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq7LwLix1xkENe2pDQSJ/p09Rn0xxzLOIsRUvdDnRePR" - }, - "address": "noble1j3gzhe08qmeedrte5ntheezjjmg5s7l4avk4qp", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 328519736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzzMEoHequGDK1jgajOO+fAfFK0TkeeUVDy+F0md6ob+" - }, - "address": "noble1jnpevf3zg3wc3vyqssxu96lz899g00skkzfm95", - "percent": "0.0%", - "airdrop": 5770.692928066758 - }, - { - "total_amount": 158302536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArOg4ENyKzW84SyRtGQ86s3kvBb5tXTsE6m6j4+BNCM7" - }, - "address": "noble1ju4dw5eqfmdgv9j7k2z7jttjy68n0vl9ch4aw4", - "percent": "0.0%", - "airdrop": 2780.701507048068 - }, - { - "total_amount": 640614586, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auh+1tNcZUUtRz90T6tybThsQznsH4MRaV/ii7G7unLI" - }, - "address": "noble1j7as6nn79jjaj8wtr6wx9mxta9wsk9qpq42s88", - "percent": "0.0%", - "airdrop": 11252.870546098982 - }, - { - "total_amount": 235920698, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Evp/FSGek8+aH3kT1p6FkrjvnNMjtwPDLxSiXWR4ZM" - }, - "address": "noble1nqx6avjjr54p9nqdggtywwmtmfv6wah73jy5rs", - "percent": "0.0%", - "airdrop": 4144.122116100731 - }, - { - "total_amount": 298980407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGI19zVZQFt702BNoOYDP7fzC1bWWnK9OzLMJidoxwO" - }, - "address": "noble1npeewzxmdua48rm745lx4aj9zevlkpp9yet7hx", - "percent": "0.0%", - "airdrop": 5251.812695677501 - }, - { - "total_amount": 1044340000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A06obXJR7gyUhTwUgIssurZKuWztg8Phbm0X2Cfcn5i/" - }, - "address": "noble1npu5sew9ca9z959deaz6epmtyl2ndg24th23gt", - "percent": "0.01%", - "airdrop": 18344.607011668966 - }, - { - "total_amount": 894500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag35Td/WOQBxLFxvtjlO6PEb9F3TI3dhO03fjZj8dKRN" - }, - "address": "noble1nr2u2x6rnrd6hvxel8jd2vgm8s4lsahtjv3skx", - "percent": "0.01%", - "airdrop": 15712.556228754898 - }, - { - "total_amount": 2847079807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1fkfKIPjrWA/KzrdEZkxFy4JI40s512Wy5xGX7V9CVT" - }, - "address": "noble1nx33rr572h3jz2w34lmf5hkvasckkpnc04x62p", - "percent": "0.02%", - "airdrop": 50011.069374220395 - }, - { - "total_amount": 184762726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZOy0ySc18uRd+oMM9Hia1lu8N4EohdDQIN6MhNHDaI" - }, - "address": "noble1n8w2y3uane86hm0fx7wn9xau75z0l8qagg9fy4", - "percent": "0.0%", - "airdrop": 3245.494378147607 - }, - { - "total_amount": 139804499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsGtU5vM/o+rhK8LQOuANdwSYE5YYIPxfj94zGRWLAJ3" - }, - "address": "noble1n8eeg47mhzth3z0sgcth95lmsdcml26a0pphmy", - "percent": "0.0%", - "airdrop": 2455.769761397885 - }, - { - "total_amount": 1401508386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuOQysFkoYlaCRaDLHEM/87LAxvVn51W86UiGthJ7KOn" - }, - "address": "noble1nwyeyqudzru5l64e83dnmq79q4stqz7fxupyvn", - "percent": "0.01%", - "airdrop": 24618.53473459645 - }, - { - "total_amount": 731000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah2ULGTMuWr1RZ0V7rGnqOqvUaz/kBtZr3XP2QudvQLT" - }, - "address": "noble1njfcpdtl5y025syt0f7h6t7eycjzr2xpprhnun", - "percent": "0.0%", - "airdrop": 12840.557409971861 - }, - { - "total_amount": 136178465, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApBAqNHplN6cl1mu9MAjf2FQRN14p/ucgnWwjJwGyl66" - }, - "address": "noble1n4wjmrv7ghyjahyxys035y32xrhrepvvgux0c7", - "percent": "0.0%", - "airdrop": 2392.075783631113 - }, - { - "total_amount": 3035433975, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtaIV/07gq2b2YY/vSTvFagAWan9C68aOOOPNTb7HnlB" - }, - "address": "noble1ncslycevjunpxcupq5mtw02ndmf7kle2d06dml", - "percent": "0.02%", - "airdrop": 53319.650095987134 - }, - { - "total_amount": 346460602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+v2/Jf0JLTrJNvVcVF2gYoU3g9e9QQYv08s6UrAD0EP" - }, - "address": "noble1ne5ufd5f3fwx5lcfc44qfqs4djznxwzc77wrs2", - "percent": "0.0%", - "airdrop": 6085.837551674982 - }, - { - "total_amount": 1640000080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmvltHQowarXSivQEWGT0YrFWZCZBgEx+khXsvbMF3gu" - }, - "address": "noble1na92he77g925497zdveyrthlu0n7rxa64zf4c6", - "percent": "0.01%", - "airdrop": 28807.818303144246 - }, - { - "total_amount": 678909525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5KJfniu4vqh9cF2SxN1CcfCkEKPJ6W/5CuDl6EnCuaM" - }, - "address": "noble1nat09n7vfkgrv3p78vyan203umugmrkx85dtus", - "percent": "0.0%", - "airdrop": 11925.549564896342 - }, - { - "total_amount": 110500006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3FEdyuAzjB30m77XaNK+/nyPUDaKctgSlSsxGMHsA+j" - }, - "address": "noble159txv7rlqmxgpl9aszjykc8h70jn304dyd8q39", - "percent": "0.0%", - "airdrop": 1941.0145975995008 - }, - { - "total_amount": 89590538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3oPfTHlLH5c8sDl480ObNuJ2cJVfqcA28v0DENgufZ8" - }, - "address": "noble159h94tj96866d9hfyl9jjfpl7cq8sz2c8jjq6u", - "percent": "0.0%", - "airdrop": 1573.7242771262183 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A92+kSUDxoq9AYV3IZkZDDdYsICFgWsd5nKPuEHnKWk7" - }, - "address": "noble15xh6nc0hwhh8ztrnr6zvkwdl98me4rwzj7sts2", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 412421836, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApE/8HPMkmRHWpootri2cVHFoJNZlG6oSGr3YkYmQ8XE" - }, - "address": "noble158vpk2nzmql4w2m9puddf9m6fq3fncdaewmt82", - "percent": "0.0%", - "airdrop": 7244.495570839946 - }, - { - "total_amount": 275337676, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Allz//jaASPNhwcaE8a5pu0xKQn/BgISnOXKg/BOs+Ky" - }, - "address": "noble158ddh954pzt3etjh0yqe8lp7ax0pz6pc5shqc2", - "percent": "0.0%", - "airdrop": 4836.510582498266 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoRQm7tfUcelzga0OZi5tu97bWTtZOExcSili6yRVKsH" - }, - "address": "noble15tvyedv30t659lhhdal9q20rq4a8w0tdc0shwn", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 53839056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwWF36Etp+KhXp3LvPdswyMpaTSdT0MWkBkPfRj8SdmW" - }, - "address": "noble15dsht5spjvugy60wn2qkkxku5ld5tqy5dylzmr", - "percent": "0.0%", - "airdrop": 945.7229678066896 - }, - { - "total_amount": 3470044926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Dt8YkLtJjPmCovzFY25ioUcfiU961nXMLPEeNTJrKR" - }, - "address": "noble15dn533wjy7l7l2eaetwz3tltgvkaeakvrl9wap", - "percent": "0.02%", - "airdrop": 60953.91393636738 - }, - { - "total_amount": 77490714, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AloG+L/FSZe+EDdrhugwcCRvv6ubT4ZkmEOzlSp/ae6r" - }, - "address": "noble15sjxfu3y3crn6t6jj97ge33e8k00hhg8m8nh35", - "percent": "0.0%", - "airdrop": 1361.1818903648568 - }, - { - "total_amount": 3540281616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0F6vZlk1ks1IeOeq3D1FsTgFtu/be6WNpLQfHpNuoES" - }, - "address": "noble155lqp7fg56krz5wxgr60eejx2j8ynd8qmfhjy0", - "percent": "0.02%", - "airdrop": 62187.67351260733 - }, - { - "total_amount": 357244616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak/oJ9f+pJoxD6alrlP2lUNAk37lMpyxvman02NCiFK6" - }, - "address": "noble15kzerjgs7vf9k507c03r47yr8kmjcmes6ax70k", - "percent": "0.0%", - "airdrop": 6275.266759440975 - }, - { - "total_amount": 4352773849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4pI/yszN2CEUBOLUChNNWfHx8U0XA4wZVHnBsYgN7TB" - }, - "address": "noble15kgjcce0c92gjy304hq9e089lk3jekt83vvugp", - "percent": "0.03%", - "airdrop": 76459.70246334978 - }, - { - "total_amount": 107922947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2tQ1H1IlaHYeAqUO+jXwF+ri+7V3TK5YSw7yr7VAiP2" - }, - "address": "noble15c42ul69adw4dewz96xlkl73zfzgft9gvsdr6p", - "percent": "0.0%", - "airdrop": 1895.746644058619 - }, - { - "total_amount": 76609170, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax2VWAHWCdk58egYSbOISTKGxrPeyNZXDGmgGFN27XEr" - }, - "address": "noble15en8sl2rhwzx3rjx0yu5nqfcag0h5kcrz2x5yz", - "percent": "0.0%", - "airdrop": 1345.6969158895952 - }, - { - "total_amount": 592653175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwacddK8pYi/alaoZ6gA+9lMe0ex1ZKDG+8XFsjfF/WV" - }, - "address": "noble156v8w003ztexdzp0l0rs5jpenk68jnprgdvqd9", - "percent": "0.0%", - "airdrop": 10410.392773993983 - }, - { - "total_amount": 106455240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+6B94RF5K52tr2+fMWQy+gLahg079chZ3T2/AB8xnFb" - }, - "address": "noble157g0sp3wkq8lkywk9aguu266f46np2tlle2hpt", - "percent": "0.0%", - "airdrop": 1869.9652815490192 - }, - { - "total_amount": 58725551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkaqnNfd414FvN+x8l8fQeuilrxcDvZygU2+hqd7DGA3" - }, - "address": "noble148y8p596j09plsj5c7nzjgt69v550t0gd4lgml", - "percent": "0.0%", - "airdrop": 1031.5578783142687 - }, - { - "total_amount": 8491411236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoLHSXOZubbTCbjE+GCYED+F1TH0JMsttayTGAIg1fdV" - }, - "address": "noble14gsr8wml7v28vmthx9e3qqtp0zq0eugxqc2783", - "percent": "0.05%", - "airdrop": 149157.93908007952 - }, - { - "total_amount": 2326675059, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqJo331DK5sBakjt942904FEvW603GpgZWN+s78ry0ta" - }, - "address": "noble14fpfm5ypafzpgedthgecsd7dtzmdmk6mjt4vgj", - "percent": "0.01%", - "airdrop": 40869.77382960214 - }, - { - "total_amount": 5159916965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0LTRYJJxy8Ik4jhkyCE6t0mou9XgjnKRsBBYqSQdYLk" - }, - "address": "noble14d92r4svhl4qa3g6q48tjekarw2kt67nrsjwe2", - "percent": "0.03%", - "airdrop": 90637.7702048841 - }, - { - "total_amount": 60104370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/BCHWhh9K0QmMCVZDu2Fw795OMpqxqjVpeXDysfalJd" - }, - "address": "noble14wgfmh375slzsllq4u0lkxlkatrh48keedfrkj", - "percent": "0.0%", - "airdrop": 1055.7778571480035 - }, - { - "total_amount": 90399648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyzyBibvT+oV15oAPRSp+PGQZu1oEyh2W/yJZO0T+e0e" - }, - "address": "noble14sc9ak5whqnd06sk3sgryxcep788ryfwf0znm2", - "percent": "0.0%", - "airdrop": 1587.936894644662 - }, - { - "total_amount": 75511514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+WOa0bg0V69lfkRNkb2BnWg5Y6cnn7iGwvi4yiwdDCh" - }, - "address": "noble14jdcw4zg47lhxlgfcjqd0qxunx2s4467qjjqng", - "percent": "0.0%", - "airdrop": 1326.4157737768728 - }, - { - "total_amount": 60862123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0stigDK4Er96q7kh6bJFuNtBbJHEdcB3je6bu2dtGKG" - }, - "address": "noble145eems2hgm60s2e86yksy6c7hn4wxlxznfpa96", - "percent": "0.0%", - "airdrop": 1069.088350853993 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Cg7b0jxe0autiWZpieP+rbdgsNywBL6nkovfCK5wWX" - }, - "address": "noble14cw99h2gge0868v2wadh3hfz6sv6k4dpxydq9u", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 758211130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstnWemGcJK5qEDV7saaHgfj61THPzQX/IT5LpDqSKdf" - }, - "address": "noble146fu2rsj7lgne6gx7wqc3qdgtkjm2cs4pdwp4u", - "percent": "0.0%", - "airdrop": 13318.541099377071 - }, - { - "total_amount": 71969000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqvIsuQS2CTlgGtWGTtKG6Kc9jwnO7g7ClE2fLnmb+Z" - }, - "address": "noble1kzl5kv36tz30gs2tka9vpskfua5wesfedcvlev", - "percent": "0.0%", - "airdrop": 1264.188886782852 - }, - { - "total_amount": 285584590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkyrqkgN0N3BVEdEnT7ShAK9C60f7uINSj3dVlTIrveV" - }, - "address": "noble1k9fku57ytul97gswcegfyjflvexqj0g0lq0en7", - "percent": "0.0%", - "airdrop": 5016.505230230199 - }, - { - "total_amount": 532689898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amc/PSpHFgQfWfu7sXRZh9TOWe4/LiFicnA+nzsyqWWU" - }, - "address": "noble1k9lshz0mg3ar7p45ppcnx6nnxs63ser3yn52mf", - "percent": "0.0%", - "airdrop": 9357.093320083522 - }, - { - "total_amount": 855003168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjG+RCJ+Gri7ndrpz9pDIpVkDR4FjoAjzjeUp9hk0/M6" - }, - "address": "noble1kxw68jjrflrrvwds6m8m6k604spqmlgnlj4w09", - "percent": "0.01%", - "airdrop": 15018.765067594824 - }, - { - "total_amount": 57241000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwdyyeT3kz0lEaWTfL1sf5z86ikN4vFPb7kEyGTF9fSD" - }, - "address": "noble1kfngrld93jtymlrjftuh9zxk2h2vjcxn7frdv9", - "percent": "0.0%", - "airdrop": 1005.4806384462372 - }, - { - "total_amount": 2997540511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwF5SCaB7IBnC1zi0S+o5znwhtwUNGL3cGcblGBDPL3J" - }, - "address": "noble1kvnk5udxnuslc0j5x6zymcz3pqvxxvjn7kehaf", - "percent": "0.02%", - "airdrop": 52654.0232834636 - }, - { - "total_amount": 457784372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqxfzcTW7f+QMbYi9YOmoffiUO2Fb9UqBfa2rPTlgt3" - }, - "address": "noble1kwzx0d3t4m504xj8hluzcvvkyv9qqa7s2mnf2c", - "percent": "0.0%", - "airdrop": 8041.322175176355 - }, - { - "total_amount": 1003065999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1kiKVkkyo1rC7j+LpXuvfdC8kzDcBfyjqkVapIRaaoF" - }, - "address": "noble1k39f9vyh2fwumkx650xlem3q0pqktk3qlqnxlw", - "percent": "0.01%", - "airdrop": 17619.598558345115 - }, - { - "total_amount": 96255879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5M2/OesDYbB1I+cYB5EgC7ulpO0awtAIUIDyEeOJjSk" - }, - "address": "noble1khlp85mj5ljv9lgyam4a3l30jml8eadpw26n4g", - "percent": "0.0%", - "airdrop": 1690.8059375469288 - }, - { - "total_amount": 5080714875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtC52snISnU0nLMHanFSYl+5TjxA1NwD3KJcebLxUYLA" - }, - "address": "noble1k62gswwt4uw25svxg0v4hfmwack7wcuuze0yny", - "percent": "0.03%", - "airdrop": 89246.52672521958 - }, - { - "total_amount": 10319016809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8TmqOWQhVtjv8yPJE0xZGAx/+WAxn7FPI1hyLTKgZe" - }, - "address": "noble1k6496vg8vd507aukcqrr55nhwxjqmpjsgh0n5r", - "percent": "0.06%", - "airdrop": 181261.1870730905 - }, - { - "total_amount": 83518249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AroUjYQu9ZFfW6I5Yze8sWzNac2doiDnuu0vQsDHHGi3" - }, - "address": "noble1km26nq7cfqe3ljalgx2zzj6h3wppunfn09sv59", - "percent": "0.0%", - "airdrop": 1467.0600151365595 - }, - { - "total_amount": 2387285670, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap91Oo+4B/ibJUmJOFu2Unfc2IibGfbRHO6xhXwl4G+2" - }, - "address": "noble1kuxswm3tc0hlkryzf5djjle3duz2cem30lyrdc", - "percent": "0.01%", - "airdrop": 41934.44418555149 - }, - { - "total_amount": 747040938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atm4s36IMptht9cP72fPyHbgYKgICyVQ0epWoP5q6nZH" - }, - "address": "noble1kufs3d0p05cuv03z29udkfw3cjvfeuqt8qmsgk", - "percent": "0.0%", - "airdrop": 13122.328388492791 - }, - { - "total_amount": 15719334234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0/w8FU6+KOmeu66OxLMklZqbO0ZRvPAUtp0xI5RxTir" - }, - "address": "noble1kucpygly3ynswdf77ersas9ejdlp5eruszkvr8", - "percent": "0.09%", - "airdrop": 276121.76973763754 - }, - { - "total_amount": 171600061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7HPzdke+zmiPxO76s3v9LY84R7E4aje0wF1StFk1tzh" - }, - "address": "noble1hqxv0m9xm6sf2dv3dm05hqc8dvz05jw9yza8vg", - "percent": "0.0%", - "airdrop": 3014.282400581633 - }, - { - "total_amount": 817616655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah6Hg5qhRKrBX4mSGoGS/f0C15TXEAAl04voWifeHJaf" - }, - "address": "noble1hxqengug57qylg076e38hmyxu5m47pfxud46yn", - "percent": "0.0%", - "airdrop": 14362.043225549463 - }, - { - "total_amount": 63540266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag5I/fKXBpfwvUJSJg4L+2gJ4cvOrnBZL2ub8y24rdf3" - }, - "address": "noble1hxvmfuhqh9njvlekvfj9y4mtefwx8zuf6gpes4", - "percent": "0.0%", - "airdrop": 1116.1319198603053 - }, - { - "total_amount": 189819264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArremXoW1140TBjYHT0AEKORgvQ5JM+RiRP5DNFcLg6k" - }, - "address": "noble1h85ddc3hpspuug42xmyhtqs0xky0hagzqw2azk", - "percent": "0.0%", - "airdrop": 3334.316220123947 - }, - { - "total_amount": 136177205, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A64oxVgfpnhXIQPL6X2II1OIw6GEEEkffrpyW0wGIjS9" - }, - "address": "noble1hgat58ttzcxqus5h4kry88tj6l9z2u0vnzp7s0", - "percent": "0.0%", - "airdrop": 2392.0536507961797 - }, - { - "total_amount": 879500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1QpXkOKEawT1DMft51O2ylCeWGskRyP1jArzEi3m+b6" - }, - "address": "noble1hvkucfyhjxdhv4gv6kwmuzxyjn0qufqzpdqmte", - "percent": "0.01%", - "airdrop": 15449.070098591317 - }, - { - "total_amount": 118841933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApGBuvaB91VkPbH+jw260dxk9JCP5EbCQZf13IcPCA9C" - }, - "address": "noble1h3u440cpf36hw05qjnxrkd6awxq6tpf3yhlate", - "percent": "0.0%", - "airdrop": 2087.546735155307 - }, - { - "total_amount": 114381799, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoogr9C1HFPVc7RfD4HzcRFRu3KtphVMZfkrLeTIzlgw" - }, - "address": "noble1hnh5l945ppu8y47r9czk8s980x7en6hujahhxu", - "percent": "0.0%", - "airdrop": 2009.2011719772395 - }, - { - "total_amount": 84128494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1hSGyeFhtKfYIGtqR3Pp9Js6WLHFB6Kawte2Y0ZcLyc" - }, - "address": "noble1hkwtk4y957u6yx6aa8zcvmlmvn6qdzcuqs062d", - "percent": "0.0%", - "airdrop": 1477.7794213700045 - }, - { - "total_amount": 413739012, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Y1hDSTxyo08lYNW91Azybm7qT3S/BVsStKB2SK49mc" - }, - "address": "noble1h693ac64pj8s7qzc7k3n00sdwhwlkpry4ka58r", - "percent": "0.0%", - "airdrop": 7267.632744638901 - }, - { - "total_amount": 52491160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2jstwz0FsfdGzqHGbFzvb1uJOY37MGZS5V8CZCoQkEt" - }, - "address": "noble1h6e6jc8t3mhu7sc6v2d03cltmxf5gyzhce5rq3", - "percent": "0.0%", - "airdrop": 922.0461744131582 - }, - { - "total_amount": 55972227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyvgssMwNovbvNZqvdpTnHKcqY98JBA8Sp9rC2be4mJJ" - }, - "address": "noble1hu897mnumwydu4x0paa443fuu2p6l3rdu0rwwz", - "percent": "0.0%", - "airdrop": 983.1936992578346 - }, - { - "total_amount": 1187802065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Wt3CYeWROYw3yAfle+VA5d5pw3CPdiNMZCvwp2MaxQ" - }, - "address": "noble1hlxvgmhmfadndjv5ea7wcw27l3kpvl2j403j98", - "percent": "0.01%", - "airdrop": 20864.624633810712 - }, - { - "total_amount": 57801386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A72cSZl7eiHwG8gOfoiRPFxgbLYxUmfdCjkq0tHWGISn" - }, - "address": "noble1cqpaemyhsuk6d22fpv07s2u73pjgstjz8xkrl2", - "percent": "0.0%", - "airdrop": 1015.3242343487603 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzIXfkKko0I1W3gMjGxajiLrPAy94ZFmzAo8g1UPQOMe" - }, - "address": "noble1cp967h3tf24f65yht353v6wv7dfsmvmd28e8lg", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 2065809075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al7rn9QsulhtkHjyj/QUMqnmDEXSs7Q0jA5+q0e34S8X" - }, - "address": "noble1craaul8czwtwndm76fdfxh7ulja2u4nrjl3rum", - "percent": "0.01%", - "airdrop": 36287.46925523716 - }, - { - "total_amount": 146182064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmXte1zjk8pOpGPZ4G8qE6/BY3pcoYt1T6dECNLIEmqd" - }, - "address": "noble1c9gvcjf9ad6jdarh6pezwyfk0z8jc5sk9qrcjf", - "percent": "0.0%", - "airdrop": 2567.796422845665 - }, - { - "total_amount": 1428442371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsgiWpj2Rel6TXl8IqQ8Un4o1rW42Q+Ah9/XEBHvNIDF" - }, - "address": "noble1c80gtgwmjqpat8s9fq56468yvt8ma6ahdkshvz", - "percent": "0.01%", - "airdrop": 25091.650166432046 - }, - { - "total_amount": 203086721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An4BlB9h6PbB6eukofmjeJlMRO5oG85mm0CSVEbNV3T5" - }, - "address": "noble1c2sld394e9slmmsct6epngl3wp8xfnj8u83tqx", - "percent": "0.0%", - "airdrop": 3567.368946926728 - }, - { - "total_amount": 4560017992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkhVYG2Kh6nyHHKTocMulgacCNACR07kD/GBZ0uy3pm7" - }, - "address": "noble1ct5d5emhl06uhqla4lk99aenua478s3zdt78xq", - "percent": "0.03%", - "airdrop": 80100.09961255897 - }, - { - "total_amount": 85236075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1WO/8RYK+3ORtcQn6Mma5S519WP5gKp/crbv7fCyKud" - }, - "address": "noble1cvv9wm6l3alj2k5vfhy5e0wyrdgu6l6p8w9upc", - "percent": "0.0%", - "airdrop": 1497.2349034721851 - }, - { - "total_amount": 2523112089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A++FEHXZ0KVJJ2w08nXHAdbRPnFuAdYirfQnBc59LlL2" - }, - "address": "noble1cw3cfds4dryqzvazeruxlrjfck7qs0rwsd4saw", - "percent": "0.01%", - "airdrop": 44320.33601997064 - }, - { - "total_amount": 25159523963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4GQTknrNTY1NLbLRTEdMA4FOuu3PBSj7t8smzBpS+K2" - }, - "address": "noble1c0gd2gsfcsuez89ln0xwz5eyah40ynqslj98d0", - "percent": "0.15%", - "airdrop": 441945.70705125073 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3D57Qse1wf/HpNH8ikG5x6sq/rmPiUPhgc4tnHm+DlJ" - }, - "address": "noble1csfwaw0kd9z7cgn2w42z9ykqnudt4kl7xq6yqt", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 5842061119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7vJeETXAM5PITBY+1cB6d0wV4SVIGEHIzSkVf1AGJNQ" - }, - "address": "noble1c55xg0m9uggjamg5s92zluev5matvq0wsnesuq", - "percent": "0.03%", - "airdrop": 102620.13842829542 - }, - { - "total_amount": 1118477808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Yx1Q7a4emVb1Ae1c4jiPdRbutR31IYjjO4vxFujwSV" - }, - "address": "noble1c470m65wqxwnetyzahdhp8jrduqlsd77c4avkm", - "percent": "0.01%", - "airdrop": 19646.892620251005 - }, - { - "total_amount": 310917200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1xTpxgmkDzFN30L1+BqratVkrALhD6UlP++aYR3MFz7" - }, - "address": "noble1ch75mt5zrlg9ksclvrn085ycj2kw0r0q4mcf7j", - "percent": "0.0%", - "airdrop": 5461.491321953083 - }, - { - "total_amount": 157812246, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A01i7TduIynjXD+sl0e+F+N4NCIQVkYD9UpfZ2r8tILP" - }, - "address": "noble1ceeuek509sm74thdqsvmyx6vjzraw2ytkmt2fv", - "percent": "0.0%", - "airdrop": 2772.0891993975406 - }, - { - "total_amount": 79124843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxYMS/DkP/JQWIRQIJ4G0xGllw1ELg85Bzh3r7Czf/K0" - }, - "address": "noble1c6wu0lmqdk74k3qj4k4lyyhv8qyht0ajc2g9xq", - "percent": "0.0%", - "airdrop": 1389.8865787913956 - }, - { - "total_amount": 1582832008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ajTO3NjnNt14SA+0WDkq7LzHNuFZofTLTs3NY0Pz8S" - }, - "address": "noble1c6ht9nrtqtfcx08mhhsucua63gevakkye7mzuk", - "percent": "0.01%", - "airdrop": 27803.61869913138 - }, - { - "total_amount": 946795860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjyTlWmbO29joD4tsEHwBMpvqp8RnLip2sZNQRRFbMuY" - }, - "address": "noble1cuf2tf488xxx5gsju5wue3tv5lqctjm6v5srcy", - "percent": "0.01%", - "airdrop": 16631.171813753324 - }, - { - "total_amount": 899708756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6btzycja6FUpNFifIlB5OsTjSmjvzNOTHIKfWgawUuA" - }, - "address": "noble1c77nzlhwsqyejev4cezpx83yj6u88fvtxy7rc3", - "percent": "0.01%", - "airdrop": 15804.051892848654 - }, - { - "total_amount": 61192963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AugX9c+ULwtt8g9cOTgMAOqQR+tYfEoV3o5QFoJss0Cx" - }, - "address": "noble1clc6eqcud3avcrkal9739h92ya0g7fr683n5my", - "percent": "0.0%", - "airdrop": 1074.8998009408808 - }, - { - "total_amount": 227323179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2yzKLcTgKrwRpIVl+HlA5FAIz0D7virLRxM46RRcK5" - }, - "address": "noble1ezwdxvkzx7mj6j49p4rcay6x9puekh8u3wm4ej", - "percent": "0.0%", - "airdrop": 3993.100315412873 - }, - { - "total_amount": 113423456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq+OaXSeV6LO2hiYftrbsgWAdNKI5ki/qmiEQJW3DwTM" - }, - "address": "noble1erz6rh38xsne6ey0nl53kf5t87l6kews46xvar", - "percent": "0.0%", - "airdrop": 1992.3671660812824 - }, - { - "total_amount": 238115204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlTg4aGK+Gjg60OOLHov7lFJxUgPQ1fy+yAk6fec+Prp" - }, - "address": "noble1ergv7xxg2a9cr3ph3j69vqcjfk2rgvkw9qlmjl", - "percent": "0.0%", - "airdrop": 4182.670242338114 - }, - { - "total_amount": 6577866912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApftO95XITVBX2oT91kzG26znJN0QxaZB0pVQVJZp5Ng" - }, - "address": "noble1eygvkkhjay4clsmpj34wgf79kdek0wquz8k9dx", - "percent": "0.04%", - "airdrop": 115545.1131582631 - }, - { - "total_amount": 117714336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2JUXPQ52FSWCIm2U77OmTmhH68uMrvTtpbkAozrQfXz" - }, - "address": "noble1e90erfgr4x5h3rnwr60mhy2mne6r04ngwd88ql", - "percent": "0.0%", - "airdrop": 2067.739657161036 - }, - { - "total_amount": 127255410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtUvapCJm02QZ0LqQlipzmHrfi4bfjtMDekm0sRTKRRH" - }, - "address": "noble1e9h8d372r4p3pqd4hflm3whvdn6gl6u0ahrxw5", - "percent": "0.0%", - "airdrop": 2235.3357015519937 - }, - { - "total_amount": 148612038, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4dNDjfaYGcrqhaolwjovmTgIUm9Ave7F6mEAN5zhNBZ" - }, - "address": "noble1e8hnmr4qv3ap7667tgxnuy0mr6xc8vq75vtlp8", - "percent": "0.0%", - "airdrop": 2610.4807192228727 - }, - { - "total_amount": 55141941, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApxjmHAj+CFTrmOk5/QTngDIgLsZKxNUetEzp3laNd4u" - }, - "address": "noble1eg9emnausfw0knl32865u0mwta43rs5y7gz3ae", - "percent": "0.0%", - "airdrop": 968.609109586568 - }, - { - "total_amount": 116284589, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A47Vmpf61fb+Rg2Wha13H237wqMsvm8XJEIKTUV8g1l5" - }, - "address": "noble1ew3ussp5skkxkew8jrw6emr706f6y2j3v4lt2g", - "percent": "0.0%", - "airdrop": 2042.6250902181703 - }, - { - "total_amount": 52302450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjpXp2ocpVMRPbGV+2Xpal4Tt9taX6yOMEGK3DjcRx1z" - }, - "address": "noble1ew54u0sc6gqkdujhsm4wd06mg6zfypnh5z0l0g", - "percent": "0.0%", - "airdrop": 918.7313432382801 - }, - { - "total_amount": 59949045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwOg62zB5kWfwG1gz/E1/fErvGAjE9C3qSKLtgUPrkrE" - }, - "address": "noble1ekf34y676y00jgvu6l37ruz45m9fsyuse79e6c", - "percent": "0.0%", - "airdrop": 1053.0494582701594 - }, - { - "total_amount": 967123186, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxyFueVGiIQzvMSa5FCNQh8/+/L5e+KMgTUhHn3ijG04" - }, - "address": "noble1eh50jml00xqxz27x6sh80ycgkvsjfq2mjlanxv", - "percent": "0.01%", - "airdrop": 16988.236378040896 - }, - { - "total_amount": 50076165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjvNZ9RuKvP2WAQUZDrxPSuVcP1okO3nZ5KWNW0V3ar9" - }, - "address": "noble1e6gakwr0gg8gst7gfj6935n0n73j0vqlf34yv8", - "percent": "0.0%", - "airdrop": 879.6249952855317 - }, - { - "total_amount": 104000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2EK+N18j/kp+TMCxCefGM6GY/BMVKbBTtPvuiy+l2gK" - }, - "address": "noble16qs895fyv4qym0uuhlqx2h4r25jxzlt26zarru", - "percent": "0.0%", - "airdrop": 1826.8371691341636 - }, - { - "total_amount": 140072701, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkinPosuoV1dutICdyN2zJorLzimPuvfQtopJvXWjdcA" - }, - "address": "noble16pxjad6ssw6zjt9ylnc02dyh854f665njsyfu7", - "percent": "0.0%", - "airdrop": 2460.4809285366937 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AytUTzxMKsd4CH0A/0T6doyqZnKWXj5DI9z5TjdLZYjs" - }, - "address": "noble1695sqw5g73ggzfxfeurwjkpgsx4lv4j2ercxd5", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 145641469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/jQQ4Uqb5yk7CL2WGoOOXPCX2d1kNWK7L87j/bLY3e2" - }, - "address": "noble16xc9s5uucj5vvctcvg5eh82aus7t5uww7unjt2", - "percent": "0.0%", - "airdrop": 2558.3004705432795 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqV2tZ7y+t+AzCe8hbil5z44TJ6vjOfoBe4g1olEcAYa" - }, - "address": "noble16ffhf4evaep33qm8g5ykn2eutyfzdjaxnlgqvp", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUKynRanuOQasiA/lgBp9FswzhXx614JDXyPiXWl6w6" - }, - "address": "noble16f27phmna9vpr2mukgtyuw2pp760rm74qemdct", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstDqSegFiG+o6sjhoSa79VePttl4dtrowuONn8akqUU" - }, - "address": "noble162uqvjtxp7yenhrx55pe099yhv3jx8qn5xw6vv", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 113644474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1q3dcaLobgSCOw13j8eL38PHa7QNbDvkKepuOK7EaEJ" - }, - "address": "noble16vag927x8g2zlvflqpg5apx5pl56car47dgxfm", - "percent": "0.0%", - "airdrop": 1996.2495112490485 - }, - { - "total_amount": 99956173, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZjH7GqF9onJ00oYHTGf/71t+sfT6snHXrDdR7yVgvg" - }, - "address": "noble16dqtp55g5qe084qaet7x6n5cg9rz9cq2gzuc5u", - "percent": "0.0%", - "airdrop": 1755.80434731543 - }, - { - "total_amount": 2946800212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0H8ZJQ3P8dGkW3FJwqwRXFAPyRN/mn6ZTis9nErD9EK" - }, - "address": "noble16wmlr9tuyf4p2mr8ftxffdtp85vcpq8w92atyz", - "percent": "0.02%", - "airdrop": 51762.7322816734 - }, - { - "total_amount": 101897680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0TlB8Blgm84rqrcjg7AGp/WxIy/SUYBMXRsRObr0OWZ" - }, - "address": "noble163jz7yxaw6kra3lr0ydxcsys622a5f5ulv06r2", - "percent": "0.0%", - "airdrop": 1789.9083583897968 - }, - { - "total_amount": 150650043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/hCXEcJ7LcWyzM02bNQSFA91o0NeMPxTw7+bPV/ESvT" - }, - "address": "noble16n9npclhpfd0vthsr8udq02aazqta7ewys48pe", - "percent": "0.0%", - "airdrop": 2646.279789269808 - }, - { - "total_amount": 87549736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5g0OaaWcuU9TE/4DQHIPEDvoEECP0hnr4oEhtkY/2ze" - }, - "address": "noble16nt8x04n6kjqdm5umlmstyqz0gy78a9cmyfkhq", - "percent": "0.0%", - "airdrop": 1537.8760756988786 - }, - { - "total_amount": 178593053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxMrAoU5opsaTgrxyyuAsWm67qpXfRp9y25z86Ga/Afj" - }, - "address": "noble16ks7dtfzl02q6zrltzjtk647j2q9a0yc0gfd2h", - "percent": "0.0%", - "airdrop": 3137.119493937958 - }, - { - "total_amount": 53870307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A90PSAPAgs9GqkMQ92UhPZk9uhhknyfToXOMzqgFZjnQ" - }, - "address": "noble16k7njg0w3zrlyt25l76ukwpmzullk5whq9mtt4", - "percent": "0.0%", - "airdrop": 946.2719148102724 - }, - { - "total_amount": 246355102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwiIhq2WKolmxh6BS01OtpqdLmuiHoYuz8cVZi1y/X5K" - }, - "address": "noble16hkdkuajjqrsr9ka9s90dn9wpckgw2we80k9zs", - "percent": "0.0%", - "airdrop": 4327.41016480229 - }, - { - "total_amount": 50389993, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84UfN3ppSFec4r4S4DsDSHqVdr4xUtvcFhBlx/PXgMD" - }, - "address": "noble16cp8wct773zws8a65lywtmrpmcpp9d8kvagj43", - "percent": "0.0%", - "airdrop": 885.13761696933 - }, - { - "total_amount": 89278000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AktKHfsDGDgz35WBeVZqftd3jiQas/4Yzb0n+5+9/1HC" - }, - "address": "noble16cttawml87zvpspfhh0zr5d4dyfpgd5ah8wzlz", - "percent": "0.0%", - "airdrop": 1568.2343152496142 - }, - { - "total_amount": 69125370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ameue0LPYPCyD5Nr+g7OjYav6n2NKpi0f+DkW0WfSnfI" - }, - "address": "noble16mrjtqffn3awme2eczhlpwzj7mnatkelzapp92", - "percent": "0.0%", - "airdrop": 1214.238415828381 - }, - { - "total_amount": 61118347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A80xcGMxVDntKeBkiO8+CcR9TJ1TC4BGudaOzsqC0Npq" - }, - "address": "noble1mz6h8088j23v3taw6kcjd3xwrpezfdql9cfktt", - "percent": "0.0%", - "airdrop": 1073.5891155349952 - }, - { - "total_amount": 899025519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxS01qJFSM3Yi3j0FOX1jKQ0INo9KBHXv5S2zhmMAEPi" - }, - "address": "noble1myclr70q94t3sf7qrsv299w34y5ymgjzlhs9aj", - "percent": "0.01%", - "airdrop": 15792.05032797435 - }, - { - "total_amount": 144483142, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoymnOo4a3h4t3+Fg5Tw07yOorUDYtCrI3WB9ekSaJA8" - }, - "address": "noble1m9h2tg7sq8xu23hk2cu8xmdawq35vahp9gwca6", - "percent": "0.0%", - "airdrop": 2537.953597297013 - }, - { - "total_amount": 188656936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3o7ouUkpCS5cxiCBq9b0276z+GrmWd+me3PiLyEqxie" - }, - "address": "noble1mx4zxmq9l3an7a2mgzs0cvcdernz633nwexupp", - "percent": "0.0%", - "airdrop": 3313.899066343895 - }, - { - "total_amount": 5107200000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/t6fuMGG2wlxbzGmcBsuqQzFehoPz+gXrhJSymJz8i" - }, - "address": "noble1mwtk483rlnt00vwcvsnu0qqjwuhs84usc9n7ts", - "percent": "0.03%", - "airdrop": 89711.75759809616 - }, - { - "total_amount": 163032377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A755sZN7gdhZu0j1sNk2YaJ7kvjlIPfKSRCldnVFZXCF" - }, - "address": "noble1m55p4c956dawa95uhzz027p4pwm3fedfhpt0qe", - "percent": "0.0%", - "airdrop": 2863.7846738066705 - }, - { - "total_amount": 935720236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au9RrN38GqkYih0kcRqPEF6Xt4vAMtdt0yB6dUPOVLE/" - }, - "address": "noble1mm8huzhpk5tx5vgj877zse37c2zdymzltturl9", - "percent": "0.01%", - "airdrop": 16436.620259959534 - }, - { - "total_amount": 141323273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Wc3ouH6jplzs89QadVse5OBW1Yb9L5J8Vf0OVNw5P/" - }, - "address": "noble1mmjr0q5l5vh3amtflawdz6mcw2ua3tnkkjrse9", - "percent": "0.0%", - "airdrop": 2482.4481536547555 - }, - { - "total_amount": 133497452, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1VZO9RgVQySkkvGRc4CQ14ukA79fAHyHL4Bg+pN89Up" - }, - "address": "noble1mu85xs4s0sf6m2xeqrnwq253cy0d2yx239ajcv", - "percent": "0.0%", - "airdrop": 2344.98180094523 - }, - { - "total_amount": 544536997, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw6s0bC1ogaLlp/RcRqvKlNdthALWyAu81JFjMB7sR+q" - }, - "address": "noble1multemmjegjvaqzprdzh02tjhw3620dzq67qhq", - "percent": "0.0%", - "airdrop": 9565.196404695178 - }, - { - "total_amount": 53763572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Albs4vjQakrhw1lTZrHCqJ8WDu7+oreYrrSBTBTJEXMv" - }, - "address": "noble1mawvv3jxj2u08p2r2srmkytergxqd7emvmfwx2", - "percent": "0.0%", - "airdrop": 944.3970353367383 - }, - { - "total_amount": 245659925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjtK4HfC51H/pTeoXk6Os4lpAlLfQng8D4FSnlYSvC19" - }, - "address": "noble1uzkw0v3lcs7asjnkyxcsmf9yu09ysd8xx3hdqp", - "percent": "0.0%", - "airdrop": 4315.198864968374 - }, - { - "total_amount": 254455464, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnRQiV5oVHYyoR91jKydOrjskIs+HXFu45Mrhtm6UY6I" - }, - "address": "noble1uyhc960njk4fvl436ptc84zv7rcp5920pwm8pz", - "percent": "0.0%", - "airdrop": 4469.699033889231 - }, - { - "total_amount": 232872054, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zdPzndVn8EF2xx8MeJmhL3IBvw6pqWqYY3JKMDDlxY" - }, - "address": "noble1u98zcdstlq22vtd05au7xxx7mvsjfw9kudgh4d", - "percent": "0.0%", - "airdrop": 4090.5704221136352 - }, - { - "total_amount": 1105198966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/R9pj5T/WbNc/HKQ8xmUMmIWRIF5+VzmZ974/fU41Kh" - }, - "address": "noble1u8pad9dtjk5v36sgyj862hehqmfyuukyyp9v69", - "percent": "0.01%", - "airdrop": 19413.639907475434 - }, - { - "total_amount": 460962448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsiBD7b+DyvQ6Z71Rnijy0mmCIqi7Z8DsExNNQeVos69" - }, - "address": "noble1ug5h3wn9qlmn00h7dvws8h68vdeh8c0pc2772z", - "percent": "0.0%", - "airdrop": 8097.147438283406 - }, - { - "total_amount": 112605023, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvARuHHeTFeclbo3SJgGWkmYywndKNiEPCBL1Silf+wJ" - }, - "address": "noble1utwzz0mcuvldjk6l05sncpfx7zy0l0zthw4mgm", - "percent": "0.0%", - "airdrop": 1977.990783150071 - }, - { - "total_amount": 359523102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlabwGteZP/z4G60mFtyUJnouJWecWU9J0kQsHxXaR+R" - }, - "address": "noble1ude9spukt5dlcps83tfq9ympnv9uz9h3nvq6ns", - "percent": "0.0%", - "airdrop": 6315.2900566924345 - }, - { - "total_amount": 656173093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNd3rRdDPBwRzODe+41UjApAYifb4Ue/HgCDkOLODQh" - }, - "address": "noble1us0495gruplv060pr66hhtsugkjtna39tced5f", - "percent": "0.0%", - "airdrop": 11526.167266135848 - }, - { - "total_amount": 51873702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ZIF2r19DUuHl4EmOFTnlWNP+A/uxcjvqqyL43n5Ak4" - }, - "address": "noble1untszfgj8met4vampa8jthmrnemz9f9xc8w26t", - "percent": "0.0%", - "airdrop": 911.2000664825886 - }, - { - "total_amount": 66973385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al6gWHjhtrPgwTZstmQX0AC5hsPTY6rJizoTbk3FFc3F" - }, - "address": "noble1u5uq7880p0hwhl6x9rnw0r6f6yp58phjdqwutw", - "percent": "0.0%", - "airdrop": 1176.437202507043 - }, - { - "total_amount": 878586906, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqvz5nGCXjp2Xg0bfOd54FWIF2lal4JazP1lrcyUIKbf" - }, - "address": "noble1uk0p4q659qqgrv90querhxc0s3ls97ylzsk2g7", - "percent": "0.01%", - "airdrop": 15433.03092495561 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlsCuXz9iYqK+M1n1OSg1uOFuvRyLlI/n6mZa4fXeXz0" - }, - "address": "noble1uhevmu9u0fe6fq0wc27y0vs46jt3wdlhjmfhyu", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApfRDnCEspWRe3W34xKMzLHqNJ7i5sXrN6NEaEx2jxNw" - }, - "address": "noble1ucjulqpzcehrvnl8g3pvxvekyegnp86rp2m7cf", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 314497866, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az5P6eCLBU98Ho5gaVsSWpsjVT2woO9vUPZnFZ9+9LfK" - }, - "address": "noble1uuhtz2xq5e6puumyl9t969h0hfvs2gyyhe5skt", - "percent": "0.0%", - "airdrop": 5524.3883771363035 - }, - { - "total_amount": 123179745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3RTQpV+7yLYNv2L+WPkkCF6QSBsyXG3lSXwCrO6kp44" - }, - "address": "noble1apz4zgkkyqwaka6ya4sufustl9xj5s4s8vuhw0", - "percent": "0.0%", - "airdrop": 2163.743621639117 - }, - { - "total_amount": 102000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqGmoZu/ugB1YhBQlIxvGHOyvF+XwJYj27WFFMvC7mXH" - }, - "address": "noble1apgczndd9lzeq7jaqs56gj636gzcw7ef6g00fd", - "percent": "0.0%", - "airdrop": 1791.705685112353 - }, - { - "total_amount": 73490441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsGoFW3OWlS17Oho3bviKQ581yDL4vqfYTzCeS/4e68e" - }, - "address": "noble1ayqrkuxh9sw33md8d9u4hh8dxdvql038t5mh3g", - "percent": "0.0%", - "airdrop": 1290.9141268736662 - }, - { - "total_amount": 77034157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApYzr5iGRiZp+SSTIP7IY09yQWLQeE01RinkflbBYf5P" - }, - "address": "noble1ax9aqu323m4sxaakwhu9a88tctdunzxkewqwta", - "percent": "0.0%", - "airdrop": 1353.1621278895836 - }, - { - "total_amount": 99157500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A413p29HB9b/y16GEXThjnuLJoDi58VCUmvEojaRi9mF" - }, - "address": "noble1avwjwmdhl7uw9n5j3qy6dwa25nxxajlhawkg4n", - "percent": "0.0%", - "airdrop": 1741.7750634463544 - }, - { - "total_amount": 52178844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBclPelXSEX1Ra5grSNj8wOZLtRZjhE3bfWq0cXnEfs" - }, - "address": "noble1adeeg8ru7032ut6r5t94k4am3vgts67tzd4xhg", - "percent": "0.0%", - "airdrop": 916.5601121312801 - }, - { - "total_amount": 265390191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4qojQkbUjYiNefOi5s2GgaNaR+twj+H/4wuzgQTxIvE" - }, - "address": "noble1aww5pu6ssakjl49axmthckxkatm9ynv3kuanw0", - "percent": "0.0%", - "airdrop": 4661.775627330914 - }, - { - "total_amount": 56300340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmIaCE7wyJs0Nao/UScOqqC6qQ4S25dfdiP/DXVySkve" - }, - "address": "noble1a0jhknwtkhfmv0fwkklnllwppl44cwx30p9gru", - "percent": "0.0%", - "airdrop": 988.9572475662588 - }, - { - "total_amount": 1569478304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1JatKUpCz2S0tZPaDf7FL+enA8gZSn6TnwPVbx633NV" - }, - "address": "noble1ajueefk0p3jxygxf0qqtkww537ltjgc4hzwjxm", - "percent": "0.01%", - "airdrop": 27569.05097977739 - }, - { - "total_amount": 603345878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Ne1uLBXVMVW8pldXKf56rmwMbmAZirdFgncy5cOqZk" - }, - "address": "noble1an9w6uvs5el5393j9u6cwewqgs4uq4muwy8mfn", - "percent": "0.0%", - "airdrop": 10598.218036291215 - }, - { - "total_amount": 320095022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPJ4r2ujPX/SHS9EBB8FznePBkdER9BHL8nw6WZrj+P" - }, - "address": "noble1a4h860nmfgqustk48l0rhkyff07tl3pe74tfd8", - "percent": "0.0%", - "airdrop": 5622.706575427095 - }, - { - "total_amount": 623675689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AknlHKKMMX3RF63/i42yG4xMCKc3nROmhyooxlDcqgQm" - }, - "address": "noble1acpmucyk9vfa6jvvz0agyuzr0eeuw356useht2", - "percent": "0.0%", - "airdrop": 10955.326251447683 - }, - { - "total_amount": 59498614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxibLQCQG/gczb5pQf7tl/sDjQqCfNFzf672zuZy/PAl" - }, - "address": "noble1ae3vlvpf4u78vzng5a8n9cawljdm7ls2nhzcgl", - "percent": "0.0%", - "airdrop": 1045.1373035304453 - }, - { - "total_amount": 78748677, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/T4DzFcBWUi8jXZyjr98ZJD6rxRVC6taamVmJvGJyLi" - }, - "address": "noble1amgfppm55348nw4uwc66uw4dzwfpaenc5u65gv", - "percent": "0.0%", - "airdrop": 1383.2789438821212 - }, - { - "total_amount": 171449679, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgmJ7KZzVRerhkXdbE4COK8g98TOSSramIHgvwOucdZj" - }, - "address": "noble1aauu5av3kl4c0n49q5tglncg7g3ttr9vs6vdwt", - "percent": "0.0%", - "airdrop": 3011.640829166549 - }, - { - "total_amount": 156574710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4s5uT5rUL94TBdOF2db3phkdj/RJQsl1h8iMm7gLerl" - }, - "address": "noble1a7yx5k57ee7vpa3ut7gus66ak26q3mgcn9rd0x", - "percent": "0.0%", - "airdrop": 2750.350961292333 - }, - { - "total_amount": 78847167, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7GyHXDfFg/E467NMEh3EFQ4wvPGWlVvEClAuwJ00vTY" - }, - "address": "noble1a7t2jsh2qn0hjc7hkqkpyva4g9rtqf0zqz56qj", - "percent": "0.0%", - "airdrop": 1385.0089938127753 - }, - { - "total_amount": 1584722826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8OVTf2i0BJe2L7tJE6Jo8iyEvIsF93whfYfuRabD1xx" - }, - "address": "noble1alfwvnzkzn063pr2p3dnw5anfh7amrv0cdaldl", - "percent": "0.01%", - "airdrop": 27836.83232030896 - }, - { - "total_amount": 11460921347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqO6htHPElExC4CMP9BIO9u/2kHE13x4gq0wjXpnOraS" - }, - "address": "noble1al5pp6dktlk9asl38ct5eg7evgcyaut3crkfdl", - "percent": "0.06999999999999999%", - "airdrop": 201319.58758868065 - }, - { - "total_amount": 1013991757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8YsCFJPFNQA+ukPSH7YL3g8KlhBJ+7JMWLxrdXDkI6x" - }, - "address": "noble17pmwzr8mlpga5uvs00n83k099lvl5q6za46apc", - "percent": "0.01%", - "airdrop": 17811.5176046467 - }, - { - "total_amount": 1760206728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkjMmU3hAYmogU4vhYt7FvoecRr6GZzXHNthUg3rS9tt" - }, - "address": "noble17zqy8c49n366cet978sxv586u6zlyzcudrup9w", - "percent": "0.01%", - "airdrop": 30919.33726990797 - }, - { - "total_amount": 68040840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHyQWVe09lj36NM09qWudW67FLLtWyNz4tlKqe/xvgs" - }, - "address": "noble17zn99kzl8fpf67xn3nd7rcgjpxy4z7vkw3pqxe", - "percent": "0.0%", - "airdrop": 1195.187841645294 - }, - { - "total_amount": 1949000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A488NaTd1g64gJsW2yWAfU13MEdgQjI1cwAf/uKU6sPr" - }, - "address": "noble178tahej86tdr8yqx3ley5u9rc2fup0fanx7mjm", - "percent": "0.01%", - "airdrop": 34235.63117925466 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6NCSMB9wxkH3Qz8aoybfYcXNAjOmqC38uu5mk0Xpy5H" - }, - "address": "noble17fqury5q46cjnzrgaekfesytpq5yzl8trwx2yz", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 65045827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkcZK6Kwi0XyVk/z98vLOVjWYds3c4qrzCBQjPal8Avj" - }, - "address": "noble172tcrncmkzm35qyjjkg3hvv6229tv2u9sx7fly", - "percent": "0.0%", - "airdrop": 1142.578215967986 - }, - { - "total_amount": 848741325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2JhShD3JzPNJJWk68judbffBezBK8khrtvPPiND2c0s" - }, - "address": "noble17wp2dr7zrsrrtlz9cn4sxtpsha37dwmw4hxj4d", - "percent": "0.0%", - "airdrop": 14908.77114894403 - }, - { - "total_amount": 60967879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30r8cMRNEeiEsMQ3zvV++roKxVPDsKh4uiqQxqbjA1T" - }, - "address": "noble170x503z95w0nj5ugl2ckr0890x05zss02svwgc", - "percent": "0.0%", - "airdrop": 1070.9460334660982 - }, - { - "total_amount": 50166704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoo8SANYIHupP4KKbIBy565ubBdMGqOOK3liQqm6iVsN" - }, - "address": "noble1705m59l09ghgceudk79vhr00926qpyv4ws9fes", - "percent": "0.0%", - "airdrop": 881.215380001457 - }, - { - "total_amount": 651292251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4YlsKXWAfKkuom2W6J4wk/jJVIDYYbO5rsmxqZmTfon" - }, - "address": "noble173wrxxr53h3ndgkgmjpd49wm69gpar5fs7mx5j", - "percent": "0.0%", - "airdrop": 11440.431654767857 - }, - { - "total_amount": 56727450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/msSWiwz9bLj/1ZN3JDIyjXUNWgjoNV6o++RuDqTmqc" - }, - "address": "noble174vfcwpq9sk3tx6xzguwerywhql5sfj4fzh3fq", - "percent": "0.0%", - "airdrop": 996.4597516365367 - }, - { - "total_amount": 1523796144, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azsm3+3QcuOUspzrZyhiUP71zkd0rpTqTqr0b4AtSbpA" - }, - "address": "noble17kj02w0573fll5ezxp90l8n35ccv0tyg9kznyn", - "percent": "0.01%", - "airdrop": 26766.609942716485 - }, - { - "total_amount": 158220203, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ay2nbqcDOJzfwcWNTltea6xmAfOs+uK4tN9+P1q0a1" - }, - "address": "noble17czz0ftq5w52hzcgjmwzx82u0a4d5fgnjn5gqp", - "percent": "0.0%", - "airdrop": 2779.255266811084 - }, - { - "total_amount": 1360626177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsV93JwIwxKY/JfadTdzQr8IaMBk2SsK4DYn2jww0eUR" - }, - "address": "noble17exchtwv8fr99tzktzlq8635ae7ke4zr6eg6uc", - "percent": "0.01%", - "airdrop": 23900.408398466534 - }, - { - "total_amount": 637414321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A157dKVwPSdBifJRFIrxqaBMJQR9QAaHXsaUKLfezI4L" - }, - "address": "noble177yhnrfg63um7fmwv2x2kzlf3jw3rjlp5np2sz", - "percent": "0.0%", - "airdrop": 11196.655516742452 - }, - { - "total_amount": 72431077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8xI5uZCeW6X4c1dHIrh8jCPJ2Ww661gNe/yXZ4FYTz7" - }, - "address": "noble1lymfsure0lef2vy2jxu6skcjkxu3yzlnml24ha", - "percent": "0.0%", - "airdrop": 1272.3056121540253 - }, - { - "total_amount": 217559961, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzCskOctApTCE9Ild3KSq+8GmwGAS7UrK7OfAC6Ku5fV" - }, - "address": "noble1lyupnnrkhc78c2vemau90qqpytzxnep6fjz4zw", - "percent": "0.0%", - "airdrop": 3821.6021468286444 - }, - { - "total_amount": 310663656, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtsKsqGOfHm0kWn54K5aoLHD/h5QrI6cl5JuaqfwAZx5" - }, - "address": "noble1lgzjjl2a2phxa6ugdutzt62r53m8x5x6c2aphj", - "percent": "0.0%", - "airdrop": 5457.03763346067 - }, - { - "total_amount": 5867542388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzVtsJEJnbRcFX/700JyW4kAjFTYX3z87Yp7x0Uq83pi" - }, - "address": "noble1l22dc2vjgrgwl73ef6rl6zp3uwr007ft8qj5n8", - "percent": "0.03%", - "airdrop": 103067.73582565991 - }, - { - "total_amount": 213449743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHWkEliq8xt5Va0+RIu+lTGg+01q4R6Axtd31j+Rd60" - }, - "address": "noble1lvtpcpg7m62qr73rd9mfw0pypzds58rcdvglln", - "percent": "0.0%", - "airdrop": 3749.403117832065 - }, - { - "total_amount": 58381662, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1h7AYXdAD0ld6Yfm0yptlYYZj49DDpkbGNYc3mRwKfE" - }, - "address": "noble1ldr5787yswn8wrws8u5kk9adgl95sasxm6uu7e", - "percent": "0.0%", - "airdrop": 1025.5172128598806 - }, - { - "total_amount": 84143221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7vNv9R7pdyT3RS5xqoviUMYjI27NKQhjn8QxQTLTuF0" - }, - "address": "noble1lwwh4hhg5fdjltewplpzlznaj54p6xwpucquy0", - "percent": "0.0%", - "airdrop": 1478.0381120525992 - }, - { - "total_amount": 6922056461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3b9rvjxzlgEg5MlOCoPvfNBDD3Qi+fLO9L0a1OogK7n" - }, - "address": "noble1lsrnfj9r268lsmusu3k5hu0mvwlggsmxrudz5j", - "percent": "0.04%", - "airdrop": 121591.05797884699 - }, - { - "total_amount": 4191137000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstRjL6k/Tn3JGF3nskQMXmLU4yXlmREbgPAVlw4798O" - }, - "address": "noble1l46qhgucfdk4lkc6kgjhfp63dsn4awarazg24z", - "percent": "0.02%", - "airdrop": 73620.4312743601 - }, - { - "total_amount": 197384131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoUNlPOeScdFLPkAN+0SL9Y8j+drfoi034+WRdiMdOz7" - }, - "address": "noble1lhp9w2mm6kflv8k3m6msp5xtj4a7a25x64g4fd", - "percent": "0.0%", - "airdrop": 3467.198722192759 - }, - { - "total_amount": 398044526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiKg4OepujDXWGb/VD7QP3PPunC2ZpBwa1JAMR4x+dzK" - }, - "address": "noble1lh8clntf2g520mqqc0vfr4xthdgyszswv6gm52", - "percent": "0.0%", - "airdrop": 6991.947452569135 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiowkEUSU4eyJAQuG6V69zrEN9uTcPeTbuCZ1/CHqa43" - }, - "address": "noble1lcc6y0gjca8m3upn0m4ytyluaxhgmds3dx3xkk", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 467584399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoHpdyCG4xtKC5GbdE95JebQNZcyBXx4fe7i+gAoXxXW" - }, - "address": "noble1l6asmnfusqja55359zgl4hnredggxq3v94rd2q", - "percent": "0.0%", - "airdrop": 8213.466921158262 - }, - { - "total_amount": 497216785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au267Hr2PjmqqLauf0IuASpV6VJ78Ljc8kxHPCdpu7y0" - }, - "address": "noble1qy504tt6urv282p95n6vw3jlsl84h70dqd35wt", - "percent": "0.0%", - "airdrop": 8733.981768801828 - }, - { - "total_amount": 410024040, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlIDnfJMp8D7PwPsPnkD0NAV18lGBoDrlxSF+SWBpxic" - }, - "address": "noble1q9csz75nsaszcpy2tjych7g2fu9l7ujgwyw8a6", - "percent": "0.0%", - "airdrop": 7202.376504909164 - }, - { - "total_amount": 100726683, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsmfuGrkIgCNUplD5GzulC2ceVAnNOrwpTkOLgV85bYD" - }, - "address": "noble1q9lpdyhmzpqv6tgu8ta4yg2c9wh9wc7er4ha8w", - "percent": "0.0%", - "airdrop": 1769.3389271922529 - }, - { - "total_amount": 3328845404, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7EP4VJrvVskd5nPuyXiQeAQDybjE+eQ5I/3u8EeRPQi" - }, - "address": "noble1qxvqhff8xkuyd8l6cjwlpefammtsku7mm37x6e", - "percent": "0.02%", - "airdrop": 58473.63956085222 - }, - { - "total_amount": 118799848, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjvPj1W31N2HD1+/mZw9ne0CGPs996vtbu4oNbT/xjKQ" - }, - "address": "noble1qf99gnz3xpkc3wmdvzgq6vvej8hyjqx34sqrfp", - "percent": "0.0%", - "airdrop": 2086.807480902778 - }, - { - "total_amount": 55193882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az3QhvaF+ndBdUw2u5STBGXuYlIea0owzoA4VrsiogUT" - }, - "address": "noble1q2sm52c86w586hqduv6aqrre8ylpnhukn2vd64", - "percent": "0.0%", - "airdrop": 969.5214917923564 - }, - { - "total_amount": 250714784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5VY58Hysiol3vd33VMWDcDTyC64e0ruw9Jd4yPgaLX9" - }, - "address": "noble1q2hyj34253nur5450nt7kpuehlhnrf0hjzrw2l", - "percent": "0.0%", - "airdrop": 4403.991214063878 - }, - { - "total_amount": 10093096083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzzEX+1rgGJHYPn2gbsRZ82eww1VvFlqssUesWCRG+2m" - }, - "address": "noble1qt5gy8lrnap62z7uxec6u9v3s5n7j5nsaesxyh", - "percent": "0.06%", - "airdrop": 177292.72188525804 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8URByHgjlazkonAp8wKA98V3j7F67XDuNHwXy0GWlYT" - }, - "address": "noble1qdzlv68m8sspl2uqgckt24t74wflxg0g3gfmsc", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 286684776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZJ3eEK+rvIkcH+YrXwEdS6mmc9Z0LKZD/akfc7gslx" - }, - "address": "noble1qdjeerdr93v5nkj3hmnakgfjs5c0rmylralqvz", - "percent": "0.0%", - "airdrop": 5035.83081367021 - }, - { - "total_amount": 26344669460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao9r3cf5ttUysHsWbgtiUUhwn+2xt5PsLOa2WrJbyrGA" - }, - "address": "noble1qdcmh09m45pvujppr0whvv5jk7kzjyjwpm68yz", - "percent": "0.15%", - "airdrop": 462763.667096939 - }, - { - "total_amount": 2966968998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzOWk6Qkg7mU1xgM5pdbRo1CjoEB9Z7kltKmy4qsueP" - }, - "address": "noble1qdauwk6gjgyme29frp529nmytg2vg3ps8mxkyj", - "percent": "0.02%", - "airdrop": 52117.01197322256 - }, - { - "total_amount": 989082419, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyrDV5vvIB2VkzE5w81Sjt2lrAGWlt/T8mJavCKxiFK6" - }, - "address": "noble1qw70xh24jcn86a4a8qgnxlvxw3wzggjlfap26s", - "percent": "0.01%", - "airdrop": 17373.96659967626 - }, - { - "total_amount": 82223514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiY74Ix62NCFLUCEiITDAANPGwN6ItZc1GEiWAZZAa7m" - }, - "address": "noble1qsc0ezwdtsa9tk30l99eh6r5x9pjkzrqaq7j5a", - "percent": "0.0%", - "airdrop": 1444.31703415407 - }, - { - "total_amount": 61595348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzaFlzXQvz2JPQPzKMCgWtHhszZbdbWL3haVsz37K9Nw" - }, - "address": "noble1qnfppzd4hjvyge0h740ftwvugjkakwaf4huje0", - "percent": "0.0%", - "airdrop": 1081.9679920399392 - }, - { - "total_amount": 2160561314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1qozGhcmI42bgKdYfq11M9D8nkNSAyRekbLJPFenBvr" - }, - "address": "noble1qkzqdx4l2r6gf0nmw3n0jmv2dust2kc4rtpt9k", - "percent": "0.01%", - "airdrop": 37951.86264046681 - }, - { - "total_amount": 69689057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AytwbuD3bkHcH41FY0C+xduZzgpcS5Xo1gZsLKerFQ0g" - }, - "address": "noble1qej7yqly32s5wmthr06gurw2r4m9k9lcycwsan", - "percent": "0.0%", - "airdrop": 1224.1399962452826 - }, - { - "total_amount": 1804073726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+a6c/bLGSKG6iw3VPSGzcwTo9TOODRO1psNAMCZIB5u" - }, - "address": "noble1qlugwwrtaxg2zqfm2hkws4hpqz39a43vvex7wa", - "percent": "0.01%", - "airdrop": 31689.893639568872 - }, - { - "total_amount": 51825692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax9xjZI5BedVe77/gNR8PC7CegYuQg6bGF2YkLeb1KOw" - }, - "address": "noble1pfgwx92f02aqdvmaca8kvj6jl0wf6wvzqp7xxm", - "percent": "0.0%", - "airdrop": 910.3567352086449 - }, - { - "total_amount": 756201346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wvOdMEQ7mwJamDzrDShl64/xyIuLo9LnWACU2sIrr6" - }, - "address": "noble1p24gny9u8jqsvs7cqn5pkzu4xr6zeelmr4xln6", - "percent": "0.0%", - "airdrop": 13283.237752135426 - }, - { - "total_amount": 3828998151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4P/6RIpkmrvcof0z2KS/7kMwTbyUCGqRXGBa1of/eqe" - }, - "address": "noble1pdnv9wam8puekes44dfu4sewkvgxz5hstlhk8g", - "percent": "0.02%", - "airdrop": 67259.19368069987 - }, - { - "total_amount": 135046230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobpkcLd8cUwf9suTZV+YiV2dIRdBpn0s2t1mLfd7X8C" - }, - "address": "noble1p3tvzyeygc93u7hp98gw5w66c78w0na6ds4sfw", - "percent": "0.0%", - "airdrop": 2372.1872357253956 - }, - { - "total_amount": 73352218, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyN5Rw2xvTn6yeRRTW+1UEFKORbvbMbPxit66ewEX4/p" - }, - "address": "noble1p3njlnxsnucnktt2m5qd9vfexvqv5qs5qqxgh3", - "percent": "0.0%", - "airdrop": 1288.4861373156925 - }, - { - "total_amount": 107522971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6eneEp8ZAUKbIO4i65n5b7IXh0gPntylhTPVo5BfCrZ" - }, - "address": "noble1p3525nrkkygqq57g3qm7fzc30vj90zr4qxhq3e", - "percent": "0.0%", - "airdrop": 1888.7207688320652 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahln5R81AjaG2joAnPpudlBE5kSgTAnbkrwcnYdgQoqe" - }, - "address": "noble1pj9gvz8642wuwrpdsyx5t8wyuqtevhkgdmqn4c", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 310613065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Gd5bxvXeKw59jSK8re3704NxSwXYbwLG1zh8wplmKm" - }, - "address": "noble1p4jsf94tkrf3lhm7e2tpct3860u4gy2t8436p2", - "percent": "0.0%", - "airdrop": 5456.148965006596 - }, - { - "total_amount": 81491241, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhendWoy73IFd0smxxHB8uTP1Kv2ym1WzR0b9Faex+zq" - }, - "address": "noble1pe2wjxtey9fyct5v9hw4j8hpnq00rffg7unz5l", - "percent": "0.0%", - "airdrop": 1431.454115554518 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyOyMiEasKvlsQgLTrw3iId2mUmhht2D8t+zU0w1ES1y" - }, - "address": "noble1pu39zq4ktz6cezpvc8p2pwzwr8f3axgz39dt4f", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 679706707, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az1RatpVXmXIPH5aMXDN7b4qzwhdOgCGjazL6dFLJ64E" - }, - "address": "noble1z997r85mrvug28x5an336u6jrtexdzzcjg89ve", - "percent": "0.0%", - "airdrop": 11939.55265824408 - }, - { - "total_amount": 51608072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvSUsng/X41xTWf0kyJDHcW7xOy+fa87WWxJqkoy8Nd6" - }, - "address": "noble1zx4plyc6dcgjzwqazyjzyh3kyg5nlq75la5luk", - "percent": "0.0%", - "airdrop": 906.5340784322316 - }, - { - "total_amount": 103316482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+KkfgzJMs0p1eKgoo/cNfiFYrGmBQamXhTZtdTXyF0i" - }, - "address": "noble1z246sfycefpa8nxfsud9jrpc7cykrqec2cnqre", - "percent": "0.0%", - "airdrop": 1814.8306682863538 - }, - { - "total_amount": 242507593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApeHH+npDzFMA7yOjaHAxTZlmD20NiD+HQJTIXcO90xz" - }, - "address": "noble1z2mdy7rfx46s04dw7nnd7kv5zfkasp5gmsrxcr", - "percent": "0.0%", - "airdrop": 4259.8258143236535 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjjbNvNrYlbH12gYvezkXymxoGl2sTWJ6i7Qqhk8zi5s" - }, - "address": "noble1zv6aga8x0qw4hcv5z2kgq6yyqgl3hxe4fxpq5j", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 63187567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyGQAF6YQgZa/5YeONLObIWExLqb4Xa9malc+rT7Aujg" - }, - "address": "noble1zdzz280x8uy4kwu5akjxc2ctegaj8l4ntulc4d", - "percent": "0.0%", - "airdrop": 1109.936500218801 - }, - { - "total_amount": 58641905, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7rl8SXo+/FyxwJioO/GbDxnmrMpEmC1AVJFuyqSJFio" - }, - "address": "noble1zj2vddu058tw4egl7qvv6vklaj6uw3zpmun50x", - "percent": "0.0%", - "airdrop": 1030.0885742580247 - }, - { - "total_amount": 99925049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axds4bcPpZy5JNBkXnk1LpsJaz6auXRSeKIwZrPubKTI" - }, - "address": "noble1zmxudcaue70xkjzveva30zctxfadzvdw83ykx4", - "percent": "0.0%", - "airdrop": 1755.2576311610826 - }, - { - "total_amount": 1966315631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Xsu7SUb8kevf37b1IXr11whWCbVUXJU9E0HSjRqLdJ" - }, - "address": "noble1zahk0403zx5awpddx7vf6dmgfreta83xr6juzz", - "percent": "0.01%", - "airdrop": 34539.7930861567 - }, - { - "total_amount": 51564545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhUs/59/Oxo7bDKADzuxe84k7VowvjO+YFbOS7KobXs7" - }, - "address": "noble1rq9kzutx78lreyl6nf9g9a683t3zzr8u23n9qt", - "percent": "0.0%", - "airdrop": 905.769494379723 - }, - { - "total_amount": 177459270, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avmi84Mdd4PEMVjRnIdUbd30EdYLNsqUQEY42BiC1aks" - }, - "address": "noble1rpqlr4phw0juxfhpz4sgge2cq6nhzmn5gje9f8", - "percent": "0.0%", - "airdrop": 3117.203754263608 - }, - { - "total_amount": 511912454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A87yB7LFow4rc3CoLiEvaNH3ba1sA0zPcvpBOJJj9Tm2" - }, - "address": "noble1r9npyyhwnhkx0vxggtghaurmynf40eugczlwgk", - "percent": "0.0%", - "airdrop": 8992.122099133489 - }, - { - "total_amount": 4711886228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/E61SIJPJLPmX74YiCVFJQNGYZclltDjjoWdFNcc6b" - }, - "address": "noble1r8rjkkq808wrm36rg7n8x6ruxv55zc4u7l4kkx", - "percent": "0.03%", - "airdrop": 82767.77786578627 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9Zo22mLne2wUXA4L4FoIuBAfMOpCTmvZPdfIt+PgtJ" - }, - "address": "noble1rgpyhu5xw7amwaxsvjf6mzvfguu7m54mely5cn", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 97629355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApnAYYQY3YyqLByKnRdoP7NAMAsLhZ1fSEySP/aZf5F8" - }, - "address": "noble1rfqdme2gfz3yca23s3fucxd6wwdk3ra4g0mxqx", - "percent": "0.0%", - "airdrop": 1714.932062621099 - }, - { - "total_amount": 51649472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0qlUUbk463r5tYIimLMC8SVUQtsox/AFTu+yDcuWfq/" - }, - "address": "noble1r20tqq0hvwdpmf38jc7sd6uzajj9gc9hpug9pp", - "percent": "0.0%", - "airdrop": 907.2613001514832 - }, - { - "total_amount": 132078859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkFrOhaV+zcNwR3+G3vr1Afrbnt21t0n3ZK3+JWOncip" - }, - "address": "noble1rtsh8xwq39ffstv8067lrv640akpmul82gt3es", - "percent": "0.0%", - "airdrop": 2320.0631622887536 - }, - { - "total_amount": 151372107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiqHanOAAInQag9eRoveRF10RWNl0ZOa3kGNMcmUUJY9" - }, - "address": "noble1rvr6l7tslwtl3t39glgw7jd90zunurwz9ztekz", - "percent": "0.0%", - "airdrop": 2658.9633792091704 - }, - { - "total_amount": 195433682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2b3qLHPLv6cJaNwNzKAFWcqOqUy0VEP8VbWJ6akj9Xr" - }, - "address": "noble1rvajngxtsszzewyh5d660z9t32ay5fup2vcr96", - "percent": "0.0%", - "airdrop": 3432.9376382533305 - }, - { - "total_amount": 705451396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRlnOS08mfbFm25EXw28LLmZJDr8ofXqk+OdtxWTVeR" - }, - "address": "noble1rvl2x6dgc6apr57rwplpxvvzwq9v8p8prcxdgz", - "percent": "0.0%", - "airdrop": 12391.777223369076 - }, - { - "total_amount": 439318671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmUa8hw7bz3DZ05AortWcYnlVNIUvIyAywO1fg504cuE" - }, - "address": "noble1rnazvzu54jqrrhj40phq68ej42rkh42m426c79", - "percent": "0.0%", - "airdrop": 7716.958435359837 - }, - { - "total_amount": 238712656, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ACEOGLljUpsHp1op88agje6eKNteaQJ3vZC2P2OFd1" - }, - "address": "noble1r6vxas4kjjqc3mannyg4t9ufh5h2zj2553zszd", - "percent": "0.0%", - "airdrop": 4193.164930034014 - }, - { - "total_amount": 306388823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2JeRHj8NfGVyiF+ZM+DBylU7mtanaj1Zu3Al3sxvQ9n" - }, - "address": "noble1rm6ehzryymlvr80txatvvtf9yql5vus5ewnyex", - "percent": "0.0%", - "airdrop": 5381.947019842965 - }, - { - "total_amount": 1460234719, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A80Zokc/Pjpmx1mIE/vn+LyQ+8/XYDPrSusDZipxRXk0" - }, - "address": "noble1rurgcwllvdgcn0jntu663qrqnyupl9vw7s5kky", - "percent": "0.01%", - "airdrop": 25650.10634932097 - }, - { - "total_amount": 146058377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzCfDFapXobKK3BQmNMb6jTV22gJVEgBF2p+/7McGmxC" - }, - "address": "noble1ru9j7500raqqpulw937vh45pcndrh08z0uk64r", - "percent": "0.0%", - "airdrop": 2565.623768913562 - }, - { - "total_amount": 56512388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiarList0xgz9Nx+11xSc7Jfpt8c6Z9zo3tdLVgTcFl5" - }, - "address": "noble1yp23pfwmrhyxv3yal3xfglgc5vex57a7cpxu6j", - "percent": "0.0%", - "airdrop": 992.6820280281873 - }, - { - "total_amount": 394197066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay+9OFENKLtv14SHedtMQRJdbW8NF+y44yd8t59gWfzw" - }, - "address": "noble1yrggvncw8exfcun0zj8qqnwk370j5t3aek0esz", - "percent": "0.0%", - "airdrop": 6924.363962811856 - }, - { - "total_amount": 2375984962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhLknzHK1xoQY1XU9X83eYlEReWv34GDkV0UjDssmnlw" - }, - "address": "noble1yrcw8lctf0ss6gvet0j4t6daxyrxrzpqj0lkfx", - "percent": "0.01%", - "airdrop": 41735.938864282914 - }, - { - "total_amount": 175691614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ourJsW3zNKROkq0t6wr0q8gEVBbQ5HrVhd4D/6Zyxs" - }, - "address": "noble1y979ssvnptkf8ytr0ct35xa9szn7tn9e63n65x", - "percent": "0.0%", - "airdrop": 3086.1535650035785 - }, - { - "total_amount": 6513988636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqW2fNLN1doVgbh5jAQ4cxYgMeDRUvvlrfsS0maMh9fZ" - }, - "address": "noble1y8lzp8danh26us8jef74jgjjpshxnjxhh6yx72", - "percent": "0.04%", - "airdrop": 114423.04384194569 - }, - { - "total_amount": 26232260713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXeWZ6Fu5oX5XEozaFr1tK4LajIYGyPysAuyWEYXi3s" - }, - "address": "noble1ygrckglds6qqylvuhmtxlajygl5t6tjmqgxhfu", - "percent": "0.15%", - "airdrop": 460789.12404736783 - }, - { - "total_amount": 1363148000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0g3yFGqeXyvFrhO/plLg9JmnEHViohztf1/7oxPaCTO" - }, - "address": "noble1ytx7k8g24z8mjdwht80s95up3qu3hmf46tmcgw", - "percent": "0.01%", - "airdrop": 23944.706090681702 - }, - { - "total_amount": 53170712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhxnCIQBwyrLpD85Syb3kzG3We09WUHYBZ9BM5Sn3rZG" - }, - "address": "noble1yvnmkm4erzva5syse3946adl7t00csvm6zcnx4", - "percent": "0.0%", - "airdrop": 933.9830095281529 - }, - { - "total_amount": 91978308, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3u7RcRnTxssC1d9xvnPlCWhg7GzYS8oFqPEuaX5xHcx" - }, - "address": "noble1ywqvj9dhxzm3hjmtnwznqexhw4neg2jn9hjty2", - "percent": "0.0%", - "airdrop": 1615.6672289275982 - }, - { - "total_amount": 375818369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxWdGsPgT5KVdlq/Xk7bY7mIiC5E2vzGA2TzGxXgUWZZ" - }, - "address": "noble1yj2jv8w2qmd56a0yal9favlzsmjyktmvxzqwhd", - "percent": "0.0%", - "airdrop": 6601.5285128132555 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0JcmKOGERcyNqLPz80upp+uYl/+r1XG3RlK9Aqhxcwt" - }, - "address": "noble1yjdz78cgmqnwxt8xsyrxpdkxyaxpjwer76fdzt", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 944369126, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5+1HRlQdkWGXcK+lR9BN+uBuEteuhl5Fboz4F9MlM4R" - }, - "address": "noble1yjjfaray0hmywrpvtqde9xd6djghzgvzpf79zw", - "percent": "0.01%", - "airdrop": 16588.544430380236 - }, - { - "total_amount": 80396410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoJy8TMPwRumy0dKvHlwxaiHbhHL/diZau+OEgwNKyuK" - }, - "address": "noble1ynpz4z4slllnzz7j5e93w2hxlksg3nya77accx", - "percent": "0.0%", - "airdrop": 1412.2225966629767 - }, - { - "total_amount": 331916499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6kmF9Ht09DFO8jFiwkAdw1BAprxyYLnVliRrtH3c3mR" - }, - "address": "noble1y5qy0wr4vd6gtuwy3cafl5v6c8ff6y2rnu83qv", - "percent": "0.0%", - "airdrop": 5830.359590596947 - }, - { - "total_amount": 60767377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxYueE2c86M2uWVpI3T5fubRsyf/4NkT98jrtHhEok/G" - }, - "address": "noble1yh8hv4zswz5u4fwzejmc5y7pewjxg4a6pghcy5", - "percent": "0.0%", - "airdrop": 1067.4240670614276 - }, - { - "total_amount": 125360564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1FOGedX9emrTADp6zr5MOr4y7iDK8d2A+QqsHC7lBSr" - }, - "address": "noble1ycjqejrqhakw0wp5j930slra5whq59d2a9hhwn", - "percent": "0.0%", - "airdrop": 2202.0513255655974 - }, - { - "total_amount": 15854362926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArFLVd7A0yv96eaFyh0f8F7ZQ7Y2v2zVlyrasc52ZiUj" - }, - "address": "noble1y6s9yfwpmwpg6jk8pfu9yhvpy728x5vd369h69", - "percent": "0.09%", - "airdrop": 278493.6489053796 - }, - { - "total_amount": 2481225509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApCBU0+TTM4DLgzAcn904fPLyiAqe8/Z1YYD+237ZXja" - }, - "address": "noble1y706qaw79jw8w0er8ddfznd3xygxjltvnh9hpe", - "percent": "0.01%", - "airdrop": 43584.567161971485 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHrnAAEoMz4gQs5yxYko8Z1v1HJDe5jy4xCUHVoYSwt" - }, - "address": "noble1ylgm5kdd9n7kn4k420f6spnnpmx2ntv7yctzml", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 53838986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajji64PCurNXEkgihMt3uqnMWEyS5q9rufJQ8B8lDRja" - }, - "address": "noble19zu9e8g9dmgrkyhxhp33947y4myzxan9l54cfq", - "percent": "0.0%", - "airdrop": 945.7217382047487 - }, - { - "total_amount": 591128858, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8/5iUC5j4y8ZQkMRNMv+V21+YvnmzMY+afWgpTnCsCC" - }, - "address": "noble19zucssun4ykau5j8zw42dhdqtwqpzk8hn2xjxc", - "percent": "0.0%", - "airdrop": 10383.617014829146 - }, - { - "total_amount": 60749265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5nW6YK21D12E4R9wFbb+E+ChPMhaCTXltwud8X0oW3g" - }, - "address": "noble19r6ljtzvhfsljpupnwzu32jr796aflm7pp46uw", - "percent": "0.0%", - "airdrop": 1067.1059163421262 - }, - { - "total_amount": 127881654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsnbnDRinbk4eoCIx429EVbAQMY955NEWw5aqDqW8w38" - }, - "address": "noble199v3aq5gl7af9gk3prl8s6etcczch9ja56lww2", - "percent": "0.0%", - "airdrop": 2246.3361420918714 - }, - { - "total_amount": 976796986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsN/02+A29g4D3RVTOsHSjOIug0gfLUed1pxSXIYxx7v" - }, - "address": "noble198pg455r2drvhgp4mr5r4957f6facrunxykz4x", - "percent": "0.01%", - "airdrop": 17158.163853105994 - }, - { - "total_amount": 67696621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A76+hUQsbY943eMGdyTnHaoGzg7RQrdhqtFEF/6muH0q" - }, - "address": "noble198kkcjzvlege8857v086fa7adwnkuq800j068r", - "percent": "0.0%", - "airdrop": 1189.1413794960422 - }, - { - "total_amount": 143244810, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqSGHmTPtgSQnOIq8Q7cXR/RmKVS3vFfZEhYeJDm8/bp" - }, - "address": "noble19fvtavwwp4k2tyedlrdr45wvn3gucwu2wganc7", - "percent": "0.0%", - "airdrop": 2516.201376861165 - }, - { - "total_amount": 165491380, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai6Q3JvIGH7UuWW1KhyatVUUvSOuI2An0E00XiyMpbFF" - }, - "address": "noble19wuqw0xxv2r995uxr4mtqnjlmnq24rnhpl35a0", - "percent": "0.0%", - "airdrop": 2906.978886108713 - }, - { - "total_amount": 412749492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5OM3MxbCKOTLG9wXoG2d8EtGXN/DVv8KSDImqGtgK2y" - }, - "address": "noble1906hcal6599nnlgv2nrq6aa97ddq54fstn439m", - "percent": "0.0%", - "airdrop": 7250.25109160427 - }, - { - "total_amount": 1483935330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRWcY/gw9WoRPo4dlfqDd4IvDXraRFMkE90Ka4hNF8D" - }, - "address": "noble1934qp3ckckyuuhy30jz9ra8g7355dgyqnf97k2", - "percent": "0.01%", - "airdrop": 26066.425167647798 - }, - { - "total_amount": 4458491299, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A17PmWZR5TS/VSvaphksXpjdnKd9gvHvWq/ohbUp5SI8" - }, - "address": "noble19nfe2l95pnmre8snp3eddvzun29s5rtje7dhrk", - "percent": "0.03%", - "airdrop": 78316.70791610058 - }, - { - "total_amount": 348261356, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah0b6ykl361aVW1kdbCDMAjka3vgWGMrA+UPxBoJcfTZ" - }, - "address": "noble19nd00rk7nnk5lw97uv2s9hanphfcdvrhnte8a5", - "percent": "0.0%", - "airdrop": 6117.469131864088 - }, - { - "total_amount": 52927132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AynymAnho0VXMLpuFMzhARjdsii6TaZiwlULKws/PufT" - }, - "address": "noble195d2y2rupak8a0qu4vnj8da0n8kgupxe6zqntr", - "percent": "0.0%", - "airdrop": 929.7043460891366 - }, - { - "total_amount": 364567632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmdiIubjz95a6hzBhwMj150M89jtOt62imcDqMSvpUEj" - }, - "address": "noble194pqj5mvq7qg8luncdapqdv84ztq7dy3w9mhcj", - "percent": "0.0%", - "airdrop": 6403.900969238707 - }, - { - "total_amount": 72914943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjnwHiTC1Yx1CxjIgfAJ8g5JgAwPBfgCLwbQTSwoxYp3" - }, - "address": "noble196rg7yjdeynyx264pfrdhcwmgvs7yrl8z3qpyr", - "percent": "0.0%", - "airdrop": 1280.805077477874 - }, - { - "total_amount": 86678688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuhDJrI4QoQYy6AcuwiimSmw0xcslVisx0gnqMxce/ga" - }, - "address": "noble19mtarulxjha9u3j53u08l2656p9lt5kgge0n4n", - "percent": "0.0%", - "airdrop": 1522.5754712517635 - }, - { - "total_amount": 138797151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkOlfEqUkeUtPbTKX+QrWAXhUo2Zv5JgQeXHe42joBhJ" - }, - "address": "noble19uzk7ljr2wfnwla3ux72g9yandf4jcd9zqpfcj", - "percent": "0.0%", - "airdrop": 2438.074946314683 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1o1J+N/l1gUs6QhjC2CEh4RpI1U201bTwXDLoTX8a6Y" - }, - "address": "noble19u007ymy3ugezdvjmrgrd7gm62xjg5rukd7qac", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 50392298, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwNhI0B8dCe4HAQ7TOJUkEdIHZVFVrKLKx5ZyorSgkFu" - }, - "address": "noble19a39tgswver7ek7v96n58kj4mte96ts72avc4m", - "percent": "0.0%", - "airdrop": 885.1781060046652 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0VlM5vprRzBfslFS+zdn9dXjIZ1TV75/cI76w6O7qkX" - }, - "address": "noble197f0wv736c056qnerv5lv95ly528tgu08feu7a", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 157510361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahdcu6zxlOVunN7leRUCSNBPRb+vguF7LOPCoXICI376" - }, - "address": "noble1xpeq3qj0g0ecc4a4tcufvk4z9wftx2ww4wufht", - "percent": "0.0%", - "airdrop": 2766.7863653705786 - }, - { - "total_amount": 7077818759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aog7xnR0RM6CYPKwpJWcFHIZQm5HqiAU7PUVIbbxgRFk" - }, - "address": "noble1xzmgjjlz7kacgkpxk5gn6lqa0dvavg8r7rtp4p", - "percent": "0.04%", - "airdrop": 124327.13832054076 - }, - { - "total_amount": 9892161045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Cu7b0TMbcr2H+xajKTkVzovGbccybB83EjqJ46OHPr" - }, - "address": "noble1xr9zvawkh3tp5gtqx5kt3fz9h0vm47tlmwca0q", - "percent": "0.06%", - "airdrop": 173763.14884679858 - }, - { - "total_amount": 250926955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnEkkmPQYYZuz6KXZ+sUvb9zVBZsWKZPw+ija5xcYqYR" - }, - "address": "noble1xxxwefdamtsg5kqaufyw8900deptkjmctr7552", - "percent": "0.0%", - "airdrop": 4407.718155112074 - }, - { - "total_amount": 161990321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5BS/1BDm0mB6SC9x5DkJceWYW+8unMcrHvnaC4bz7EE" - }, - "address": "noble1xv3nmum5565r2dly7h6xf97mnff67ycllhjmgr", - "percent": "0.0%", - "airdrop": 2845.4801869497546 - }, - { - "total_amount": 135837547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwLWjt7CYFT5N2yfkjYVq6kDkxChQyVPkfgiBpSu6VTn" - }, - "address": "noble1xdp9hfr0ch20sd602qgz9q4rhcf0v9cvap22ln", - "percent": "0.0%", - "airdrop": 2386.0873059962396 - }, - { - "total_amount": 102101800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7KolQVe9HYZm+NRN5tIBVsnKWBrg9Tj3cq9P0y4YWIO" - }, - "address": "noble1x3z2vepjd7fhe30epncxjrk0lehq7xdqelen70", - "percent": "0.0%", - "airdrop": 1793.493877649063 - }, - { - "total_amount": 1719854716, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhuXtVwz2/7asDyfZTdtgA00SfDaz16CeFFyCRqsujbM" - }, - "address": "noble1xjxuj47qe9qxk7edgel90q82haxhuz3vw5mnue", - "percent": "0.01%", - "airdrop": 30210.52423749501 - }, - { - "total_amount": 316982285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1bWfx37pjUa6cNhq1Aq+ZmvENiP8gzhyd/bILeKU4pP" - }, - "address": "noble1x4vhnxkfrqvgq6ehftrtp5l0286gawvm5mawty", - "percent": "0.0%", - "airdrop": 5568.029040337295 - }, - { - "total_amount": 66040104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjTWP8Gufaptw7qD4kkRw8OrHUHDa/Ds1B6tsSZNe5l4" - }, - "address": "noble1x6swdj5x8j6vlgl0n93ur87yj3m93vs3adney0", - "percent": "0.0%", - "airdrop": 1160.0434292373632 - }, - { - "total_amount": 2070139566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnoFVT9M1cURG48Q6fZHBKPOY0rtaoAAd93tb+eTtYe5" - }, - "address": "noble1xuweuclsuu6w0d2y2teqz3zxkyt288t6plfcq0", - "percent": "0.01%", - "airdrop": 36363.53754292372 - }, - { - "total_amount": 217239555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2cyA+1bfXObxPitvMo5okqK9ctyKWWt+c7FGIUYo1uj" - }, - "address": "noble1xu6xmm4ddzzj2n783twajmy4wyhhg2xe2mmzmh", - "percent": "0.0%", - "airdrop": 3815.9739776938986 - }, - { - "total_amount": 51598950, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0FKmF2V4hz0m0prHe9Sjx+I7NjRRXKB+qOysh4maTOg" - }, - "address": "noble1xag5wtku3ug6gec7fhrfqqhtm5gspjym2en6k3", - "percent": "0.0%", - "airdrop": 906.3738437336082 - }, - { - "total_amount": 197726916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3nlM1hHx7K+fc6OZpLPL33EsDhi6/oRAEqDQIJi8k5S" - }, - "address": "noble1x7ktfj7u5wshjml62eeeas9qtgj0scceyuttuk", - "percent": "0.0%", - "airdrop": 3473.219995067967 - }, - { - "total_amount": 901333593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgsJpckZXDvlJZ+61z3A524JRF+Rh/6/+4fF7MVhgpnJ" - }, - "address": "noble18pxq66xurxmuktuexsdlnqrjtv70d09hsv5cx7", - "percent": "0.01%", - "airdrop": 15832.593360400428 - }, - { - "total_amount": 111653522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axubb1oIWnx1YHITKTdKWCaB9YFJBsFVQdKbhCpmnd5o" - }, - "address": "noble18zg25px05vr32tfhdp2fpqxx0p6jkl7uktr2z7", - "percent": "0.0%", - "airdrop": 1961.2769620609524 - }, - { - "total_amount": 147499193, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmEEHGyxgwTyP4LznPrsKmq+YvjyZoFkVLFtpo44i2en" - }, - "address": "noble18raa5zs3vhdsl45grs3ensgxnu4xk9lxvyhm89", - "percent": "0.0%", - "airdrop": 2590.932771054747 - }, - { - "total_amount": 456169264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhKE1hPOtoQZNgDQW0RAt0ipK3wFTdrf78004zAjE+1J" - }, - "address": "noble189gtx963f0v78y4w2yyf6ky90ch2egd6ea2gnp", - "percent": "0.0%", - "airdrop": 8012.951604728606 - }, - { - "total_amount": 244216410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajm4LF2qf98UUf1sr92AbsjcR86N9UdDJaYe2ddnY7Vy" - }, - "address": "noble188dscdln6espu9rayj2eafj2tu04wgxtvzygmf", - "percent": "0.0%", - "airdrop": 4289.842452889503 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+AxsaLuvP4uKd6gJLTkTn7T9cRX5c/wT2/QFIUevmQY" - }, - "address": "noble18dw7camzt7ve7tvq0y4u7ym0zer7wnwh3hm70f", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 106408027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag8IBvNLVFTQ+sHQHJH4OLoIZo7JBUI85Y08smKTDaH1" - }, - "address": "noble18d66t5p3x2tf5mjml58uchp22n3axuaxh560j3", - "percent": "0.0%", - "airdrop": 1869.1359501714583 - }, - { - "total_amount": 329007764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArwLq5k/IOLLQHIfZ4O4TvixdgGQ66bj+rjzR9EE5OGP" - }, - "address": "noble180g8gx6v47zy6ptevdj0f8nfe5m4y5lgdah8e4", - "percent": "0.0%", - "airdrop": 5779.265502008856 - }, - { - "total_amount": 509799724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhKBXnBOZNyCoLknPJ+F50O69H3CC622HRxfNRRbYR0g" - }, - "address": "noble180v3wpuk2eeke4q534pmkru0xc89l3mj0uenex", - "percent": "0.0%", - "airdrop": 8955.010429014788 - }, - { - "total_amount": 273667217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobQHwE4t9MQkiB4m4nPxXvb9tRcNZDBtl6mJjAo8DG3" - }, - "address": "noble18s4tq9a6v9jqvag536nt4tdry7usua7gg66729", - "percent": "0.0%", - "airdrop": 4807.16773066447 - }, - { - "total_amount": 50768891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkHam97E5e+KewpAMYS38Vl7iFMEWIZ7ajQk/h7MeFt2" - }, - "address": "noble18nl5lvh97h52gtwzzs4dp3mhrpcsys9avl43d9", - "percent": "0.0%", - "airdrop": 891.793241485778 - }, - { - "total_amount": 163899720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuAZpz/2mbXadyweaCwzRmmRiEiUhBMXI1e2wm4Kb/VO" - }, - "address": "noble185999fwjsjhsp3tfs9p286js9mqq5ya53hhfk2", - "percent": "0.0%", - "airdrop": 2879.020197179635 - }, - { - "total_amount": 50834135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhRcVhzFpc2Go1fl9wi+iDmVgOqD9gc5L2E3G6d1VC02" - }, - "address": "noble18krzzgkdper7hplh0fredqkdtjzvyjrvyjcg7v", - "percent": "0.0%", - "airdrop": 892.9393007575376 - }, - { - "total_amount": 228443640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyfY+bRC5cEFbGvQwghLJxK48jPaiKUpHNwTKE29nR0i" - }, - "address": "noble1863np58r7yr22kwk0f02s0grkqaanz06zmf2n5", - "percent": "0.0%", - "airdrop": 4012.7820442721536 - }, - { - "total_amount": 52587180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmjzmhFihmo+j2/w/Eje7vkS3XPZZe9RiXo3oy3tarxN" - }, - "address": "noble18lpzdk3z0f487up8qkav6vg35fq64y9prca2gt", - "percent": "0.0%", - "airdrop": 923.7328369610452 - }, - { - "total_amount": 99006125, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4VB7aJeVC+nSVNBgmpjFp0KlP5/1C4VmJmrIRopTVl/" - }, - "address": "noble1gqfhnf8pdaum7hw5vq383vgx7um9n5fsatmgpm", - "percent": "0.0%", - "airdrop": 1739.1160492494532 - }, - { - "total_amount": 58430028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4310LXDV0oWV7oMJMIpS0k5/SoCBy0tVbCHS9lLYhx1" - }, - "address": "noble1gp957czryfgyvxwn3tfnyy2f0t9g2p4pdwcxj6", - "percent": "0.0%", - "airdrop": 1026.36679753798 - }, - { - "total_amount": 2942676983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2jG+LFDNyO4yEO7y8P8E1L2EyovU4JIE4rckALNyYSV" - }, - "address": "noble1gp3sylf3vq5ptnp7z69ue4xhx66r3f9km57leu", - "percent": "0.02%", - "airdrop": 51690.30470480752 - }, - { - "total_amount": 5108114415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5uUURTFnjMC8TvyGuBhtScslWhzY5gQhTqecXsRM9Rk" - }, - "address": "noble1gztparx3fjwf226jskxygya88s09x7vszes08m", - "percent": "0.03%", - "airdrop": 89727.81997607707 - }, - { - "total_amount": 84997596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7AANyvxHadTqWQb4ANuGnyE2zDXQyCdhhg3bw4triNh" - }, - "address": "noble1gxzj8aaxy5jcda0a7q8j27p9w8qjjrd7hgf5m9", - "percent": "0.0%", - "airdrop": 1493.0458428831664 - }, - { - "total_amount": 63000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmB2szwhFBNRBKrCwd3Utug6h7kqnZBn8z0MT/QzVZIi" - }, - "address": "noble1gxh99pjlga34d5qkalyvpt8jhqlwceuxp27673", - "percent": "0.0%", - "airdrop": 1106.6417466870414 - }, - { - "total_amount": 107992335, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ykOFSHhML2Y+JZ1w4FV6qs00+2aYynloCBVZyrwH+o" - }, - "address": "noble1gxem6xt7uu946n2w6jehjrmdh7kvn58rdkapye", - "percent": "0.0%", - "airdrop": 1896.9654957652717 - }, - { - "total_amount": 271454665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ansnrhc6GYz/7xRv1P/srlN+wMbL8Qb8y0ui68M58VY5" - }, - "address": "noble1g2g4qjv99jy3tsgfe06h69vk6eutpdh5fch9g3", - "percent": "0.0%", - "airdrop": 4768.302613046758 - }, - { - "total_amount": 228869353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkWZuVjv2u3XHG739vGlL134OsIO6mwaVrCa+0dTr+vP" - }, - "address": "noble1g27g6wc0qz4tqks242uqd3v7lc4q9yt0sdq388", - "percent": "0.0%", - "airdrop": 4020.2600090008423 - }, - { - "total_amount": 96681089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyjnRmdvLji6p7jOJ6WnrApXDzDxynuOj7POluvPqHFq" - }, - "address": "noble1gv53n36hvj8xvus52c36c66986t8yycu4wq4lc", - "percent": "0.0%", - "airdrop": 1698.275066707386 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+QIB0U/4FbvCDKKpvRCDOSXFWGl9sbULW2y77CxNsYC" - }, - "address": "noble1gw6c0guarpjcmnnx22akavpqalvwvkm078ac25", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 140635504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsVd7968TPRMt2qbliJyaq4Cxw3LBEhUpEVYZgORjuqH" - }, - "address": "noble1gjfg2p7lkgluux88gjdvf70r4l3e4527n5n05d", - "percent": "0.0%", - "airdrop": 2470.366980837657 - }, - { - "total_amount": 761369153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axt9NxqKvNt5cXt6qHqCRg2OUykP4T42s8vUjt+gWK8z" - }, - "address": "noble1gngl9qlrtn4kdf0ytm6cegs5ruzhx6hd7n8llx", - "percent": "0.0%", - "airdrop": 13374.014116659575 - }, - { - "total_amount": 219543088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Ef4ld9/hXzNn5pYPEwIZ072kFDoqDaLSyLhzK9S7fw" - }, - "address": "noble1g5ls354gl3qd4jeptxczc238d998z8cfg8u5r6", - "percent": "0.0%", - "airdrop": 3856.4372440855054 - }, - { - "total_amount": 60181508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6WRB35EZ6ycxMwZp67QaQ+1b5AzhMlWptEkmU6ty6Nv" - }, - "address": "noble1g4vqvclpy8svyecs0qp7a2xklwa0djvzu2nx0p", - "percent": "0.0%", - "airdrop": 1057.1328433552408 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6uGWk0cX3U6Cj/kw0Iu9dH8aMPUEAw47pRNOK1ur1oZ" - }, - "address": "noble1g44cnehcgygex3ntw7zw4wkksmptpgc526rrjc", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 6268725769, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9B/+Q2iB6yVYE9vlldsoNDjLD3oWnuxMFtV/Ztu7ak9" - }, - "address": "noble1gc43wglu93g2uky80wrwdc8r6fzamvs4nkdg0z", - "percent": "0.04%", - "airdrop": 110114.81959536868 - }, - { - "total_amount": 30793964245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhGOEcyWTTTgsGzFXkkuxM2gnZJQdDCSkDUbxAabX+wA" - }, - "address": "noble1gm9stluhw4xklwyv5kwx9v3veqsm2uq9cmu69m", - "percent": "0.18%", - "airdrop": 540918.8314207159 - }, - { - "total_amount": 12745385534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+qckwgFhjuNb/FYprQRD1cQma0HerMjs9+hqsDg4ybE" - }, - "address": "noble1gmkwwtmjjuyr54cp5tx493mt7hhkjx3r03uyfa", - "percent": "0.06999999999999999%", - "airdrop": 223882.15411977 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/lSDoxH8ZSVNWk5gga20q1/34gB7eKn93tkIIXs8nP" - }, - "address": "noble1guh9xrzeuvmmnrdhtsz2sf23d9mgm4xuqnltlf", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 72369919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akheb61LV/Ba2rCrUfxi/W9y0Dh9be/N0zcPob4ECRUH" - }, - "address": "noble1garv78eafu6lsj8hk83lvurf6wvsz36mepnzw4", - "percent": "0.0%", - "airdrop": 1271.2313265041225 - }, - { - "total_amount": 245624229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwjKcVnLlsdMK+C4qYREkqIFz9u4sjTImdWkqq16IG4Z" - }, - "address": "noble1frzr9rs8tfwgte33rug3xpyas4ckj4wdemxgjq", - "percent": "0.0%", - "airdrop": 4314.571838241553 - }, - { - "total_amount": 507354785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/B9EvEYCr78F8DleXSi+vqV5Ryk252+D0cqms4M7qKr" - }, - "address": "noble1frruu2ru6prrr5lj2n6z9ltjs47tf5qw9xedmh", - "percent": "0.0%", - "airdrop": 8912.063261308387 - }, - { - "total_amount": 954267399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxY27DkFw7VYYq0Q55RLtAkvq1t3qw1xlpkd3CLaIerE" - }, - "address": "noble1f9wmqlx3huq93rsepw8cnkkkk39lw390yupm2l", - "percent": "0.01%", - "airdrop": 16762.414940251743 - }, - { - "total_amount": 2642891515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0jwoa6sjBtk6jvtuZKjNww4w5KGVPIRiTQ2ZXFdcdjs" - }, - "address": "noble1fxw3azlpglvj7np276g09euu674m08csq3slt8", - "percent": "0.02%", - "airdrop": 46424.35051530097 - }, - { - "total_amount": 104081755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDKDlIE+5JFMZib5KUf7Dm3nxC9XqP0sR9U6xtYRUcP" - }, - "address": "noble1f2syh3ydz549qrzmp2hsxxk9xu7sjkx4thy556", - "percent": "0.0%", - "airdrop": 1828.2732563722652 - }, - { - "total_amount": 964361114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHjvVjFlMw4vTN4Y7RvWhzkRRH2tlD2gqIeD4ZWrU/I" - }, - "address": "noble1f2jleutp2yktugczv4dhfhlxz0yxl528xe5ad2", - "percent": "0.01%", - "airdrop": 16939.71853387335 - }, - { - "total_amount": 3305138631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4/zXRziptWCukBZXNucrQgBWro9fgn5w5lYraBWKVVg" - }, - "address": "noble1ftsax5j53m44jadjzce6ygkf293rrv72j46ayq", - "percent": "0.02%", - "airdrop": 58057.21250242312 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Wbu45Nqx9PfSzHbgIOU9vdLsTPngH5zDGnyigZjweh" - }, - "address": "noble1fv56mcq4l94yned638682qp7wqun5luexw3l35", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 153674964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cZQXjBh29XhUmVa7K82NyASDQ3Qqf5N+D1b3imQD5v" - }, - "address": "noble1fsvfrfrsz9ktlpysykx8vyf5a2v2zxktuev0rv", - "percent": "0.0%", - "airdrop": 2699.414771159178 - }, - { - "total_amount": 234685616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5lreGFdEYSw8So/+gaMVnTi6vCf7dcNg+ekcnsG4kkR" - }, - "address": "noble1fshqcjdhd6ft9dghg3ct9sa47wh782ug23e4yv", - "percent": "0.0%", - "airdrop": 4122.426984326417 - }, - { - "total_amount": 576663733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2NSOC8lk9qy9zhp0+MzMviLX+zBFB2pk/Wv29T7vP8T" - }, - "address": "noble1f5d899zwajg3m8vatmrwyyqu36x4ur2msueyej", - "percent": "0.0%", - "airdrop": 10129.526360923646 - }, - { - "total_amount": 274944787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8JJAQ6S1eBiJSTHYfjYKBHFKLwNk1W/Bd4sD/JnAZHB" - }, - "address": "noble1fc54sp4v8s7tsqv05mj4j5cpeg28mu3ysyxukv", - "percent": "0.0%", - "airdrop": 4829.6091956853425 - }, - { - "total_amount": 1465382099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyiwPWiEDI0ls7p7YSugJqNSGoIPHjtTkyR/OWtzC33f" - }, - "address": "noble1fcmqz9nwzp9fg680wmpny9gtne3tlhwrg9zv2u", - "percent": "0.01%", - "airdrop": 25740.523898433068 - }, - { - "total_amount": 1571788773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2nYwePiIm2twXK1MVwnXfzn1sl+XUYHrR7QVUo7W6E7" - }, - "address": "noble1feg3kdcsdgkzsg7l3usgh6t7vltgk26fvd5tgs", - "percent": "0.01%", - "airdrop": 27609.636082155583 - }, - { - "total_amount": 2158225497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqH75unuzMdsRBAVupcu59KZqzjSWN3EeKp/b8gWSM1N" - }, - "address": "noble1f63effg88kjc36j7xwclt02wq85773za0d6nmc", - "percent": "0.01%", - "airdrop": 37910.83228166013 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApShX/QGFogmrOgS7K9m9F+E8CRKJJgmXWLZFYO7R/5g" - }, - "address": "noble1f7smazgnj6jdkkacs5x3whpw3pqqu2k90fpy52", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 1844818581, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An2vgfroIo/tuPPUL4/KX/YxnQg91cdhWUCzESvjbXp0" - }, - "address": "noble12qhqqdxv6v46w7a7mtwkrrl8uzggw2e66qu7kv", - "percent": "0.01%", - "airdrop": 32405.607250770623 - }, - { - "total_amount": 368239933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/qvarg+WKftjXvYVqb/OW+g0tF/iEv9PoYyNZpS25J5" - }, - "address": "noble12rjpgh43mr24vvcdl5st3drp4g6vg06w4lxsy5", - "percent": "0.0%", - "airdrop": 6468.407661191097 - }, - { - "total_amount": 195842164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4a6Dmsqgwij58CgjZrES90DTagNcOLXFMsJlbjM+hN1" - }, - "address": "noble12ywe573are7s7dphws7hefmhxqf8g49ze8ez3u", - "percent": "0.0%", - "airdrop": 3440.112927681429 - }, - { - "total_amount": 5837065208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxfeTrbixsh/HXU6O1pA7sRRZVfiM2UAQNGmPI5rOIGl" - }, - "address": "noble12yka2ux5h9f449sfjthlqvldu5rtrdxh0t5kgz", - "percent": "0.03%", - "airdrop": 102532.38154455998 - }, - { - "total_amount": 393723198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvEGdSCrtVebQiFq7VhV9U5ae5wdve22bF0HGb2ICath" - }, - "address": "noble120ww20lw803cjfv82nhauycyylnucq2qx35mcn", - "percent": "0.0%", - "airdrop": 6916.040119776633 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsvCEgdsaZJHtqNXKpheNslDvAe50I2aFxhoUah7fR8L" - }, - "address": "noble123mmdau9x86l4jze3rfnq5lpj09yfja3je5wwe", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 216691415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwdQ5O7oI/MHKNoI7BfuY0k+EENY++zCjhDa6zBTo1ZR" - }, - "address": "noble12e7ryh3z4034zd398lwudmyvkm7hngy5jxskmj", - "percent": "0.0%", - "airdrop": 3806.345491868041 - }, - { - "total_amount": 248737018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2609xudDfa8jdxdcluR7HoA2jnmo5XvPLFewSiVt6Pq" - }, - "address": "noble126lqzt3t0ml4cu4wk432zrx37qxe4ur43wznz4", - "percent": "0.0%", - "airdrop": 4369.250286749938 - }, - { - "total_amount": 6227061395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atmv8ggg2jboAWxL9Dwbn/wWqusil080QDqKmF+weGhz" - }, - "address": "noble12mz6x6tuqmyurtttrf3rytzeaewdmpx5g8t9a5", - "percent": "0.04%", - "airdrop": 109382.95395063881 - }, - { - "total_amount": 918688810, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5wEIPkyyImEIIB5BcJK22k/cAiPmItiR+UUeshPxLai" - }, - "address": "noble1tz8er6d6lhd975nn7dfag58lrm5js6hz4jn04l", - "percent": "0.01%", - "airdrop": 16137.450624765708 - }, - { - "total_amount": 51814749, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvRNaR3wJGc1qU0UvLPiY+OOM6uk1ytI7xDRTj7hNQxv" - }, - "address": "noble1tgjh39tkx5wmcemeq3zuql33fwuupqud3n6jp3", - "percent": "0.0%", - "airdrop": 910.1645132938196 - }, - { - "total_amount": 82763300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2tgB8OegAAY7fHEUkLwpOltSqSkmW65Aw8gfYvLmifd" - }, - "address": "noble1tw5v8gswr0q07mfdweqppza3dq3a73fmmht28w", - "percent": "0.0%", - "airdrop": 1453.7987757711685 - }, - { - "total_amount": 45734187397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkkZgo0c1Dez6KIr5+AFY16ggE/ObZGY/ztDTk4aK8yY" - }, - "address": "noble1tk8g0x5lzg6drjnnm8tfa8tn7nu6zksk7g4s8u", - "percent": "0.27%", - "airdrop": 803354.936894104 - }, - { - "total_amount": 150766599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aimpmnq5gioERSPuHBjUh4O5TKKEMSf55Utfdud/TN9W" - }, - "address": "noble1tc0g2t6rj734q7rj2curum8k6c73nxac8adyvl", - "percent": "0.0%", - "airdrop": 2648.327181895631 - }, - { - "total_amount": 91615515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2FFR7BXFAkYa4MGjjUAHudvmwiAfOTgJRj3mwCB3BbT" - }, - "address": "noble1tahty7aqrekgmmc2k9mle6vy5xu2jkdq5x5ja9", - "percent": "0.0%", - "airdrop": 1609.2945006862356 - }, - { - "total_amount": 1191372983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoXrxXfbY92VCkVidhU+/3ODnOcFi78cux/GZm/MsT9P" - }, - "address": "noble1vqd6hxuqurm7phg586vw6rv28rga4edl3e2mrq", - "percent": "0.01%", - "airdrop": 20927.35045814081 - }, - { - "total_amount": 449600415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alyl07JlFK+qduWofOfW/C033UNwksbYSH50lRP4k0oW" - }, - "address": "noble1vprzckeuhyhaxrd02q2jdxh34dyy7s2dfd09qs", - "percent": "0.0%", - "airdrop": 7897.564897886011 - }, - { - "total_amount": 4558247206, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9sum66H9XBvY9vhWM1eh31k/6+iBRzIfqKniixzRMw2" - }, - "address": "noble1vrn97qnfcxyjh3d7kkrl60g4u08xyve0n7agna", - "percent": "0.03%", - "airdrop": 80068.99444252644 - }, - { - "total_amount": 55662189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahtgaqa3pARr8E0eJxFk46lHT0q79T1g+M9gCvhZHm9k" - }, - "address": "noble1vyzm9da2rndspm94kr3jcu34wfklqa28scawsg", - "percent": "0.0%", - "airdrop": 977.7476517362576 - }, - { - "total_amount": 1187261011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag8pm4gh3cGrO7oLXlhmCILHmh4R/qWCKt6e56iUmswl" - }, - "address": "noble1vgclny8s2gaj30vhcdqxg0ycwr64vq6gqjy8vv", - "percent": "0.01%", - "airdrop": 20855.12061883274 - }, - { - "total_amount": 99202681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azb9qQ3mMDVBHr6bvGVkj6uQzubFzCsiIs3sNWqFPndK" - }, - "address": "noble1vfsc4t6970y5w9nlcdnj80u6xj39c36g2jx4wa", - "percent": "0.0%", - "airdrop": 1742.568701236149 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqzrd/G/9TU2Ywv041MU4673KYE7WAh9XFqGXeamafp9" - }, - "address": "noble1vfax480em7ql7pf6d434y5uazf04f754xkatua", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 191616882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A519qwQzG+GplQ2XwHE1Bkayd0UC3+apgyGxr1C6HXzq" - }, - "address": "noble1v2lqf304kx6p4ge65xjutuppr8aaww533v5ct9", - "percent": "0.0%", - "airdrop": 3365.8927141461068 - }, - { - "total_amount": 63562234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AheFz7clCqfIplO4IaNy7cqhMjDx7htxMOIs5SNipb8T" - }, - "address": "noble1vtfdh6caq538g790smy7qj4cp5s6x2tyraxgy7", - "percent": "0.0%", - "airdrop": 1116.517804080801 - }, - { - "total_amount": 1223533440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5A9kP7iSU+uzWRmhsddl+q4oiff6CGC034rTAcCj7zg" - }, - "address": "noble1vdx0rr5hpxrlec85janyea4hp738vc3qvvr9ry", - "percent": "0.01%", - "airdrop": 21492.272748755622 - }, - { - "total_amount": 7052099434, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhYJvmXvM3mah5XgaCf6W+MSN4YdZnUWtLKxU3v56hec" - }, - "address": "noble1vdvh86uvdjt8kgxny55wg4v28mgc8d20t2klrv", - "percent": "0.04%", - "airdrop": 123875.35929289614 - }, - { - "total_amount": 1321358725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhWY/EagxdvEN4+Rn2GFaiBKafPbAjR2BB8Bb3cBMFAY" - }, - "address": "noble1vd3l3plh0q8y2234kg8zk02d8fg6jf87zg4w6f", - "percent": "0.01%", - "airdrop": 23210.64646720892 - }, - { - "total_amount": 3493904010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As4pasVPr4/FP2f8GSVzbhMq01S0bQgj6FtX6vzFPCF3" - }, - "address": "noble1v067pclzvwuqc8z6d7a9t20juwvzle77dmz8k7", - "percent": "0.02%", - "airdrop": 61373.01645052791 - }, - { - "total_amount": 211935339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyAxRPYo2fnd0M6O7sKi5x7CMUMx+s9k8diZ1b2I5q1L" - }, - "address": "noble1vsqs0d3y6ufln266r60qvszhps3tmgsxxl5tdt", - "percent": "0.0%", - "airdrop": 3722.801487867782 - }, - { - "total_amount": 171531699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoT0pwW7oemtZOBpf/lS6tCdxLdweO16muqMoD6Q9N88" - }, - "address": "noble1v3gdsvn0xenatd7dzrd9knv8kh4p826zjvxk0r", - "percent": "0.0%", - "airdrop": 3013.081571326283 - }, - { - "total_amount": 250191182, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7lEMn+1irTLDU3EbXmQ08pnwudAsj+fY9lyM66QbFDM" - }, - "address": "noble1v63crt856a059swr8syfzhfqvn09le6zjtxlcf", - "percent": "0.0%", - "airdrop": 4394.793756415484 - }, - { - "total_amount": 2167582852, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/W1hv8vXbPA+7PIdZU6DDMC89LG1Vdg84R0huZVtzqz" - }, - "address": "noble1dpltqq0vx52vkarvy07rjer92thkufgttxsxdl", - "percent": "0.01%", - "airdrop": 38075.20116549458 - }, - { - "total_amount": 99592901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2L5FBpbJi9fvgoWT6PdPdFPw+f9R+BrKJE7XgJPn/R2" - }, - "address": "noble1dzpdt6hypn5znechvhqwsan8dce94hu5dkanwa", - "percent": "0.0%", - "airdrop": 1749.4232050836445 - }, - { - "total_amount": 18391599468, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AguSlphBbG+W7fjDPPPlLodFfU6Uy5fQtFijAwiWDDGZ" - }, - "address": "noble1dynvckzhjq8q0x8zwwzwa237fwclxp7jxzvffe", - "percent": "0.11%", - "airdrop": 323062.09142279334 - }, - { - "total_amount": 61694960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/VFuInZNyeB3u6R/IW2NmLvNZrURZlYaSXuSVkW9cl5" - }, - "address": "noble1d9rrzhl93s8hydwha47xj72ukscs8rqzlffvye", - "percent": "0.0%", - "airdrop": 1083.7177507331294 - }, - { - "total_amount": 1024547797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4MyI3XYVSMRYAmpR9SCM6Gqpf7eZWewzOCdXz9UAJuO" - }, - "address": "noble1dxe79ajlm4y94upajnna3jh7ahqywg7dtv77nh", - "percent": "0.01%", - "airdrop": 17996.942279943498 - }, - { - "total_amount": 1376369357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AolZC35x+IjNc3md8Vf1OFfcJJTpLyGnFj4ym49wLJxf" - }, - "address": "noble1dt00lvxdd4ygft4lmuhdykn26arnk58c7qaqgp", - "percent": "0.01%", - "airdrop": 24176.94903677778 - }, - { - "total_amount": 105240582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av1sDUsQEg0MJMp168DApiD1E5EGpVKl+JHQODLXXdW0" - }, - "address": "noble1dt3nzsdxyyj54gast9zs3xavcucz4gqakw9gpx", - "percent": "0.0%", - "airdrop": 1848.6289124895368 - }, - { - "total_amount": 71392515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+SWRuGALlVbwSzfprdHv1bZJJYiS/moSaFL0NgRTFR/" - }, - "address": "noble1dwfj4zmazd23wku4jcxxpvgt8986kclcsp2dz5", - "percent": "0.0%", - "airdrop": 1254.0624999996953 - }, - { - "total_amount": 1052545429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj/obML/+4na1SRpeKeo59hRjycjww6/K2PLkGlGKv0i" - }, - "address": "noble1d5vygmmx5c3cvx7h8w3a666aq8amy6clw8sc6s", - "percent": "0.01%", - "airdrop": 18488.741460571768 - }, - { - "total_amount": 525309034, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFpV7EKYYm3MX1MHORtNrVpym51YRtiF/tEUx5sHzXs" - }, - "address": "noble1d5jxrzdxhhtmwmpplsv0msyzfgxs6gavswx3um", - "percent": "0.0%", - "airdrop": 9227.442967241943 - }, - { - "total_amount": 260205179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgzXAwsna6gXahiecrCqnMPOT2HpMPf9LqjCTaCpIyC6" - }, - "address": "noble1dkvm2v3md93q847d8j2els6gv43cvatq8zf050", - "percent": "0.0%", - "airdrop": 4570.697044215465 - }, - { - "total_amount": 2755105740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap5ePLIPTYBKZSOqm5pk9Sq6/XDzqx1PxriorG4Ic83e" - }, - "address": "noble1dke4wndh7q4jq4ps4v2guw5ade92606jy6agmk", - "percent": "0.02%", - "airdrop": 48395.47664160467 - }, - { - "total_amount": 500915311, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A++A8dS+sEmD0VfCqOJ6srPqR+iZD/paQcAFvfutiKNp" - }, - "address": "noble1demgqyzrh9zzku4psrlzqduehspnpta2pxjqnw", - "percent": "0.0%", - "airdrop": 8798.949122338454 - }, - { - "total_amount": 1676482291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiK59q12WKqyTp1C5kY+YZEzASZqLlPd+mDpB3GxgA1j" - }, - "address": "noble1d6x5yv5hwkhaunhqpqwmdf9t6zd8wlh0uk3nr8", - "percent": "0.01%", - "airdrop": 29448.655409557665 - }, - { - "total_amount": 2381942555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AipS72cJs3vUe8WsQmqEC1zglemRCjtON48sHGLjLSZU" - }, - "address": "noble1d649tnttdphknafag5xwz69fd55v9rllxu84tc", - "percent": "0.01%", - "airdrop": 41840.588405926894 - }, - { - "total_amount": 448527657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rKoCM2tjPtL1f2c5DVGRmifmeDsjd/U0w3Ubk/toHj" - }, - "address": "noble1dajlhejd4ne0awfljzwg8yuqw4t9gcmdhx2x68", - "percent": "0.0%", - "airdrop": 7878.721107617876 - }, - { - "total_amount": 61004960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvSrYKZH0bycizyuHF03DT5AcYNgc3+zATHqprUD0Y2S" - }, - "address": "noble1wqapuzd37u0h42npw2lkl5dcjfn2uxfplsf9ln", - "percent": "0.0%", - "airdrop": 1071.5973887456048 - }, - { - "total_amount": 808800261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyX7Ua2ZGrGD1kURf8VGm4x+hf1wrMoyASsVb4mopWjY" - }, - "address": "noble1wppng67g4p3mlj3rp0fhaytq7mrkhk63wtf3n2", - "percent": "0.0%", - "airdrop": 14207.176723078968 - }, - { - "total_amount": 444482623, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0aP/4xnr7cRPRzoBoCH5XUkaLqRp8wV1c1F9zab5d/z" - }, - "address": "noble1w8jrxth8pxwyqps4wrg5jwsm4w0x8uhf7v6mw8", - "percent": "0.0%", - "airdrop": 7807.667083948536 - }, - { - "total_amount": 123924749, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atuex4w92KmfJH7ABAKb4mHL20weManH7HfQS7HXHi4a" - }, - "address": "noble1wgahmf863takdln7z7shfsw4xwn8tkp06a0kmn", - "percent": "0.0%", - "airdrop": 2176.8301697002094 - }, - { - "total_amount": 59468370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkG+IPoHWHL1j61mae6Bd2ut3YQ3eM5bQ3624QarkDbu" - }, - "address": "noble1wf0j4vxmcxk0j7pyx2wy47gxmlu676gjc3svwr", - "percent": "0.0%", - "airdrop": 1044.6060452290676 - }, - { - "total_amount": 285099063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqvfDnP7NBa3LJlviKFeLR59DjPek2/wV39UTLd3xtjM" - }, - "address": "noble1wtt25a5uexg3ryr0snxxethsmpys2u95l6z0hh", - "percent": "0.0%", - "airdrop": 5007.97658820887 - }, - { - "total_amount": 1506461305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayu4bD6TdiZdurmOyCBGFCdthpm0fcDqCSU79K6NqJIA" - }, - "address": "noble1wsjd3sp0qdsp38lsf2stdzzk82k5rymf92s49d", - "percent": "0.01%", - "airdrop": 26462.110633041902 - }, - { - "total_amount": 522944991, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cDvAyqjZsWdCrlLUt6x4NCWfXNSJFTU+bPROW7UIx0" - }, - "address": "noble1w3x49n5dtuc72ky8m4vmx8pkrlv33vnvlk5fgu", - "percent": "0.0%", - "airdrop": 9185.916797801256 - }, - { - "total_amount": 260526372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvrPygPuR44BKFtOYS+zzzJVnspsJthkNgcq5anHELYk" - }, - "address": "noble1w37lfuffvrg645adk6lpwvvhjhkagwfnn63mcg", - "percent": "0.0%", - "airdrop": 4576.339037589173 - }, - { - "total_amount": 958122657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuOs1yAJ/NEpeW3WOuxsG63nPoFdBWEdITAnOdVuPnqG" - }, - "address": "noble1wj2fhtnm5jjxq60a9j8gpw9nttwxhded7hz5nq", - "percent": "0.01%", - "airdrop": 16830.135407665224 - }, - { - "total_amount": 1393215858, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApkAZQPKy/xeo0mD804RS3JktH1vgnyuS9dppBQoaQMs" - }, - "address": "noble1w462zl8x9vqta03trx8e2fx4d0hr05gek90ded", - "percent": "0.01%", - "airdrop": 24472.870327130237 - }, - { - "total_amount": 1613541261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+gXs5wFzb3BafLT/WXcZPCIoFF44leBNxTDkh6WUVzC" - }, - "address": "noble1w6vjsw6deds2mjw6w7cdhge9p97syqpkg2yast", - "percent": "0.01%", - "airdrop": 28343.049514677004 - }, - { - "total_amount": 568731056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuC6//TKXHGUaZqt29Bt2d07HACAf/8mxBosYcKkd3lO" - }, - "address": "noble1wufjh97sep3harz3cx2vglv88wd5rv3d7rwlu2", - "percent": "0.0%", - "airdrop": 9990.183003285803 - }, - { - "total_amount": 150865498, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPIPDhRq2CDuk2ieCJiX/QWGs1M5NvzsUkP6tv3uNeI" - }, - "address": "noble1wlg54mtsc3eglmpdff8ggzza7xntjm2vvav5pf", - "percent": "0.0%", - "airdrop": 2650.064416214768 - }, - { - "total_amount": 336695572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AroipiLhiWYWWTV33s0xtywBbGwtHxW6WIZebR23rXER" - }, - "address": "noble10p5vw2a9jzd0add0ty0vkhxwekcyenz5tljqp7", - "percent": "0.0%", - "airdrop": 5914.307553966231 - }, - { - "total_amount": 332642352, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5656jiA4ZUUUMMSwajuu9OaoRnTivjwdY7Z3U+BZE5R" - }, - "address": "noble10xg7p4xyn5z5knj48fc03y4vu2afly6htfeg4d", - "percent": "0.0%", - "airdrop": 5843.109737132789 - }, - { - "total_amount": 851828031, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoTTR5Si6jiRzSI3jPYllzLIjETOm88rHolCc5yijvLV" - }, - "address": "noble10xdrh24kpcruktw3vuuw2gwhnmuznch0m430a9", - "percent": "0.0%", - "airdrop": 14962.991430203543 - }, - { - "total_amount": 55236226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlcKmoVwNQyDMtIKJOe8320xyNy3FVXin3fM+79ZHLVO" - }, - "address": "noble10xlnv3kvwuvs257xjk284hv5lm2489cdzvqure", - "percent": "0.0%", - "airdrop": 970.2652955720662 - }, - { - "total_amount": 166300198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6yT7JfmJ+XRMnv7U0IF6zhtYCx6GMq++M4vZd/4Jez/" - }, - "address": "noble10wfvnzgeqh42farntv2f2l4wg5pun29qpgvmp7", - "percent": "0.0%", - "airdrop": 2921.1863744304896 - }, - { - "total_amount": 454919088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2yMgLOMtcO+asmFe1pVPH8AzMqKU4GNVG/CwgjEzHFE" - }, - "address": "noble104dtg3rphu25vpce7uw07ss0d5rnq9wqk3n0pn", - "percent": "0.0%", - "airdrop": 7990.991335644379 - }, - { - "total_amount": 198021298, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4312I6bupgFbKxpy0aRgm5Bd4fUcDWIpPpreEJpTnJw" - }, - "address": "noble10ckegfxp0aj03gnnt4r6gjhdg8wdnvx0xg7hj4", - "percent": "0.0%", - "airdrop": 3478.391033332621 - }, - { - "total_amount": 5940836883, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Gv8+xS3E4iQjE2k7+CYWAn/w2FoeEW92nBTHAMsV9B" - }, - "address": "noble106xmqnkq55cfmxc3l892cm3csr0py6wr4sjmyc", - "percent": "0.03%", - "airdrop": 104355.2080156495 - }, - { - "total_amount": 1400000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2fR46efVUPJXnjTKOjgImfdL2QhzDrFTpagru6ErGZ3" - }, - "address": "noble1sz2jslz5d9dt5gjgml0xh9vjxg09x9jh0z5aj3", - "percent": "0.01%", - "airdrop": 24592.038815267588 - }, - { - "total_amount": 1837783205, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8gTAPP3zsPEKnvETqDzPnhQ9GtCDKqtdVbspbvPVNzN" - }, - "address": "noble1syevhel096swjt0g9l2ngfcdjp9hya5wryuyh7", - "percent": "0.01%", - "airdrop": 32282.025651004908 - }, - { - "total_amount": 77587416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2b7i8I7W4NxMXbh3xtahQcSPrOyzZ+dq3UfhQBVCYh" - }, - "address": "noble1sxh2n0pq8yqsma73fs0n7camp4td9heuhkzh8q", - "percent": "0.0%", - "airdrop": 1362.8805327487953 - }, - { - "total_amount": 1325648304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxbcHrbkEeiwth61kkVIrrl/SzKvw3B95GEnm0b+FdaW" - }, - "address": "noble1sgp0j97332xzdzn5jy25ad6crnpsu0gv6zuf29", - "percent": "0.01%", - "airdrop": 23285.99610525832 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkcI9J5IjfxWFh9Q8+1YskMTCJ9NcIFmYWLVJPhzpQpi" - }, - "address": "noble1s2n6cnq8fta592kjr0j3l8nzl64ajgnmxlpu2y", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 106619975, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApEjnshfBtY1xHcJO15jA8oBPsFuXeKkYgISmm62s5lV" - }, - "address": "noble1sv7hqzsg93xlhgg7q99dyy3mra7ucfzevnr0ch", - "percent": "0.0%", - "airdrop": 1872.8589740591856 - }, - { - "total_amount": 5153378276, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+L1PF/DLrUETV/KQ/0Q7lG3n76tJiFLAT9LR5qggNq" - }, - "address": "noble1s02s8tlvc0gl639afgd9hmr69nfx0tnwypm8e5", - "percent": "0.03%", - "airdrop": 90522.91328082055 - }, - { - "total_amount": 2781339940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8ttV74jSlgrUcJqv/Stl+DhjoqrWBvmMNPEZeCrVid8" - }, - "address": "noble1s3z2296ejkvl283d3670granfsv6jw5qtdcsr7", - "percent": "0.02%", - "airdrop": 48856.29983066716 - }, - { - "total_amount": 170971000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUl+SGQjloFxYyDBcWqQS9HhxpC5Y6DmW38QSXQtTtd" - }, - "address": "noble1snqv6xq4n7dh7vvkv6h509fja994w5mr27ys5h", - "percent": "0.0%", - "airdrop": 3003.2324773465107 - }, - { - "total_amount": 4227953643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwrXABJenRljm/tiCQ7uRD58/c2Py2LeERA/TdiaqegP" - }, - "address": "noble1sn2qwwjwmmny4tk0ykm34y544vrw58pnhf330g", - "percent": "0.02%", - "airdrop": 74267.14292700571 - }, - { - "total_amount": 51320033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6bQ1tFvxgTEFZpQuLD1WxHaTyxb+Vwmnz9EXIrhFwc+" - }, - "address": "noble1s5f9ezcqj6euemwxt2d66cefj2yrl76gx3ec7q", - "percent": "0.0%", - "airdrop": 901.4744596691526 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6/+acXac80MLBE85/Zqo22E11KYs+X5GzygyCsEkM6W" - }, - "address": "noble1sky4vppl2783qh283u2uqx9y03jxmh3fmj6vqh", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 56812881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhMgq+6h9nvuYQjK5g2c0vAbfLrw0rWlnzRMRozTrwzD" - }, - "address": "noble1ske4xnr5ehjy2a5cyv239yw95fpt2acskerw72", - "percent": "0.0%", - "airdrop": 997.9604105422703 - }, - { - "total_amount": 2976275207, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0hKjtMa2mq7s+AMUAYD4MAarW+yMzaZnSn9+hSDzksp" - }, - "address": "noble1sccd3r5cmx7kdw2v22mdl3zes7at470pjnsy8k", - "percent": "0.02%", - "airdrop": 52280.48243961613 - }, - { - "total_amount": 141782106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5VyQTKIgTdqEVZt8wrWZ4D3npe3+Ie1xEksOau+7EzE" - }, - "address": "noble1sawy86qus3phpfpy42g2txzhakzrrajd36angk", - "percent": "0.0%", - "airdrop": 2490.5078957588453 - }, - { - "total_amount": 160131116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7SMDzH/9fjIr2pKkeq5AzITZUQrMpME6aOjADwm/KU5" - }, - "address": "noble139395uy26hue092uvat7awq5slnuagarpdeujl", - "percent": "0.0%", - "airdrop": 2812.821871574369 - }, - { - "total_amount": 190591255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApR702zET+QYffspmtknLD/irwT5RB+4wO8dyntgUalY" - }, - "address": "noble139ate5gugc8hg6a8tpektnmfcusnpzkmz85z0p", - "percent": "0.0%", - "airdrop": 3347.8768148646877 - }, - { - "total_amount": 1727791777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnuPMqOBUVETXL65ul04GunRWNTbafUyGrokHGj+FYEC" - }, - "address": "noble13xhhfnyg2wz8tnjrk7whkpkxzuhj268drwquzy", - "percent": "0.01%", - "airdrop": 30349.94460334583 - }, - { - "total_amount": 171117650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uIttEpubOt0S3zzqvBnSV0UVocm9wufIKeuiUySmK5" - }, - "address": "noble13g0dpvj9m9r2rcct2y99mql2p6aqn8c356e32l", - "percent": "0.0%", - "airdrop": 3005.80849341241 - }, - { - "total_amount": 433725895, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At1fMB1qmfzs/YkH5EfJ3tOlIIaFEYTdICCHZvCv8nV8" - }, - "address": "noble13f9hqtssa60g2rm9yksxe4ranju28yxwwdldkd", - "percent": "0.0%", - "airdrop": 7618.717175019053 - }, - { - "total_amount": 449094362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxTE8j4VQptf0AwsYzyKCgUYOvALartJEU+HWgfgRY59" - }, - "address": "noble132gk86f2p7202eetasfjnqx077t3nx8ghwxlm9", - "percent": "0.0%", - "airdrop": 7888.675701444166 - }, - { - "total_amount": 112664104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aly6/AweTlpzqWtugVsVKc2i3Da/aQi8TnU7peaXpGrr" - }, - "address": "noble132k6dv56kzjjkl8hgfn3sfql4f3azmqst280ff", - "percent": "0.0%", - "airdrop": 1979.0285847538175 - }, - { - "total_amount": 716828213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ocdYWGCUoeBCbRD8ddB9HZ2XAkVsh3TpaMHdF/HKir" - }, - "address": "noble13wanjkzxy6k8chmk66eg25pj7wmvgzvaxpq888", - "percent": "0.0%", - "airdrop": 12591.619455696358 - }, - { - "total_amount": 30447140235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHaadirZuxwjCwslIS4A054CIcQILlMrIEZaSbuY/aQ" - }, - "address": "noble13sv479vcysdwz2l3af7at0jvva00jadaz67fps", - "percent": "0.18%", - "airdrop": 534826.6103378682 - }, - { - "total_amount": 51739491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5kHGn89Str3Airkazt7TrYVRJT8e+9LdCPeSTFGyBNc" - }, - "address": "noble13336q7zzxlvcngynpp3mrss7620vx5n64qhdys", - "percent": "0.0%", - "airdrop": 908.8425506815629 - }, - { - "total_amount": 20462898999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnUrkC6TNQOPPnWbtZfZnkqVyTIMCpu3HZqZj99vYrQ3" - }, - "address": "noble13n7nt9qqsg8y605r24quuex3stshhf2pvdynaw", - "percent": "0.12%", - "airdrop": 359446.00461164874 - }, - { - "total_amount": 898685566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtWXM0Y7chr9/KPMiqEs4GFu8is3GUDOxOx4eN6Os1sv" - }, - "address": "noble13h9tr79wvd9pvj4zgnwfl7f2nznvl0r39562mt", - "percent": "0.01%", - "airdrop": 15786.078801280515 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuJENyX5dJMzO0tGDzyhmISo1ZWIGcDNoX/LOqIwtzsx" - }, - "address": "noble136hxk6ze9406ug503ukwqfm6gap06gy6alzwtd", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 903853182, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ajrW5Bi9L7pQoaBrkzLrFOkEdSa8jNKhz56DMvjxff" - }, - "address": "noble136c85f859qp0qme4ufs3nwpv6y0r6vezl03yhn", - "percent": "0.01%", - "airdrop": 15876.851810747943 - }, - { - "total_amount": 3022731256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A65ZTkn/ganVCfG2atbI+iLQlOYZl0QBBLPCQgMC1YLl" - }, - "address": "noble13mn7jad24fht9aun87wl30f8k44deal70324qd", - "percent": "0.02%", - "airdrop": 53096.5174111961 - }, - { - "total_amount": 84915838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Xi7IrjJaU8hoiMXc+dM3UHE/guWz72+Co/Om8WYcwo" - }, - "address": "noble13uj9wxe3l9xfjsnmwnkws88flypl6ydmpsqwyl", - "percent": "0.0%", - "airdrop": 1491.6097029478387 - }, - { - "total_amount": 5748785706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao3NFlXVHTi6TWa8y7IuB8iXuwSeMMbLS3GNVON/9JRZ" - }, - "address": "noble13ues4s9k53a35qqu2k2hqk5fqjyzuqx76n9ssm", - "percent": "0.03%", - "airdrop": 100981.68658757677 - }, - { - "total_amount": 125990000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjngME4OHoGGMxLjpm1BdwWvtLtzeqR2Y1KrTX1RBVJI" - }, - "address": "noble13a77e7w7q20nr9l2drucntpzm8nqeduqmmyvcs", - "percent": "0.0%", - "airdrop": 2213.107835953974 - }, - { - "total_amount": 966775063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kc7eqstKEjQ87RzT/CR9pxsh/XUZAv1CrXOr+SnvG1" - }, - "address": "noble13ly7h75w2zzhvta34zjau3ykvhf8pa9p72zq5e", - "percent": "0.01%", - "airdrop": 16982.121339234833 - }, - { - "total_amount": 224179676, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqAx9Lbfy4/KPfRuS/KX6i+bGNIteekk15oZQ4NSb59u" - }, - "address": "noble1jy02xt58ramckz456as3zu3ejnkgrqvz0pwskt", - "percent": "0.0%", - "airdrop": 3937.8823527043655 - }, - { - "total_amount": 1909211640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhcL86O//BW+LopJzOi3F2cBnUt8U12QorDsm1UPbEKK" - }, - "address": "noble1jy65ezrk8u9x7r8jcp47pvy67k39cutsmvqqhk", - "percent": "0.01%", - "airdrop": 33536.719112457635 - }, - { - "total_amount": 55859796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AttBEq7yT0jj52GMfmzrEzspSoZjZoNZtlqUAZhgZHGP" - }, - "address": "noble1jfn9avuhaq5uu8a4qxc82vunu7x4qcmu7augxu", - "percent": "0.0%", - "airdrop": 981.2187653178065 - }, - { - "total_amount": 100918833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4wWnKAP/mUoe7DBqpHA5kHAL3iVNw4x9htXwaye6/TT" - }, - "address": "noble1j2dm6ztpr5g34vppwghlmlpvwt5g3fgccls042", - "percent": "0.0%", - "airdrop": 1772.7141845196481 - }, - { - "total_amount": 2327955934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al3l6xKpxEI9exaUoIWBedcn8abxEjyV7H3cUqR2ufjX" - }, - "address": "noble1j0lq4ynh3ct6kr09uh8x3dau57dt6uzpj6tlgs", - "percent": "0.01%", - "airdrop": 40892.27334940036 - }, - { - "total_amount": 136236238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFCA3a0NattmhSejOD6+jlDt59UeoVIRSQdNmWcOqrW" - }, - "address": "noble1j3flzaqt8f6235rq23cr03n6k47defqv56cfu7", - "percent": "0.0%", - "airdrop": 2393.0906092443092 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuKdP2gGSpAX47XJf95rLhOM4AvGcDBOno/H+hAFYr6n" - }, - "address": "noble1jnsdcvlskkwewgah4356e4xvwghavq43lpssxf", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7hmNLQ7/ULQSqAqnbHjwmzOUgD9i3Rr0nsRzzqgWqdz" - }, - "address": "noble1jnjljvfhz3wtda598ykj2shpd46jqz4hpk9jul", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 81640040, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akris4TIAvx0dTnUEfbOdauOkdtKxDqfrh6onGgKFNQp" - }, - "address": "noble1j5zy6pnrewqfgvha97kq28rc47t45naf5wrzjs", - "percent": "0.0%", - "airdrop": 1434.0678803999988 - }, - { - "total_amount": 400078474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay8vvLhkz6zYIBEhQWW7AADp1uUl6d8imHWtvi9JtNXi" - }, - "address": "noble1jkp6pthk6jrg0p4fyp2epqamp2khn7nvz6eh3l", - "percent": "0.0%", - "airdrop": 7027.675258400731 - }, - { - "total_amount": 337355014, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzvtBi02tNurxrm9Pfl2gqFIULbi9RvJsR4zNkSWiOaU" - }, - "address": "noble1jc0ke56j8ecj9qlsxk2anpmda0vmvc3dk793pk", - "percent": "0.0%", - "airdrop": 5925.891142009386 - }, - { - "total_amount": 507077291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+zRo4+EFdgXfxJQSh+Xo/laBcx4uLR8WioSQGBbU+y" - }, - "address": "noble1j656eucu56j88uvwukjm6r25s9tn5zssl7dy2p", - "percent": "0.0%", - "airdrop": 8907.188873294812 - }, - { - "total_amount": 38822691881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A48cJFD2DzRAzib6ZUp+5KDLRy139C5TD0ZNqHB++MMS" - }, - "address": "noble1nzgx9wgjs2prqchthxau5r9ypn5zys2f7uz5py", - "percent": "0.22999999999999998%", - "airdrop": 681949.3897505185 - }, - { - "total_amount": 1908072934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxohHQjVdqVrYR+jEE2b19fTZRvQS+MWz0x6CbvwKd8R" - }, - "address": "noble1nztej0mqkqz84cxhw4mdrax9a2qqam6tw6wesw", - "percent": "0.01%", - "airdrop": 33516.716896635364 - }, - { - "total_amount": 766972252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar2jkQ6SqJwXlwJuHqkIWzY9s3DepedJ5spX/GI4ZhKF" - }, - "address": "noble1nrz93vygd50hnr826rxe3xnjekn00g05nrsr32", - "percent": "0.0%", - "airdrop": 13472.436708155139 - }, - { - "total_amount": 2142392910, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwU2AiF6LG7aYpcXW3qmpA+yVlyt3CWsaMC10zjWdPsg" - }, - "address": "noble1n98gwtm6sjlqdzy5lwd22jau7ed0cj3en9478v", - "percent": "0.01%", - "airdrop": 37632.72114305291 - }, - { - "total_amount": 412518554, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2nBoerYtuEB/GNDwlAlf/6V4lMiXXX28bbLg4lMU2Dg" - }, - "address": "noble1ntxeat5d0p9zkczt5s83jltzrg28n5zqwlxw9v", - "percent": "0.0%", - "airdrop": 7246.194494275756 - }, - { - "total_amount": 68000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A015aAG9NJ4auMkJBUf4QrJffUi5fY6AbjMHW//EyTM4" - }, - "address": "noble1ntnf2urlcut8t3p4tm0zjh2gmhkk8wa40fke43", - "percent": "0.0%", - "airdrop": 1194.4704567415686 - }, - { - "total_amount": 7841114741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmZ9mmHpkdrUrs75pajtHKfNqtCUL14FiNXT5EEa46+v" - }, - "address": "noble1nd9q277a8rs9mtgguxkn5c7spwec6vcx6r0nc3", - "percent": "0.05%", - "airdrop": 137734.99861831346 - }, - { - "total_amount": 244135224, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzPaTFC3KKn17fm+g5/3WE1GbCuBYT9eTXRBRt+W5yeF" - }, - "address": "noble1ns5dnsswnl63r0ga6al9c5dc83mfqffxn8vpvc", - "percent": "0.0%", - "airdrop": 4288.416360558605 - }, - { - "total_amount": 502266902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+7ERTN1HkGFe952nDdKjLtN3p2AiAAcs4NkSdXITiWg" - }, - "address": "noble1n3yqckc5cjt8s4x6uja2kucxx27awn854g5xv2", - "percent": "0.0%", - "airdrop": 8822.690821148715 - }, - { - "total_amount": 977786720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Audl1H/Me6fnc9ts+7FvnH76TiQVr3l1n9RM9hVK91GI" - }, - "address": "noble1n35t5rhhluqtrrj9crm3zgk9dzn7p9lffzs4an", - "percent": "0.01%", - "airdrop": 17175.549265209414 - }, - { - "total_amount": 189655532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AynZ07TsCULMftXaKJ8xgTJsWs6j5SYyg++SsnPcLqDe" - }, - "address": "noble1nn68luzq6x7wf0uy0x2hdymlhj00vp0l7qkc9k", - "percent": "0.0%", - "airdrop": 3331.440146053017 - }, - { - "total_amount": 2182024528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+eoJuD2IvWKwAxwRdUSKZ1eXbCisaT4BcHFla6ebB3c" - }, - "address": "noble1nhph785uxdp6r30qqcp265crxm0f8l7pyfcrz6", - "percent": "0.01%", - "airdrop": 38328.87992031567 - }, - { - "total_amount": 233405091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqbmSQjM4yStKqii03X10KtkTmYssIdw7gcoESmhK4Ws" - }, - "address": "noble1nhcetfcppk5psk6l7svkxkgvrjjfnq8mr009aq", - "percent": "0.0%", - "airdrop": 4099.933612537902 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw3g4CMVbxViPeb2YrncsIz7C8PaoowLevxZkk0eGcFy" - }, - "address": "noble1nmfwha56y0k2nnvxskxffhwsx30k7n7y8mt8af", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 334678134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7JFKh0JRyemxmsCa1SdtZbV7TfELg+6rYNjP8tn1slq" - }, - "address": "noble1nmlr5ucma869tnwtkzwpwnl54swxv0rnxu9f0c", - "percent": "0.0%", - "airdrop": 5878.869758535234 - }, - { - "total_amount": 4207379005, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuGC0/hDVy43wNpvrqso0liklbgUN9N5F6PzJMUB1+/G" - }, - "address": "noble1nudegg24mvaaze8cldq5u2nlkldwwwt2czs6t7", - "percent": "0.02%", - "airdrop": 73905.73414392993 - }, - { - "total_amount": 100050946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak38lmK2X7VfY/TSySuFc13P1p6SlFrxNPA4mkvt3/tQ" - }, - "address": "noble1593yhrjwvhcv3vlvars3playrhfhr69xhujxql", - "percent": "0.0%", - "airdrop": 1757.4691053830295 - }, - { - "total_amount": 2403387904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiyWMSZuxpmUjSV6HyAoAYTgTUsgiEtQEgsRJAC7j29A" - }, - "address": "noble159cdyljp8lpkmkgw63aammxfkyjx294jc4jujl", - "percent": "0.01%", - "airdrop": 42217.29187379472 - }, - { - "total_amount": 584068928, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar4SMmQzu6xBPHrGB9H43BNmd6mMznMJVeRf7flfe9sz" - }, - "address": "noble158twjv5ax8hnaetj2hee4rddcgm8ygcznapl9t", - "percent": "0.0%", - "airdrop": 10259.604105834094 - }, - { - "total_amount": 2706966610, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/nRvP78x3XElpEmBw3RvIbfyQHOhIvW/iyKjt9Ny3QL" - }, - "address": "noble1587yfq507a3pmutq4qtw8rx78cpcvga4z0wlcm", - "percent": "0.02%", - "airdrop": 47549.87710339523 - }, - { - "total_amount": 890918525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+w+Ad0b4vGwbBqApzmb9elhsfklx1Ud4plT5VVd+riu" - }, - "address": "noble15gwdgdvuv4xg9egwgqjljm6sdlcq25xa2vfyjt", - "percent": "0.01%", - "airdrop": 15649.64496288639 - }, - { - "total_amount": 626108114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApctDC3KpxL4sY37DRX+44l4VhEmK3QjdhygqnJOE3CA" - }, - "address": "noble155rwmr4pdwdhymdx7jvj9ugk90lt5z7dh6c5aw", - "percent": "0.0%", - "airdrop": 10998.05360145856 - }, - { - "total_amount": 391545681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4gsZk22r1uHrG4eI54xf6pf0XDAD4Sg/9VcgS2hA3DO" - }, - "address": "noble154jgxe5dqaac5ufqyy5u3jup7utahk3gy8md2h", - "percent": "0.0%", - "airdrop": 6877.790417930271 - }, - { - "total_amount": 180037189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al8b8jpdSoRDbEZ0akx9b0rU5a3YTPMAuceK0eKSvp45" - }, - "address": "noble1546l88y0g9ch5v25dg4lmfewgelsd3v9yyy3c0", - "percent": "0.0%", - "airdrop": 3162.4868143426193 - }, - { - "total_amount": 2822283765, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWVcY5/YXp1ZZzS3xWhRdvHadaK5JMdPlg4l12fjLvq" - }, - "address": "noble15k49czk7rm5r6xq4lznxlclv0lmjclg83j8ans", - "percent": "0.02%", - "airdrop": 49575.50849755682 - }, - { - "total_amount": 775523337, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQdt608JhkIR1Wf2bCsGB3C8kV0FwHOM6RHCr3kzICH" - }, - "address": "noble15hyr8az8yg0jk2f00y97zryz27q9wax67rank6", - "percent": "0.0%", - "airdrop": 13622.642861178461 - }, - { - "total_amount": 1677978585, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avj2tEpl5q4gXOjcsyXBeKoH/heIlsWMH+PMVz4cW+Nu" - }, - "address": "noble156906s5kk5cy76l3c6jt4gwhz5n6xa6rjzsry3", - "percent": "0.01%", - "airdrop": 29474.938923934133 - }, - { - "total_amount": 360911633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37UJKK/IKQ6ZNLhhq+XRqjnWyXshI561Z353GdxOlIh" - }, - "address": "noble15u774t0mdg4q8ztrjwdc6znfmws34l58gtj8cu", - "percent": "0.0%", - "airdrop": 6339.680634012579 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5U32WAYSKmxp9dmaclvm8QyRuTw1KAeY4/X3M/1Y+gC" - }, - "address": "noble157tpcmtm722kq0ry769x37n37lk0hz3fsc6aa7", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 50102434, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtowHxm+LHTELCrKpvdtdldwY6qHGg3H+4tH6dAm0MD7" - }, - "address": "noble14zp98mwfcc4t2ltlnpv6am89g0r6xuh8qzdt4t", - "percent": "0.0%", - "airdrop": 880.0864297624161 - }, - { - "total_amount": 52960412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5iJh3h2UUupSltBBY0hxCu6onvHBcyfgIz3wWkFPgAJ" - }, - "address": "noble14xqq7gh7qzr62w8vcpqgsqcn5dpt4uppsv29xm", - "percent": "0.0%", - "airdrop": 930.2889339832594 - }, - { - "total_amount": 64833746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6bbWcdKtD6L38U4VSXd4u7+WO7vPVZARC61/VxZqB4l" - }, - "address": "noble143j4qr5jrxepy94uzw8z0xf7snz8ruzh2utmvd", - "percent": "0.0%", - "airdrop": 1138.8528558365713 - }, - { - "total_amount": 1592224384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4lkPGmitVUZpa9JaIkqB4hvjjQuyxbS30Z7d9uB8bfc" - }, - "address": "noble143nyvk2k2xu3yhfu6x95t9l3nfy4v0trttse8p", - "percent": "0.01%", - "airdrop": 27968.602752816805 - }, - { - "total_amount": 2623800312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhpK3U7cawKsob7JmgOnnfrqhPuE9egDQJ52nkpRoo7O" - }, - "address": "noble14khh70t7a9lkpnjwweadrag40p4htgd28ypjr4", - "percent": "0.02%", - "airdrop": 46088.99936872515 - }, - { - "total_amount": 52661411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0TQQXfjk3+NBKso3ZTFCabqj7/rUmPMMEpkO8DE6Oty" - }, - "address": "noble14c5m2smq8q0m6guh6cs5n3qqactvpsu6wpqp3r", - "percent": "0.0%", - "airdrop": 925.0367595562568 - }, - { - "total_amount": 384105440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjQkT493JPLGKYLB4XLIS3/HWKXCBKlGinYALQWbt5HN" - }, - "address": "noble14cux4ms7g5769h64px84e9pp647wn7mqld0lau", - "percent": "0.0%", - "airdrop": 6747.097064025311 - }, - { - "total_amount": 269230845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmNitEodhogyPCDmltPo61BxZg6IAkZIo4W4YNAsDmqJ" - }, - "address": "noble1466mepwp4gasum3k3khxzg6442u9aeynzn8m2k", - "percent": "0.0%", - "airdrop": 4729.239564648065 - }, - { - "total_amount": 610259881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnfSHdkb4Rbm3nEHLW/agRd9WhLHIqJvHmlkHCCfSO1/" - }, - "address": "noble146m57uln3qz7y3t36ydzqwju7geekf3clzv660", - "percent": "0.0%", - "airdrop": 10719.667629251842 - }, - { - "total_amount": 94599653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0fd8AttpXCT3rmWcSASb179rEbs9ri+p8drwZ9FLThY" - }, - "address": "noble146l77xr2n00txl7cpt2fue9lf56zzvkhwweqfp", - "percent": "0.0%", - "airdrop": 1661.713098919175 - }, - { - "total_amount": 50129052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A33A2s17tF1wfsSWj9TO46jyH61zZI/bL6/1euJpDj9A" - }, - "address": "noble14u5j6qcae08sgtf5n7pv9xayzjw2ashehw9eu9", - "percent": "0.0%", - "airdrop": 880.5539946832623 - }, - { - "total_amount": 50458729, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3tlIEibG6JUuGllP521mPQzF0Nr+gepqq7uyxb+QOEe" - }, - "address": "noble147htr6lkgrmwv8ldgtrmdhua4yw2xpl2r7v7md", - "percent": "0.0%", - "airdrop": 886.3450158121916 - }, - { - "total_amount": 50254626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6tQHxz0uK4ck6bLf/eIehoS2+eN06sPpBUKvsVSXmjx" - }, - "address": "noble147cq9ae52gmzn9x7vzly7a69hr2hwx06q6ndj8", - "percent": "0.0%", - "airdrop": 882.7597951705399 - }, - { - "total_amount": 385000028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwrqZ5aEtO/eF9uuDqym/idRylqJXkWWGzxPVD1nDZTm" - }, - "address": "noble147m460ns9rtgzvypv8fh0ze2s8fxl4h7l7zu2j", - "percent": "0.0%", - "airdrop": 6762.811166039363 - }, - { - "total_amount": 2375120000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah6u1f3aEU3YjHwXz/Xb2DLs9LSeNIBe/TQkjKhYBL+z" - }, - "address": "noble14lhmehx0k49uknsgdncmd94w2gc9gydvns485x", - "percent": "0.01%", - "airdrop": 41720.74516494168 - }, - { - "total_amount": 500447750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax060lGTaKHNpUCCZ2HUbDVCgkX8cIEN56ekfJupDDZW" - }, - "address": "noble1kqjgse585jj2p40w2q6sg46vdzup4ucwkn4ey2", - "percent": "0.0%", - "airdrop": 8790.736066438092 - }, - { - "total_amount": 266254593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuJMSIt+7OqvV89N+s5qc6WDhKLPcOIi47u2urgVFgAZ" - }, - "address": "noble1k9hqgkzuqqgturdahg9f3qsscj85nxwt09xawd", - "percent": "0.0%", - "airdrop": 4676.959489856624 - }, - { - "total_amount": 270343931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTCPmcK2AloMS8GOea6cuAr85gEe32bVra2aL8LS0rB" - }, - "address": "noble1k8gqm4pagnhgxwha3hlsy5rcshq0tdv2hcwnkq", - "percent": "0.0%", - "airdrop": 4748.791746160016 - }, - { - "total_amount": 96918680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AliOKxw3rebOmnGjWH6uzRmqkTE0ZFcheoi4hxKbvFen" - }, - "address": "noble1kgx4d4kv4u0ry8azm7q5z7ruyyakc2fgz0cq5h", - "percent": "0.0%", - "airdrop": 1702.448528917499 - }, - { - "total_amount": 58054173, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap504vS59cEdCAgIJuPcS6unM0fAK8pejt4S8g5jq5Ua" - }, - "address": "noble1kfl6zh2pm2hp2q8mwd6vm2x7gtluk5xp9n3a9v", - "percent": "0.0%", - "airdrop": 1019.7646255744712 - }, - { - "total_amount": 1713619058, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Tg/9jmcsTfVW04airndMXIsWw4XEUgvFggRtE9qfmX" - }, - "address": "noble1ktwm3lpk55a92q4t4uwjea94u0r3c5jer8gjvw", - "percent": "0.01%", - "airdrop": 30100.99027779877 - }, - { - "total_amount": 24364732398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7OgysH5JJVdQSVk0zieG/v0u23SpNCdoOq4DUBhwfup" - }, - "address": "noble1k3kxhds7alp6whg78gpd77lnzx4nq5q6wpd5hu", - "percent": "0.13999999999999999%", - "airdrop": 427984.60346801695 - }, - { - "total_amount": 1884174531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8H1NQd44KacEajj6OYlOugb1IS2XubJETKjVvJudSoR" - }, - "address": "noble1k3kvsyjmv9783p9l97l55ksajh7gdnax8wffgf", - "percent": "0.01%", - "airdrop": 33096.92371506472 - }, - { - "total_amount": 107773947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyfBYV6S9oSWV8U/9DouJP/IPr2n44Qase3xNlNm6Jqi" - }, - "address": "noble1knyzke29mr5tpku2czhk3fpchj46d7f4gwq464", - "percent": "0.0%", - "airdrop": 1893.1293484989942 - }, - { - "total_amount": 50969883, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoXklgAaeznJkKFO3KONl2GaqtK5PYBZb0FrT/rUb3Ck" - }, - "address": "noble1kng0tkrkvglks4jmgtpwqcn2zfv3yjq3uafhqm", - "percent": "0.0%", - "airdrop": 895.323815104034 - }, - { - "total_amount": 115385165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2iBIcP2UaDifJZx+7LVb52GIupf+DHoTS86q0MCGzQ/" - }, - "address": "noble1k4ruuv5qhgzh5pg8w2yyxlh478gqjms2a6pehj", - "percent": "0.0%", - "airdrop": 2026.8260402757537 - }, - { - "total_amount": 2486674838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An9pYBbN0+7FcHWdtQDCuS/2A/0v/8CGCS2jW5uxhMch" - }, - "address": "noble1kkqr6ml2anqughgas75gtwk8u455lcmkghmjj6", - "percent": "0.01%", - "airdrop": 43680.288669318026 - }, - { - "total_amount": 89721216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As7gbumFSjcQiZyKtX8NI3309V9T/QLGhPOn60ScAyeY" - }, - "address": "noble1kkg6gdaglku6ac79tvvwtg6crn574xsdk84l9v", - "percent": "0.0%", - "airdrop": 1576.0197331607196 - }, - { - "total_amount": 66303285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkWan6TQ8oY6/dSQaokRU75jdimsIDljRxettMiaZ9IS" - }, - "address": "noble1kh2nx7m45x34xxcs8hxrhmhyy2vh7jlxe5tve8", - "percent": "0.0%", - "airdrop": 1164.666398785535 - }, - { - "total_amount": 638740460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlxjCG7PdSvkX7CyLEdraLB2TYKffktFsy9Bx09HqIgb" - }, - "address": "noble1kcffjf3y5p65qv9yt9j7pn0e7v3h43kcx0mw2f", - "percent": "0.0%", - "airdrop": 11219.950132287053 - }, - { - "total_amount": 3190186358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1j1l3muSGkWDYZli4Qic0JCIbUcKWPf9JM67n44HGGd" - }, - "address": "noble1kcv9vea4wqasfft5qlxnvwvz2npcca5xj99enl", - "percent": "0.02%", - "airdrop": 56037.99053133796 - }, - { - "total_amount": 535501912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9fMWp8ixMmdnfA2lNMvKU4lbftb4kJuCnAMsgz1QKhv" - }, - "address": "noble1k6epw2h4jkpynt3j8quzr8ehus5v8neswfyedj", - "percent": "0.0%", - "airdrop": 9406.488432538577 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap1e3vWHt+jYRoKfQHx1UjZpPJ9mM+bM40NrdZ8lhKZh" - }, - "address": "noble1k7hn40s0894cv92jk79vr0rqu8ew70ajrex8ww", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 386463689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4neX5xDlFhhFX32JTR4AZ0XbNgkgIP5u7muVsP/Grqo" - }, - "address": "noble1hzrwq65v77ajnqfp09xfr3p7sf5ghzcep96wqv", - "percent": "0.0%", - "airdrop": 6788.521457556787 - }, - { - "total_amount": 84538591, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxNRHUgnwFWzbzWzP/ism7+jVbeOjvDYC1ByDKR6sf9a" - }, - "address": "noble1hz59dm9pkknac856h8xyp93cfxvmrmrjn6ftrz", - "percent": "0.0%", - "airdrop": 1484.9830794714508 - }, - { - "total_amount": 50800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2mBVB/lyuslNfEiT/VpbhIoiQdHwt60eu4zvHvFZD5s" - }, - "address": "noble1hzkqj8uwaj7gf0c272gxq67e8udznkhcstvmxa", - "percent": "0.0%", - "airdrop": 892.3396941539953 - }, - { - "total_amount": 54139116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30dP2MvJQskQKRc0Z6EYanTKfJxqmuONSnKTf5/CpNW" - }, - "address": "noble1hzh95vuelrxxdlda4u9kc99yk5zdu6xtlhslsy", - "percent": "0.0%", - "airdrop": 950.9937443544818 - }, - { - "total_amount": 103545321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am5ca7i5HSnhA5A7oC8EEH+8V1UX/OpspAHa/avCuu8r" - }, - "address": "noble1hxd0wh7dq6zzqkwjldj7uucsfvmx2eur3fn9qn", - "percent": "0.0%", - "airdrop": 1818.8503951223872 - }, - { - "total_amount": 84996234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtKHsasn6boDY47hSIG0NrEJetca6aFP1sQGN3plflBd" - }, - "address": "noble1h8e4utw8w8hlphm6g5qlfs9adt3zmmd40xnkey", - "percent": "0.0%", - "airdrop": 1493.0219183425477 - }, - { - "total_amount": 480342545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZcbQ9vvU252XQSU6KuVMraGHV7WjVwvHEEUHkplEFL" - }, - "address": "noble1hgaqrw86cxzltg3act0n779f3l5eeghedlcjcu", - "percent": "0.0%", - "airdrop": 8437.573222331728 - }, - { - "total_amount": 232714205, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A57sCiqoIET/iazLQ3U0kPcbJIznvWnBSss80ItId7Tz" - }, - "address": "noble1hf3j3h8p8gmlxqa6e7ewca4cw3gemme3jxjguw", - "percent": "0.0%", - "airdrop": 4087.797687302956 - }, - { - "total_amount": 391234517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6R+MgShyuCwQ3JICWcbz4YqwPJoLJAIyWcDTOjPaF0X" - }, - "address": "noble1hsgttxwt7t28adu5q7a70ez0vz357tx0pysrhn", - "percent": "0.0%", - "airdrop": 6872.324591383191 - }, - { - "total_amount": 568116814, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4G9wEzoespuduHAlWNtWrzdKtu1kx2oZ+y0al0DZ8AG" - }, - "address": "noble1h330ms80535fk64ex35art9xsxuudqpkzkamdr", - "percent": "0.0%", - "airdrop": 9979.393386781541 - }, - { - "total_amount": 542291633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21f1zEIfacXBoC/b8zxnFTJFwxbFufM8SvdJEwc5OKv" - }, - "address": "noble1h525rx052gx2qt9qc9jqj6f7thv5h3lyxe29ty", - "percent": "0.0%", - "airdrop": 9525.754919950603 - }, - { - "total_amount": 70967178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap56zcjxVIS+2q0jLnwECcWoaGzUyd9GLBwt+aKFIcpo" - }, - "address": "noble1hhug8pvw6unrukj988f02k8we67xc4k3e3pxug", - "percent": "0.0%", - "airdrop": 1246.5911399900028 - }, - { - "total_amount": 674724042, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ASHXQ9f8P5gOEVj8rpzaWE3ee8yXl4+wQkaFM5j1id" - }, - "address": "noble1h6jp4x2esww09xv6vxgn9ujdx6vp459guk67kh", - "percent": "0.0%", - "airdrop": 11852.028450327312 - }, - { - "total_amount": 85506387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9q2bXusXURU8p3zgpzaC0gsac/+rDyJdt5OoVmEYrgB" - }, - "address": "noble1hmsm6yyehepav03t56elayyn3mzpmschgft5q8", - "percent": "0.0%", - "airdrop": 1501.9831343266371 - }, - { - "total_amount": 2059548512, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AodjI7vxbhKPH0C59ZY6ysbKWc/UofXZPKwsHShzstvo" - }, - "address": "noble1had3eh8cpgcrp9n6pdxzks4cy4qyu06anq92kc", - "percent": "0.01%", - "airdrop": 36177.49782073615 - }, - { - "total_amount": 432232548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRzvp+NjZRFDuulbkfq9W2Mpu/dcRVWJxqjqLa8Ul/s" - }, - "address": "noble1h7agf7900edhvvuvpg4yj4cv26r0cavsaez08j", - "percent": "0.0%", - "airdrop": 7592.485426884294 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlqaSSjsY150EK4ao6kHxRN5U8357e0CoEZo1YHCVtBw" - }, - "address": "noble1cqpjkmsxjc6yuypzs00zf8ptxal2pp29jxte2h", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 6198697090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2EMAlNwhg9J/hBTO8y4Qn3rRtxwsftDgwFgZ//sDDyl" - }, - "address": "noble1cq977qvxmpt0vg92m3qp7g6ge4940fzwgr9veg", - "percent": "0.04%", - "airdrop": 108884.71388669017 - }, - { - "total_amount": 200361762, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiASHlBd3ETr54XPSyNr9oQEFjllSNraQ0ijoSgpFgMe" - }, - "address": "noble1cqav2a8xp3l30tkcxucx9gg25uwmfke3pfqzav", - "percent": "0.0%", - "airdrop": 3519.5030201424333 - }, - { - "total_amount": 75810491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwuCC2VvRJLge/ucjNmGl2XwYtla+jXZ8X/7XOs6pMHS" - }, - "address": "noble1cp499lr7udyjt9v59qqe56yff7uvrunf5wfc76", - "percent": "0.0%", - "airdrop": 1331.6675266260672 - }, - { - "total_amount": 58248893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2W8ezG5iGawCsauF6z2LONlpgH0q/6ZH5xLqrQjiZf" - }, - "address": "noble1cpa7xvlrhk5yg9q7nwjrr0u7jxr9drysk2jgup", - "percent": "0.0%", - "airdrop": 1023.1850268588346 - }, - { - "total_amount": 54933079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1bCLCz2IH5CDSmCqcuB0L4q+3zGlyNhjYNNzbAAYln9" - }, - "address": "noble1cr32tp0pfejkxah0n2gq3g9hd34nr2hsx0059u", - "percent": "0.0%", - "airdrop": 964.9402935786862 - }, - { - "total_amount": 162997537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4RQMCuF914HR8i08ik1IHJ6hrDCEiQjEdcReMQ0wN32" - }, - "address": "noble1cxt7l3u3dw0tlveg0qjcef8uys9tejhvm0v9k2", - "percent": "0.0%", - "airdrop": 2863.1726833550106 - }, - { - "total_amount": 272174121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/su6T2HKwxeKxnbNYgj3YYuiFKzpiMJSJVXY1B1CkXl" - }, - "address": "noble1cv8dwyw0zjcwm00qlttd0fxz0k8cuv6ycn44s6", - "percent": "0.0%", - "airdrop": 4780.940391530955 - }, - { - "total_amount": 966201649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj1jFYx3TUnZLYGNNM7DHDdtHBgfmbqoW5Lg0z5ghjza" - }, - "address": "noble1c0m6t59mdee7c82hh6g7ajyy80a9kupq3s6a92", - "percent": "0.01%", - "airdrop": 16972.048896845394 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3LZU0vD3bZnDyXwADYgg2Xd4FyemN4qNs4tPbfLGuBg" - }, - "address": "noble1csnjw4e25n7gk7rgz4h96r84gpt6s8a5dqncga", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 58965128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/+14pS2iCov5KEwqtJGc4BnEMBdt0nteUCNzQE3xUG2" - }, - "address": "noble1cnpx5s9u8w3uzqtd70p85hetm0hw3svu2jjhxn", - "percent": "0.0%", - "airdrop": 1035.7662260880154 - }, - { - "total_amount": 1198650382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av0x0aUlL3dGZXY3S/z81ydvYeQyElbUAx9LZleNuneK" - }, - "address": "noble1c5ph8wdcedwx2k6f5q6le0dwju9juujer7tqvr", - "percent": "0.01%", - "airdrop": 21055.18337148523 - }, - { - "total_amount": 62112507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15Bv3UUPHP+i3aXOx69hnZZHyucuP/OB1IOucTkT/ht" - }, - "address": "noble1ccmvv8qlqucfq70vr7c8pv7vg746yy0e2c8h36", - "percent": "0.0%", - "airdrop": 1091.052273612557 - }, - { - "total_amount": 187391900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqJi++P4jzQmSZc06B063r7CMn4AEYko4nBnDY8g93rN" - }, - "address": "noble1cm4jvw4338eh4p3z2yalen5fmm8xnzh25tfpj5", - "percent": "0.0%", - "airdrop": 3291.6777703333873 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVuupnS6FlurmBRalv9ysy+ZmEcJU8WhF7wqoFDmu9w" - }, - "address": "noble1cmugrs7rskl78lnjzdruuynxfeslnn4e3u9wk7", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 2299843944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+kAhvSOTwsww78UuTyk939cRK6IySII8chSDuZbMfsu" - }, - "address": "noble1cu0265zkletzk0l28qdn06p7q0znvn69p2vzad", - "percent": "0.01%", - "airdrop": 40398.465385647214 - }, - { - "total_amount": 3422253866, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2KwdgtHJRMU17ga7BaH2hSNr64o6AhkYz7kJ3yX3UvX" - }, - "address": "noble1clg35hju28tzdsw005gmz4t6swtl7ax8rml65c", - "percent": "0.02%", - "airdrop": 60114.42850597969 - }, - { - "total_amount": 123536021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3goFkbuL/x5wttUZbMHgwspoZgc0+r/B6uSSsT2qLEQ" - }, - "address": "noble1ep5u7jxk988zrzr7jxfvptcuq8vytc25xewswn", - "percent": "0.0%", - "airdrop": 2170.001873939794 - }, - { - "total_amount": 11854582025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IKP+kB/D28Ks6EQi6JeDFW0PabVXumMTnTZRgjE/VW" - }, - "address": "noble1eyxdyfacartgkz3yejke508cy4lvvztlpun5tf", - "percent": "0.06999999999999999%", - "airdrop": 208234.52949826673 - }, - { - "total_amount": 3270901431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoOPcdEshH1LDBtdLIMIRIKoJ7XYh2N67nl2IJ57VK7n" - }, - "address": "noble1e9q5zh3dvjjf5xpd0q4530zy70suc2x50vms6w", - "percent": "0.02%", - "airdrop": 57455.810680047354 - }, - { - "total_amount": 89600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8aF5PW/X05n+NZOprL3nvu9ScOAopSn1So63szxZRGF" - }, - "address": "noble1eft2h8uj00tepsdtg87888mqpwetd7zvhtpy7p", - "percent": "0.0%", - "airdrop": 1573.8904841771257 - }, - { - "total_amount": 212022686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+nYBM4RmAD13sKyBxUmBDrTfxiYn2fQbedgs1CxXusp" - }, - "address": "noble1e2jhd8uxea9gxsa6830mf0ky6d0xp0xg08aj6v", - "percent": "0.0%", - "airdrop": 3724.3358027352087 - }, - { - "total_amount": 158410453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyPqed4iCfMMb3dKoNIYvmiJ9/5g7h2nqPd1tHqf9/6V" - }, - "address": "noble1evtqzjkqps7tjtz46thhx8catgn5xvxc3330zq", - "percent": "0.0%", - "airdrop": 2782.5971492286585 - }, - { - "total_amount": 7519993582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyOSuLKXHCou4yDsTmvAFeLbm9hyPC/I3HAwvh+k80J0" - }, - "address": "noble1edkgn2pp5ealk9wtc9az5h4cq6pafnafwag7yg", - "percent": "0.04%", - "airdrop": 132094.26718507655 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6zuQYBibvXQBhitjWETAAhYc3W+ayD68ofqV+lggam8" - }, - "address": "noble1ed6f6qkpyhsrdg2ydkr4cuwhchjc4vzf63e5ya", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 362919167, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/S+fc1710nfoXADieHz46HM0WOmbYY8tO+QlCOrsNbh" - }, - "address": "noble1ewdxnpu4plk4et8my72823d0l0m6plewlhn0w3", - "percent": "0.0%", - "airdrop": 6374.944458334699 - }, - { - "total_amount": 87862666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgPGyEFvzAZee2I0pMAlSNMaP/c+9PLlSs5XFYuz7Pvy" - }, - "address": "noble1e0lcptz9umalyjh9g7fynddycg9qlv350d72xt", - "percent": "0.0%", - "airdrop": 1543.3729233463512 - }, - { - "total_amount": 59222439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3+yck+9E6UFtROe0BKWbZtk58AuSyJab77HzV7Mbpey" - }, - "address": "noble1e3y33s5zuckqzjeny0njzqqjy9j785txc7natm", - "percent": "0.0%", - "airdrop": 1040.2860847305835 - }, - { - "total_amount": 73325375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzwWaMYClEJ5EqjqwcijQmH7P1nwW9nzVdmXvv4XtYNh" - }, - "address": "noble1enhmzkg8mwjfvwzd48aev9mqwztstsyy4sq2ce", - "percent": "0.0%", - "airdrop": 1288.014620102894 - }, - { - "total_amount": 379500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax6fTCn3EPl1zs+7ISrrjvwD9XXqlnBB+WtN92mCrZq7" - }, - "address": "noble1ecr2he5rue5sl9efxjt6a0dmsump4ewapvyl7x", - "percent": "0.0%", - "airdrop": 6666.199093138606 - }, - { - "total_amount": 1982752983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzahpPVOLt+ZMM9fHP3jXyitImoPp3qJFXId69a7S6qs" - }, - "address": "noble1e6zdjcj3wry34hns4pw9hvse7xcv9mmtwr8hhm", - "percent": "0.01%", - "airdrop": 34828.52737073114 - }, - { - "total_amount": 340663184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlDzpxS4G5cjhjHWiN5UZu9f08Gby1Gu/xbmkWkM8iEx" - }, - "address": "noble16qxjntvn2rwqnszrwkaghjwln5nceun0nswdk7", - "percent": "0.0%", - "airdrop": 5984.001602757604 - }, - { - "total_amount": 6187330766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2AwTu++33Hvt4Sog2Rk3zvRMgTetMXmdkFOU6N+qmfL" - }, - "address": "noble16pskuzsj893yd8nl4k8xfzjygwrptn8dtnkhlm", - "percent": "0.04%", - "airdrop": 108685.0559716938 - }, - { - "total_amount": 3261885907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A62lDLjlIQPVkuJYWC5pYgLmQQnpk8GZxzFAPKOdalSM" - }, - "address": "noble16zpu90qdefuhfnhp5epax6xxq435j6atgy9xdj", - "percent": "0.02%", - "airdrop": 57297.44631137023 - }, - { - "total_amount": 1000775215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar0uiDjvtfUFCWvwbQr6JzXiwulslavPwoQhBUGFX5BW" - }, - "address": "noble16z5lyryxl7fgzwsgxf50y8wqzk9fx269uyletv", - "percent": "0.01%", - "airdrop": 17579.359237598404 - }, - { - "total_amount": 2285309411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgIYi9e0hnG+sNLbt5CXBwe2D8tqeY/EjRcp+UrkiwS4" - }, - "address": "noble162tysep9amn05edffl9xh0z4kqpz7s2596ctws", - "percent": "0.01%", - "airdrop": 40143.15552872022 - }, - { - "total_amount": 51728752, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+GhEank4cThbu7gsHQpM5FjC9eUn3JgEBqgL6bpYLs6" - }, - "address": "noble16tza5es59k6tcen6rhce2skew6grh4mjdxw7g6", - "percent": "0.0%", - "airdrop": 908.6539121781078 - }, - { - "total_amount": 1994414114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+XAQnmf/n7aKKS6G4lM8cGCO8nhHT+BG8IP76nA2nOw" - }, - "address": "noble16sxd2wlqk3pxa5mmtsc9y4g68u0jj7whgnpyrr", - "percent": "0.01%", - "airdrop": 35033.363789432515 - }, - { - "total_amount": 625530500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMoeWrk3CWB1b7FtTl3eQDKbP+QgwJSzDi2Da0SC0VU" - }, - "address": "noble163dvxqh367m995537epulwnqf5zqjwxlh3jgtw", - "percent": "0.0%", - "airdrop": 10987.907382952671 - }, - { - "total_amount": 1087393449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnPli8p8bXBX9JWIy+bpkSMWf66u/6h+L1g9HkQNeaUq" - }, - "address": "noble16j7w2j37g4kz39r9nwyg6fm8l8t8lujnpc28l5", - "percent": "0.01%", - "airdrop": 19100.87278948264 - }, - { - "total_amount": 1214280084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4s0tWYFzIm24XW+uHgmbcF7b/78ctzCNLxd0Ip+QE/F" - }, - "address": "noble16nn58pn49lch9yw6pllh66k24z77d6gsvuufsl", - "percent": "0.01%", - "airdrop": 21329.730684524562 - }, - { - "total_amount": 189409321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0S3VCSEjbn52jNF9OUR9wE3aoQlfmGZ7ba9byQXiZEY" - }, - "address": "noble165mkk2gf03982u2exxr226u87jrep0ejt4rguk", - "percent": "0.0%", - "airdrop": 3327.1152671467703 - }, - { - "total_amount": 196732050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A10NHSQTFj/X8r0C0AO3zLN0kboZFLTrD85btiGNRjM/" - }, - "address": "noble16c3nnvzvxaxmmf7vl9z47ad93uwujj2n329ude", - "percent": "0.0%", - "airdrop": 3455.744435576546 - }, - { - "total_amount": 431291049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9AtPj36XSK404hOEJE7aZnzlez9bo5Ejva+JYLqxSz0" - }, - "address": "noble16c402xnqkzcc6us4m5uff8d09cnlfdkmuesnz3", - "percent": "0.0%", - "airdrop": 7575.947298346768 - }, - { - "total_amount": 10431921019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/m9TGR3MA1DDhVku2/Q3fzi21DPAuIoCVtBsQ9UFu/x" - }, - "address": "noble16ezxjygl0c4556jma84726slz48m2dgpavyxgg", - "percent": "0.06%", - "airdrop": 183244.4332978956 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgA4DRYsn2R1fNXN9SodK4xiCujs/f+jSgfeu5EO2PEa" - }, - "address": "noble16mfh2vqseduww5sw2pq0n5gcpy4ly365d4la05", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 77493962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8bmKp+ETdpigU5Wo6RjdYuS3t3iSzugh/M4+Ha4a35H" - }, - "address": "noble16msxcard3x5z0emerdynq9n550e9gq979d566z", - "percent": "0.0%", - "airdrop": 1361.2389438949083 - }, - { - "total_amount": 939304596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay5cIgkM2MARW7CDiDQ1jaZTCW3YdEQ20VNEtYV5NrlY" - }, - "address": "noble16l707q4k9cjt7z3p6j9u4vw5fqerwvkrkt2gnt", - "percent": "0.01%", - "airdrop": 16499.58220299374 - }, - { - "total_amount": 720373209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsBP03amSOmMiPRsoCrjm4/t8we+8vt/dRdGKGeiiTpG" - }, - "address": "noble1mpwqlmyrneaphtaheyem9ahaj5h2wfrc0v9dsa", - "percent": "0.0%", - "airdrop": 12653.889940862051 - }, - { - "total_amount": 67126481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlBxMjqJEpQDDal1zWS0Y/3C7w0T6uKt//+K9D25VYG2" - }, - "address": "noble1mrljzpym57seet54q4wwmjfw72d3quczqd2mf4", - "percent": "0.0%", - "airdrop": 1179.1264473459446 - }, - { - "total_amount": 250455593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6AXkNY88xgzGZJlWv4T/gmRXqtJUqgOjnvu7GllFyc2" - }, - "address": "noble1m2ftadlnet4lxzq8u06ttj0xl7zyrfc85zz8gs", - "percent": "0.0%", - "airdrop": 4399.43833182633 - }, - { - "total_amount": 75486873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnVQGkuuyjVWABGY7SajYf14aCsm++7Jm/Kh9OM84UZj" - }, - "address": "noble1mty7d6axae0z0ux467hn397dnqp0arylwnhuka", - "percent": "0.0%", - "airdrop": 1325.982936327982 - }, - { - "total_amount": 1381172772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8SLKNDZ8wkzZp6r8nZZAb66UPJQSzGen372Foyc6Wkg" - }, - "address": "noble1md83hc33v9fr4yp7zde3hm495t0r2yzpqah640", - "percent": "0.01%", - "airdrop": 24261.324585439095 - }, - { - "total_amount": 122021206, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axoikz7iRHmloBQYQn/Ugb01WfiXClJtNneSvrSM1+sV" - }, - "address": "noble1mw86p44ehe9eet26ufpf09axmxj9ynv3yt42h9", - "percent": "0.0%", - "airdrop": 2143.3930244555445 - }, - { - "total_amount": 1060133243, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyP9ULtDCU5xs2lp6CbY1l0A8a+95zpFgb427Zu3Ar8b" - }, - "address": "noble1mscguctmt4eyv2e5pwmsfy2lgm496065gerqx3", - "percent": "0.01%", - "airdrop": 18622.0270437225 - }, - { - "total_amount": 2407194637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxHqieut6WjJUktr2EXCa6zBRID1z5OnAk/2VSTSqvyW" - }, - "address": "noble1msudj4k5ue5cz7w86y9438ugz0dw5z5rd3v0l7", - "percent": "0.01%", - "airdrop": 42284.15996357712 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9F0hZyElLAtSlMx2sR/GvOQVdHVebl6yzeHzTT0mSQG" - }, - "address": "noble1mng2gy4cgaa6tk4y4uyan6j95xvqeff4n23mkq", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 261106001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5pqAnq6E3lKWW6nceFbHjAosfYj29cd29Hg+f9HOhZb" - }, - "address": "noble1m4p6m6py7xgq2m8g38n5acqc2ymxswtdze5jug", - "percent": "0.0%", - "airdrop": 4586.520651065212 - }, - { - "total_amount": 1167576862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyBYhoQdLQUPLuYCFtfB1ybJMM7wSUadnKZ5QS/AEn+p" - }, - "address": "noble1m48sacmaq34dz7zvd8yl0x02g6pd3px05f8h76", - "percent": "0.01%", - "airdrop": 20509.35393579452 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+rIO7AsfQcwPLDnLbivFVOjylv24XcsPbqrS90DL6Dc" - }, - "address": "noble1mknv3x24kag5jykd7hddu5tvxawspa3a34z6jc", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 106511598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak1OhG7MOnd0+/nDDcB/5GJ2acQUk8IgV9o7tLGdmAmG" - }, - "address": "noble1mckpt4rz6jp3raeer97gcxv3894dxfk9k594t8", - "percent": "0.0%", - "airdrop": 1870.9552516372696 - }, - { - "total_amount": 507932602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32rYlS9CgsEsd+PafosXIRT6hQH5S4NGGMakr9ByNq6" - }, - "address": "noble1mccvfrx6ymu8mre5mqldqvqgd80qceagrpmtyv", - "percent": "0.0%", - "airdrop": 8922.213045659902 - }, - { - "total_amount": 3937503033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3GhMsX9juiJgu1kKqJQkg4vzqr3OUTv4VCeD1a/jmlE" - }, - "address": "noble1mejc6fnht3a2qvujamq520sm4pg9k2p7qyrvzy", - "percent": "0.02%", - "airdrop": 69165.1624448356 - }, - { - "total_amount": 7038445372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5PvTm6dtRRnzHftD2WMG5jJeB0ICVN9RG8oThalRKFW" - }, - "address": "noble1mmjamtlgj44hzczj27u39ahuzaupk7ldvrp8ac", - "percent": "0.04%", - "airdrop": 123635.51556240322 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5YGx2XwJu8xG3+f6iUopJxVctqTZoC2pDVnDeMAb5Jb" - }, - "address": "noble1mutt4vjdvweel73q54lzggtnkqhj92mqnlh7fl", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 4170015845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIfxVxED8nk4Vh8Zt0YUGcKA2IbIOiL9pKW0eI+Vvvz" - }, - "address": "noble1mujwcppt4nx007g2faa7ay7ft657zcgxj0ka2u", - "percent": "0.02%", - "airdrop": 73249.42251465775 - }, - { - "total_amount": 63332932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/26JDRdGx6d0tUab9qX65jSe8YcIOxKW9ioNTZXSb+3" - }, - "address": "noble1muempkxckd90u7ad3lw9lnslunf6npsqqm79t0", - "percent": "0.0%", - "airdrop": 1112.489944306216 - }, - { - "total_amount": 1928225229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/8MR1bgnCnV+M7N6ZALEWj/Bas463qP8J7OD9fj/uOW" - }, - "address": "noble1ma826ue4vp64uhp6s3l3jq9xwqfvg5we9j7thr", - "percent": "0.01%", - "airdrop": 33870.70691153302 - }, - { - "total_amount": 57385550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkpMcVIIJzEI4HpRfrOof/uoEcDWBSwsMxG7xCZJsSbw" - }, - "address": "noble1m7gx34mdpn35lehc62capguv8qwzdjze4m8nwp", - "percent": "0.0%", - "airdrop": 1008.0197664539136 - }, - { - "total_amount": 161643911, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlMzJDOKqF3gGPyBewIPWnfL+Em35PHaCQ4z/fwJWJp4" - }, - "address": "noble1ml86tlprxppx4hr8ycqfwqvrxd520grsp8f4yx", - "percent": "0.0%", - "airdrop": 2839.3952382597568 - }, - { - "total_amount": 1681437461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFWYWWgRCUFYXJhIRb3CMzdMAgSn99XyUaQxKgjh95a" - }, - "address": "noble1mlehrcdczwjsdl7kf3t0jle0h4vv35kq9acqku", - "percent": "0.01%", - "airdrop": 29535.696647397843 - }, - { - "total_amount": 258852938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuxnN3yy0zPxgBEg5V2ME3ckxxQLxvjfKYEqehIUv7PA" - }, - "address": "noble1uqc6lydtafdvujp55crljygndxgl573z9gkp7k", - "percent": "0.0%", - "airdrop": 4546.943927672895 - }, - { - "total_amount": 453868764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsTq6cnAC3HBNZluYwFKRy31h0oSjNN7A73lirtxxkz+" - }, - "address": "noble1upe06zml286pga72n4tmreegtxfqpva3378d38", - "percent": "0.0%", - "airdrop": 7972.541615232517 - }, - { - "total_amount": 90894571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTn4iLE9G2ipzycPrrX0hgpV7rny4Bd/165t1ScLhtD" - }, - "address": "noble1uzjxrzwxjvxk35k8auffu9fwk93wzph088j8cl", - "percent": "0.0%", - "airdrop": 1596.6305843779255 - }, - { - "total_amount": 55736945, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzsHXAWoFr5bnGCHg4xEWNfhkjYTKrewMpH4trpra/6" - }, - "address": "noble1uyphdztvh3r4jv23utrht7qtgf0ref34sxn5zy", - "percent": "0.0%", - "airdrop": 979.0607963460247 - }, - { - "total_amount": 1007000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/OY1kEEYLw9E7yi0HKX5hW1FJ42Oypez+pSa1IOeZMZ" - }, - "address": "noble1u9qszpx83ttvv69l48uycungd52qmfdvy0zhmt", - "percent": "0.01%", - "airdrop": 17688.702204981757 - }, - { - "total_amount": 31998331287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9S+IhwKKCbcMPeHVuCiXNJRvDSY+QUlg+gdD2ESXD+a" - }, - "address": "noble1u98au2pwghrslc3rmclr289jptr7dwcpeqmqcc", - "percent": "0.19%", - "airdrop": 562074.4321669252 - }, - { - "total_amount": 158700589, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av1znQR10n3LDADlpsl2RlvFSCsBXQmHOD8eLjSi3dm4" - }, - "address": "noble1uxeu3j0nglqzd5mwnjdyfhrfwhgs83eynysg3l", - "percent": "0.0%", - "airdrop": 2787.6936033527345 - }, - { - "total_amount": 513075001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xlto65aE0cbb79Tnt4Ul5SOq72HkqOIpjHJU6PVf6g" - }, - "address": "noble1ughrlsnpgdhx8x7ty6mlgu74f8xxr4mstefq3w", - "percent": "0.0%", - "airdrop": 9012.54309981104 - }, - { - "total_amount": 1922881247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJyZhI9ToV5u1+xXlMmbVT7vtKfJEM2+EvI1lm98gV4" - }, - "address": "noble1uvuyswx23gdp4ygep9e68997dxxmg5qquyre8y", - "percent": "0.01%", - "airdrop": 33776.8359024101 - }, - { - "total_amount": 51113593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobcuvHzOQbI70T4sViW1kons1UjN+hpiSWZ73JwgJ/W" - }, - "address": "noble1us4wlqckhdfkzw0w2fg3dj884gv88rvv6l2y66", - "percent": "0.0%", - "airdrop": 897.8481878884212 - }, - { - "total_amount": 480061375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwGZ+IuvOJauKysMMioO4u46IjWuDv/47iOlcYRf5Esr" - }, - "address": "noble1ujrg2ghsxtjsj4smxpsyn8ftmwqdv7e55v7g50", - "percent": "0.0%", - "airdrop": 8432.634262650521 - }, - { - "total_amount": 229840000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqWI1+zksfxjzi08n72PB4YGInkB8omtDDlxp86a26QB" - }, - "address": "noble1uj8kz7yc3hrwuycp2ans2r50zwskjvurv3m24c", - "percent": "0.0%", - "airdrop": 4037.3101437865016 - }, - { - "total_amount": 217616982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atu+kNsF643JtOuw2pbH/p/sLjEUPJKz0Ep6MrTvW+wW" - }, - "address": "noble1unf6t7tgzrufphjsexasw0uyk630wntmrfra7s", - "percent": "0.0%", - "airdrop": 3822.6037630038486 - }, - { - "total_amount": 441547132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au0QwhPDVaxUQrljkojLH1E05JJxPAeIfpmTWySBHidq" - }, - "address": "noble1unkmht97mvdzxqld8l5hrrygjmc6ayth8rgm56", - "percent": "0.0%", - "airdrop": 7756.103006367201 - }, - { - "total_amount": 51038837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlLqU8G0sejQEzo/kKHuT0DeOedYs3bY2xpw/tDzbb7O" - }, - "address": "noble1ukkeaw5addzzxl0pn5uawlgy8d37tfnzkjv0zv", - "percent": "0.0%", - "airdrop": 896.5350432786539 - }, - { - "total_amount": 54827598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlXxcnJ1ds8NeTmGycvM5HQRiUd33qt2XJcjcUtlxjEs" - }, - "address": "noble1ue207vjq8cgl8u5s0uhcvtwll5e39x90mhc5sx", - "percent": "0.0%", - "airdrop": 963.087441545634 - }, - { - "total_amount": 1563374041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgdS2xiHwXga/ASaGG28KhRQZ1aPJbF5D0B2SNRxyx1z" - }, - "address": "noble1um2vkzcw46el35lugl9heq9k9pc8uengz45r6q", - "percent": "0.01%", - "airdrop": 27461.825070752675 - }, - { - "total_amount": 1029620427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhhrYfTHc33k1fkxTrbh1LE0QKZN1oWeiLVAEJa0HbgH" - }, - "address": "noble1ulq3axcvygt9h88xkcv62yz55ujs8my8elk2p6", - "percent": "0.01%", - "airdrop": 18086.046789840275 - }, - { - "total_amount": 133705971528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1jT/957sKvhJS+PdzF2EwSh+m98KSNNg1tsucs+PPYE" - }, - "address": "noble1ay2e2mgmdzkcp7we97v2aarjdh30nz4k90lczj", - "percent": "0.7799999999999999%", - "airdrop": 2348644.6011783136 - }, - { - "total_amount": 120525819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0SFPEn9vSCwB/SvjHeZBOKa2Paw801oMCeKpQ6VCYk8" - }, - "address": "noble1ag8xn4c7a2lqmwjwdqaw3gahkg4r0qf4v4z924", - "percent": "0.0%", - "airdrop": 2117.125442207083 - }, - { - "total_amount": 125073196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkG7/zV/ntKTJl3ec0A3hpBJqTeYaMk/0jbhKUGHbEw5" - }, - "address": "noble1agc7wrv9fx9u9zaqu0xk48ekp76ulrev85t54p", - "percent": "0.0%", - "airdrop": 2197.003493415408 - }, - { - "total_amount": 400227584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At1ejPnFPUk9kd0nXJZsXb0enj6JccZGwhqBcGUUaNUo" - }, - "address": "noble1avrrsrp2tm6et3auu4vrvs8xgtu9v2seqlxgm7", - "percent": "0.0%", - "airdrop": 7030.294486191979 - }, - { - "total_amount": 260138045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aji7FdCVU0vH/YqeC5XU58IpCgqYK7TbL1seIpWJEUnu" - }, - "address": "noble1av33ehuhu73gh46j55v5vucdpm64yc4r45pdg0", - "percent": "0.0%", - "airdrop": 4569.517785691304 - }, - { - "total_amount": 131541346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ZXIxqSD1PsP3KMX8eLFFGgdbkwY/snCO4/6vLvjv6+" - }, - "address": "noble1awz7g847wq9p5xz5dfmv7egwu08c8m6gmmfepe", - "percent": "0.0%", - "airdrop": 2310.6213476032453 - }, - { - "total_amount": 56860413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6BlyCfGKxKkiwcUIeyBmJ+aOXroyrk5BuWspEeNv66B" - }, - "address": "noble1asjc436c57l2pcnm26cazegw77g2572ls63srm", - "percent": "0.0%", - "airdrop": 998.7953453915327 - }, - { - "total_amount": 73133248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AguP50avXFiTLqzwwdSa9/bOHl0vz4RYTqpQe8RwXR30" - }, - "address": "noble1acvahhe4cgn7wnqvyr8pszw26udpye78zklkna", - "percent": "0.0%", - "airdrop": 1284.639766787565 - }, - { - "total_amount": 253873270, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5+VhmlfUcVSd1sJ37YX1lKKOW/CBjXjpVXYIg4x4EWL" - }, - "address": "noble17yn4phf72nzky8uh39cwwn5uzejnmgnefxgxpf", - "percent": "0.0%", - "airdrop": 4459.472364284935 - }, - { - "total_amount": 61624367, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3V/ntIsEoXm/kHWJ61uj9HC4Dy1HgmwIpqDLRRqFbhe" - }, - "address": "noble17ykjmcyrm6xnugnaw2409hfkpkd36nxj90neaq", - "percent": "0.0%", - "airdrop": 1082.4777323073536 - }, - { - "total_amount": 52483909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHqWimvluM87sUmf9I3SNpJK9nTqQlTf7vFj8CzVGy6" - }, - "address": "noble17ga0jh02a9vcjhyszmj4clkkgxd24x2p38628t", - "percent": "0.0%", - "airdrop": 921.9188052178371 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvpQuDqcFEwqXIihCjwWjX6EV5gmPTc8KjCM0l/kfY1/" - }, - "address": "noble17tjes7gn27rfn6suqppzwk8hlznhyzy6zkmldq", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 750390624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzUZ4QJ1AOknh3Vm5hagvYJ9/Zusz2NNgMVj+JF70kI" - }, - "address": "noble17w2dsfvgk8qyuavyvm37fke53yfunxmrplz0cu", - "percent": "0.0%", - "airdrop": 13181.168108586333 - }, - { - "total_amount": 9902163910, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPUFrHw9O1fhp0Sh1z7Wr7H2VnkhWwC09UXZj6ccIR2" - }, - "address": "noble175eg8v8vhzakz5my7s7q76dssgaud49uw33seh", - "percent": "0.06%", - "airdrop": 173938.8565927585 - }, - { - "total_amount": 63504600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A++EvciibERQrRsO1N6tHcQXYUBTVaBReggPZMmppnl6" - }, - "address": "noble1lqhrwz76ge7m5gp5j2gzjax5rmzynj95n3jrm6", - "percent": "0.0%", - "airdrop": 1115.5054201057444 - }, - { - "total_amount": 2517691035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApCrp2GD2ZcT8IvciWv0CnqpT6uFcxbEelc9LtyXgffR" - }, - "address": "noble1lp64cl75e6y7zwnz2w4ph2tf2mpmfm7kf482h2", - "percent": "0.01%", - "airdrop": 44225.111183979454 - }, - { - "total_amount": 4751133952, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuQngWNXkBRGVnxJWf/cY4zsHIKp7WxfRXla/Xzqbu2j" - }, - "address": "noble1lgdwng93exmdfjkerg7spadkl9tzc22v5drn0z", - "percent": "0.03%", - "airdrop": 83457.19326008549 - }, - { - "total_amount": 53870476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzClw3Zr5e7+GwNA7JXUAxuZNEwhfajy7fCklw0Hwx18" - }, - "address": "noble1l0q6w9gemqhaml8e2s9ptw4su4svweaxj2ezu5", - "percent": "0.0%", - "airdrop": 946.2748834206722 - }, - { - "total_amount": 1305922346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2XXaZ2g/8seMu101tuWj0SLiGsAHRLNT0Kh76dbbi10" - }, - "address": "noble1lh0ga9g34kdywprsrkml3km8mggdrj7j82tate", - "percent": "0.01%", - "airdrop": 22939.495016112363 - }, - { - "total_amount": 1474092871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzazuQ1vnl26+XTyxyOsloZI4tBq9BMZFt4exkharNX9" - }, - "address": "noble1lh48rg5gmkdduql376787asvfhmwh7rwsal5ed", - "percent": "0.01%", - "airdrop": 25893.535072100884 - }, - { - "total_amount": 261377004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+JNkIvR53ECGBzg5na+L1Vgo+cFQkhXuzaDtk01EtS6" - }, - "address": "noble1lcvgw8s9uqvtjnem8h4txqhpvj5evdgdkpzeuq", - "percent": "0.0%", - "airdrop": 4591.2810198473935 - }, - { - "total_amount": 69242100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/nUtqwkNJnUVrNJyLetUTYCBrLP76nYtjSYfT6/CHiB" - }, - "address": "noble1luy6sc30njyrl83kd5pqklvat9tk649uvguc5l", - "percent": "0.41000000000000003%", - "airdrop": 1216288.8648933142 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwkdN+1ND3nWKoPmty1HWpkAqIA4thIuqxTAw/cR1+6E" - }, - "address": "noble1l7r7ae5nxsqde862whfjh6mhlhcw953rv57qde", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 101832158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoBVaSJhjte3upF9SVIoXF252aWkBUr1K8JZVMQetlYh" - }, - "address": "noble1l7xk6j9982n4cf90mlr92zc39y5gpts3u673sr", - "percent": "0.0%", - "airdrop": 1788.7574158417583 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax0g+oJ3Mr/uwAxVf4GjsjBVCBQAb4R67qELJsMLW4Rq" - }, - "address": "noble1l7m7phr8d8x4rdxzm9qs25p6zkt47gt4ypyca9", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 107137129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiVoLtWqOzIiWZVnAY706yxT+B654oIJk8QuL4sR2ymU" - }, - "address": "noble1qq9q07ppx7s88md8capqgkahnna6va9cf4eapz", - "percent": "0.0%", - "airdrop": 1881.9431678030935 - }, - { - "total_amount": 284543672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al43oCm7DNJeJ7KgaEjKqtflqwXyzKihYiTo4CINOk0X" - }, - "address": "noble1qqxyh5kz57qv675u76ju2nvj2ar8dgc9fyj6ws", - "percent": "0.0%", - "airdrop": 4998.220733187692 - }, - { - "total_amount": 310458761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9IQPzvYhmUUIio+Frm92TH7r4/9JHf7KSt423pQQDT/" - }, - "address": "noble1qqxdghrechyfq2ryl74ecmg2c2epslfe8unx4r", - "percent": "0.0%", - "airdrop": 5453.438500751346 - }, - { - "total_amount": 126406324, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av/AC6mSL88NQ/AMaZTucQwVn3q2r81aBMcKyXJz1h81" - }, - "address": "noble1qqff9szr0def4x9wgt8neujwd7hah9tuku33eg", - "percent": "0.0%", - "airdrop": 2220.420875930922 - }, - { - "total_amount": 1348759044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahm0rrmC6+HFCmjXl5a9XevqwmqS0Pnz3pAj/yC4lxXn" - }, - "address": "noble1qq29rk7u5fvx4ms02q3u36qexc4p6zmx0wz98k", - "percent": "0.01%", - "airdrop": 23691.953401779432 - }, - { - "total_amount": 4566499499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0tymGLLP735bTdEPzxr/6dfjagdWGNiUfty5F4TxQ8H" - }, - "address": "noble1qq4t5608ufjwxkvtlxpyjd82u8rj4nvvedjcjm", - "percent": "0.03%", - "airdrop": 80213.95209236284 - }, - { - "total_amount": 80039083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsdRUhvZWN/q0Ac88CNQb6TEpXslq+KYSv7NMuElJFzA" - }, - "address": "noble1qqcx4hg6qfqve9q5vkv3t5xtumvn2p0zwhngv2", - "percent": "0.0%", - "airdrop": 1405.945882767446 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1V0mHlvuWR0N22Q2KyMKhjsHtQQz8GVkBSNmniY2aGd" - }, - "address": "noble1qpqa9jfl7suaew963muedppnaljxqhm77wp9p5", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 1036765893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/qaZI+P8C+fELAQHStfMf7MoPuf4NjOxTEsWMSNv5o8" - }, - "address": "noble1qpggjfefhskmehaqpzrhvpvw4wcrlxw7rfs6nk", - "percent": "0.01%", - "airdrop": 18211.562202143974 - }, - { - "total_amount": 92757107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlQ8k5YdKYHiVugdaUdldSJLd5niRGdgQI8smIYPmUel" - }, - "address": "noble1qpgcpr5s44xqcw67fjkzaxr7ygrdrmp0kzwsmc", - "percent": "0.0%", - "airdrop": 1629.3474112399492 - }, - { - "total_amount": 50402713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8JSsTwyukqvS3wrHU6HXCFr2VClZ9DzmtdcbVVgS1+3" - }, - "address": "noble1qp2tgwrmnlsl6t8m6qsjjv4qxrk5s909nfr330", - "percent": "0.0%", - "airdrop": 885.3610532077088 - }, - { - "total_amount": 1094523146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxpvLIPz2NdnZvys+su5AmeFJw9ndw95T8r0PVp2oS3w" - }, - "address": "noble1qp4x6xx4ce66j9xk7dhnjajqpht8xkxepk66a0", - "percent": "0.01%", - "airdrop": 19226.111207600567 - }, - { - "total_amount": 407478664, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArnLjZbGxVMRQ4KjSkzPetOt0K2cRnBBaGAmKKL59hhq" - }, - "address": "noble1qpkgjd4amzjtfr3480esa82sykafpddhv6wsj3", - "percent": "0.0%", - "airdrop": 7157.665086772414 - }, - { - "total_amount": 303781119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYbY5ZYIjHPDhz/D0aSedCmyRYzBUeo/eewLl8DDNBU" - }, - "address": "noble1qpmlcdjun6ya06e8snj4anfeczldkpdp92aj6n", - "percent": "0.0%", - "airdrop": 5336.140764138159 - }, - { - "total_amount": 59918153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqkoZO5aayhn7m6tjilFTHbWOmmpYj/pqej/Z+8vDua4" - }, - "address": "noble1qp7ms7lm4wt2sg0rlvuavt50d5alqj50jlv4td", - "percent": "0.0%", - "airdrop": 1052.5068173679585 - }, - { - "total_amount": 80647802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al/40kCiU7pHyvMY5JqXCqN1wmLbU8YAVENz7uQ7VRjP" - }, - "address": "noble1qzs0near2ewuval43a2ahmwmgfpyc644jn93s4", - "percent": "0.0%", - "airdrop": 1416.6384836785821 - }, - { - "total_amount": 651868244, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvXad2SBsz9B5uytzqj0R4bccIi1cC8KDohk+1ivXXTp" - }, - "address": "noble1qz4wf93hnt2eyyewrt4urfmg4xtw34wlu4wc7t", - "percent": "0.0%", - "airdrop": 11450.549399205946 - }, - { - "total_amount": 517818892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHT30OFb4AVJiHYSR93spEbUtJdYf+7c2G2UkwBv5Xs" - }, - "address": "noble1qzequjuf4ksgjs5gats0rg2z9j2re4925vah3q", - "percent": "0.0%", - "airdrop": 9095.873065244896 - }, - { - "total_amount": 1717794806, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwcuY3cN3BGdJat7Hk31kG5O678EPEQzk47u0oUJWZRb" - }, - "address": "noble1qzulky8hacycvxrz2jcts28zg7nypce8a92h0h", - "percent": "0.01%", - "airdrop": 30174.34038986933 - }, - { - "total_amount": 171502815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnaRG5+JEmG9A6XoFnD8i+WAGt6+TxKnNBZwTDju7Wq4" - }, - "address": "noble1qrym57q9pd3l2aatxtsgmyegx4pvkrltv3m020", - "percent": "0.0%", - "airdrop": 3012.57420243404 - }, - { - "total_amount": 3434498192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvuDVep4EeAeXo/zJHGZlM0HZS1byhUiu1Cx1fNMgRMR" - }, - "address": "noble1qrg60yrf7avsjegk0hrewecydu5atzrd0wq6fk", - "percent": "0.02%", - "airdrop": 60329.50917759311 - }, - { - "total_amount": 1013738218, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai/CdkFFuOA3sZKZ9MGgG/olRqRjK4+Yh4v9Cx0SiPch" - }, - "address": "noble1qrmfh5mw3p5f5z9d65c22ktc4vejrtx5n7s3f0", - "percent": "0.01%", - "airdrop": 17807.064003982996 - }, - { - "total_amount": 394367552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4+4/3bA/7SjM2sC2SSB2ggpmrnqUlUp6W5Mi+nb5IE" - }, - "address": "noble1qyr5ek04cxzqpmmd7av3wev7w4rvdk099z5rqt", - "percent": "0.0%", - "airdrop": 6927.358675904328 - }, - { - "total_amount": 1537313381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhOmJXLaxIFKtTnBvtVrBz+qhAzVfH6SoOf8NY4p7SYV" - }, - "address": "noble1qyxph03r77sl7kqzkf7mjmgql8eq4w9k9ue645", - "percent": "0.01%", - "airdrop": 27004.05024055875 - }, - { - "total_amount": 634866477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoq0887Y5+897QAaVaLjwYL7ooPkTAfeLEA0D6SiLfVO" - }, - "address": "noble1qy2qaesc6af4j2f2c7cct3n9fglnljgc3mv5f2", - "percent": "0.0%", - "airdrop": 11151.90074635442 - }, - { - "total_amount": 464724450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A327OUQIpFNvbkbRw3bQUyS5+zWkyVnOIdPDzuROU+5V" - }, - "address": "noble1qyt55k85cegzr9c6z4j8pkuptaygda9hr0xt3l", - "percent": "0.0%", - "airdrop": 8163.229794859915 - }, - { - "total_amount": 62526794, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai4X3aXnMpqT1B706gqleRo4ljd9NPsSDaSJa2fnK3pg" - }, - "address": "noble1qyjm25qff2upk6athplw8j08r58xpzf90557yq", - "percent": "0.0%", - "airdrop": 1098.329532173029 - }, - { - "total_amount": 97272607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqUapIiIGpid3eY/99TYIL+sKdtQKeiIfjrvhf8bK7uO" - }, - "address": "noble1qynas0l6672a5uwup2nr23qklayjq5vplvv83v", - "percent": "0.0%", - "airdrop": 1708.6655192901926 - }, - { - "total_amount": 574434909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aku7mw/RtjwsWcsodguYE9UBLnEfN1S5k8ydNW3o336O" - }, - "address": "noble1qykpgnx9w9ezw45qqee3tywzzzn2zzlydn2gcg", - "percent": "0.0%", - "airdrop": 10090.375413551932 - }, - { - "total_amount": 999003821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtN8BX+J6LkiAvQnAbRLxxB5ax+eNNIU2GxwdDssLTZn" - }, - "address": "noble1qycfaxw2x0hu4cvc2m2023fp7lapaes7xsq8qk", - "percent": "0.01%", - "airdrop": 17548.24338759474 - }, - { - "total_amount": 655064175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwaUtiDP5RnRirb86jZz8SD7YbuRLg3m4jGkj3U/EO30" - }, - "address": "noble1q9pruv26e4j75t82gc43mak577hk7j5gnvx86v", - "percent": "0.0%", - "airdrop": 11506.6882986366 - }, - { - "total_amount": 102032103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8XhZUKUbkQCr2YjZwBaTazPPNYzJAqh60LoGzE90bT" - }, - "address": "noble1q9887r8ql9dgffy983j7rfeysr4g42dy0plegl", - "percent": "0.0%", - "airdrop": 1792.2695981281288 - }, - { - "total_amount": 50053106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwwIZoflJqljGBCW6TGiah2H3TWlCG1oqJpj2lhi6EIj" - }, - "address": "noble1q9fu9a5qnx9hzc744tue27as68hyy6ktf8mc89", - "percent": "0.0%", - "airdrop": 879.2199468405021 - }, - { - "total_amount": 476128148, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuffLJImX0POqjhsmYX++hm0q6F1uUD+a4v0ReDHuYc4" - }, - "address": "noble1q9sygz3xpxecmflv6vxh5wlyzrxvputhhz2lfz", - "percent": "0.0%", - "airdrop": 8363.544211898194 - }, - { - "total_amount": 77931576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxOue7SaAdIJxlvYpJTl/OfDsTtKU9riURfSSi9fYBDk" - }, - "address": "noble1q9nd5ll40dfjhggec5te0548wxwe5ek72ljfu3", - "percent": "0.0%", - "airdrop": 1368.9259585192685 - }, - { - "total_amount": 139712026, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoCz0PAYFOZqavwCq4FCH0+xhMlYJ4PWFZLl7G6+H7Cr" - }, - "address": "noble1q9ez663x9utsdg7yejaslslph689sj6drmsnf3", - "percent": "0.0%", - "airdrop": 2454.1454045369105 - }, - { - "total_amount": 147864180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJ1g+M0qj5nigNl+H9dUBvlZtus4LlYAlZQW8puYhMG" - }, - "address": "noble1q9ms6lkh98y0faejdctfz87ndhu7rwgk44zg3g", - "percent": "0.0%", - "airdrop": 2597.344038534081 - }, - { - "total_amount": 273344553, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApdKHjWglFzg5Mi+w/rnH2roawwWs1Pf/cl0+BnVz9Oi" - }, - "address": "noble1q97nmmqyxxmsfppmsfqs90p2ncrtgczhzhdw7p", - "percent": "0.0%", - "airdrop": 4801.499898084263 - }, - { - "total_amount": 161529138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/SUvBURl+QXiUL4Ds46eUAdWRRv8x/uMmHFt//ZFHn" - }, - "address": "noble1qxqmhtmm8h88xj670zza6ln3emw0yvzrg7s3rh", - "percent": "0.0%", - "airdrop": 2837.379165351939 - }, - { - "total_amount": 297129749, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjOQT75RuKlDV9G8JSjsH9FpvOWBzFQCE9XiUuJoaKOu" - }, - "address": "noble1qxxzvx6cpllqdzf355d9pn38xrsl5uhjj2gr4t", - "percent": "0.0%", - "airdrop": 5219.304514699083 - }, - { - "total_amount": 111545287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgtfgaTBoTQ8QQb31vEvBAagRRGWIWKJEp/b48mNBXg8" - }, - "address": "noble1qxvm8a46qrfua8ayv0mwtmzvpprvgllx8954lk", - "percent": "0.0%", - "airdrop": 1959.3757339744022 - }, - { - "total_amount": 343909864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akh9xNQI2Qt04/y1qVOM7NsjQO2GahuK5432N2U0xwED" - }, - "address": "noble1qx3emj3dxfkadehz7m2px8xsq95yl0m3x37tww", - "percent": "0.0%", - "airdrop": 6041.031946029569 - }, - { - "total_amount": 1214898104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Clke4zT6i6ZxONdALS1xCyEi+prB8eEFlpRfibKncc" - }, - "address": "noble1qxnkm93q085tjjghgknjmnrv6rpy8985s7d3ys", - "percent": "0.01%", - "airdrop": 21340.58666440214 - }, - { - "total_amount": 616273374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1IBDyeXfF8T5oDOr6eQeymKO+/itkC3XTnrMutTWgs9" - }, - "address": "noble1qxh5wks325sjxvenpp6wrtfwx2sg5l8ca2s5dp", - "percent": "0.0%", - "airdrop": 10825.299095874228 - }, - { - "total_amount": 230743274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgLm5PIXymdsVmTzl5iZSYKJRZvGj2aWJBZnv0GdcgyT" - }, - "address": "noble1qxhusts2y6na8e2lzl0t4arwd040glh8uhajr3", - "percent": "0.0%", - "airdrop": 4053.1768218356606 - }, - { - "total_amount": 95361307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axov5ooiNw+baPKswiSBHWe8x2T80tW6nVWDIQmRGe9T" - }, - "address": "noble1qxctvwnlty6e3a55pphlefxnzj698xss3eyd0w", - "percent": "0.0%", - "airdrop": 1675.092116584749 - }, - { - "total_amount": 106620460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnBxghVE8k3YNKO7qcFMWpz2/aSpo3kSyUjPTbvqN98e" - }, - "address": "noble1q8yetu3wddxpl9zuh77g96nmx5qz6j4xyxukv7", - "percent": "0.0%", - "airdrop": 1872.8674934440608 - }, - { - "total_amount": 50402282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+eEVACxaKI0vj3E+2mzsAO23uTIV9j76AlxocjiAmrl" - }, - "address": "noble1q8y73yvskm8t3qw0xrm4hw769am6tsjqltf4a8", - "percent": "0.0%", - "airdrop": 885.353482372902 - }, - { - "total_amount": 60073949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Y+0l1uZoiiC+x+PMGutNx6JOfrGKLbpING07UahD6a" - }, - "address": "noble1q8tkv8nw399wdhaf6620erwf79qm3vkjfmzjm6", - "percent": "0.0%", - "airdrop": 1055.2434897102896 - }, - { - "total_amount": 298571361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ba9LXIjx0ywCXdw4if9QrHftFaSmTFSdqKL4m79ZcM" - }, - "address": "noble1q8wp9x6hhq8ymm5x5qm5l2fm3npzdfmkrg8cvm", - "percent": "0.0%", - "airdrop": 5244.627499170908 - }, - { - "total_amount": 350158177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsR2RX4Def13yIL04ir6mrWFOXMT0rdqt3XXRu3FBZSw" - }, - "address": "noble1q85jh8uflvxasl9z5qql5t8sutxmjww3y03vc9", - "percent": "0.0%", - "airdrop": 6150.788200190957 - }, - { - "total_amount": 39999750000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1i3SErxM5RANrlYU9BZlFTH2uO71zMWEmjLGxhORo79" - }, - "address": "noble1q8ewvlqdajs7yxquffhl2dk5fmk4n0e7d8xem9", - "percent": "0.22999999999999998%", - "airdrop": 702625.2890007141 - }, - { - "total_amount": 308413154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkeWaYR6YMmJZGgUkhBa5iR7p0nLntO09IGofBOUb9oz" - }, - "address": "noble1qgrcu9p46nmxddeuqe6saqhccdzqr6xw3ca2tz", - "percent": "0.0%", - "airdrop": 5417.505895933643 - }, - { - "total_amount": 912871865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyXHN58v1mjOrMQgcMpgD2HB1MOXvqkmx8wgwl3tZ/DN" - }, - "address": "noble1qgy32lsratx8tn86cvg9aj5j50ajw4400rv0yj", - "percent": "0.01%", - "airdrop": 16035.27166960408 - }, - { - "total_amount": 116829971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axs2pMuJsXNYT7PQg4Z+WZvOlAVyyc6g/B6xREuaz3xF" - }, - "address": "noble1qgxu39gn8herannh8q4mvazf9ykvp8rxp0hq5t", - "percent": "0.0%", - "airdrop": 2052.205129727562 - }, - { - "total_amount": 682442683, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6HybDYLU+9TJSE1jRRBNhdnjDkQgJOuz0NUuLqWNjxE" - }, - "address": "noble1qggt6ae7frvny9wcae9xhujy700wn7hl2eq4uh", - "percent": "0.0%", - "airdrop": 11987.61210680811 - }, - { - "total_amount": 54358863, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1A+TP+K9c9JWTFS3J8uxj3U4O2cYbUZqNtSulrggR8S" - }, - "address": "noble1qgsq2defzvvsahewderp5np563n7qyt3xg8qul", - "percent": "0.0%", - "airdrop": 954.8537634641522 - }, - { - "total_amount": 55853499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+yke/sf9uhe0a9aIhzD753u6vFm1OXaZC7jU7fwjX71" - }, - "address": "noble1qg5d0yjuyxp0w3g2f6k26mkmtgn0gj0zy0yqnv", - "percent": "0.0%", - "airdrop": 981.1081538403638 - }, - { - "total_amount": 1598528794, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuRC0u1gmhMhMVX+oisBsH/3/1qRSnVxuAWEx40rcAXF" - }, - "address": "noble1qgudpxeuh7hnkj7vyvfp06jtcjq0paju0d75tc", - "percent": "0.01%", - "airdrop": 28079.344392407776 - }, - { - "total_amount": 3048186959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5u8wNJGbbi7TWw8ssolRxgVLpXHjXi3GV/lob/AIH5w" - }, - "address": "noble1qgaqrkptghx4n2zse50uxv96qsujs85rh0pu7t", - "percent": "0.02%", - "airdrop": 53543.66572280033 - }, - { - "total_amount": 535012118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag0rNnUBV+2XPiqPByK5rk1otYWtMP8tOhgCefihux7f" - }, - "address": "noble1qgawgfzga77myht92ggnxfprlsh50w7evurwxr", - "percent": "0.0%", - "airdrop": 9397.884837496087 - }, - { - "total_amount": 1500517128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuuxRMF7uksLXJYDhVQmFaG6mwIpfB1yay0rez7zXmyN" - }, - "address": "noble1qgl6ej904uyetmefu54a3jrfgw84fg9t6fyhae", - "percent": "0.01%", - "airdrop": 26357.696753392745 - }, - { - "total_amount": 725361745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArTYHJKg/er77NoOcvs1THVEyQu19Xd2Mk7ewQVClBUi" - }, - "address": "noble1qfyfxey5p4pmxuk35t6yw6ff8tyu0gseu0edds", - "percent": "0.0%", - "airdrop": 12741.517277250163 - }, - { - "total_amount": 448702230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3sdnfsr+kn3YFtMgwRzhZOugbVx+VmJnmLfe60aSGir" - }, - "address": "noble1qf8puzmrc7ywx3xp5pz9glg0hx8xsuv23r344t", - "percent": "0.0%", - "airdrop": 7881.787611897947 - }, - { - "total_amount": 909079068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A654ODEevndo/y0uTA2RVooGbPaYYHIsjGZSZrD5UIbF" - }, - "address": "noble1qf5ztuuwlussjkz2zh4hv32u5n5xgjeqfu5uwt", - "percent": "0.01%", - "airdrop": 15968.648376002346 - }, - { - "total_amount": 594263221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvPUupxfqS6NE5/cyzHoP6BXw1AMYHLIDCAU4egmH2Fr" - }, - "address": "noble1q2yv69d5f54z5zzvpy7g6ym2lvtc4pql2xywww", - "percent": "0.0%", - "airdrop": 10438.674426655673 - }, - { - "total_amount": 130156486, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay8V4jhsdc2O7NpKNXwk6JCekR/CdxH1mlwdfggM2TWl" - }, - "address": "noble1q29vu40gdqe4fykzr3mn5n76j30lvgg0zzjly7", - "percent": "0.0%", - "airdrop": 2286.295254122023 - }, - { - "total_amount": 202483333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4PhvTpjxE1Dt6T3yOyvqnM8H0KEhSiGvU9G0GkcUMqj" - }, - "address": "noble1q2ggll0uls3crnwkwwc8kac4jxa9zj5fyvd54t", - "percent": "0.0%", - "airdrop": 3556.769988986252 - }, - { - "total_amount": 102251080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayu2CRayPkKIAC1kcF3uEbTxjsBKKKSdziz1VafV4ULE" - }, - "address": "noble1q2t96wltse9s8ygl2a4e92tccmahrve602njlv", - "percent": "0.0%", - "airdrop": 1796.1160916164508 - }, - { - "total_amount": 355800892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtRcZtU7uInOyopCAGyprntHnsFc9ty+KthaXkh6yJ1i" - }, - "address": "noble1q2das3jlpctd2587znffvjfcdaa94umf3w0hzn", - "percent": "0.0%", - "airdrop": 6249.906676122023 - }, - { - "total_amount": 2361649614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsvPPVimV2SeIR1ln18yNGr2oyyKjDx8t5J4q1DjIEqy" - }, - "address": "noble1q2ke5n8rgr8ncjyeeqed3xyhyneluxgevq7c2f", - "percent": "0.01%", - "airdrop": 41484.12783967837 - }, - { - "total_amount": 15035585804, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AguEaBHw1jSZgsZdslfmrH8d6iTmtCdKOw67KrIrboaE" - }, - "address": "noble1q26lc8rfw6h2px8um0er0wsd5ds2v83szwcwac", - "percent": "0.09%", - "airdrop": 264111.2212158959 - }, - { - "total_amount": 50483685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiwATVW9BKgDsIE2AvX1Kyb2d2EqrhXyCE6gI7yH7xv7" - }, - "address": "noble1q2m399slayvqhqpm36lfcvelw93r9taxtd05v2", - "percent": "0.0%", - "airdrop": 886.7833864698158 - }, - { - "total_amount": 97591903734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ds42f1kfHkWAhfMokDKQIDBiNPvfVdYjjMYo7jsgwo" - }, - "address": "noble1q272app7f5j5zgpjcewdajljurgansg6wc5xc9", - "percent": "0.5700000000000001%", - "airdrop": 1714274.2033445614 - }, - { - "total_amount": 64500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Almuw1hKbsF7IuCQX2U9DcBcrnFPfoLcksX0CI/kUkXD" - }, - "address": "noble1qtr3305uw3teyr2t3junh8kcffn56rdv7gph8a", - "percent": "0.0%", - "airdrop": 1132.9903597033995 - }, - { - "total_amount": 263633258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+wz54m/xxvJoxoDSZkQ36K87xScHjQgmfz6BjgxlMlM" - }, - "address": "noble1qtw6w64jt84n9083exmn3rsgc82qdtzkhp4qy6", - "percent": "0.0%", - "airdrop": 4630.913795522468 - }, - { - "total_amount": 4965130885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9T2Lu225bQlQisDyCbxABi0aCZ105s+ltgbvng1aYMv" - }, - "address": "noble1qtc9hf90pm538uysl5jphsuwah7y4a0ql5u3y6", - "percent": "0.03%", - "airdrop": 87216.20817628849 - }, - { - "total_amount": 1544657710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSWbKE6Nut/QOicbCJqWsoIIh1fkw90ay6fH9yLe7cP" - }, - "address": "noble1qtmwcc2x96ksdkuw9lqmt7tedcp7s8xjxjxu5f", - "percent": "0.01%", - "airdrop": 27133.058829015958 - }, - { - "total_amount": 5168830270, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9KhGIvj84ww/u7iTyer9ViAfIAc6pHsmb++FBZ+ARew" - }, - "address": "noble1qtmcqu27vxddnax4nnm0yw333c4runjfu0hmq7", - "percent": "0.03%", - "airdrop": 90794.3390209786 - }, - { - "total_amount": 345942964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah/YFEr8CIcJn8hz21yaTa9GgHgV6j7rxUddH2X+Byq9" - }, - "address": "noble1qtut300t4az2xfd6e4aywvd8u80szzwktw6sw6", - "percent": "0.0%", - "airdrop": 6076.744856111941 - }, - { - "total_amount": 933112633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlFOWf3LM4PkP5faM4aLc55ruXz1OV3UgdkSjWMb8asJ" - }, - "address": "noble1qvqyzc5fwpxhswxyq7fsat0lm4peg5vzwxtmad", - "percent": "0.01%", - "airdrop": 16390.81577839467 - }, - { - "total_amount": 206528317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av0IRRSy5BXpGOZ8AK2Q2NP3H/9pBfJ2cO5Wds41A1gt" - }, - "address": "noble1qvqmz4nwagp9u6gm7hpu93cnwxzetyry0lnl0x", - "percent": "0.0%", - "airdrop": 3627.823134368492 - }, - { - "total_amount": 15641327229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AruTYxM3Hkfv0WoaPUIZLVNotyE472/x+Ypnm5k/SaLf" - }, - "address": "noble1qvzykan9gac2zcnwgll9zkp2y4czfygur5hvzy", - "percent": "0.09%", - "airdrop": 274751.51881276414 - }, - { - "total_amount": 92158128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+DkAkKXw7DhcbWeHluzxRzG9fEAVt7Jgn7fpTiEhg7Z" - }, - "address": "noble1qvtxtfmjakkqqhxrtz4r04rqyp9zwwdtmmfmp9", - "percent": "0.0%", - "airdrop": 1618.825900655999 - }, - { - "total_amount": 86089759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzglmyTZcwRaKIB/hFIUvUc+Dzl/8CNvUi8JqQdbnkIq" - }, - "address": "noble1qv5rc9nze4r8yfgv6qsa3329rcj9mml5y2hkjr", - "percent": "0.0%", - "airdrop": 1512.2304963750228 - }, - { - "total_amount": 273220146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az8hnq3IIEyoaTUSDizahvHkwK1rrM7F9oYH+V4Cqjk1" - }, - "address": "noble1qvhh5jmdj620srx0yqvdce5rrzfqmqcuxwshq7", - "percent": "0.0%", - "airdrop": 4799.314596817912 - }, - { - "total_amount": 97333572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+LiREgPeQG1YvJ69SRvvM84FJ/HZ2+qL14tUfUy4ogX" - }, - "address": "noble1qvmzsg5zw3ykpdke053w4sgf2n708hsyv5fvv6", - "percent": "0.0%", - "airdrop": 1709.7364147518874 - }, - { - "total_amount": 628210101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhHMAW1gCh5VQ4viAUaUyepz7QDRi/fKWRIzQkR/3oB1" - }, - "address": "noble1qdqpy8cpu43fv74kxt0say03prhna6ttlqa9ax", - "percent": "0.0%", - "airdrop": 11034.976562810836 - }, - { - "total_amount": 711487060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsVrl0CqOknfs8cvgG02f3FPHgjDmY2A5Yj50Ll1Ia57" - }, - "address": "noble1qd4gqap32jpqqndq2v8s5hnqq5wnvcrkcdd83m", - "percent": "0.0%", - "airdrop": 12497.798140057585 - }, - { - "total_amount": 175266612, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7dNUvyF7VMiPsH+i5ebMWZMsxaTsRRFaUL3uJWaNU/t" - }, - "address": "noble1qdchn7p69hru3h4w70lcccuhr5qmxqzw0hmrwy", - "percent": "0.0%", - "airdrop": 3078.6880895174604 - }, - { - "total_amount": 79532823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxKd8vITKuDW/UW+k4YOoWo9MO9D4lwsGjTSn9oZYTm/" - }, - "address": "noble1qw264x7dvqcfuxj7zcsj2j9gglpg4wj8lu5xwm", - "percent": "0.0%", - "airdrop": 1397.0530502170047 - }, - { - "total_amount": 59995225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqd7uHyD55bdZzOZ/XXrMDjL1fTIpKZm+Vju5ylKvKT8" - }, - "address": "noble1qwn4uwcsjfcqsv3phaywhs95feeluzkaklfdcs", - "percent": "0.0%", - "airdrop": 1053.8606442362232 - }, - { - "total_amount": 203798110, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YcUfnByqxY+Ghc2guKhTM6NfEKS/I7PNpxyhMPBZNu" - }, - "address": "noble1qwhc2lt8mscj4amja4ar2mct3jzgsf0dg6wygu", - "percent": "0.0%", - "airdrop": 3579.865022570124 - }, - { - "total_amount": 249516805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjBpnyp80dia5zSFNi5bXwHCuXUjmOh3f7YcHZsXGlCs" - }, - "address": "noble1qwlhqrdkwhzkgf2256edutdpn5q5jd0nlt3092", - "percent": "0.0%", - "airdrop": 4382.947824015396 - }, - { - "total_amount": 402612193, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al/HJcWjlwMC7VjJaDgkHsOtB0EbBZvpDcqb2oH7zGyD" - }, - "address": "noble1q0yv9g2duvgxtsqqedpmgvcq4nhfcn204d722l", - "percent": "0.0%", - "airdrop": 7072.181912682861 - }, - { - "total_amount": 390284761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiWG/38opigkCk/sRo3MbFTMYFqEo8flZhlYJRQx6fKX" - }, - "address": "noble1q0vav7zeu3twecvtxxyh0c95gtmetsulcz9xst", - "percent": "0.0%", - "airdrop": 6855.6414225138815 - }, - { - "total_amount": 3043711149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2rNzQLgUMwpA3X+At8fPAJDF/75JgjQzBsfABH9r+nt" - }, - "address": "noble1q0sx5vvussgdjn29sjp2gg924tzj0a0k4pvywe", - "percent": "0.02%", - "airdrop": 53465.044799050505 - }, - { - "total_amount": 103739067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6r9NzajjUitfNahGXCsL7qhSYy8s78V0g8VtTLr/ZHd" - }, - "address": "noble1q0ka0fjfd38hqc6ju0ndnpkypht58xehqhl60p", - "percent": "0.0%", - "airdrop": 1822.253687374032 - }, - { - "total_amount": 27752222293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6QmeFdHGMUcZXbxnEYt1TkCl5+Aff67zENSC5WCa6GH" - }, - "address": "noble1qsqj8dr0tdn855rkm0mcyvyuw58cp4lkc8rj9p", - "percent": "0.16%", - "airdrop": 487488.37702813605 - }, - { - "total_amount": 145879618, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmknG0BrRYQPI39b1JKN6Opb5V6c08BuxW3i9bOmsrgh" - }, - "address": "noble1qsd9ejwtrtf0mhurr6aw6sje9vwafyn6hnk5jv", - "percent": "0.0%", - "airdrop": 2562.4837344374346 - }, - { - "total_amount": 70486332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arf7aj99DCbNtJmUs3056dB1EDU9cQzkGAvn+PK2qiNz" - }, - "address": "noble1qssjwwjedm9hvm30e66kgrxx5jrvhfr6vzfg8v", - "percent": "0.0%", - "airdrop": 1238.144723207027 - }, - { - "total_amount": 268344549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoUuc7r8M5DoH3VrNLfjQLbKDjbplOEETemWGZs0D7E2" - }, - "address": "noble1qssjcpkcgs4evnf7ys5ve4w4fd86py3quks06m", - "percent": "0.0%", - "airdrop": 4713.6711177667685 - }, - { - "total_amount": 151194033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AudqqEQMB3CQ385aTDKBRG294jV92cg7QhUyF0GERX+1" - }, - "address": "noble1qs6j5dnx6j490lm75gq4ul6gav0atv2v6lulwj", - "percent": "0.0%", - "airdrop": 2655.8353772663204 - }, - { - "total_amount": 129169869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26QwHAIYfQ9zDShjliDYU3LnDRcGd5qIwedl9OcZ+lm" - }, - "address": "noble1qsagnxelevekw4vlqe6n62mjaw0rggw0njlr2m", - "percent": "0.0%", - "airdrop": 2268.9645944364497 - }, - { - "total_amount": 85461523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7y/NP5QkR7jXp1FX8umGvkU20PQ25Q2MMZ5+i1+due" - }, - "address": "noble1q3y02czchyyevzwsvj4pf56c63jxt2ka8d8fpy", - "percent": "0.0%", - "airdrop": 1501.1950648770598 - }, - { - "total_amount": 89500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5XpjHoHw70q1EE0wd1Yr8h4os3sU97W3ZTgIleaRzpy" - }, - "address": "noble1q30ejafr9mxkf6adrnu4c9f7vpn5f8y2trww04", - "percent": "0.0%", - "airdrop": 1572.133909976035 - }, - { - "total_amount": 19687771039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1r7ts1b5iEd5fvX0wx96qlLLlyc6T/bCtG3GQ4Pb1u1" - }, - "address": "noble1q3uvg3vjc5htupaf7p9xgsdgg7e4c06kur9wxy", - "percent": "0.12%", - "airdrop": 345830.30684084934 - }, - { - "total_amount": 1007564665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A50rOkr7J+z5OlAMoTwZ/KfClOEqIhmsO4SeAONejoat" - }, - "address": "noble1q37fyecg0j3mfdxuffvwy3at4aw8jjsxtc3ahd", - "percent": "0.01%", - "airdrop": 17698.620964694346 - }, - { - "total_amount": 274455708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsPA0XH31jd0bNZzeAfiEydwMSGAHqjnORXnPETH0uEg" - }, - "address": "noble1qjpswyw7m9w8fgatpxm5de9f6gz80nl2r7cwfc", - "percent": "0.0%", - "airdrop": 4821.01816014839 - }, - { - "total_amount": 122049309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9XieMgl7SCTXQ+H8MSIj8NSx4r69EpowGKPeAoQlMAf" - }, - "address": "noble1qjfg6g87476j0szjc8ddtr38kjkv9kh79qx4y3", - "percent": "0.0%", - "airdrop": 2143.886674503277 - }, - { - "total_amount": 50095185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtV2N2xoYF08kBuz0vvWATpmikwZV9dfBRlkEipgm5+p" - }, - "address": "noble1qj0atwdrthht7ah8k6vvpnvz9jget6s5dqs3e4", - "percent": "0.0%", - "airdrop": 879.9590956985791 - }, - { - "total_amount": 193000424, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsXJXhJb7urBlmw1VRv/AOV52kcRtXYCfn/jhZitygIw" - }, - "address": "noble1qjna9n52m6re22kgkrkp7xvjj6stzfwp5se7ca", - "percent": "0.0%", - "airdrop": 3390.1956559793584 - }, - { - "total_amount": 90042063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsAK10G5nuTuGsIIUFmcdHDt6wJpWXkL8i8vgn9fP5Nk" - }, - "address": "noble1qjhwcrjmtrsx9kfzg7f54rf0c76txgv2mtfda9", - "percent": "0.0%", - "airdrop": 1581.6556487876924 - }, - { - "total_amount": 4882488984, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap5xw8OhxagVUlF78azRVkIG1HfQezcjTH3tDPHaxRuJ" - }, - "address": "noble1qjh42gy6kxafg8ac04e8au5tem7k9x7f2ewsuw", - "percent": "0.03%", - "airdrop": 85764.54186403172 - }, - { - "total_amount": 137557356, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/YM28omvaotAHDHVHoLviVMji4m3pITWvHOM6xdYms/" - }, - "address": "noble1qjmrhzc7g268knlh0unv9zjcfkwavgjkfxcd6p", - "percent": "0.0%", - "airdrop": 2416.2970271982726 - }, - { - "total_amount": 646341333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ynyIHL7vpX47POPXDP2WK3GTKrZCWuJTZIieaThZom" - }, - "address": "noble1qnqxa8sny7f87devd6ys7etyet4lp0gr7ujur9", - "percent": "0.0%", - "airdrop": 11353.46510646271 - }, - { - "total_amount": 33664685557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqDfUW82hI3ffrKa2CXdfnvT15aFzcMBRAmKuOIqxrN3" - }, - "address": "noble1qnp2mqtdjfmphptf0jrwlj8t89atqz866380tk", - "percent": "0.2%", - "airdrop": 591345.1813725159 - }, - { - "total_amount": 1475459190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Etyfgf+jlugl5OfrhqLns2G67V5XO5KAaeQp3Zzgkd" - }, - "address": "noble1qnzmvlkfphtye6kycctadyjmyjhz4yn4ge7sxn", - "percent": "0.01%", - "airdrop": 25917.53547915948 - }, - { - "total_amount": 87251481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5bPqdpj5SeQ9szE4Mw+LEi2/zurpSLkKoQCDgFmJ3ar" - }, - "address": "noble1qnr4a0h97z2m7vc8twt2fptgkjdlgsnwy7tp90", - "percent": "0.0%", - "airdrop": 1532.637005315416 - }, - { - "total_amount": 326871083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2LoJ3HbmWAJvA0okPuZ9F49vSZGrJMibdqeT1B2l9IK" - }, - "address": "noble1qnx2gxnnt4mpa4yyx60fl8vue43gglk4g69e73", - "percent": "0.0%", - "airdrop": 5741.733114803252 - }, - { - "total_amount": 1357100614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgCAmTOfCKsQ8UvhxnLI32ERaP7ecO+twvvdhvuaPBbE" - }, - "address": "noble1qng0hw3ux7du2ja0w3jp5m5w8dpsh56ray9e0f", - "percent": "0.01%", - "airdrop": 23838.47926836534 - }, - { - "total_amount": 1031475061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2u794yp0LotnaZzu/yHoq21cGYPf4RsD6We9jHCIEMn" - }, - "address": "noble1qn68paz6wgsvvq8x77w4vudtuuyhgz28vm5jtn", - "percent": "0.01%", - "airdrop": 18118.62481220893 - }, - { - "total_amount": 50099944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A861sgIuEWFs10+MND7Khj6ADOXhgIoq8BAtsMis30yV" - }, - "address": "noble1q58s6j6vzau40g6xgd5qu2ctcf0pemmtc09ys4", - "percent": "0.0%", - "airdrop": 880.042691064809 - }, - { - "total_amount": 116448928, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5vTB4O8BKQerIZ+Oqb6/EGbe6eNgvgqhTLFCkGX6hom" - }, - "address": "noble1q52hhysnzynhakplqtxyv3cvywwyl2c2ans49s", - "percent": "0.0%", - "airdrop": 2045.5118266945003 - }, - { - "total_amount": 238031358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+6bAC37f13i0l1GXdLQhUS43SSa5pCICUFTl7hAo6dt" - }, - "address": "noble1q5dc0d99cyr88jvjp8z7thd3nm4sc460grm3dh", - "percent": "0.0%", - "airdrop": 4181.197425133468 - }, - { - "total_amount": 2472370442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8PhugTraakr+2A6NwI21W8ifhy/YWmgZXz/LHRX0va/" - }, - "address": "noble1q53tjqetm6en086q9fanezty3wwwexl9rxl86a", - "percent": "0.01%", - "airdrop": 43429.021339560204 - }, - { - "total_amount": 235324953, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1fStFoWRx/0BWv4FDKEkx5DWSD2Vs68oAwVNvW3GeTZ" - }, - "address": "noble1q5k6gsdkhylj77cmjay0ergzukdcldt5dx2hnv", - "percent": "0.0%", - "airdrop": 4133.657413126443 - }, - { - "total_amount": 2300087981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvsmvtM/R/7UT5V0GtsICnpcYgSwTwao7rxpqKWRuzTu" - }, - "address": "noble1q429fu7xwrjy9uk78r9f96rh2qaqrjtgk4u602", - "percent": "0.01%", - "airdrop": 40402.75207663032 - }, - { - "total_amount": 697388734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDwGoKveq26ZYjCc3L3KaFAzHK1Nilquxj34cEqVCZe" - }, - "address": "noble1q427h3czw6czmsg6025uuqmxkwxtd6szctktju", - "percent": "0.0%", - "airdrop": 12250.150582755945 - }, - { - "total_amount": 71895948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A57ZS4+Yj6Zm0TE/GAfwcOpXv60YbONJ/i22Snj4o1Z7" - }, - "address": "noble1q4vlaa2e07qacru5jjhla4lqlwvuwdrv6lh2an", - "percent": "0.0%", - "airdrop": 1262.9056741974714 - }, - { - "total_amount": 51210935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Bv6VKtGmMl66BFj6nHOHSesWOd34aCzHzqj8loJzkP" - }, - "address": "noble1q442zg75xjpxam9595tj6d265uf5asr6knresl", - "percent": "0.0%", - "airdrop": 899.5580723472468 - }, - { - "total_amount": 10728938378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmZM6IYVkQBgF6srHfffwAXMbzKXEfVRvcGQj2QHMtsP" - }, - "address": "noble1q4aw0vtcydtn7lqmkfprm4ncmr4jdj70kewf0n", - "percent": "0.06%", - "airdrop": 188461.76359885006 - }, - { - "total_amount": 4969500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6cAVqyZeXisC6Y+luWyI6EJucNnPcrMV8xwlUgGhaKI" - }, - "address": "noble1q4lc73c9ue2mk4x5qz8rnd0rshradwxeq9zggu", - "percent": "0.03%", - "airdrop": 87292.95492319448 - }, - { - "total_amount": 183044987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/qBTVPpdJE03uM6BCPZquZQq+tobSdXokB4o+q4TSW8" - }, - "address": "noble1qkp8g37rsdf9xahgeap2uuj0d3sq4hmre2mfut", - "percent": "0.0%", - "airdrop": 3215.3210180315364 - }, - { - "total_amount": 82410967, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3j5ZJb9gwa+Sx4kh8H7EF8LlcqSAqdDPGiqnGgz2Ea4" - }, - "address": "noble1qk9tc6r2r9ge8s7lfg6kafgm0j0mwmsuhu9s6y", - "percent": "0.0%", - "airdrop": 1447.6097851912402 - }, - { - "total_amount": 67392675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/GaVka4Dwiop1zDIQkkE2TooignBYOeTrsbAw37Prr" - }, - "address": "noble1qkgqhkjztezv0gmhcweumacyl994c0hqlq7u4m", - "percent": "0.0%", - "airdrop": 1183.8023424747953 - }, - { - "total_amount": 724859493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9w8g05rGRp7zp1f0KUWFuJy4Pm6GBG0m2YLsY2WLW8Y" - }, - "address": "noble1qkwudq5vehpw7l620847x7l0k0lk8djfflea9v", - "percent": "0.0%", - "airdrop": 12732.694848193703 - }, - { - "total_amount": 2927932082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmNd5LaKqlZZ9Cdbp99uhOScZHJHg2b3IKu/sRdNdmld" - }, - "address": "noble1qk64483awdzqw62p4jcjkhu9vfxaj4uqa07rjh", - "percent": "0.02%", - "airdrop": 51431.299577865175 - }, - { - "total_amount": 58479203, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmOklgFLzUzHd1lye/w/fau5nvuR83HnJIznOMiQ6/Y1" - }, - "address": "noble1qkmlemn5rwlmah6dd8yzahw4ak3mr499wxctsa", - "percent": "0.0%", - "airdrop": 1027.2305929013662 - }, - { - "total_amount": 1681897584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0iYdnW1Y3faQVJNqRtCHUVCodZvnmv2jVcRGDKTeD20" - }, - "address": "noble1qkuqcdsta65r97adghxuu0aalthayhmpn4250n", - "percent": "0.01%", - "airdrop": 29543.779049309127 - }, - { - "total_amount": 67258401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AueQYi1YRqQpcvCky/YIA+9U/DJZzAaZfVKE1CRG8w+9" - }, - "address": "noble1qkanysvu02awdsmkd34f84ukmy76gdymzys9m2", - "percent": "0.0%", - "airdrop": 1181.443720032023 - }, - { - "total_amount": 183050933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aghl/sfzc4VQtHZPDA5G+jaTnsfkHCiRXCVKaGLmH6fm" - }, - "address": "noble1qkams7dg95zaxzae37agrzmyeuh87wrzx2apws", - "percent": "0.0%", - "airdrop": 3215.425463933533 - }, - { - "total_amount": 248239474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AniWgb9YHWIJJozsMOp57BBlE1lZJtQSXvMCQKvGDdwv" - }, - "address": "noble1qhz6lggtfrrrlhpepfqtgvef4j4gktz3ttwywh", - "percent": "0.0%", - "airdrop": 4360.510557206863 - }, - { - "total_amount": 276200625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UbLi07gST3aN5NuyF6+xGo2SYuW/iBMkSOqSv9ydvK" - }, - "address": "noble1qhfdr3lk0763u7d0gjrqu94jpwhv096hkhmxm5", - "percent": "0.0%", - "airdrop": 4851.668922000834 - }, - { - "total_amount": 380042790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoOCgXC/puTvb2aR5siwOzp9ezLWcXkou+fkelOgNNBl" - }, - "address": "noble1qhvq3wska967ydq9asxuhr549wh6walj9wf0wd", - "percent": "0.0%", - "airdrop": 6675.733602244706 - }, - { - "total_amount": 105501163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A82OvFv8d45xG4rj3dQCJcEeRbnNI9KIhGWxb/EJ4MCd" - }, - "address": "noble1qh56rm6p6de3z5xn9wpl2pl7ntq3e4df563yun", - "percent": "0.0%", - "airdrop": 1853.2062111084806 - }, - { - "total_amount": 566532805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A86FSjvzNgJ8O9V8DeFU+9HSc8aEwp9LYaIK3u9eiF5i" - }, - "address": "noble1qhkcafqy0mre0v50c2eyz8ldgz7cvpdm7cylxf", - "percent": "0.0%", - "airdrop": 9951.569093344588 - }, - { - "total_amount": 67579227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9H67eVLl0jy0a3BLcAB5bSE6/8aQ9d+uFMaH2nijE4I" - }, - "address": "noble1qhhzrw0qcn3cwcrn3wl8rj7czfmglv3g40r33g", - "percent": "0.0%", - "airdrop": 1187.079266778414 - }, - { - "total_amount": 56952001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9S7r3W/OBeXT/gS+r9MEAHK21JtivBj5qpyEFRiiBL1" - }, - "address": "noble1qharqzxcz4mthhrlkfmjgu24y9hx38tmn9uy9j", - "percent": "0.0%", - "airdrop": 1000.4041565708275 - }, - { - "total_amount": 89543697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3/Dftr/bYZuw5+QrLlTT+Q276zsakUTzWXAs9Gidg4k" - }, - "address": "noble1qc02qtp9wgt4k3cqdx3ryw40ty6y763chyxf6p", - "percent": "0.0%", - "airdrop": 1572.9014802046854 - }, - { - "total_amount": 53006927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrXUiNQV6xLKTvf0M8Gz6G5iXRYxB/EZx7Cs+oLPizt" - }, - "address": "noble1qchky35u6dwxj5p0rcel4drr9nhxhp5daavv7z", - "percent": "0.0%", - "airdrop": 931.1060044728969 - }, - { - "total_amount": 85395235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4nBt1QK+rxqtSLHMGqPy3wZC9DxDIV3ZQDKumpNjqpZ" - }, - "address": "noble1qcasapjr7m7wy7c0w6087t4ke22qpry9taq6a3", - "percent": "0.0%", - "airdrop": 1500.030666970641 - }, - { - "total_amount": 222014550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtWbioY7dXWWHIJsXkjHWgl00R499Apac6CaThxrvPWb" - }, - "address": "noble1qes852ufagqudauxpqanznr376mym9dc2xcu33", - "percent": "0.0%", - "airdrop": 3899.850307967262 - }, - { - "total_amount": 50400000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8eb530PmzK4cWEK1wYoTSDUgfSKQtmYs1XLf+DIbuD" - }, - "address": "noble1qej7h76hy9xrdsse3df5q7vzvqr2xfvg5kukfl", - "percent": "0.0%", - "airdrop": 885.3133973496332 - }, - { - "total_amount": 698310487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A75yNctHSZZzoG6QdwtJDgZi17pEUtb7OzPp1BM4edtT" - }, - "address": "noble1qe4se7ndfmnuc0txfg3w8fmem8505kygnlzfx2", - "percent": "0.0%", - "airdrop": 12266.341858151722 - }, - { - "total_amount": 166459858, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwNbmIrGZAJriZXhaNaYOwZ8Oi2MWDpVR5JhkWM1iYIm" - }, - "address": "noble1qek055vuzg5kc9m43m4xjcun7jtjwnsfd9wx2e", - "percent": "0.0%", - "airdrop": 2923.990920799951 - }, - { - "total_amount": 685225147, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjX1Jc6yyQXhCbLOIrz5tRvUrPdQL+so2mnp5NohGHyM" - }, - "address": "noble1q69eretew88sl0rgnmq27rgjryszydy925kxa2", - "percent": "0.0%", - "airdrop": 12036.488151586742 - }, - { - "total_amount": 952488418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHAY66Zk3ZlbEZuloqn4s8UP3mr99vTlCuOqZkvGDoC" - }, - "address": "noble1q6fdr85sm695gglg5ky0y6yfylp4u55zuzstyc", - "percent": "0.01%", - "airdrop": 16731.165818963444 - }, - { - "total_amount": 352205824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApO13TEoTNpr54x7TUaW9zHqgWg7REt+9F3uDb3KWiYc" - }, - "address": "noble1q6dm2slcq7s9huqytzp5g8z3l9x7ffdjppq924", - "percent": "0.0%", - "airdrop": 6186.756639122361 - }, - { - "total_amount": 1025735414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvvavnPI7NB8sMAZjvbEj50Fq1qih8B3nxbfu4pJrHKu" - }, - "address": "noble1q66fjwv98lx766mngc6zk6rw0fghnjxutyr72d", - "percent": "0.01%", - "airdrop": 18017.803653773262 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AteQSBLAlZXKlLz3rOks9LvtKxaKbRSWKhXGx2i/Q2pR" - }, - "address": "noble1q6uahtxwuz0da7zsm6fjp4gnk40wmx2u4e6vz8", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 24083263630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A729hSlF7sg/WdXI4F3/4uDyqBfyEDjwc4O9l1wzZ+8V" - }, - "address": "noble1qm9q5lcutcvdah6qh5eefzapcnhas9vmz8tnc2", - "percent": "0.13999999999999999%", - "airdrop": 423040.39570520155 - }, - { - "total_amount": 716754581, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0cOq2jQ1JlRhAvebhJgdRhQ1XZdYSlJnEBoY7QSKmeI" - }, - "address": "noble1qm9su76qg3nck0sfpvvckzwftf9t3l2qdvprzd", - "percent": "0.0%", - "airdrop": 12590.326054980613 - }, - { - "total_amount": 64521882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8sjdIk4T1ZrdcqjUdgRMzp1M8gUWdTEL0zUgzYyrxgW" - }, - "address": "noble1qm0hhug8kszhcp9f3ryuecz5yw8s3e5v8slswr", - "percent": "0.0%", - "airdrop": 1133.374733270082 - }, - { - "total_amount": 273072217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjSIUGzwpm2FvnNprF6wwaeulCAHRWyjQjFKOovldXQn" - }, - "address": "noble1qmsf0nuz283t8vujd2cyp2cnu52ncs4f8detkt", - "percent": "0.0%", - "airdrop": 4796.716114167981 - }, - { - "total_amount": 165063572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9mNMjfHR6uzTgYjl9faMBzJSbznwZIKqYvHoZPl4i/R" - }, - "address": "noble1qm3xhjqcg0g8q68c5x642afdja5srf2eusspap", - "percent": "0.0%", - "airdrop": 2899.4641211505113 - }, - { - "total_amount": 310886924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axym+81MisK1aUrSlCZkVbkMG9gkbwSLU1knq7OKk7If" - }, - "address": "noble1qm456vvkvnw9syq72w0wysxfcfhk7vxjrpu2cy", - "percent": "0.0%", - "airdrop": 5460.95950154796 - }, - { - "total_amount": 439693977, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akc/tieySF3G0j6k0hyPHivrLIT9M/9l9Lsm/Dp7GrNa" - }, - "address": "noble1qurjuw2zd0n2qujs3m4t9p4legvlyl9ce68v22", - "percent": "0.0%", - "airdrop": 7723.5509637309815 - }, - { - "total_amount": 1282951986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/4s9Xk07CgofioU35kkS1gqtOplOO6M0oAMzr2TQaZx" - }, - "address": "noble1qu0km2yaps9c3lsntl2rgdryd7lkln9a724mmt", - "percent": "0.01%", - "airdrop": 22536.00359845474 - }, - { - "total_amount": 154969422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5A/Uq4FzwF7nalfqfti1mNDVzNkcGAqUjvctITT4kPd" - }, - "address": "noble1qu3tghrkmm289r95mcz6jkfgxxutvlyvtlvq4c", - "percent": "0.0%", - "airdrop": 2722.1528864311304 - }, - { - "total_amount": 90612880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+2URi/sZjMIjuDY+3KwSVkdwXupssAwnoPKTEUtUY//" - }, - "address": "noble1qu46c0vapwd6dj8lx4yv2ljldfdj6z3ngadv90", - "percent": "0.0%", - "airdrop": 1591.6824729451314 - }, - { - "total_amount": 759250576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aszc8I3OGSvZI+xmKhRFbrJA8lBL/XXSE7274WT8Zmb4" - }, - "address": "noble1quk4nec2ac4cpufr05thy9eyk3qnlhl0cmr87n", - "percent": "0.0%", - "airdrop": 13336.799739647338 - }, - { - "total_amount": 50218230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3VLgvwE046a9VleVBBj/N7uixXPCGggiy8w414vwkrc" - }, - "address": "noble1qumxrj0fxrf4fpp9pjnfskstv0aej0tatx99w9", - "percent": "0.0%", - "airdrop": 882.1204724243108 - }, - { - "total_amount": 53480448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIDBE5M6avPmqkGnD3N3cMe4Ue1ce6P1+MwUsewedfC" - }, - "address": "noble1qu7hlk44y4jkm6407kt3q5ns9uewtksjm3vchc", - "percent": "0.0%", - "airdrop": 939.4237521956428 - }, - { - "total_amount": 7295584887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyBvVHIwHpsbXw2K3jBxKKofPTMXGceEmZ8+vETJiZKZ" - }, - "address": "noble1qaz38dnp38s5939h87w3jxt99fjq786mdh8kuq", - "percent": "0.04%", - "airdrop": 128152.36194370258 - }, - { - "total_amount": 2632537275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj2HXJ22Ejs4y7ac76oBu+I1+vC6LqLZAbZ9WLq7RWYh" - }, - "address": "noble1qarlyy5ynwgdmw05ug35ksk70xnjg04m5qj33y", - "percent": "0.02%", - "airdrop": 46242.470606741976 - }, - { - "total_amount": 59016465, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Annt1qA8Ng906NPLhluDLiEy4YBKjgbJLFgarts5yvvC" - }, - "address": "noble1qav34s2u3fs86pxsqrmzs2p4y5hk3sextnqyzv", - "percent": "0.0%", - "airdrop": 1036.6679985856292 - }, - { - "total_amount": 923829169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A50vILa4SVa1M8TTy1k78CJSP+55LmXOduuIhtTzQ7/V" - }, - "address": "noble1qawlrc27l5r5pcuetx959ngqdq5k9n9jlak97n", - "percent": "0.01%", - "airdrop": 16227.744844803143 - }, - { - "total_amount": 417229204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqhI39cDJG8WO2mMTtvO0qYKBWf7lK4DqyRsep78nEcd" - }, - "address": "noble1qastg0pd5tm4dk2wjxukuyw902raltgph3mk0m", - "percent": "0.0%", - "airdrop": 7328.940556879428 - }, - { - "total_amount": 68827248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayf3MfkDWt0v0DdeieUDvBZWGWleqjFIxed637Jjc+qN" - }, - "address": "noble1qa39kv32gramqfz5yaur2mepuy00rj0ch8nvrh", - "percent": "0.0%", - "airdrop": 1209.0016816886061 - }, - { - "total_amount": 50938511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/WrwroigNqjCkS/NXexjv8LaBpxP0763J3Q4nsz81LT" - }, - "address": "noble1qajjezjvxfrc92zrvk7qqy84xhwtmgldlw2yw8", - "percent": "0.0%", - "airdrop": 894.7727426456678 - }, - { - "total_amount": 124672761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9MAmyUXNxqxSRmgDZjojLcvpF5szBFPzddoJf201Bwo" - }, - "address": "noble1qa5srf72t7k8rn8n07qczfqnqsv2e20sjuha7f", - "percent": "0.0%", - "airdrop": 2189.9695555132707 - }, - { - "total_amount": 956692262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3i/pNybSV794dgyuF4rHGL/Ab1b2qOBWFDSPH6kV+nm" - }, - "address": "noble1qamlpm040cmv02nlppxsqzma0h0c22kp06k2n8", - "percent": "0.01%", - "airdrop": 16805.009458121534 - }, - { - "total_amount": 667378500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar9VGv4zcI2RGMY7FjptFLPVAAeem8Lhc0BPrioETvH2" - }, - "address": "noble1qaumjv7wpn9k0nru2h4sjczngsflj0z5594xu5", - "percent": "0.0%", - "airdrop": 11722.998554625043 - }, - { - "total_amount": 117600068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5AE1HUkJqUrIPamCGqLsYbo4jORHli7jjFvjZZUp2PY" - }, - "address": "noble1qaaely5pnfxxr23gda2rsveh9nst0a3mst3nd5", - "percent": "0.0%", - "airdrop": 2065.732454952934 - }, - { - "total_amount": 118968192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ACFPmP68ows50ahEkVETVTZjLUILK9JhlZ+fLOd0wr" - }, - "address": "noble1q7qd5n76z779aew3n9g9wlk5hah2vyl2nh725n", - "percent": "0.0%", - "airdrop": 2089.764568175862 - }, - { - "total_amount": 267045673, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFVMX6fFo3gHKKy6KZT5XIwPVdaUmzobrVzBl29OGTt" - }, - "address": "noble1q7yf3v7m5hf7uyarcejgav2gt4rpjwlkh4j23h", - "percent": "0.0%", - "airdrop": 4690.855397046611 - }, - { - "total_amount": 701810827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Hv2QxsQW+oAzRdNtDF1gJMnZw1zILP7EBJ0wx6rrGp" - }, - "address": "noble1q7xtrnq4q0wxkdkshkvaj2g3d5zgt58e75qhlg", - "percent": "0.0%", - "airdrop": 12327.827927542176 - }, - { - "total_amount": 223335303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai4ivrj0Pr/kZOKY6UtaUrW0/3A/u5F1MbowdenOi/MM" - }, - "address": "noble1q7djh9e424jrv97rrjwyu042tx54yparnnqahn", - "percent": "0.0%", - "airdrop": 3923.050314425391 - }, - { - "total_amount": 679256899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A13nkpIpNtjPHr/MJ5tP9Q3VaCs1k3KRZ9S6d6TGrohm" - }, - "address": "noble1q7ckkd0us763k0clq6hzfmqzx0jftgljgp3mgk", - "percent": "0.0%", - "airdrop": 11931.65144696164 - }, - { - "total_amount": 295355882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+jqo7CsQiCiFy/xMkRsWA/APE+t1E42yimkKF3m9xCN" - }, - "address": "noble1qly5zw2w8ry4273kek52n36cqrw24hydfgw9cq", - "percent": "0.0%", - "airdrop": 5188.145224615424 - }, - { - "total_amount": 54102717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwCsRMiKazi7544lEMSqJ8C65RiMrADrHY3M1gfOBYid" - }, - "address": "noble1ql9ss68a83awkwxe3yc8w0cps70y3uev3z4drp", - "percent": "0.0%", - "airdrop": 950.3543689110269 - }, - { - "total_amount": 90504636761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An7vv8WkXp6etEbbHNlxLuB7En8I9iMOZRMzIVg+nI2F" - }, - "address": "noble1ql2zjr5793f8jhpapsejgh9laz555acjyr8y8h", - "percent": "0.53%", - "airdrop": 1589781.1001344328 - }, - { - "total_amount": 1029806062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag4cEM4uDUe62hT5KZsepfLmZGCtzjUOUdrdtcEzpp2s" - }, - "address": "noble1qlkknpc3v5a2yh7udaplcm4c8aee82e43yjgzl", - "percent": "0.01%", - "airdrop": 18089.307606358474 - }, - { - "total_amount": 51958089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ape830smyF3naQAT3q+A2CM6F0NXErMSrrODO6UmfQuu" - }, - "address": "noble1qlhg8dtgkwvzzmdztwy9mv4aegj97lu9xpwhff", - "percent": "0.0%", - "airdrop": 912.6823867536629 - }, - { - "total_amount": 444511606, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgbDgLZ2AZoqLYDChi8CT1IdzEj8XZ73Fx+1lw2hElfs" - }, - "address": "noble1qlltz2mg9p3ps59cmel848cvnlkwkqdr69laa9", - "percent": "0.0%", - "airdrop": 7808.1761918492375 - }, - { - "total_amount": 294590074, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15h7LwfWj2T2jTEMPKPTbMqS/E2W+HkchxSTAEUvoHE" - }, - "address": "noble1qllnaufxavgyurznk664xeevsv9zcakswux9ss", - "percent": "0.0%", - "airdrop": 5174.693238857536 - }, - { - "total_amount": 17241563433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkDCIgLiOr27cvJG2zkPvmqVrFqFqTQvcrXYhciiTcuw" - }, - "address": "noble1pq9dh6cp366qq56n9seymftu5xhh8uq7qp3883", - "percent": "0.1%", - "airdrop": 302860.8551287388 - }, - { - "total_amount": 90117431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhnJcuMg31ZCfOEvjoOxdP7VW5TOXG0/lZH2+m+7eDDa" - }, - "address": "noble1pqdn7a4n3gezk5qjfhaj6cst0fsla564vwv2yr", - "percent": "0.0%", - "airdrop": 1582.9795436315703 - }, - { - "total_amount": 570349050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtO1MQkxVofSVwTo+wwRrWBKODTX1xnfhFIJGUklq7uL" - }, - "address": "noble1pqc6dvc8fsa3hj2dt5vcwqnq0u3pgq7fxe37ey", - "percent": "0.0%", - "airdrop": 10018.604268464995 - }, - { - "total_amount": 80360797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6IYMk2Qf7C+4ZixkSPfiophhVtBA3QZT4fLnJg2EMVA" - }, - "address": "noble1pqaqkr9echxjydytsqc8m0y2tx39cwqpfp0zrd", - "percent": "0.0%", - "airdrop": 1411.597027892742 - }, - { - "total_amount": 101805694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As3acqCkNmc3CC6rs/qcfEyu+H89mCNxCLTxRI3TF4ff" - }, - "address": "noble1ppygf5mkd4u50sd3whp4m72c4g7kwpx9nm3m6j", - "percent": "0.0%", - "airdrop": 1788.292556045182 - }, - { - "total_amount": 55001075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4x7koM/NIdV17OEwbeSQOdxpcg8zAhXwKczmOEsRm7g" - }, - "address": "noble1pp960nayxucy9wuduyzh974u80qct63q94xc84", - "percent": "0.0%", - "airdrop": 966.1346937724599 - }, - { - "total_amount": 110993001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A75wARkfl1VKDb7eaZsrL4rttqTRbY03g+LHys0NFuy/" - }, - "address": "noble1pp572fvj3r783qjqxrw069jajaz3pp50ja9g2u", - "percent": "0.0%", - "airdrop": 1949.6744205821674 - }, - { - "total_amount": 1048432113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBK+ub7oeaZcsE5f0UoweYzFyzjtvsEvLk6BqVhxxTE" - }, - "address": "noble1pp4nqfrsrqjwddgmm9700c85mwggppx3lpk086", - "percent": "0.01%", - "airdrop": 18416.488012906437 - }, - { - "total_amount": 59929524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3RPiBBWWP3IMIgXRS8vptP5WLAEvAsPQk9nkb9FhTm" - }, - "address": "noble1ppkulvy0aycudagjd3ez2ad70rkzfucyp7flcw", - "percent": "0.0%", - "airdrop": 1052.7065574203646 - }, - { - "total_amount": 282461190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsCRrZxQJ/e/j6VWPf7tK3jYEnNiBsGe5w7Z29xYzxSj" - }, - "address": "noble1pph4gvjmsfxk4zgwklg0ksdmwauj0058phrzgm", - "percent": "0.0%", - "airdrop": 4961.6403916333375 - }, - { - "total_amount": 1064962448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0vnrdJ3X91IEjmLvxYEOCvkLvkmkSoQ5lbzhSP0jAP" - }, - "address": "noble1pp69dxhad2qyz7sxjvd5egu3dpwcegq08vz02e", - "percent": "0.01%", - "airdrop": 18706.855612870277 - }, - { - "total_amount": 500475660, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8NMMlCWD5TUVU1KeJNeF7HCCxfygea+Aho7v+KpquyX" - }, - "address": "noble1pp7v064rx4kflkwpyas7ctfrz5pcdut4qqpyrl", - "percent": "0.0%", - "airdrop": 8791.226326297618 - }, - { - "total_amount": 69049084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyF1RX0yIUw/430ouQeCuvpw6xV2I6QMQ1eRKpHSTN8S" - }, - "address": "noble1pzp8yusv7srht2ec6hv4ue4td24lsjjvfr5d9x", - "percent": "0.0%", - "airdrop": 1212.8983956333373 - }, - { - "total_amount": 75134869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0N/aflfQDbCD0of0fHHXjIEHJsrk3br6YrHW/iPU3dx" - }, - "address": "noble1pzxyp3wlf27y6mlxvl546q2pqtrc8am56mg58v", - "percent": "0.0%", - "airdrop": 1319.7997248771753 - }, - { - "total_amount": 175513169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahc7v3MJ6eKAaCSbx11jPEqkQWDkDYrD8fte+IfiXVax" - }, - "address": "noble1pzkrpn9zxpecpqyrjlcd6686h3mkjgwpgj7hzk", - "percent": "0.0%", - "airdrop": 3083.019046170443 - }, - { - "total_amount": 75980256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azk4SPdRdDJYyjTlR26IxnMzZr7BYDKzrs/XaXqZNKw9" - }, - "address": "noble1pzeyrhm59p5m5e2s4sac0j8kxvvtek92k23u0f", - "percent": "0.0%", - "airdrop": 1334.6495748185487 - }, - { - "total_amount": 2767908483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtmkkDtXeJQHML+3Au4/LTSSN7oeTt/5ERS5ZfRGwPaE" - }, - "address": "noble1pzem8c692kesad880tg587h6v24dgz8e9jw7zs", - "percent": "0.02%", - "airdrop": 48620.366322174596 - }, - { - "total_amount": 78737240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apb9zo8jL8D+Abvi8ZGY0qfEa0QjR7SMkW7qrWdtvZiJ" - }, - "address": "noble1prpzxqtxkz56d8ur3yq3qsmwg4ge4vssk30dxd", - "percent": "0.0%", - "airdrop": 1383.0780444907427 - }, - { - "total_amount": 61539935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A458vEvUjV12VQhTciaVjXQbLx0qWIRD+hXBLgQLghKE" - }, - "address": "noble1prz0ffntcf8fq068259tgtvvvvr2plykvpd0gp", - "percent": "0.0%", - "airdrop": 1080.994621577889 - }, - { - "total_amount": 373716820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9i1RKB5dr4u0e5AY8kh83UCYqvjbswNfxFT5AOfi3/Y" - }, - "address": "noble1przmcn6hqzpnkes6xzfc930gtngzhdj9ks8akm", - "percent": "0.0%", - "airdrop": 6564.613245255979 - }, - { - "total_amount": 50381435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wI5/Wc59yHKgQfxymVYB4o7XvwxuNC/r9t5Ru5+fRv" - }, - "address": "noble1prry8nyvzuaw0hcj4au3lyd7gkwr4cw0m3nfjd", - "percent": "0.0%", - "airdrop": 884.9872893492008 - }, - { - "total_amount": 87636317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax2pCmowLbCPtgYh78UElpeJUHfU8s1rAZLROk1CIi1+" - }, - "address": "noble1prrakm635p99mtv97wfppuqyw8hajjy27gczpf", - "percent": "0.0%", - "airdrop": 1539.3969352079248 - }, - { - "total_amount": 135103845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anw9AmNBmeFez+dgdEKdRs5Pe9sXcUhHYZD8gI6xcD4U" - }, - "address": "noble1pryszgzagrfpea3ufu8ceslkkntrq2l99v3ee2", - "percent": "0.0%", - "airdrop": 2373.1992859513543 - }, - { - "total_amount": 88762091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ZLOOO4eFNCvoQFzlI89wi5FnmrPz3hyvCPab5vNG0T" - }, - "address": "noble1prdsd3a9kqnkgtrr5pqp8r5mxrqg6fl4ga57m9", - "percent": "0.0%", - "airdrop": 1559.1719908545099 - }, - { - "total_amount": 85007574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2MpUzw0RDtRNAP7b0FTpr0ZP91zZs2Q3rpkQQ6b6+rk" - }, - "address": "noble1pr0hxu9ytqun7fdkhejeu3g26mxsn0vracn0ru", - "percent": "0.0%", - "airdrop": 1493.2211138569512 - }, - { - "total_amount": 63169183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYGDMYrsimpjkTVac9HzO7yONUQaQiw1Yh54y31okIz" - }, - "address": "noble1prmkxlgwgv2tfgar7rhw7l3j95y0jv56vwadhh", - "percent": "0.0%", - "airdrop": 1109.6135716176725 - }, - { - "total_amount": 745437750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1uIpqfosUCry22x3HsqbVXT/JmT7l35TRiNlT/9yVW8" - }, - "address": "noble1pywdszy68a2tacwpz9ycyqntr84hcxu0gqnzja", - "percent": "0.0%", - "airdrop": 13094.167201689812 - }, - { - "total_amount": 815380411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhcI9w+wLt4BaX+QmHyYv1IsiohytPukvs3696dcjIxj" - }, - "address": "noble1py08jsquvsgkhhh6y5dj57n5ff3hpcs332kprk", - "percent": "0.0%", - "airdrop": 14322.76194037203 - }, - { - "total_amount": 58643463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoiahF1TBvqk2zIp2ijltT2xZNpXe3ph0LH0nUXTJwVY" - }, - "address": "noble1pystjuvpz3xrzdm4e3z5kavsfjvwuaj9ykk7lz", - "percent": "0.0%", - "airdrop": 1030.1159416840776 - }, - { - "total_amount": 200961382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A05hx9c/q85XIlnSpsHFC/r41ltKQoCJmqoVCs9UyAPn" - }, - "address": "noble1pys48fndsf8552a35e0lqhv7487xnqjdzrckcy", - "percent": "0.0%", - "airdrop": 3530.035790367012 - }, - { - "total_amount": 506578283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+oDLGqz87wZC/Xc47WAwMUy3Y+GMizbzSwF4fnPcl/u" - }, - "address": "noble1py3fxf92areqpzgfq5g3v6g389nc27nxwj2ycc", - "percent": "0.0%", - "airdrop": 8898.423427505435 - }, - { - "total_amount": 2076436493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0/zNGAMeXrPZ/kukmwlPSjpTObmCMHNwnUXSvvi1RW" - }, - "address": "noble1pynltxm6dk3twd3dfhlx80l4tq2yduxrwvpwcv", - "percent": "0.01%", - "airdrop": 36474.147738067215 - }, - { - "total_amount": 368850604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8jHrX6oGKs4FClEZwg1ed7rO37nqZZr13g0xTaKZyK4" - }, - "address": "noble1py5aavd0l8m6els08l3vmnf99v89xktkamk0d5", - "percent": "0.0%", - "airdrop": 6479.134550430639 - }, - { - "total_amount": 691277721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0nyy+iWFFrn81iApge+Zq4OfVIyET/JbapSbIf9fRe9" - }, - "address": "noble1pykh6vwwneyhyf2gdnv008fjfvhd5ru9x4ja0j", - "percent": "0.0%", - "airdrop": 12142.806104972657 - }, - { - "total_amount": 95481935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArU7XbBwhMEpFPEWZ3Jr6WCrcUvWvsPaGI4DKgPBA7e1" - }, - "address": "noble1py7vnejer4auv8e0dyexvgkas4q08wppej8rug", - "percent": "0.0%", - "airdrop": 1677.2110369120405 - }, - { - "total_amount": 66030671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBB1soxUFE9MwDoxe2dPpNh+iUFC4AsaNpte77yzXf0" - }, - "address": "noble1p982tvtezcekpgywp7v8jr28l0uc3ssqy8lk5w", - "percent": "0.0%", - "airdrop": 1159.8777315929742 - }, - { - "total_amount": 53916230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5P6Rvlkf8yjrdX3zgsUiUjjbuZXF83kN6r8z8YQwD/K" - }, - "address": "noble1p9fnee4gfc50jzm440hcjhx5vgmtzqmyme7a58", - "percent": "0.0%", - "airdrop": 947.0785863806392 - }, - { - "total_amount": 96028622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4mLOUd0eBirkyLoNO+5Ir9u10sug25lDgyUxjwVH2T9" - }, - "address": "noble1p9td8u6tunvvaf3ckl2n6lca5lrhu7ll57rnsf", - "percent": "0.0%", - "airdrop": 1686.8139997147566 - }, - { - "total_amount": 162196008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7V8q/B5NdUzFRVIIwu/pdnrSf7OVIlCy4n1ibOrOsP9" - }, - "address": "noble1p90fd8l3a552tf8vmrsv43pjquckz74afhkwlt", - "percent": "0.0%", - "airdrop": 2849.0932317267516 - }, - { - "total_amount": 441442017, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+qNC4Qno9gu5WjIEYVMrzw1GH795lXA19zwHSZwnrHC" - }, - "address": "noble1p9nssk0uk34u5q0jxw8ewwtayn2ukkl5gh3pfz", - "percent": "0.0%", - "airdrop": 7754.256583395724 - }, - { - "total_amount": 584676723, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+jFvkZwYpOgaCOYDYTqFOM8QfDKpvAAVmvpmhYig/Ms" - }, - "address": "noble1p944nul5rs4zk77rnx77ffa5wp3qatsutjgpeh", - "percent": "0.0%", - "airdrop": 10270.28047599961 - }, - { - "total_amount": 50784359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3p2YzVin3d5Qaiu+F1N2umnIJzx190U0zkimUxd/y8D" - }, - "address": "noble1p9k8p9zaegef6c50fqs8h2ya2eslcd0q60zlq9", - "percent": "0.0%", - "airdrop": 892.0649483832028 - }, - { - "total_amount": 14158764602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+tCl4UnwhjCsQqxysr6gDUL/2h8Bj3sjSMX9kuPvpVL" - }, - "address": "noble1p96e24n20xg8mxvmg9mhgmjkzhnvshsmwvqawq", - "percent": "0.08%", - "airdrop": 248709.20619187196 - }, - { - "total_amount": 329519608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/wWdV5an2qhjEV3UTWxXjZv4YwBzRBJVzCzh4hXD4tR" - }, - "address": "noble1p97xjkhrudhzmjnunwml34sl9nur9tcnzf3v42", - "percent": "0.0%", - "airdrop": 5788.256421662685 - }, - { - "total_amount": 124503785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5+gnfVAMUA0nqbAjRuizv9ReRKqDvh1mm4bwda8NFzN" - }, - "address": "noble1px84my3dxl4w8qltt9ahr9ctf040gjklcc6ntn", - "percent": "0.0%", - "airdrop": 2187.001366691236 - }, - { - "total_amount": 1323799080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5e6QYLWhu2rGa4MNRwhZhXLVTFeOB8z5PelKPEdyJ5I" - }, - "address": "noble1px2y0yuysxxkkxmg8zdq3r2stdg9zlh0459jaq", - "percent": "0.01%", - "airdrop": 23253.513113553945 - }, - { - "total_amount": 818400422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az0IvxKOeWtT/n0kFVF2Khhcz+OKRCOGV5f/p+YdeItr" - }, - "address": "noble1pxds6cl7wuqw0rhff9pgvjealvpus758adu64p", - "percent": "0.0%", - "airdrop": 14375.810674468123 - }, - { - "total_amount": 316624211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2c22Gb2zPuVYRFa1SyefL/z9nVEppIsMHtDwTAff2up" - }, - "address": "noble1pxnyrlgzjc6dxkh8ghna7u2vqpwnkzzfm44fgw", - "percent": "0.0%", - "airdrop": 5561.739204832483 - }, - { - "total_amount": 129830407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0wk6j9R9jyDrf3HPBjfhRRzFy/vlkZcWadluAWuGSmt" - }, - "address": "noble1pxnmvwh2eg2gkzatdfnxdl37wjzzr4xy22hvew", - "percent": "0.0%", - "airdrop": 2280.567434532849 - }, - { - "total_amount": 58289616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AruSd0diDUuk1eEaJCzgcl9vw65UPu0BMKVLkdcTkbWk" - }, - "address": "noble1pxklctmuprlk7fd5k8xk42hjmqke54jr6gmj4w", - "percent": "0.0%", - "airdrop": 1023.9003565707447 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A262RL6zYQunrOwFthYPGGeVRlzOjSuedxokn9+ZdaDe" - }, - "address": "noble1pxlsfq4xh4s2jh9q7esnrcpg8fav8la6yk233u", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 50862169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9zLOAeYMrQnGtE5ogdnmAAsq370tuOKbLRGZZHEqs/Q" - }, - "address": "noble1p893q0zc3tfrtsye7swj46qr9kdvs0h0u36np4", - "percent": "0.0%", - "airdrop": 893.4317387690713 - }, - { - "total_amount": 546589205, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnxgfzDJlresgQufYe8heuh5ZqSkUNxsFpuJN1QzG7f2" - }, - "address": "noble1p8tv8rxg7spumyulg9vegplr794qa83z96l3pc", - "percent": "0.0%", - "airdrop": 9601.244960975895 - }, - { - "total_amount": 4702206630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUzNUy4njQ2WxjeF4kE74yh3U32yS8Q72fNdvKnrStz" - }, - "address": "noble1p8cggwhz48ty6e69w722mfanrzq9tf6dwa7qra", - "percent": "0.03%", - "airdrop": 82597.748544549 - }, - { - "total_amount": 1805683862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9AtJGJlNBDhUUy/4B2sOY56FmMiqzFh0PsV8er4+I0B" - }, - "address": "noble1pgpejx8ylergsd807h25dhhvxaj96849n0nc3s", - "percent": "0.01%", - "airdrop": 31718.176873147346 - }, - { - "total_amount": 58680245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyRiCXST9xGYsXPKGZIRAfODwpSkHGferhse5u4PysII" - }, - "address": "noble1pgfkgemxug9uqjrlptdhg22ugvf3n5m5pnt3le", - "percent": "0.0%", - "airdrop": 1030.7620448067228 - }, - { - "total_amount": 72468330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiaGZbcHQlKO2YYPYss1MzPKI9BT5VzrslmAa+fpp9zB" - }, - "address": "noble1pgs2u3jcsqfgysn2gnhh8g8rfrntf6j5gsq9ck", - "percent": "0.0%", - "airdrop": 1272.9599887411575 - }, - { - "total_amount": 50924708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmXlMGUfEJ001+d94O4Tfw4/TRG2LNoPK7xgL+oWyRni" - }, - "address": "noble1pgkuwtythc4zdj3z6pjzrlau0gtpqscvz0l93e", - "percent": "0.0%", - "airdrop": 894.5302827086914 - }, - { - "total_amount": 50323585, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6FqZvVC1ueeiy/HO2Xx62Bll5rpVvAyueTtpcQoz/pz" - }, - "address": "noble1pg68wptq9gjn42mnchw6v67ldztz8uvu8wey5d", - "percent": "0.0%", - "airdrop": 883.9711111738698 - }, - { - "total_amount": 79127931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag8sRaiDVc57IoihzDEBVonlbUbmTnEasQH8vs5PqlNn" - }, - "address": "noble1pf952hlqkap2nvtwu6ure4558k46gvs5up3php", - "percent": "0.0%", - "airdrop": 1389.9408218027254 - }, - { - "total_amount": 62245515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtiET7VDTsBM3HRHUZUlnA+aLVdFUgTGzkVXSpVc/0Ss" - }, - "address": "noble1pftdcxfyvrjv2hgphyjqhvmnx64ll7mvzsu633", - "percent": "0.0%", - "airdrop": 1093.3886578259435 - }, - { - "total_amount": 70911030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1+HJVswbrvlPYSE/eZUazlcyoUdztctp8yARmYXHGX0" - }, - "address": "noble1pfvs5admyamflj6z2g85rgvytntg7zksxa04a2", - "percent": "0.0%", - "airdrop": 1245.6048587075745 - }, - { - "total_amount": 265902068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJfsteYJ0qDlYSMA0gaqfXZgthXGVS48o5kV5IfRGdO" - }, - "address": "noble1pf5gwfj995x34cl705p2hxc3ykuwf9ywfkwsm8", - "percent": "0.0%", - "airdrop": 4670.76712665423 - }, - { - "total_amount": 74968998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3PvlV+p3asdTKar9qUvmiz7kYVk4GQDQYH1P3B5bSJi" - }, - "address": "noble1pf6v0q8jctal3yztseha4krmdqluctxjntrzry", - "percent": "0.0%", - "airdrop": 1316.8860776840843 - }, - { - "total_amount": 145660220, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1PWA0+zj4eVWY0kmbUDkXxVX15BFcpWyE6W7xOAWj6U" - }, - "address": "noble1pfmzleh4r4ujkuehg0y0aa054t8pj0kmyvgfm4", - "percent": "0.0%", - "airdrop": 2558.629845771726 - }, - { - "total_amount": 183153082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgM/CBAwQREKxf6z06m+vhBnLYRE94mSXqcYL8Q+QeOx" - }, - "address": "noble1pfmclzqgcs0543curgx8prn88hlkhy8se7zv00", - "percent": "0.0%", - "airdrop": 3217.2197869142055 - }, - { - "total_amount": 1096083969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az69oIFirEC47rgN9T90Mh2JxKbajorObc4CcxSv0O3Z" - }, - "address": "noble1pf7fnmvvdwlfxjtfjgq0gs52yudk9xnrcdfe3h", - "percent": "0.01%", - "airdrop": 19253.528221743254 - }, - { - "total_amount": 264511895, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8xag/y4VgR8wQ98PBVGOEOB+56FOd5KoTu9iAq6VMA1" - }, - "address": "noble1p2q5rzqvw4ljmyr47weplcmrkmw3dxm558eew8", - "percent": "0.0%", - "airdrop": 4646.347706385703 - }, - { - "total_amount": 460000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArNcnYJgcKOEENHAoxXVqlcS1oPXJrFtvwfcdyIOsqGr" - }, - "address": "noble1p2g4wzsv7cu6nlvqm8yvkaw8dx924k83tgl42c", - "percent": "0.0%", - "airdrop": 8080.241325016494 - }, - { - "total_amount": 1000921549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsHCPu2uCO8uesYDuWMIy4azvfAs6wB2IaEzLJ9Z6Y/B" - }, - "address": "noble1p2dp8meqm2gelxx4m3v029d2f5gz3gstyu6k9f", - "percent": "0.01%", - "airdrop": 17581.929702889825 - }, - { - "total_amount": 54722114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8phKyUPkLq2rTFCuX4VsvZpawl/zYomflKe4dA487kv" - }, - "address": "noble1p2jf38rdeg7ns02fc8kpfjms8ffhgje0gkx0nh", - "percent": "0.0%", - "airdrop": 961.2345368153556 - }, - { - "total_amount": 54597996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmdnK2EpYFXxmOqXc3WvCPCJvzifCBa76ebj1qTkBzs1" - }, - "address": "noble1p27w2f0ju60f8ynuwqj7tappd0k3jyrnye0qqw", - "percent": "0.0%", - "airdrop": 959.054312048446 - }, - { - "total_amount": 342695854, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqZNUVTknS5kz2UH/M2fn/ThVLNJfFznLLdhO+iUhTJT" - }, - "address": "noble1ptpqwm4erszftfgqcjdz5m4v7k3lq53gk76fkq", - "percent": "0.0%", - "airdrop": 6019.70695957091 - }, - { - "total_amount": 1050250602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnH5Nu1fJH5CpjAc61gEjbEy1+OYGECV3nAW3S77QKQi" - }, - "address": "noble1ptdux4dzvy9uplt8yztpzp24dlakysgm0gdx4d", - "percent": "0.01%", - "airdrop": 18448.431121530106 - }, - { - "total_amount": 63736582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak7+QsyL/so/f8oliL12FOV5fnKYUPIuF7zd5KnuKI+B" - }, - "address": "noble1pt4pnw8r8xcqajn76z5tyu9tu40d93hexy57z0", - "percent": "0.0%", - "airdrop": 1119.5803560689183 - }, - { - "total_amount": 177396077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3YGSTqj2o3RK8OG5AhDfe0FBgaDrbaPD3lX7uM+Gmdq" - }, - "address": "noble1pt4rxx7lg6g5jrxn99khqxvpyxxmnsrydducdz", - "percent": "0.0%", - "airdrop": 3116.093722328713 - }, - { - "total_amount": 491361266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+/9Dbv32d1WZTWVlBayZaamrYOS1mDS9HR0f0rqI6Kv" - }, - "address": "noble1ptm4cfjkkax5ua20y03lxufa2n4rlkk4dzl9zg", - "percent": "0.0%", - "airdrop": 8631.125232707873 - }, - { - "total_amount": 4957994731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlbnBh2NOqnnVXCn99HOVWQ/XgFj2gzed4WE6Xxz4+58" - }, - "address": "noble1pvzengndfnhxcpkp3qu097d46xgfslz0w6njq9", - "percent": "0.03%", - "airdrop": 87090.85633617442 - }, - { - "total_amount": 176374194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8OvrPVCFoPUJGMMAPyfAhLjMMYvDHMdJ9645dmgGpk1" - }, - "address": "noble1pvgdhrlfc5eqkkzlptjrs6u35zd0qcte0x9cl9", - "percent": "0.0%", - "airdrop": 3098.1435891853826 - }, - { - "total_amount": 209183204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsSo5yZnLYPVuhKQvpxtWix52FgsfzFzotxidEWt+vcf" - }, - "address": "noble1pv03yz7y7atd72xtzzpyfqy8w3eu5rwv52jwcp", - "percent": "0.0%", - "airdrop": 3674.4581944785987 - }, - { - "total_amount": 774500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au4zk2Ba9gK9wd3XQGzZgshDz4L3hCUZ6VPy/t3+SM5t" - }, - "address": "noble1pvsvg6gepkgzd94kkzhkngv7tem205yxwl443f", - "percent": "0.0%", - "airdrop": 13604.667187446248 - }, - { - "total_amount": 400687710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhASAJWmtDlH2SxdjIVW3DXATV4/ZsauRj/HKmEhyB+f" - }, - "address": "noble1pva5qwqzzlr598m6v94rvmppy9japzpsa3d628", - "percent": "0.0%", - "airdrop": 7038.376940800488 - }, - { - "total_amount": 275521532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7nD4zYT5KIEjNLnHUINKXn11uViea3TP4qv4nHnQp0F" - }, - "address": "noble1pd0p0vl5ljc54yngptj9qp0mehse52gluymep9", - "percent": "0.0%", - "airdrop": 4839.740149561421 - }, - { - "total_amount": 1138413145, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7UvXh9CHRHYKT17/1/mpjnuGV4eH9feemDA5s0w0RK+" - }, - "address": "noble1pdsh6jxf4qs58vl5lssgfjk4kndznj5nc272et", - "percent": "0.01%", - "airdrop": 19997.071606893463 - }, - { - "total_amount": 1243633055, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgHYplRbN/yFMRLQ8AeC07+Jlm6Mulrf6qUVZ5umxN0Y" - }, - "address": "noble1pdj4zrs94756z0nncf3rxkqtlwj0gr8hp4c5zz", - "percent": "0.01%", - "airdrop": 21845.33740036415 - }, - { - "total_amount": 189921441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+IPB6ecWzvWWCEvsLWiPYNc9X8nhtQbAABZC/3aFB7J" - }, - "address": "noble1pdel6p0und52a0c3emeuhm32jwkvnz4s4x873h", - "percent": "0.0%", - "airdrop": 3336.111034945395 - }, - { - "total_amount": 103423209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1f6lvdw5t0C3ZXejuneR9pxg62Phsc5bJ2cVjdhriBK" - }, - "address": "noble1pd6f5permurw3djqjaeyvay6nu0gc65lhy5ep8", - "percent": "0.0%", - "airdrop": 1816.7054072339515 - }, - { - "total_amount": 123400489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai8QgL6mKXIw5dMZR2sekZNAtY62osYPeWxlwARI6bh0" - }, - "address": "noble1pwpys9j0dd6helv7dakxqmn4m4jwedkjzq603j", - "percent": "0.0%", - "airdrop": 2167.621153793572 - }, - { - "total_amount": 81193972, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aksed36NVhEBi1jntr7OPvE1V5qrHDoilfEvtjs4yaZG" - }, - "address": "noble1pwfmg7wzvuyc9425c8825gj003r8furs9wlxu4", - "percent": "0.0%", - "airdrop": 1426.2323649926784 - }, - { - "total_amount": 222837109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApLbGaWQalJx58hIC8M0mO32tjqFCqwaMfqWl6I/A+GV" - }, - "address": "noble1pwt5yjn0jc73ssnkvp6v2ctkc376pcp06sq7r9", - "percent": "0.0%", - "airdrop": 3914.2991671500104 - }, - { - "total_amount": 2162867796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+H5AP/LxCUkBDZ9kgG9cbfrrivs64+y43ee79IsvKy2" - }, - "address": "noble1pwdyt0rcv97emgz6cs57z27yq6jc3lphr6esda", - "percent": "0.01%", - "airdrop": 37992.377708231616 - }, - { - "total_amount": 101558860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Of1B2rkW7+5yROefNZOm9A5iqAczhey8Jor5pwHolE" - }, - "address": "noble1pw33trfhn2zdlsqg9kvfuus7lq28thw7qhr8ln", - "percent": "0.0%", - "airdrop": 1783.9567336816622 - }, - { - "total_amount": 748913119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A44SQ9iJ2dmcWVzmxT3x8BDwKwu5/fKnjIRFz6yORWPb" - }, - "address": "noble1pwjc9nses6qzt73kvvm2uelzvfmz7glezl68qx", - "percent": "0.0%", - "airdrop": 13155.214636936511 - }, - { - "total_amount": 69869889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al+4KzwOTPOJpPIECC0hrXoJZsGGKKDncCxGId3oDbaw" - }, - "address": "noble1pw5z5yy42e7nxun83v66vm8mv8n20qzn59r3ll", - "percent": "0.0%", - "airdrop": 1227.3164445045986 - }, - { - "total_amount": 278524964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/7057NsLF0zLbxxFQLEVBArpciH4XQyJYbFSCDF1KJJ" - }, - "address": "noble1pwujyhm69laajtjx5hhpn2zzg2s7e8wtjca7rp", - "percent": "0.0%", - "airdrop": 4892.497661220719 - }, - { - "total_amount": 1500154597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArYNtG+RnwmaLp+tlXVl9AeaX78kp6W8r8KiwuOi/kII" - }, - "address": "noble1p0x2pwpseqv6jhfuvkyjh3zpkam4wjzqu6h3zp", - "percent": "0.01%", - "airdrop": 26351.32862737579 - }, - { - "total_amount": 50092813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ez6j5j9eCLeU3zR/6OqphIyaxw3LXCpfmGQE8/raMj" - }, - "address": "noble1p02gahyrqn68weajhy7gaxyx4gzlvfn64dzjpe", - "percent": "0.0%", - "airdrop": 879.9174297585291 - }, - { - "total_amount": 187207586, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An7LFWnGdM2Cg8afR/E1LMGgZ9PB3BgwLPjhKJoziPkz" - }, - "address": "noble1p0ke2x3zvquv8uqfc9udgt96usjm79u8naezq9", - "percent": "0.0%", - "airdrop": 3288.4401581603893 - }, - { - "total_amount": 905026091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am2qwjLHidX4XS/ZQsvSQn3nEEDiRFjeRoLQgy2uSeUe" - }, - "address": "noble1p0cs5g7tnu7tth4tzz57rhmvmdncy0egq5j6m5", - "percent": "0.01%", - "airdrop": 15897.454827644211 - }, - { - "total_amount": 150166930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzUxRtb30vVgic3WkBLCP9/rUGZ3kBTTNngP2BCRB7HK" - }, - "address": "noble1p0uesu8nf4fgh8xxmper5gqthd4wz6xtkuwjmy", - "percent": "0.0%", - "airdrop": 2637.7935509496933 - }, - { - "total_amount": 56559837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awgjprd2kYVrrafRHsTryGF/kCSeclEebIu6LJEhfei6" - }, - "address": "noble1psq394avdp9taujvks634fz7hzgn30e0r3f5q3", - "percent": "0.0%", - "airdrop": 993.5155049208628 - }, - { - "total_amount": 89500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnvcrUboCNrL8qykWPW4vNS8VWOGZEywFXb//oBlY6wz" - }, - "address": "noble1pstsf24w26rtj6vur236hmyzkplhmfuz8yt2t5", - "percent": "0.0%", - "airdrop": 1572.133909976035 - }, - { - "total_amount": 256194725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0zN7ENil4cyYktyjSwCgz7mCGUbZ/gAgsHSo+i7IrK/" - }, - "address": "noble1pstj3lkrss7syzsrkme52q2f07mqsp9ce4wlkp", - "percent": "0.0%", - "airdrop": 4500.250443904862 - }, - { - "total_amount": 495642282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AypdltHiXOGGnzaroGk16LlS+63SkuLJ0dC9ulhrqmt6" - }, - "address": "noble1pstchfemmh4wg3gvleqjvxl3ctjq67ktkhs4nh", - "percent": "0.0%", - "airdrop": 8706.324455308431 - }, - { - "total_amount": 506532044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am9/U2mGDzzv8VYPXdrersmqSW44FHcRLzqC/5vZ5NfG" - }, - "address": "noble1psdhnw746sej28ruup7uyk8ym227zl6e5nn6eq", - "percent": "0.0%", - "airdrop": 8897.611205160592 - }, - { - "total_amount": 136512878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7FEzHnDBNyjwWyPtNe+vsZKgObkuJbE27YoWWEZkGKY" - }, - "address": "noble1ps02ssvsat8mmwl8ly0hmyx57e0zxqfrw7cfs9", - "percent": "0.0%", - "airdrop": 2397.949996114206 - }, - { - "total_amount": 1869182194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A12POGpBjhcw1B27mhz6hsap7KD41IHHx+uyLDAGqGLb" - }, - "address": "noble1psks6hel6n05pznltrnqrt38paj28jpwrwhcqf", - "percent": "0.01%", - "airdrop": 32833.57219118217 - }, - { - "total_amount": 670070874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhlcsQTojmIOrU30sq77o7MTzdySDximEsxi/BI/I+QB" - }, - "address": "noble1psesp8vy9n9dpjumyd5pz5mpqzdlawkhvnlm7s", - "percent": "0.0%", - "airdrop": 11770.292101705913 - }, - { - "total_amount": 657477518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmrDIk3gVROJHZXGqm6s4cfWYLyfqFvOMvAOgQ9LPqJh" - }, - "address": "noble1psuu2u8ftctt0dc6h3h6zmvc69m76w85l7z9ea", - "percent": "0.0%", - "airdrop": 11549.080459158424 - }, - { - "total_amount": 88267166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5kPVqmKhd1+l2GliC7MGknP4vYoN29F8Ev3CYByGXIM" - }, - "address": "noble1p3226qgrcqmrwp0rh8whydzyx06mdj4t0wcc0g", - "percent": "0.0%", - "airdrop": 1550.4782659897623 - }, - { - "total_amount": 10936800299, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoHdgqG+6qanEr55ebL968CW/NhbwFLqawsNicPn2Liw" - }, - "address": "noble1p3vq9vkq03q2y2rmjmx3c6gg2zh93e6gs5nm2p", - "percent": "0.06%", - "airdrop": 192113.01247702725 - }, - { - "total_amount": 67947635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akdb1GTfKIXg9TfVh32ojhwe17QREHSH9JPnMBfLy5DC" - }, - "address": "noble1p3d5dw44talnv3wadv2cdhkdczqhu2m06g89pd", - "percent": "0.0%", - "airdrop": 1193.5506266611676 - }, - { - "total_amount": 460084034, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlA+XwfP4s4VZLemKPUaHd+3tNcNDcZQqBPdhXp9tp6A" - }, - "address": "noble1p3dmz5n92yu3t5kaaa34v6nuj0cc3twu76xmyw", - "percent": "0.0%", - "airdrop": 8081.717444580638 - }, - { - "total_amount": 66952109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiZ8mo43huZJ6NmhIoy/zPk2pAaSQ5Mw55EqIkl2H2mo" - }, - "address": "noble1p306vz76jvqaj2x5g9d6l270w5ea96xe662ccn", - "percent": "0.0%", - "airdrop": 1176.063473780019 - }, - { - "total_amount": 11758092228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1vbHK0Z7KAbXisx/lCGzK7hsg5ePlI80vhrpZHux5Nj" - }, - "address": "noble1p34qc635jdtfyl49smxslu304xv8kdavqwc4rr", - "percent": "0.06999999999999999%", - "airdrop": 206539.6146174801 - }, - { - "total_amount": 895049283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avlvw5Fk78FVqOqYVFdE+JUwbsV7cKIV8PgtiUOFVL6I" - }, - "address": "noble1p3h5pr4atqct9qd5hfhfcduxykw6rrzt7jakey", - "percent": "0.01%", - "airdrop": 15722.204792223873 - }, - { - "total_amount": 96304605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AultiGhHoVbtILSmhQAOhVBVQrZYRiPx33mwaHXFB/tr" - }, - "address": "noble1pjpeyyjc7q3wvu8hkfyu3vsmheqh5wgfhw3f2d", - "percent": "0.0%", - "airdrop": 1691.661845892152 - }, - { - "total_amount": 95001545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxwRIyWAJNOE0aie3x4uu1PO0cqLg9BFT2Sns7Wc49dP" - }, - "address": "noble1pjxteqzde8avtrgfygtmr2cxzscfm89nevjn8j", - "percent": "0.0%", - "airdrop": 1668.7726301074217 - }, - { - "total_amount": 301180606, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A70m6J7QWH68Bjh0XoiIScK8rx+wJHUCitSUdnaXdLXG" - }, - "address": "noble1pjta379d4w3ps48w9u3qd3r8t9s5yg7dddal6n", - "percent": "0.0%", - "airdrop": 5290.460823684152 - }, - { - "total_amount": 53986139, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArFwnQ0FGxoV59UWsW75u0q2Ke5IOY5p5XIhK+KAq3OC" - }, - "address": "noble1pjdy0vutyq60ms68ms62u43msa686r04zsg9u3", - "percent": "0.0%", - "airdrop": 948.3065898388795 - }, - { - "total_amount": 801087650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpLEX7AzTUgx5Ma/Bhtdy3NuPJ0PKh2U/w3X5LpkWEC" - }, - "address": "noble1pjwekw0gft0mzp6yrw73k8n5fmn2x8lwg4k53q", - "percent": "0.0%", - "airdrop": 14071.698988022497 - }, - { - "total_amount": 979500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhOfUEKhgmtKMXm6AFsnePngMdV3pxQbq1sfuVJnEc7q" - }, - "address": "noble1pjeujks4kdg5uj07yfuht4cedpeam0nn9g6z9l", - "percent": "0.01%", - "airdrop": 17205.64429968186 - }, - { - "total_amount": 499205759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/IvrRcB/BqBj+malrEPq0S7+dpucYVcyjoJ2H1FvAHc" - }, - "address": "noble1pnq0qusxfhfrkm8th04mv8d7dmzg8762t09598", - "percent": "0.0%", - "airdrop": 8768.919572952227 - }, - { - "total_amount": 1146253509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkGQQvpXFPgWCwVvwe8rOrselA6OU4I+Th8w2tgqGZF2" - }, - "address": "noble1pny5q6vxnytsz7gkujx2k8p58ttd97yqhh30hs", - "percent": "0.01%", - "airdrop": 20134.793418189052 - }, - { - "total_amount": 180911824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBhXVX9hONvWo1yib34svrwXYLdmKZslWtaaSmqGI4Z" - }, - "address": "noble1pn9z6nkm4egak9yqcdn00srxfewyf00a02939e", - "percent": "0.0%", - "airdrop": 3177.8504271063275 - }, - { - "total_amount": 4036758249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/f9LlBoT8hZK8HFe68PE+CQmu+ctrH5TZ0T9S4xWejA" - }, - "address": "noble1pn2ruqqs7hxxp2kjgrl62wr68kv4cz3xvgafjn", - "percent": "0.02%", - "airdrop": 70908.6539623283 - }, - { - "total_amount": 197121371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aot8vkwjNdeM9yGbcGZN3oiUXfsgHsXyH8D5+f/MFHgu" - }, - "address": "noble1pnsp06kkmkjwu4ll6calsdvp5ltuers97e0n9a", - "percent": "0.0%", - "airdrop": 3462.583147821973 - }, - { - "total_amount": 1445974273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtUlKkyd74RL2MaYeyML+9ceWer2J1+l8WRAqpo6thmQ" - }, - "address": "noble1pnac42wwypeyeenfmx4wtcpdl4uynzkma238rs", - "percent": "0.01%", - "airdrop": 25399.611033924524 - }, - { - "total_amount": 64596189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOSx0/DWuKxTtGj9ikyEz04whCrojq1DNlxdXgC+qB6" - }, - "address": "noble1p5zwvqdqn73zp3z0sz8q8yeetae7gqwpdk7l0q", - "percent": "0.0%", - "airdrop": 1134.6799908616865 - }, - { - "total_amount": 85285462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzjAq04RmkBFXRvkjGlcATct4ASfq0bOqGGWcynFNHe4" - }, - "address": "noble1p587897rr2jnaf0zw9p6hqh7pwtjsc6daha0hg", - "percent": "0.0%", - "airdrop": 1498.1024227728778 - }, - { - "total_amount": 77571355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2kMQY7t3dolFPVj+qMPTlV2S3N1sqHBK2GjDfn8DU0/" - }, - "address": "noble1p52z9g7h6hylu5qdrjww9w4krf3fyp2hxpzflq", - "percent": "0.0%", - "airdrop": 1362.598409366358 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyqGVZmZKZtzGHOBys92mqr74i6sbgfTp4J5fj667BSE" - }, - "address": "noble1p535fpjqehfs8nw30fku9fyzejk9a3wu2edw2e", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 62477028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwwPVk9wzvnt1MeqQw9uuin1PzPGL0QuFejHTDtcBlZe" - }, - "address": "noble1p5cn3sfceq98p5cwjv2pux944cj4eqej0u7mep", - "percent": "0.0%", - "airdrop": 1097.4553554561141 - }, - { - "total_amount": 127893753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxqQ8e1S2NHSo5sKPhM+ZV5sJFBR1bvee4w5HGtaaIGq" - }, - "address": "noble1p5lerhahrazujz9ngfx9y5rt4sg0pzhp9tzhvz", - "percent": "0.0%", - "airdrop": 2246.548670004461 - }, - { - "total_amount": 3843755300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/OQPSgBviko4GdHpXMfckTWzLTtY6dRlh8NWFRl8ckm" - }, - "address": "noble1p4g4h40hutvs5jyzcu7dcrdytjtzp39pvhral6", - "percent": "0.02%", - "airdrop": 67518.41395285036 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzoVbEaMPQU9dOqMimUlHD3u+cJ6HuFln03nzu5SV8U" - }, - "address": "noble1p4su2l9djausqunj0sun4zsq8ldf82ycg9vt8e", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 1419229353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak10jpKZ2N8HZ2NSPYVaMbdwlh9QjzXCapIylXkAklGQ" - }, - "address": "noble1p43clpsh8xltyh7y37wwr77k2ehumkf9322mcs", - "percent": "0.01%", - "airdrop": 24929.81666910222 - }, - { - "total_amount": 277679526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0GRFpjpSyzMpSKyTfJj32fBGijfbskCaCzP6Ncl6JNH" - }, - "address": "noble1p4e6fdztuwz8ukctfg7hxth0x5rump93z69qcp", - "percent": "0.0%", - "airdrop": 4877.646915426504 - }, - { - "total_amount": 404000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXWr94lVDfh+gZjro92iWaIiMurAJzsk6q5xx5vO0qa" - }, - "address": "noble1p4arkvvxx7lrt3q70fkg3uvpkc8tmhtmz6fju0", - "percent": "0.0%", - "airdrop": 7096.55977240579 - }, - { - "total_amount": 60361126, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/UEe8YKp6OeEdGPTIjjnkLR7Za3HBX8tD9pdqkRcLF2" - }, - "address": "noble1p4aug8dv0mflfevxn6p2lk2v3hsg00t32j6cvt", - "percent": "0.0%", - "airdrop": 1060.2879668037554 - }, - { - "total_amount": 85390695, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A29EBbRHu4b3m6GD5BMTKwdpV2WHSMnys4TI/suaJUBo" - }, - "address": "noble1pkpsclxs8x2hce0zqslmuaey0hrvfcmfa5y5mm", - "percent": "0.0%", - "airdrop": 1499.9509185019115 - }, - { - "total_amount": 104536109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avukf+GztlCSS86Ho3y1dvTubQwXzfvBFJyQsiCm9HCM" - }, - "address": "noble1pk2nusmsw2005zhapw475cgtsp7h596yycpsfe", - "percent": "0.0%", - "airdrop": 1836.2543215178882 - }, - { - "total_amount": 286836253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApWVF61h6GqKFzNjDKM0DuXUL87TTQxU8ZWbBGl8wAXX" - }, - "address": "noble1pkdwl6nhzju4xg2ca5l7yavj5z9yp9k7z5kan5", - "percent": "0.0%", - "airdrop": 5038.491619572796 - }, - { - "total_amount": 312270439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmI1UFfw1M1Fluj0KMWmLwWoykNZZZWzOlP9JuqG/x02" - }, - "address": "noble1pkwz8hyzxnc37fuqtpds25mfeerjr9fww75m3s", - "percent": "0.0%", - "airdrop": 5485.261969106178 - }, - { - "total_amount": 5041479919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgqC6YYZu1h1sNoF+JwH9WWWU+B+B2M/b95/mWKnIyDd" - }, - "address": "noble1pk0c0x0lmv5mm80yrmrcm2z5y83f3vmuvvcj4x", - "percent": "0.03%", - "airdrop": 88557.33561031435 - }, - { - "total_amount": 337647462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsSItujaR8N1bLp381sRfzD94x1BAoFRrHxQ2n3ghWoi" - }, - "address": "noble1pk3maaykyptw8s4dlpvg4l06l8zrdydk8xewzd", - "percent": "0.0%", - "airdrop": 5931.0282081289915 - }, - { - "total_amount": 82371389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A93QTgde5J316CLIIQax+QTDceQU7mis/w42SUOJBe44" - }, - "address": "noble1pkmjc7p7lqg6m3nm7csde88pnpad945kxkr83c", - "percent": "0.0%", - "airdrop": 1446.9145682539327 - }, - { - "total_amount": 1619578693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av8GGQCnJ1ZH4/LvYsbX2YEzFKZqKNkwKUA2Esjictdt" - }, - "address": "noble1ph890tyxqsycteuv8sg6t7056d94zd5vrney37", - "percent": "0.01%", - "airdrop": 28449.10148759739 - }, - { - "total_amount": 365730261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At4HPkqdZIRMPmkJQ20zLOcNs4tpJk7TlcRXudikHScB" - }, - "address": "noble1phwltrx9ux9nufqtaujdmhdmpucclv2ugxgpjm", - "percent": "0.0%", - "airdrop": 6424.3234103071045 - }, - { - "total_amount": 2000954122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxBcoXD4xUP2TuIQJ/BtH+mLcnCZBEW66Te5IF+Mig/b" - }, - "address": "noble1phjay9jyx7wty20qpts2t78eqq22dvaq6qpvt5", - "percent": "0.01%", - "airdrop": 35148.24388270977 - }, - { - "total_amount": 864580049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3sG5UZjDWRWNI7V1Xtus0UkorYp9vOQsxVu4aD42Of4" - }, - "address": "noble1phcs6txy7nm3a289h53asxgpfkspd0zhr90t90", - "percent": "0.01%", - "airdrop": 15186.990088509967 - }, - { - "total_amount": 3830085066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApFQFodbMGV7j8Sh1obsEEzOCm0LUe9khsVOEaVv8lYQ" - }, - "address": "noble1pcp8rz54agefg7pyc8z6330x2k4syl8k09aap4", - "percent": "0.02%", - "airdrop": 67278.28614917766 - }, - { - "total_amount": 2057199295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhF11XEI5B8MQDGpLffoTt1n9fpG1o/kHm6VzQNLLxQH" - }, - "address": "noble1pcyra6tksl3qd9gp5pghuaz80shymwj8hl7h4q", - "percent": "0.01%", - "airdrop": 36136.23208098651 - }, - { - "total_amount": 1037661322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiRa0zsHEmxtMWpqWNdjXAxduohBfrgmTcBEQ7sOjbaZ" - }, - "address": "noble1pcx9wwzcdcdyjgpyeaufu5x44qwmf7es4cx7ye", - "percent": "0.01%", - "airdrop": 18227.291076947058 - }, - { - "total_amount": 100016235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArYHQh6Tt6bJKGRG00WYbYcP/XhGj5dhoW2/3RxbfkKi" - }, - "address": "noble1pcg4eh54xjfeuj8dx353j9jzx84zcujjlsgczp", - "percent": "0.0%", - "airdrop": 1756.859380912089 - }, - { - "total_amount": 655019654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtWHh66rDRXPYBPNhtIldZ8ZtIAVPOWGPE0zIMlowF84" - }, - "address": "noble1pcghfk9fh8cck56482jlgup0dcwxwe305st6mm", - "percent": "0.0%", - "airdrop": 11505.906254236532 - }, - { - "total_amount": 657225966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuJGnWCcsd45AFp4fOp/HnNwESYdwKEcXetMVULe3VGR" - }, - "address": "noble1pcd293zgnxvnjy2tgaypkah9wc985njy9g50lu", - "percent": "0.0%", - "airdrop": 11544.661761624096 - }, - { - "total_amount": 941369679, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtE98P8sZ01shwozyqCFKAnwF/vmRafo/VO2T8BiRG+p" - }, - "address": "noble1pc4ym8tujeg0lrw7p7elvxv6hxql680rwc0zk7", - "percent": "0.01%", - "airdrop": 16535.856918202848 - }, - { - "total_amount": 367521844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcTthHKBJdGs7D6+8nnNZeCzB7Xah0ATMPmRzJiiLdX" - }, - "address": "noble1pcea4mg8fxayytlfl5qme74md7l9znqdvystad", - "percent": "0.0%", - "airdrop": 6455.793895076228 - }, - { - "total_amount": 2027337171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmU6kyt/BtmnRVDxW5BA4wnjoYOVTF2wXH9Vl0rd/T1O" - }, - "address": "noble1pcujqt5shcz69deyr7wz8pmvnk6hnq5adl7jmc", - "percent": "0.01%", - "airdrop": 35611.681714904844 - }, - { - "total_amount": 176973398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkQCNwAAyQHc3VmJG0tuz2pWI+xq8kQB21KXyZLN567X" - }, - "address": "noble1persgmglpz0spklwqfef49p0qn3weryyxruuss", - "percent": "0.0%", - "airdrop": 3108.669052061285 - }, - { - "total_amount": 99300387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhvNe2GyjPBpSaAlKgl7/BbAdnQSjW9JvmkuPZUAFVcX" - }, - "address": "noble1pe9w8h680jk05qnxqj38w3gfzj2xnatsd4muq6", - "percent": "0.0%", - "airdrop": 1744.2849796250664 - }, - { - "total_amount": 102290439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzkDlXs0TzifNJWKGz4Dl3un5k1IrImtaFkqOkpP2V1L" - }, - "address": "noble1pe8w0yeqr9m0237ns8hsdxfdjv690x00w5jt7n", - "percent": "0.0%", - "airdrop": 1796.8074616562583 - }, - { - "total_amount": 148344943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvO0LWSo5I6srTVYTTCFr5YYU41jsOX4lXq+dugW2WIH" - }, - "address": "noble1petnnac3l0stl9dl4ru2p2a5s0nm5p4r0x4e8j", - "percent": "0.0%", - "airdrop": 2605.78899736047 - }, - { - "total_amount": 50770733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akb8aDO4g8knr83TZ118lVgXi4i8MpNsL8rlfvyOZBU3" - }, - "address": "noble1pe0hlafceqz46yrt66jghceep4su5g9q5yx5y9", - "percent": "0.0%", - "airdrop": 891.8255975825621 - }, - { - "total_amount": 119120800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtfqX1GPlUha4hqKvaDDzFLX67AX33rPHqFnsKAFTDVg" - }, - "address": "noble1pek69naq8r6jacval0yk8avmt70qsymp9krspw", - "percent": "0.0%", - "airdrop": 2092.4452409326623 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjYWPUg7yrrtxikPD4lb/1Tw3hmtP8neOx+mKAaiUcEw" - }, - "address": "noble1pec4e67nev2323el4g08sjl7pkjam465dnc2cd", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 86978146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AopvsVRGgIdCbQAwsa38O4uHokpxALL+5dYFAw0bDAXs" - }, - "address": "noble1pee985e5j5x984s2xm5a7j0c0e97pa5dz4uhj5", - "percent": "0.0%", - "airdrop": 1527.8356732228654 - }, - { - "total_amount": 899022196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aywbwa3Jh7j1dLz/Cx7DeqXI+9HJ5bfIp1A2PZsG6MZE" - }, - "address": "noble1pe6cw35vmtgycpa7llal4y9s776ea8x2tyhw2j", - "percent": "0.01%", - "airdrop": 15791.991957013646 - }, - { - "total_amount": 2532819341, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6YOxWUQG9l+xklaOUvuV3JETOmDjSL/S6nFVQa3sbma" - }, - "address": "noble1pe7cjvz883kk3499csfy5rp9yxdxe6fyz6qmng", - "percent": "0.01%", - "airdrop": 44490.85110423748 - }, - { - "total_amount": 365478920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4WWjib82DZNX3Xi0+oAoOhsxLqnq6Ayn3O7CDQO9Sdt" - }, - "address": "noble1p6p0wwcgxj9alaj27f2ggzp7zsx307slas6x6k", - "percent": "0.0%", - "airdrop": 6419.908419144341 - }, - { - "total_amount": 2112623623, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7CLQUQAxStGe2HvtkjWtBMyoZD0a0zAXjUqsihoXSuU" - }, - "address": "noble1p6pcuplaf3zzj8ya58uqtjlg2y3m6gtfs0r06z", - "percent": "0.01%", - "airdrop": 37109.80152776231 - }, - { - "total_amount": 907704782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoL/34rGdWCGPjACUEjiPflH7/SZyIozrX4PbmQTt4gc" - }, - "address": "noble1p6rg4g3cfwzhlyanazsj7939dhl9e0phnetajw", - "percent": "0.01%", - "airdrop": 15944.508022677146 - }, - { - "total_amount": 877111982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyvLt9qMLMQ5Ceq6Cy1fvaMoFBUCArauA6a2VPwOome2" - }, - "address": "noble1p6yt3rkscs836tfuxym0fk2flk0vqd49fe5hp9", - "percent": "0.01%", - "airdrop": 15407.122790485917 - }, - { - "total_amount": 280190739, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuZx2QScd1WYvldsCj8NRumhcsR2R2Afi7UR3HAr5dBb" - }, - "address": "noble1p6n63nz678nwpesxua35u2tk0pjsr5vq3fhac8", - "percent": "0.0%", - "airdrop": 4921.758235118936 - }, - { - "total_amount": 58985113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw2sKqUlW2irPbI0Bk5PFg4CUNepBFwJr7g+cd+aF+Sd" - }, - "address": "noble1p65z4vvw96pqw8tvdfrr8cqn6gc2dkveqqpxdw", - "percent": "0.0%", - "airdrop": 1036.1172774421034 - }, - { - "total_amount": 127617633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/L3M+M8GvBl4mNbnJVTRd0AAPrlAmFYHMmamS6dIduo" - }, - "address": "noble1p6el23j6getrxw6al7wyrtxnkf8hmdl9cft92u", - "percent": "0.0%", - "airdrop": 2241.69841732041 - }, - { - "total_amount": 200696063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+QTYGXSR0pOjve0yPlpMcWCuaUgqEKtQS3MQW+M21V7" - }, - "address": "noble1p67f3r8pacjgk9vgcjgreewvs6xyzw5xes0ur7", - "percent": "0.0%", - "airdrop": 3525.375265262421 - }, - { - "total_amount": 521642402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwmqsQNpJBAkU+BTXqOl53qlwje0OVWfDw9bNJK0QIG6" - }, - "address": "noble1p6ly5kpq8j00fnhm9h3sltfxtr08x4qqng42fz", - "percent": "0.0%", - "airdrop": 9163.035855481014 - }, - { - "total_amount": 469093058, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1KEl3TwyE87pbokf4BVCLk0eFaZcnVRC+7kIRnYW+Uo" - }, - "address": "noble1pms9ftyy8uh47qj2s8evwqnfg7sfqz9vcgcl4w", - "percent": "0.0%", - "airdrop": 8239.967635934692 - }, - { - "total_amount": 126566065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApCP7nWRavZU8y89O8MmuVF8J0/j451Bivp8gqiU6oSA" - }, - "address": "noble1pmsg08gc23ldmrw6x87kj43suxx6l8xv0j3pxa", - "percent": "0.0%", - "airdrop": 2223.226845125486 - }, - { - "total_amount": 83500676, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agv49jnTrZy8m6SpDK8A4JjBYOL7aFj5dVRqHpx6lNtX" - }, - "address": "noble1pmnmhdzstr5mdugsp0d83ya5g78y7t5dmknguw", - "percent": "0.0%", - "airdrop": 1466.751332352202 - }, - { - "total_amount": 348788286, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Vs029Ouo4xSPzFOAGB8HsRBTzyhR4YyM/vAaTIUIIJ" - }, - "address": "noble1purk5erx8llhv6epvwan2kauuq993n637fjzfg", - "percent": "0.0%", - "airdrop": 6126.725048301895 - }, - { - "total_amount": 7413441938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtCAapnRy4slKjAzGT1I1BR/trZnonbTfgmgR9kFVceq" - }, - "address": "noble1pu9y2tf2su8hlsdxz94lj9kupntqk6r03tagtc", - "percent": "0.04%", - "airdrop": 130222.60849573469 - }, - { - "total_amount": 257270710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3liZXVovEiIf4wiBbFSwrUrPtPu5uy6Ch/9eaJ9OKkS" - }, - "address": "noble1puvlxjmhqyw5xt04y7cx2hr5454h6faq80mnty", - "percent": "0.0%", - "airdrop": 4519.1509188224645 - }, - { - "total_amount": 396671060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9PocRl6UcvWn+w63JzetbAPVOs9FU6kXIA6a+mE/XLh" - }, - "address": "noble1puh2ztjm7p3r58rtmfqtv04362qnfmk53f42uq", - "percent": "0.0%", - "airdrop": 6967.821503152384 - }, - { - "total_amount": 311218399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AinKr6PnqR8qBZefBL8RaiZLNIgf+RSpEUHO36EFV9AZ" - }, - "address": "noble1puhv56dxvuea7nfmg7sxl9rp3cl7qr0p6m6h7z", - "percent": "0.0%", - "airdrop": 5466.782105881026 - }, - { - "total_amount": 99705822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4iWEaPrpjTCifuJkdYpCniVcJwibeQlRvFYvrto/eqE" - }, - "address": "noble1puh4hmd0gu9qjakdly9l9r42rq093ss69frm4g", - "percent": "0.0%", - "airdrop": 1751.406746237258 - }, - { - "total_amount": 72470160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am+DQsqwV8Wv4NYjngN7Ng48l5l9lKAZuP6aApbZT0VJ" - }, - "address": "noble1pumnu0xtq8kpafjs6hnzlslz8hpszw30hj7hw4", - "percent": "0.0%", - "airdrop": 1272.9921340490375 - }, - { - "total_amount": 5235148218, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah8LsQ7Pk483s6DhQ8dv4nBV0VwpBfnVKXt8RFjd6LL+" - }, - "address": "noble1pa28kj5a4gz72vxym2q49hvgxklmsst35dqeq7", - "percent": "0.03%", - "airdrop": 91959.26298623925 - }, - { - "total_amount": 3573936833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8gBLXfulVDfloPDKA9MnRz2JOCNKW5RGw9RpKtXLT+3" - }, - "address": "noble1pat4adu3ezk46y62j087wyxdru38mpzrcrmxx2", - "percent": "0.02%", - "airdrop": 62778.85237175036 - }, - { - "total_amount": 7807584852, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5oTjlh7tknZ1PBp5x8xUTagkIAd365IDgvdarwUDW/T" - }, - "address": "noble1paseanr30tx9fp2yx5rrmlzasur4hgrxa7plps", - "percent": "0.05%", - "airdrop": 137146.02123848518 - }, - { - "total_amount": 204396183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1u5Q85uYQAKCEOOQQwK/B2kBhfkz6H1M2UEBVkOCkjY" - }, - "address": "noble1pajk03k0pfyq6r2xjmm4z053jajcwzd6uynx22", - "percent": "0.0%", - "airdrop": 3590.370618591812 - }, - { - "total_amount": 154085342, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzScofJ7MFUt2qdXyIi0HmJW7C4sM9aquP0GtPCXVh4g" - }, - "address": "noble1pam35xqtvfuhlkzf9txue532n5cfqt752w02k9", - "percent": "0.0%", - "airdrop": 2706.6233652341293 - }, - { - "total_amount": 77929875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1/Fv7mqeVxOxxSDiN2sVPCdnTqCM5hz7i3RUb7+xvS" - }, - "address": "noble1paa2ur6c2z0t8w4qz0ty946gclpckrun53pgvx", - "percent": "0.0%", - "airdrop": 1368.8960791921081 - }, - { - "total_amount": 143182510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqixFx3YFKjv/w9IcsrBPGjaIG/LHI2hcez9cInmHye3" - }, - "address": "noble1p7905vsf896wwtw4vmt089l2szuckdugtm82ju", - "percent": "0.0%", - "airdrop": 2515.1070311338854 - }, - { - "total_amount": 67230133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4lihgvidKky1COjPbhiXIlMlNYmiS+0cg/G7dBPr/aX" - }, - "address": "noble1p7td7t0htw596asmh5tveadh2fdz3wmhsmma23", - "percent": "0.0%", - "airdrop": 1180.9471716368587 - }, - { - "total_amount": 242783100, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyUuhvjbmIC2u14vNb0W19Iqc8sWBCdrhNkNudGH/iaV" - }, - "address": "noble1p7vyyddsvjnhl6r3ujlg6tvyxux6hup4vsq9pk", - "percent": "0.0%", - "airdrop": 4264.665299207852 - }, - { - "total_amount": 184683624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7YvvUM4kkqmF/4d2oqYMlH5PLawtOjCA5J8GhIGLqQA" - }, - "address": "noble1p7njgwhz9dwm7hjdxevgdaw4v3eu9pcvc0ccpp", - "percent": "0.0%", - "airdrop": 3244.1048928230607 - }, - { - "total_amount": 56758671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+coM6JqL+lhtTP7JO5GZOzfSHsdupyNRCjXKnSQrMC2" - }, - "address": "noble1p76fwjgewjgq2c2qnccxv3xd5hz97jusk7c8tt", - "percent": "0.0%", - "airdrop": 997.0081716678592 - }, - { - "total_amount": 51937085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amr4TY5VviBsxWxVvu8DIvcoxm7rwpZqQzywDAfe8Ryf" - }, - "address": "noble1p77sfv0aefkxst0uuc5vvavuvp08jw3gj387hc", - "percent": "0.0%", - "airdrop": 912.3134359084657 - }, - { - "total_amount": 78038546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alwek0cA3vfX16NfrVb0MJL38zqCKNgMJAtWRdQiVyrG" - }, - "address": "noble1plfr9497qwq5c4gw7awq5vvsrpfpx72yf3llxa", - "percent": "0.0%", - "airdrop": 1370.8049659421752 - }, - { - "total_amount": 50857834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxVgyrdN4Ley+qHwHRQ1KC4Due0hpwbHUYpapp/nn0iN" - }, - "address": "noble1plh2vje0yrmejvx3v0739cxu237586ng7uhp9z", - "percent": "0.0%", - "airdrop": 893.3555912774541 - }, - { - "total_amount": 52412403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao34ijyBHxEDxIZPp+S5af5VLiL7OrV/l15o8m1QehLa" - }, - "address": "noble1plc8vwgxf2quey3mw5qe9fedmvdsjyzzwjp4a2", - "percent": "0.0%", - "airdrop": 920.6627492696053 - }, - { - "total_amount": 201007640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiFA6EiAfLcROzaMax5yYMSLtKWPi5uzuacmxa8KHPIq" - }, - "address": "noble1pl60dp0rp6gjehe3fmtczxcyv4c9ufxljfxg8r", - "percent": "0.0%", - "airdrop": 3530.8483464609526 - }, - { - "total_amount": 286395153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZAHFfwBXsB7VVruBsEYFdtfKxz2HChnXMWofUHeJSm" - }, - "address": "noble1plmmp4m4rrqzutzntqfl89tnyj8ey4kk37mjey", - "percent": "0.0%", - "airdrop": 5030.7433707717855 - }, - { - "total_amount": 99591245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoo39gR4VmVAuhpw84w4iH367gvHseWDAAMt3/BCPOPT" - }, - "address": "noble1plazeqddmxuxawmcsqv08gnajsx0fmaukr5z0y", - "percent": "0.0%", - "airdrop": 1749.3941162148744 - }, - { - "total_amount": 83549039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwgRbn8Z8GZNnqrvbLxSgi/NgnkH6F8/KYgEJxTU0Lxd" - }, - "address": "noble1plalk4cn9yyexcjtvvvndtfpp09ejmp27zgxp0", - "percent": "0.0%", - "airdrop": 1467.6008643330754 - }, - { - "total_amount": 11305024238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6tA8hLxzqOjhch/zDptN7jm1G4I79NTrqKUsJw3pndR" - }, - "address": "noble1zqqj40n9vuve4hl84a0rhdzqkxzk42ttx7f3m6", - "percent": "0.06999999999999999%", - "airdrop": 198581.13919174063 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8ISV5A0WiN3O+hWGHgcH5bDCGkXB7VG2dhW8sv5Lz5P" - }, - "address": "noble1zq9css8qhtakf4f3rg7wqcg664pujeu95xr89t", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 251064383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asr+EDRBFai8WK3mJQL9HjVfyuyaNPSoH4Dg+DJ4u2pT" - }, - "address": "noble1zq8tm7kj4cjjx6h3eyla23qrvq50kekaul394t", - "percent": "0.0%", - "airdrop": 4410.132179905148 - }, - { - "total_amount": 3901915926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qF9B5irXlBgKSUkKW+wvktQ83Bli9+CBPVKaEV/M8k" - }, - "address": "noble1zqgq7pk0nlq3clvxp500z6ycd6v97ceqr4exae", - "percent": "0.02%", - "airdrop": 68540.04850435912 - }, - { - "total_amount": 670508258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxCGfURGQeepuPepUEJk8LlxNJ7Rv/3ftWsmGhk+0BAX" - }, - "address": "noble1zqvxwmmsn3qdh375swsdw4y4c6ptjcsmzxw7c9", - "percent": "0.0%", - "airdrop": 11777.97507620961 - }, - { - "total_amount": 137053024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3CzZ3T5gW8NQNtDN3RyDyfZbMM/9ACYjIFNghqofzdv" - }, - "address": "noble1zq0a45vsnzgumm5004rhm0cv6j9dykseyvawr8", - "percent": "0.0%", - "airdrop": 2407.438061398429 - }, - { - "total_amount": 1631657932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRslfKgXnzkEx1qjmI8pl1tkhZFWw4QHWdKlQbZj58Z" - }, - "address": "noble1zq4tkstfvv526ygnkkglq36qclmuczu86qjlc5", - "percent": "0.01%", - "airdrop": 28661.28228355946 - }, - { - "total_amount": 633535050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7bNoNZvZb6fyxkQpBhnJfgzIlRZDBM5q9Cu99BRcABY" - }, - "address": "noble1zqkcrve8mgqyghuwnhuy4kvp9l643q92uxfyyy", - "percent": "0.0%", - "airdrop": 11128.513243166066 - }, - { - "total_amount": 658387085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvX6vMSlUCl6L37c/iYh2SCd8FlYtPrmkUypzymmXmQv" - }, - "address": "noble1zqlh4ysv2hyc35mkhm627d6yefd605cy3veqc4", - "percent": "0.0%", - "airdrop": 11565.057678422058 - }, - { - "total_amount": 141866699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2N/Es+GQjXlEViWJWxD33WjOHNCxo7/QtkjOCT5Q0AZ" - }, - "address": "noble1zp8yr55tgmcnduzqvjydmwtm898d9v5z8rupe4", - "percent": "0.0%", - "airdrop": 2491.993834572774 - }, - { - "total_amount": 1605782416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+61560aNWgpSQHTW8DIo5zqpekX3piAMvrSllP/rWor" - }, - "address": "noble1zpflsh3du3sc77jnp5r0q36dm2q7zjsy9g8gpn", - "percent": "0.01%", - "airdrop": 28206.759645104405 - }, - { - "total_amount": 662219854, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah1zIKXGv+Qi/YNygRc7M9CMN5pWrZEcJe9zViG5aYag" - }, - "address": "noble1zp0k5450mgculaqdhe2jpuyxg5v4vgrur8yup5", - "percent": "0.0%", - "airdrop": 11632.383109863453 - }, - { - "total_amount": 1106088258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag2ea1qmd+iHj61Z+VWyjHTlgZtfNqVPWv6WLwJ1AgPQ" - }, - "address": "noble1zpnpqurwsmghsfzjqag8425w3c0jzdtq49lmw8", - "percent": "0.01%", - "airdrop": 19429.260981319792 - }, - { - "total_amount": 380065049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoHnh8fU9hqDPqNyXDV2q6R895dpoYH+it8/1IOc7tK8" - }, - "address": "noble1zp525c005697sml4dh443t6nsuhwh23kj2wnml", - "percent": "0.0%", - "airdrop": 6676.124598096127 - }, - { - "total_amount": 11810518212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A24yxhAdEdsU5YJa3jhafUnR3oh8c1rXo4OsVj62lbeQ" - }, - "address": "noble1zp4g4gu3fg437xgrdckh3lev8p05zxt8ce2v9d", - "percent": "0.06999999999999999%", - "airdrop": 207460.51592709197 - }, - { - "total_amount": 2793162279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AytJD74W/K35mbpyJ/jrISv0j/7+8KrcTDAfMfKMm2S/" - }, - "address": "noble1zpuel3hdkye3qvmc0c72c5dvf08elcrxkzgduj", - "percent": "0.02%", - "airdrop": 49063.96798750662 - }, - { - "total_amount": 50027466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7G4oA9kql3uImOvdFiRnVs98gO82DY75YMfjlEo2q3Z" - }, - "address": "noble1zzpypenme3n4wjx8k8hdh75fl3ey8vud8hc5c6", - "percent": "0.0%", - "airdrop": 878.7695612153425 - }, - { - "total_amount": 477640161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8w+DBaCMROtH9j48/YJ2vq3ShfQPD6S2oLhal/1v4j" - }, - "address": "noble1zzxqdtrgs3kzn32fu3rnlnn34945ue867z5cmq", - "percent": "0.0%", - "airdrop": 8390.103842173328 - }, - { - "total_amount": 4610524510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am2sbnhVWgn7+hVe9zGzFtzL4hmgnbFeYXWz6yOgxVBW" - }, - "address": "noble1zzxmzmkv5q9c05djlg2xagyxyp90y49v6yfpx3", - "percent": "0.03%", - "airdrop": 80987.28407761613 - }, - { - "total_amount": 110127532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyW7sh0gGEbcgoYg72NLEhK6nGQxrSjg30ExnhpYZF30" - }, - "address": "noble1zz3fgakx8az5rvpkn0elme0eqsdmwzxcn87vnn", - "percent": "0.0%", - "airdrop": 1934.4718154097309 - }, - { - "total_amount": 83765202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnGnqz+KBYPOwqRAPXlmA2TB7Kuqx8lY9tZUnAYrLrau" - }, - "address": "noble1zzjyeaq2e3cnmk9lfl9q00v6afg8sse6nywqy3", - "percent": "0.0%", - "airdrop": 1471.3979278233787 - }, - { - "total_amount": 808933648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvMyRrPuREvTFTtk5AwnRCoMeQjM5fmXup3SlPjWBRTf" - }, - "address": "noble1zznnh8kqsuaytajzsdw97t3xcsldwgxfn9qpft", - "percent": "0.0%", - "airdrop": 14209.519764708577 - }, - { - "total_amount": 729293162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An6uq4tfRbm8BurcOpfXsCAQAvyR6q/VCsqQ4XsY64oN" - }, - "address": "noble1zz5zyxe0jty5x097yrkzs8p8fjcpyaq6mvydyf", - "percent": "0.0%", - "airdrop": 12810.575534009453 - }, - { - "total_amount": 544428302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A78eA8cOs7z2nlzxQZHVOTiVipI2n9rWTnMWg5H1SJve" - }, - "address": "noble1zzh3qg4vl7zdhgamp4nak084le6w4dzaetslc0", - "percent": "0.0%", - "airdrop": 9563.287096367303 - }, - { - "total_amount": 87924498, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuF+k+lbc38gkSIlOjFkHl2YGhBM87ZHCo0wj7Qnqhtl" - }, - "address": "noble1zzcudm3azydwtf3n55du8rc50tud76wxy5jx0u", - "percent": "0.0%", - "airdrop": 1544.4590483063696 - }, - { - "total_amount": 18773315345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApjsQBt83cpb0KAZq1FhMUyE79NUOJKz/3pR+K3ilIj6" - }, - "address": "noble1zzexwf0xhecnlyxksxcamycs6m89w20ar6y0e6", - "percent": "0.11%", - "airdrop": 329767.21403964184 - }, - { - "total_amount": 218246547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpvkTCSp9dXAzVWGCSGl2Z1puhXw6IsNT6uQV1qT1+j" - }, - "address": "noble1zzaeqtrum279kepgr3pmjh897zdcnxj4z6cqzt", - "percent": "0.0%", - "airdrop": 3833.662539372944 - }, - { - "total_amount": 205083671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A//S9LNrGZwv3CMb+Zhy/GbQCMBn9tZ5csDsBYMEKHXK" - }, - "address": "noble1zrgkr7rj2xm8n4gzgw82lakydn420mzjrmp92t", - "percent": "0.0%", - "airdrop": 3602.4468554354057 - }, - { - "total_amount": 60195479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2XSniSwECtnvdBFH8cYwA8Vr+C99JUlx5dmQr8JBwK4" - }, - "address": "noble1zrnvqkxuvfty9c2mgukefryjvnacf5naepdnme", - "percent": "0.0%", - "airdrop": 1057.378254336875 - }, - { - "total_amount": 1807683932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoOpyGFrDjfFAtWpZ/zF3Ol4irnGdVNyrZTR4D2tDNg4" - }, - "address": "noble1zrcha59mm34m4a2tngvvzsll7rf00svl0mdud4", - "percent": "0.01%", - "airdrop": 31753.309586771094 - }, - { - "total_amount": 104794514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyJYL9kqNuUn20iHnXKzBY8/urEKa2gj1t4ILFsKADYy" - }, - "address": "noble1zrlvslywrvvaafxzthclfx0f0emd496w3jas5y", - "percent": "0.0%", - "airdrop": 1840.793397082216 - }, - { - "total_amount": 62779797859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5QJCv5hYidqoRvoHUvm4sisRC3TQ60ce2/h5toQN9hN" - }, - "address": "noble1zyqm8gmermk5mfncpvkdapaa6az4yy7kv3mq9j", - "percent": "0.37%", - "airdrop": 1102773.7326879865 - }, - { - "total_amount": 50684935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar9Sjpol6OKWgnLD3AqtuyDii32MUoXKj+AtFo4KJvsN" - }, - "address": "noble1zyx6cvxc2hgfs4tdpsmr4ex2r2yf6pr4ny26nz", - "percent": "0.0%", - "airdrop": 890.3184920495105 - }, - { - "total_amount": 174025007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+mXXlEFkFAeqMXEYjUCWak1bYH0B5P9RJtHcnVOKCXC" - }, - "address": "noble1zy8knphzhf9u8xeyjc6k3eps96q48hlmelsekl", - "percent": "0.0%", - "airdrop": 3056.87837640801 - }, - { - "total_amount": 50092320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+RJNEYs+aaGjZnJjoszWe+slXWAaqk1cNBdwOV4YtVY" - }, - "address": "noble1zyvx8em5h7pzr0azzvnj52vg09ny62wc7vwvgw", - "percent": "0.0%", - "airdrop": 879.9087698477178 - }, - { - "total_amount": 192264637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsSHYYLaeAcN+xIOQIl8R0KFSDKTmsagPFeS7otBlrlC" - }, - "address": "noble1zy59g4u5vqes3pr0s8nl5fvzv63mldl9j7axk8", - "percent": "0.0%", - "airdrop": 3377.2710113623807 - }, - { - "total_amount": 154560483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkHfj5fvumHP5NM7imykzbUBE1h6hBzVisV5GyIOxLVL" - }, - "address": "noble1zy59en57heqrw2y5ct64r5xjauznx3ehmwcah3", - "percent": "0.0%", - "airdrop": 2714.969569458933 - }, - { - "total_amount": 16854884928, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0++mjE5D7o5cnrHIgcSo8pv2ZYAzXwz6JwXkFaiZ+3g" - }, - "address": "noble1zyhq3wfs05gd55ly9qxf64tm0vtyxyfl3f83ma", - "percent": "0.1%", - "airdrop": 296068.56026874617 - }, - { - "total_amount": 221385229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhanEeeTN/qeHb+GhIFfIcWt+0uGT1ahHHKP4KyppHnb" - }, - "address": "noble1zyc5qc0yv2zs5n7g56l7exg6gv4axyllh8tk6d", - "percent": "0.0%", - "airdrop": 3888.7958176392167 - }, - { - "total_amount": 638808056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwUmMU9YFb6J9KsEJvvbfPAvrJUyePhKIdllk4k4hhAm" - }, - "address": "noble1z9pdam26tvkz6m947vxfhtw8s9pkdmayjdpnpg", - "percent": "0.0%", - "airdrop": 11221.13750618402 - }, - { - "total_amount": 4052587841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArsWSQSAJRch1TIJMCOzMfLCBa+m87vxPr3KbPk4h5DQ" - }, - "address": "noble1z9p077a57nygyscrt54tvulpj8hukwaf5lunwt", - "percent": "0.02%", - "airdrop": 71186.7124915382 - }, - { - "total_amount": 105495227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8gF2gL37Yx3QqibPfyrZX02LVrlDNIxPWOdEA3xF39" - }, - "address": "noble1z99qx4a3rnlka0nsw46faseepntcp5tcsx7cez", - "percent": "0.0%", - "airdrop": 1853.1019408639036 - }, - { - "total_amount": 5279450808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6apc7iThbRkwboKqPy6eXxxQvTH+0lNkXZvugDM9V4g" - }, - "address": "noble1z98eg2ztdp2glyla62629nrlvczg8s7f8gwe4g", - "percent": "0.03%", - "airdrop": 92737.47085259417 - }, - { - "total_amount": 52131731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xTAeKkzcLlNRCrqiFRhebvP9ijsaJ7UdhefmG24FIU" - }, - "address": "noble1z9fkd88h8qzhuhvlyfyha59d3hhmnceczchwet", - "percent": "0.0%", - "airdrop": 915.7325373279205 - }, - { - "total_amount": 80622355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjLpPc2Zf6tbt0PTOm4zbBiAK7KFUly5aecY46ZeXV2d" - }, - "address": "noble1z9tf63jqe07u4t6pyag97uvsjqv8h4d8pklmul", - "percent": "0.0%", - "airdrop": 1416.1914882416306 - }, - { - "total_amount": 89880646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvDgD8XYjLF7Neo9KAceb4IFaKoE+dysRD7vgTVmArGh" - }, - "address": "noble1z9wss2vhgj36pevpwn8fsynasms2urzxljddgg", - "percent": "0.0%", - "airdrop": 1578.8202394095183 - }, - { - "total_amount": 102191115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxNPS2sASVL8aHe7c6l6ZvIf2IwD3FhEUU0etwuudIb6" - }, - "address": "noble1z9wa0kewpettmg6j63e4zr4lydkw9m2w9ax5dk", - "percent": "0.0%", - "airdrop": 1795.062761896767 - }, - { - "total_amount": 70629315213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ydiKDKmXlfoXwBh2sSV2VyxsRAeuxWTwg4tQKgxIZ4" - }, - "address": "noble1z9ew46275sh6yhtarsrqwhyzc5xh4mjuk5gn3q", - "percent": "0.41000000000000003%", - "airdrop": 1240656.3294384752 - }, - { - "total_amount": 379048042, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iOw8PMVFaXKE68RTPNjMjugBeogM3IWSSAlp8UTS6a" - }, - "address": "noble1z97l0gzxy6607q6qzu8qwrqpfpzc2ls2ldw6hn", - "percent": "0.0%", - "airdrop": 6658.260115510842 - }, - { - "total_amount": 2949301274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9tGacr4gNePp2gVqKveokntJiH3WIw3X2HP/rrMDWUV" - }, - "address": "noble1zxzmm6f3qdf7esgmx7f545gw8k227wanawnxjk", - "percent": "0.02%", - "airdrop": 51806.66529151868 - }, - { - "total_amount": 913389384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arn60395HmCiOLQhHYX3blTSgKFqQF49TApEJxncYEae" - }, - "address": "noble1zx2upzk3caf4z07nscmc52g833awz7mmz3syh5", - "percent": "0.01%", - "airdrop": 16044.362274843823 - }, - { - "total_amount": 73374094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnYu7r4bpm6QJfro2P5Hr3crWMBu0cNv2jbGRLVDM/HX" - }, - "address": "noble1zxdvzdgjtdmku8l5v3ezv5yn94wk27a3avttl5", - "percent": "0.0%", - "airdrop": 1288.8704054879233 - }, - { - "total_amount": 1685301958, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A39ZCnQ8J/lFWM4Ra2ITLKxy9/xKgBbqFlP3TwKmkB56" - }, - "address": "noble1zxscg98uapdsh5hmc5386vrh483m5nmn2ygzfk", - "percent": "0.01%", - "airdrop": 29603.579404701763 - }, - { - "total_amount": 269542851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzWpTDsdIitU5gM6uU0DNE1CkBPASbCztkctUuk32P3j" - }, - "address": "noble1zxhrnzlnr2y96rkude3m07pz04xug4ees98wyq", - "percent": "0.0%", - "airdrop": 4734.720181549919 - }, - { - "total_amount": 52438245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqTJxUUw7HD4FNZq3dYimoNV33NLBuILczyjAX+VU2zx" - }, - "address": "noble1zx6feerwvu5g93c2wmcpc833g6nu497kwmt5a8", - "percent": "0.0%", - "airdrop": 921.116683174651 - }, - { - "total_amount": 102126714, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag9Jhv9vDc7h2pwEv8XRHYhbEK3v5nSgFRNiEsd5n3i3" - }, - "address": "noble1z8y2luvucl4pal3walnd252v79yujwj9s42r33", - "percent": "0.0%", - "airdrop": 1793.9315105455225 - }, - { - "total_amount": 72961433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A53mUoDYQuJBPPkzRWDpTgYuWmzrijZmD1ogkVMhno+w" - }, - "address": "noble1z8gxze3eu7u7w9jmytppnlt06lq2g340484hla", - "percent": "0.0%", - "airdrop": 1281.6217088239612 - }, - { - "total_amount": 103602738, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4roSKDpjj/2UC7KDN5Iu2DSP6V7zLFgnHUfpaOb5HCx" - }, - "address": "noble1z8sangrlzfehu6ngc6mtu2wak5zcej64v2pdcy", - "percent": "0.0%", - "airdrop": 1819.8589673314275 - }, - { - "total_amount": 119742566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9wqpgOMQF3HTrbes84oIvN0z/yD41wkCtntQv6dIaO4" - }, - "address": "noble1z8k4tpx2vl5nrzd5mudhl08ne8gtwnnq2tmv27", - "percent": "0.0%", - "airdrop": 2103.367022079815 - }, - { - "total_amount": 123401043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ZDWnAxmdp9sJj5x0tSHx6nlhTdTPOpDFlP7zO2bn24" - }, - "address": "noble1z8utdvq2n3869h6eej0cvjgl5xv47gfnxj3dvp", - "percent": "0.0%", - "airdrop": 2167.6308852146462 - }, - { - "total_amount": 2766867338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apfv0iNIIK6NOawUZiDPWSSRebKPY4Quyf8KTYUbsYcd" - }, - "address": "noble1z8agryur23q0flhvvawcg634tazm82u48atvzf", - "percent": "0.02%", - "airdrop": 48602.077837708646 - }, - { - "total_amount": 148124874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjzI+sCJMpZsG3sZB1IKWkCAMF1bdyt0QJsaVojoLv6M" - }, - "address": "noble1z8lnu0vv6wavaq2x5wfep3zgl5h8e7q798tl8e", - "percent": "0.0%", - "airdrop": 2601.923322081872 - }, - { - "total_amount": 121158549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Stw8PUDvsw1Ry/jiwV2Fcgq2w0OMaDfvB3ZoUR3Jcr" - }, - "address": "noble1zgy2fwqvljcmautaju96ge99a0gpdza5kwlcj6", - "percent": "0.0%", - "airdrop": 2128.239814149643 - }, - { - "total_amount": 119661230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1xkIhLHJxwCh3CUmvnv2vqVVFLczMV7wXMFvglK/WRu" - }, - "address": "noble1zgtpc7kur4uqdscax88mlnm3rvfl5f289uxe3y", - "percent": "0.0%", - "airdrop": 2101.938294887616 - }, - { - "total_amount": 279930427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhKLkQs3DleqCKMSDgPOZWYNTYP+izayKly8WMBckI8R" - }, - "address": "noble1zgsm8qwpxs48l7678fzfef0t0m38qu7tarxtth", - "percent": "0.0%", - "airdrop": 4917.1856616845935 - }, - { - "total_amount": 53178189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmkkZZDTdDdmUnMgQejpa80Wv44nRAKqjiGlz7qT97Jt" - }, - "address": "noble1zg4l33jmdhhmw5r5xptxz308qze83cr0q7avtg", - "percent": "0.0%", - "airdrop": 934.1143485811684 - }, - { - "total_amount": 189500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao/UDywg7VBFN1p6BFRTmI2AsAwY2Tu4H0F0P7GkXCZk" - }, - "address": "noble1zg6pmx659cnsxhrf2f9cpet57a6t6f4ednqnmn", - "percent": "0.0%", - "airdrop": 3328.7081110665767 - }, - { - "total_amount": 103000072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4hOfJeQKz6XY8hg9dLEjnZqtu7tQxWV5OOWMwD4weEf" - }, - "address": "noble1zg63tnpqlkee9l59xppnestgtxglc0xs3sn5ke", - "percent": "0.0%", - "airdrop": 1809.272691856683 - }, - { - "total_amount": 896598987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhQ5QD1kNuRaqdJ7Zpfz1uNOKkbvazNOxHCqZ3jyB96D" - }, - "address": "noble1zfr9vn8r9yxyp755e33gn5gt7sa3mwse32efh6", - "percent": "0.01%", - "airdrop": 15749.426492881143 - }, - { - "total_amount": 631683976, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYLZFPne/N0QOWbCZavtUXea0qrSjo1rU2GVsUPr3YF" - }, - "address": "noble1zfxcs5x685kwqnzg33252t2ps73zvujxsyn6ds", - "percent": "0.0%", - "airdrop": 11095.99775483897 - }, - { - "total_amount": 3173606598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhxLREZgIQpvbuYzuarKvhSyxGAQ92duE4t3TS/+alCg" - }, - "address": "noble1zfsevdd9l40kd7uq92vqmuvqgggs3cryltc86t", - "percent": "0.02%", - "airdrop": 55746.75474457523 - }, - { - "total_amount": 438554526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5lIBUFM5c3b3ouodbiqdoJVflV6MkmF6KQZcSRO2EXG" - }, - "address": "noble1zf3ta2vmdm0asr34yyn46xhlmankvweyygreu9", - "percent": "0.0%", - "airdrop": 7703.535661430913 - }, - { - "total_amount": 676409883, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtOSEuTvT5wIx8kSSTkRxsoDiIoa9ROb2vxI2KNM95no" - }, - "address": "noble1zfngg3euaseg5csr7fml4stz4rn8wwns3hpjtm", - "percent": "0.0%", - "airdrop": 11881.64149840472 - }, - { - "total_amount": 1450200215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlUzWQXTEeYZa5YFv+2RHJxnZ1ze7Y4Lpf+ddQhs0GZ" - }, - "address": "noble1z2p8yxg9282pvyehht725l48w8qkpc8ua36zkf", - "percent": "0.01%", - "airdrop": 25473.84284084957 - }, - { - "total_amount": 118556761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmM6JyzwRiSfTDkb3sfvmRkB66AgbgNv858aibrlWMD8" - }, - "address": "noble1z2xhjfy3y9adus6t50u4ha02dj7j7cnwe773hv", - "percent": "0.0%", - "airdrop": 2082.5374773745734 - }, - { - "total_amount": 229432711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmFi0mP+mlyxnTC3RMA4RuK3fKUDA9n0+JGH7qeDNLbI" - }, - "address": "noble1z2dnensswyd7qapdplgzueemkraqwsr6cmsf3x", - "percent": "0.0%", - "airdrop": 4030.155810288622 - }, - { - "total_amount": 55267988, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvrKF/s7ZloASQTg6hUjvL94qKQJSM8UTmzUL2kLakbJ" - }, - "address": "noble1z2sv8s9r8prn0zdgel3yykk7kw3nw77mcv4g9h", - "percent": "0.0%", - "airdrop": 970.8232186698166 - }, - { - "total_amount": 615843412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxUWcXfYSGs24KA2KXf+SRPs7CuDiHLX6MfnWLu+BXFv" - }, - "address": "noble1z252jewcp2gaxs9h2mln2edqce49t7snsqucq6", - "percent": "0.0%", - "airdrop": 10817.746494307736 - }, - { - "total_amount": 200002493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnvuU3+BNorhbx4rwQwRzKdDnOqpMM2E1mPApgatinKF" - }, - "address": "noble1z25uef9lxk54u77hy3ssv2erfhzh6jz89gjx8p", - "percent": "0.0%", - "airdrop": 3513.192193575917 - }, - { - "total_amount": 114521990, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj3xht8lhC3QZHVJrZkViaf0Apup0mhf4ZQI3s9dbPQ7" - }, - "address": "noble1z2huvteqdkuxrcxt8qdd2dxjy22r02h4u6uxnt", - "percent": "0.0%", - "airdrop": 2011.6637309154905 - }, - { - "total_amount": 189254600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkCCeG2lD42KL/DvwLTZEGxKCI0Rp8HmBXLnguN4zgf6" - }, - "address": "noble1z2cgkhumpypjmd9md495we0ne66z63gdhr5qaj", - "percent": "0.0%", - "airdrop": 3324.397477977101 - }, - { - "total_amount": 492392240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiTj6OJ59xjB56iwsSinXzw9MsGy7nePDDR6gHy82SPS" - }, - "address": "noble1z2uedsptx42a56c56de3qfh8llh4l58jmd3x9f", - "percent": "0.0%", - "airdrop": 8649.235056011825 - }, - { - "total_amount": 109943317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An2ndXTz3OF2+YMn5wtF2TPu8ngpoPUfBEUF4x8z1Pph" - }, - "address": "noble1ztrswh6rsft6uta2gcm29tdj3fa4mzq302r48q", - "percent": "0.0%", - "airdrop": 1931.235942245192 - }, - { - "total_amount": 906202862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6W1RThP4ZmOJ4PFpyecuCKFw87Gi16xgQfE5v/VpYGT" - }, - "address": "noble1zt8u3vkdrupaxsjv58fkwqate5fcg7zmz8tz2n", - "percent": "0.01%", - "airdrop": 15918.125683436127 - }, - { - "total_amount": 6696901013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqxkhILnQqvTPIHh7h6OjWbx+ojPSYuXkUWHt84jk21k" - }, - "address": "noble1zt334a93rlu0ygadcj85t4aat3fpfuzvm3rex9", - "percent": "0.04%", - "airdrop": 117636.03546692916 - }, - { - "total_amount": 709505932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5wOvzHdWTh8G0pp3BFMWsMBy0iEXSe2hDg68EAvXpug" - }, - "address": "noble1zt3k853trrqynqh63w2mfw5sdl5qpxjhq9q6f5", - "percent": "0.0%", - "airdrop": 12462.998156719003 - }, - { - "total_amount": 99677521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnDqAfE6duQE5jAeH43CoYa6Jkdg4hTFnSxM55RfIl4p" - }, - "address": "noble1ztchp4s0grldjvhwh73frvvw76fzfw0rfm0afl", - "percent": "0.0%", - "airdrop": 1750.9096181726072 - }, - { - "total_amount": 154248543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApksmRKVb2RfV3CUsFW1SDamZgJ5BcceRJWms7a6ApkV" - }, - "address": "noble1zvgm9cqjevf0mqwe9lx3cnjmecxz698jgll4gs", - "percent": "0.0%", - "airdrop": 2709.490111896051 - }, - { - "total_amount": 199270190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlEHokvr3N1t+ESUul7UIkzEJCYFu4wQeXsczsiJd+16" - }, - "address": "noble1zvtlxc4yqx9s3re7wflfg5pmydzldy67m6v45h", - "percent": "0.0%", - "airdrop": 3500.328748004105 - }, - { - "total_amount": 557227709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/JvlRJWH6YzURJhQn6KcA3+whMsBck27sIzVZ2xzm89" - }, - "address": "noble1zvj80m9ckmtp5cglwt6wn0dcs0y9ceddykxyq6", - "percent": "0.0%", - "airdrop": 9788.11817762188 - }, - { - "total_amount": 222755207, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj2Qboq8rWWVidspAIX+CqdBrvj86v0Z97oWw/OmVyel" - }, - "address": "noble1zdzn7pfzfryva8nr6s85lctnuavmk2e0un9ak2", - "percent": "0.0%", - "airdrop": 3912.860497747833 - }, - { - "total_amount": 865512001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A73nlzJdov3mpOeqb3waE5i9DJ124tTqQO3iFSA6F70k" - }, - "address": "noble1zdxzpcjafydkw30j8lwsjdd2dxnhdaa4q6ymrd", - "percent": "0.01%", - "airdrop": 15203.360516908515 - }, - { - "total_amount": 50100445, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MMX7ly98Md72UUG2YcWtDL7Y+Kbdadv0dYBq3XLxoT" - }, - "address": "noble1zdnh7vj6w0t54sc7xacdcj6ffu4t0ssqp33dff", - "percent": "0.0%", - "airdrop": 880.0514915015564 - }, - { - "total_amount": 200595332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoBi8FGXmstqwcE5XJE68gXUA8Y4ZH4gaVztsIml8RXi" - }, - "address": "noble1zdk397796e5m6tjvneaf39xhvk7sgtkqunr7s6", - "percent": "0.0%", - "airdrop": 3523.6058505039205 - }, - { - "total_amount": 520834162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7SMwU4xhvitEd++G+kSEQEbqZlXOwtfpvq1UjuvksI" - }, - "address": "noble1zdch7ant63em5guznkz48nav4lhw9kl3cf9gay", - "percent": "0.0%", - "airdrop": 9148.83852015812 - }, - { - "total_amount": 482612110, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtgYTsahj78olrmzC+7v/PSDrGNqwj8bIhdle9a6GSwy" - }, - "address": "noble1zdl58wup0mnwjqkrqw2uc4x238yyn8c3fqphqk", - "percent": "0.0%", - "airdrop": 8477.439815598707 - }, - { - "total_amount": 999000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Dp8f7LA0IEdVZipjOe9AgXUmuGfP20nN0XcfYUciuz" - }, - "address": "noble1zwqnk6uwrqp0ufs4h34g59vnr7th5ff6rv5lcy", - "percent": "0.01%", - "airdrop": 17548.176268894513 - }, - { - "total_amount": 356077678, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AougD/9WEwqCEXXijEoqPEeQXpur663TG9WvXKbPSeGI" - }, - "address": "noble1zwwxp2fjhzylj7cnh07085ktqj2fm7qw8vh4x4", - "percent": "0.0%", - "airdrop": 6254.768627590253 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At29nRMLwbCPLr8z7fgoOBF1BaZ+xbToqVEHRBFvnaUm" - }, - "address": "noble1zwj27hkgs5huv33ltqtvgx36ufma27ld8u2c5m", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 58133583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai7Hg2w78it7FYg8vZQk64PZ1va30vLk40RLmuYzoeKr" - }, - "address": "noble1zw7ygk3aa4eu6knu7v3lmgudgzzp99gf6kp7z8", - "percent": "0.0%", - "airdrop": 1021.1595211475571 - }, - { - "total_amount": 36426729444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/0AIIzaKxjEsbHCXSueRVeN11xZBditJb4Sh7UPRsVh" - }, - "address": "noble1z0tk6fsd2q59sxx6z4g66al7tyv5e0d7qcmtd4", - "percent": "0.21%", - "airdrop": 639862.5317143562 - }, - { - "total_amount": 306442399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvFb8uZGJsNDNvBdGGhZUatyORD0n0tpLdljLv//tuz2" - }, - "address": "noble1z0nmvynk5fadw6lamdpewr9dnrjap49hjscf7r", - "percent": "0.0%", - "airdrop": 5382.888122036941 - }, - { - "total_amount": 63908037, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av7pB+dPPwcEtdxX3IA3YB86PaHsx3KJkKNuuUAwW0hZ" - }, - "address": "noble1zs0n07xk4avr50d82n0kxafzz6h2sju5dfqmt2", - "percent": "0.0%", - "airdrop": 1122.592090365398 - }, - { - "total_amount": 70098308, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A387DpAW0dFfRhuv9kBMK+DoH8q4++rI7/RNeaReKYth" - }, - "address": "noble1zs079m2ahaks2t25mk0xp776npnvtyk6902s87", - "percent": "0.0%", - "airdrop": 1231.3287937289876 - }, - { - "total_amount": 1337327426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPxM3j9Rmk0RH0d0uvkE2+olFrhKd2k1Yj5MOJH5dAQ" - }, - "address": "noble1zsnm2lvsvzqcnukvrljwmp5p2ys0zqqdewygh0", - "percent": "0.01%", - "airdrop": 23491.148549224206 - }, - { - "total_amount": 1155205272, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/3DCsnlxPsbQirsw5nX8jnsWd5F/Z5Rj2pTqKo55OT" - }, - "address": "noble1zs595r8w8jvadyffvqdf42ymsuute3cfa9xh34", - "percent": "0.01%", - "airdrop": 20292.037777589823 - }, - { - "total_amount": 1407190125, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuAbuklN8crFUHBbmb9HOv9igky31NBTCjlX3cDlwyEj" - }, - "address": "noble1zs7x2t7zxc3y9ucnyzr244m4888h74wkyve36w", - "percent": "0.01%", - "airdrop": 24718.33869604375 - }, - { - "total_amount": 169448782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNw1ZcPAIQDIViOya1nVh/OJ0nt3uQv2cezVkczStWz" - }, - "address": "noble1z3zyhw9n4xed5wd5fru8avgw9wnv7wrp6amy7c", - "percent": "0.0%", - "airdrop": 2976.493588674154 - }, - { - "total_amount": 77293307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AioRjX/X65+txxtudipsVKw08uj3KryU8UJ6Rlosm0bm" - }, - "address": "noble1z3g7hhjmkacamzn4gt4cwlkwu3ag2jdhp8pvs7", - "percent": "0.0%", - "airdrop": 1357.7142899317098 - }, - { - "total_amount": 342821631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzEMWyN9FLHNICi8HgbjHiii9+MCrCEGfFOCeSE7d0gK" - }, - "address": "noble1z30m8ataz69ry2vq7rrndv7nclzxqft8gg9z9v", - "percent": "0.0%", - "airdrop": 6021.916325903816 - }, - { - "total_amount": 50057159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzqG49MBzF1m1aM4xm0PuccE5h+m/bOc8gmVRLUbOgVi" - }, - "address": "noble1z3560xux55hlxmah5lwm5x6r0pfh9wugqzzvrh", - "percent": "0.0%", - "airdrop": 879.2911407928723 - }, - { - "total_amount": 81446323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am5RvntXzwpYOzJyASiIe3EjrxFEkZS8HaPHGC9hH2j0" - }, - "address": "noble1z36um9rkqcng9fqsc63yyn02vvtp37s75dust0", - "percent": "0.0%", - "airdrop": 1430.6650975548723 - }, - { - "total_amount": 122377826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84mF0Eqy6ZMWMSCcVfX9OrD/+aC7I6tBOGfJVsaFxUx" - }, - "address": "noble1z3ul96ft7yarjp63jwheqtmxu7hnah6400w28a", - "percent": "0.0%", - "airdrop": 2149.6573193714735 - }, - { - "total_amount": 1034494431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+hiwRKqnVrcWmJt2t9vndrLgCAA5G2wcOvebPI0ZGDy" - }, - "address": "noble1z379gcx3x6xthe5sey6t0lktvp800pnlm40nu2", - "percent": "0.01%", - "airdrop": 18171.662286664396 - }, - { - "total_amount": 192263875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26GQGEu37Hhw5rAp4UKSLLixOyW65+wVAd9gdUeMPxw" - }, - "address": "noble1zjp8x77f270n7ul3lh3xt39ttpjrs5tug26eje", - "percent": "0.0%", - "airdrop": 3377.257626266968 - }, - { - "total_amount": 329135219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az+YhEC8GOBQG8RiEa6C+camaUQeltOnvESk//S/BA/w" - }, - "address": "noble1zj3yuyfwxccdvnq9nqkxmpjzwpqp9lxset5k93", - "percent": "0.0%", - "airdrop": 5781.504343656855 - }, - { - "total_amount": 70794003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As8uQL1k+fC4OGa9tUEQW+FM3dAi6FgYXNfDLwCA4dAT" - }, - "address": "noble1zjnee5wxnt94acmkhvgz29lwmcxnw0fg02pmq8", - "percent": "0.0%", - "airdrop": 1243.5491926172645 - }, - { - "total_amount": 180634765, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkVmmskqJPnDRwr+KjeQWLRM9OfSWwz2gz2Y+UoHKBDv" - }, - "address": "noble1zj5t2quxgy424ph3z2zqkw6xps94nnw9yjr0gh", - "percent": "0.0%", - "airdrop": 3172.9836801905276 - }, - { - "total_amount": 429363014, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6M08t2qmuINfx6LOXsWA6WEpgO44ecIxr9qnGs/CVXM" - }, - "address": "noble1zj4zqpmca0qtgal7gwd2t8mz47j6g64wmaype4", - "percent": "0.0%", - "airdrop": 7542.079932948772 - }, - { - "total_amount": 101247956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/icoW5f6w4S3UzUgkFIqKsy82oQdyU1ayojEOjk6ilo" - }, - "address": "noble1zjkefqfxv5j5v7ewrp3meqktc3htvhyc60tqk0", - "percent": "0.0%", - "airdrop": 1778.4954742275036 - }, - { - "total_amount": 487560127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqolXnvtiV5a9Pm26Yx6knuFT6ysqi65BVxzAtrXSVtz" - }, - "address": "noble1zny3jv2ugv8n04vpxhd78kmawrw9p3x5tvsa0c", - "percent": "0.0%", - "airdrop": 8564.355405686281 - }, - { - "total_amount": 68219484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqEXk+dffLt4IaMBi1IaJkqtj108dceBo1t9hKHm1Pns" - }, - "address": "noble1zn8xczd2w6n43d2uvxv829qfsxedlqacxrz7u0", - "percent": "0.0%", - "airdrop": 1198.32585606109 - }, - { - "total_amount": 933269127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahpj9pfOevrQfrlg0/dMhjaMvvjjV6QvgBjm1O55/Jwq" - }, - "address": "noble1zn8fktdresale7lfg57ea7rtgcqk3kn8r0g3e6", - "percent": "0.01%", - "airdrop": 16393.564711624924 - }, - { - "total_amount": 301732102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4RCNhw+5Go80WEWXWnwHVUBVduHsnANKdhDJhM23sNN" - }, - "address": "noble1znt24ugfc7sqt8z500e38aw7dp8aymhd2t3zqz", - "percent": "0.0%", - "airdrop": 5300.148260140199 - }, - { - "total_amount": 398795856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7RzGr8w9cwpE55ML/weTY0NCaxJUS1Fe1u5osfEvnAJ" - }, - "address": "noble1zn0ax0rdspu7nyng0nar7hp0d8rsn7tnvu6fr4", - "percent": "0.0%", - "airdrop": 7005.145121514189 - }, - { - "total_amount": 412752490, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84iGLH1MucosJN9A2TPJEJUo1OK6Shz7SORoyWYOEjh" - }, - "address": "noble1zn6ptel00qs3wzju9ha2pf28y5v0pkcy0qw9cz", - "percent": "0.0%", - "airdrop": 7250.3037536988195 - }, - { - "total_amount": 66787330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApTZQSoFKmCWMWGCU6CcqK3CYaWA7nUgRXt/j0MolPz6" - }, - "address": "noble1z5y8m2hx8t54654et5w389gusp8dzptd8gtwlq", - "percent": "0.0%", - "airdrop": 1173.169008377204 - }, - { - "total_amount": 104060568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3IbR3nhFxHb7YB7lM0WwQe/RTVoq+cOfb3L+156euAs" - }, - "address": "noble1z5gdhz8e9wsx7qjx92kwcuateu9nhyajuus2hm", - "percent": "0.0%", - "airdrop": 1827.9010909962801 - }, - { - "total_amount": 73942175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsuwUKktnz9fNS/KRAtaXt/WMm+dz7jmYf/c8eci/uZp" - }, - "address": "noble1z50qkdrqamhz8g7c8zatfz8prpv3c040t8rzra", - "percent": "0.0%", - "airdrop": 1298.8491697752204 - }, - { - "total_amount": 16666000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxNDYTw3UUdMViQdasxJhNnC6zLT4lS+3udoSaQs213r" - }, - "address": "noble1z5c7xucnxhydm9608j4dq0rnsqcwxy0qa4nlp9", - "percent": "0.1%", - "airdrop": 292750.65635374974 - }, - { - "total_amount": 171371530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Ytuv5ycGb2aSr1GtzS8y0D4m93ld5AwUlXxHGJLmcc" - }, - "address": "noble1z5us7g47pa6fm7tyc3v39cy7u5446ufjy2k40h", - "percent": "0.0%", - "airdrop": 3010.268083994138 - }, - { - "total_amount": 179150372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7rsFeCbbBaiNsrf55gtDmbQ7JsDCwEN3YHBb7pRO0kR" - }, - "address": "noble1z573jrxpg6mhex9qtxldhfvr8chre9593w5kl4", - "percent": "0.0%", - "airdrop": 3146.909215709734 - }, - { - "total_amount": 912687199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao5H89RE5KVL65YMODlJk5YJQFP8em3DHKOUW1j12k2G" - }, - "address": "noble1z4rlw2nmleppsh5mtp5nxk0jafrdjr7fefw8zr", - "percent": "0.01%", - "airdrop": 16032.027874289895 - }, - { - "total_amount": 144413946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiu2ntljDfZFtM1yZkoDwGnwv9E2+HfjxSYzq3uNfwtw" - }, - "address": "noble1z4yu58vu90np5sh04j3p62vaqwl8y2t0u7aqae", - "percent": "0.0%", - "airdrop": 2536.738118212827 - }, - { - "total_amount": 231050318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/GV6iYaBBWxsf5tY8PJF754AmMDLJtiG4kx43ti29MV" - }, - "address": "noble1z4fd0e2rzqu4pd8atxkluggu0mnf6x78rz0857", - "percent": "0.0%", - "airdrop": 4058.5702775256564 - }, - { - "total_amount": 50341492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7w2s5+uZ89Pjv39NmLDtAnuttvK/vFKlutFQxhwQyMb" - }, - "address": "noble1z40re57fn0ag9hknjmmwe6lflnyg303zlz0mhv", - "percent": "0.0%", - "airdrop": 884.2856609160591 - }, - { - "total_amount": 826878717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A63SRb1AywvN8V+xq5q+bOI3v38SvwDNydtoIsjc0Gzg" - }, - "address": "noble1z405fjpe26trpjtgvk5k4erh29wp7llasw5c3k", - "percent": "0.0%", - "airdrop": 14524.738217130473 - }, - { - "total_amount": 3394077687, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4sRaJGMu3j64Q/TM/c6rSJo1++yDm8MpWvdXxnU9iFN" - }, - "address": "noble1z4ncrq6qfpr5q03wqu6ctyp4c30w4nt7464m59", - "percent": "0.02%", - "airdrop": 59619.4930148126 - }, - { - "total_amount": 71636096, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Z+IWX08nP4mcuWQAOt+ZHfYXSFpjOhZzu2/9qqKGIQ" - }, - "address": "noble1z4k2czlve6x4wmru3xnxjd76myuaef0xh9lt2r", - "percent": "0.0%", - "airdrop": 1258.3411810044538 - }, - { - "total_amount": 6990608865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0awHRP3jtU/IesFpli3j2n6JuPIxMLX8IAayQMJ0Yhg" - }, - "address": "noble1z46x9kfmp64qqk7rxun6ll9peqapmswphhc5hq", - "percent": "0.04%", - "airdrop": 122795.23182173834 - }, - { - "total_amount": 116413870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2feknN+K4l9HEWz5LdccS0Wth0C74u2wqfvSnHfliPk" - }, - "address": "noble1z47zqvr03sek2efqjtz3y7wnh76ydw4dyzcsln", - "percent": "0.0%", - "airdrop": 2044.8960069110822 - }, - { - "total_amount": 160521811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhGMswETfQQpwj2MJUQLRrre2dEqVff8DEU5ZsRRpCX2" - }, - "address": "noble1z4lgatkm9hhpxrxqv647pdtdr962w08eh94azx", - "percent": "0.0%", - "airdrop": 2819.68471914932 - }, - { - "total_amount": 1162739192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlLcDmyRst+m8L1cUtwW6U+S/bzWwoJ5/WGsgA2B6q0Z" - }, - "address": "noble1zkznequmka3ns880703p9u927fhc56g2dskzct", - "percent": "0.01%", - "airdrop": 20424.376672640625 - }, - { - "total_amount": 9998884737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5n+kJqX39nd3J2GPv3EtI0hudhEk4nKsARloFhSmdOb" - }, - "address": "noble1zkrsknarufkkhns224h8hjjmld6rsd64r6slyl", - "percent": "0.06%", - "airdrop": 175637.8296869219 - }, - { - "total_amount": 406245592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0BZid+ddVCaujuL0NU0GjSCEhkJ7Bne3IDOQKaVY92i" - }, - "address": "noble1zkslj2g7wy74h7u5mx5ydnrvct3wpwddutcu0u", - "percent": "0.0%", - "airdrop": 7136.005262139543 - }, - { - "total_amount": 63778530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxjnI9ztNNpYqrEwu2Cs/fTfdZOxtj4A735Gu1JC3iYG" - }, - "address": "noble1zkj2dkly52wtaedze06ygeas02nx36rj7alzly", - "percent": "0.0%", - "airdrop": 1120.3172038147916 - }, - { - "total_amount": 283975687, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDb5FYmKtVxuOivTmCaaQA9lQLVfZiiVrBo8fxt2o/8" - }, - "address": "noble1zkj70zmcqdec4ulf8jt33uq8e5tmk0vg0dwmqq", - "percent": "0.0%", - "airdrop": 4988.243655211628 - }, - { - "total_amount": 71858620, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avzg9Og+Ji303uB+uDA423DGqZetoPx0XEcl+qP7OJRZ" - }, - "address": "noble1zkhca9zzsmzl0zj4kleg5tnwmyl6pegu262f7q", - "percent": "0.0%", - "airdrop": 1262.2499801796885 - }, - { - "total_amount": 76965016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvW1L/LIZtVHWAjzFMdWuh+O2E8MJQQg60Y9DI4bKYuc" - }, - "address": "noble1zke0lu3j08d8lnmeuf7xgxc0wh04r7txcs0h5w", - "percent": "0.0%", - "airdrop": 1351.9476149212078 - }, - { - "total_amount": 98408977, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay+uuDNo95ElodYYtLPuJSBaPBLhL2i0A+eysZkHPZCQ" - }, - "address": "noble1zh2aljhrv5n5t56820j6wk6pgrdma54e4qqr3t", - "percent": "0.0%", - "airdrop": 1728.6267015391254 - }, - { - "total_amount": 341786904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxqmDjGdQUQXEwuYY59PySCYGGGJ4WWcyvJ7NMCHEizp" - }, - "address": "noble1zhd4x0r2c5tcfhgwnqh9amrtz62anq4jds6wf6", - "percent": "0.0%", - "airdrop": 6003.740578370098 - }, - { - "total_amount": 4627584550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A471SmH5i833OABQ1BcX0iIcddwxgI0d0XMCMW7K8LuU" - }, - "address": "noble1zh0mvz5pcwdumxmfk2awwh0h93e2zphgkvfg8d", - "percent": "0.03%", - "airdrop": 81286.95633895186 - }, - { - "total_amount": 88784833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayvs+hiTPKGEt6H7cYnbeo40ygXTdA3xzdb3t2HzSTMx" - }, - "address": "noble1zcfa7c6q6wv200qqtfa0nmsp9774l5uf7xlqsv", - "percent": "0.0%", - "airdrop": 1559.571470959322 - }, - { - "total_amount": 251444885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Ve7HEHwL80/NWVkkE5hR879CHIPSxMCz6FySxtFF6L" - }, - "address": "noble1zc0xspsrjv24krgmslxza4zqmtva4qjnlss6p4", - "percent": "0.0%", - "airdrop": 4416.815979871782 - }, - { - "total_amount": 1127391835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZlLbzzef2gWclFWOaFzsLdju3VMRGVItIjxVY2qB+S" - }, - "address": "noble1zcnd92cqws6x9drmq2s9xgkphqg42mjfp9mq4s", - "percent": "0.01%", - "airdrop": 19803.474118811253 - }, - { - "total_amount": 50470046, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Uy5GEedE/XpNSizrucRu9djdrDjDK1clXLRfJTmMce" - }, - "address": "noble1zc4tywlcpm39nz5jlzjwfp54zw898n4vjm07ec", - "percent": "0.0%", - "airdrop": 886.5438073145291 - }, - { - "total_amount": 200763624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2h5XY7NW1MmR2JY6ied9p3qfK2E8SYmLs5kHLuZUHjV" - }, - "address": "noble1zcct8cppscspcmxp3cklld0xcra3wtmgjvlxks", - "percent": "0.0%", - "airdrop": 3526.5620243584194 - }, - { - "total_amount": 4096877000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJb6vgVpl/u7VZIxgqchgnx+eH+VODMm3uOZnkXdFpY" - }, - "address": "noble1zevqpgqzt8jq8z6hp9yara4pl079g7gvnv7n53", - "percent": "0.02%", - "airdrop": 71964.68443241216 - }, - { - "total_amount": 86117062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2P1M9Zwbd4plZ6acJdUuSdG9ktCht+lajRNcwgoUCgZ" - }, - "address": "noble1ze3qzejss6tcfdnshl6gkd9f3uwjmuap9yhgyf", - "percent": "0.0%", - "airdrop": 1512.7100938291467 - }, - { - "total_amount": 9430527882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aow+YPTN/zZhdlAXfLjVJwMa+rmn+gWj3Amqr+ZuZbes" - }, - "address": "noble1ze3w25z3q5q3calrw2mlmpxkhpqf249rcnmr5q", - "percent": "0.06%", - "airdrop": 165654.21980186232 - }, - { - "total_amount": 54538417, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VGaDg0G0toChsIOCVxPHxKBw+5x/6FFY1Haf6n7ntY" - }, - "address": "noble1zejq2c7mmjnhcszz66f492npfsw989mfxhvyu9", - "percent": "0.0%", - "airdrop": 958.0077627051784 - }, - { - "total_amount": 123111094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvCl9qSZs7v0MTV9nAeORjXoPKIs0ZvqH9xh475oVtrD" - }, - "address": "noble1zem49937930yrc2wzlls8n90tzqlrw2z676u5w", - "percent": "0.0%", - "airdrop": 2162.537715884326 - }, - { - "total_amount": 1551217862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiWRP+AU/fAGKjmBW/aWllNCzVcAQ8Rxnyv1Z3j9uqgc" - }, - "address": "noble1zeu4qkycg0ddqm9wca23p38q63zkmhplgzgk6q", - "percent": "0.01%", - "airdrop": 27248.292766600287 - }, - { - "total_amount": 52271630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ailmtl9hKwGlzUzXIVYKb5QjxMkae9l0C787GXLMymvu" - }, - "address": "noble1z68tn9f3z4fzkq8k57wxxpznj6m0ldfc5uacl4", - "percent": "0.0%", - "airdrop": 918.1899670695041 - }, - { - "total_amount": 54097458, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoZHhnHCQU6eM0z7P8vQKC8WVWoqGs174oSjsyNURWSt" - }, - "address": "noble1z6gf684p5rvj8pv2k29szze90jex9wge00aafu", - "percent": "0.0%", - "airdrop": 950.2619906737915 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A48emn/1VB2u6Yo9prS/tlbANTIVc6Bg78uzktw9dGGW" - }, - "address": "noble1z6dj9eshaaevuxthus2rx5hk2yqsuk8mte766m", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 60820922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiVyCg1LxMGzfxqu/OsLXywDJOIRtPW49CqT5VftVFEz" - }, - "address": "noble1z6k4f20t5409m2p439quwt0wnj8h4u83p00jn4", - "percent": "0.0%", - "airdrop": 1068.3646247174017 - }, - { - "total_amount": 738027746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1RujKzzJBXYMSMv0zxQPb3+fMABO16w8FxD8iIeHhcy" - }, - "address": "noble1z6eelhaspk2dn0rl50uvv5c8ace57rymjsvn9e", - "percent": "0.0%", - "airdrop": 12964.004983126035 - }, - { - "total_amount": 1006572890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah1RLvAhsRUCoTdcXODT53YO/oUmP7i81vHt8hsoAIm3" - }, - "address": "noble1zmqp9gvrn2hprzgltwhu6r8zqf7pfzsfmuzj68", - "percent": "0.01%", - "airdrop": 17681.19970091148 - }, - { - "total_amount": 216126346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VjecQ6HSX+2fifq/Mgz7Oha8xkjLFDzXLHd8Uk/qn8" - }, - "address": "noble1zmqngg2q92xerxf458xrdzmmvtdeuy7sf8au5g", - "percent": "0.0%", - "airdrop": 3796.4196355956806 - }, - { - "total_amount": 368007293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmoYG83wy7BTVluUbJpZcHW460SW/KfzXr9PzQg/X67Z" - }, - "address": "noble1zm85wh2u655053qsg2me23xvue8upesz57wppj", - "percent": "0.0%", - "airdrop": 6464.321166969679 - }, - { - "total_amount": 114418138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3g8FhHgfLg+lyGW3eBwt5ZljfIYSnjLouGxWh2qk2MQ" - }, - "address": "noble1zm8epp3rul4lsu47szwmjcuxxa5xekgfthv5sf", - "percent": "0.0%", - "airdrop": 2009.8394934761739 - }, - { - "total_amount": 188978137, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkvUDVqXxoc1y+dhwOpTSDveSfAuK/JaKyX2ayXVtmot" - }, - "address": "noble1zm2l2vqaf7dz72ug2q8a5h3q9yh2uvz4xshrkf", - "percent": "0.0%", - "airdrop": 3319.5412002435396 - }, - { - "total_amount": 57614379, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwUa8StyjdBezIBNE4NJzVM+0P5eDtaTkTgM9BFu69pZ" - }, - "address": "noble1zm37slm0jy2et73jsu4jfya4jvrtds5a6z6vxq", - "percent": "0.0%", - "airdrop": 1012.039317632527 - }, - { - "total_amount": 1735293261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0nc7I0aoli50BFs2XoGE8FvLVDkK8PwRL91UX4jUXN9" - }, - "address": "noble1zm77n5ayf94p2eqq96xgqt39q9fnskvhg3d7xy", - "percent": "0.01%", - "airdrop": 30481.713735988764 - }, - { - "total_amount": 122830228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhAXT8XvNZxhAcI6aMi1/iqKL4PtpNT7qgDZOKTdBROE" - }, - "address": "noble1zuphuqt2gxdpaqdt3xuldyhe0ag978rjfest3z", - "percent": "0.0%", - "airdrop": 2157.604096188691 - }, - { - "total_amount": 69952283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrV7xsS/P+L8pMX7Ml0q4oqxdeLU3QVtpImDXUDmcIV" - }, - "address": "noble1zu9ckk882f69lauasygvhddxzj8hek8a74vvdh", - "percent": "0.0%", - "airdrop": 1228.7637562518448 - }, - { - "total_amount": 500193926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjGeYLp3OcnYPJY89uZe7tXIGTeGd3QfEg3/kGtlG00U" - }, - "address": "noble1zujhphf37s3g6kd7axsuf7w85m23y2r2me8rsl", - "percent": "0.0%", - "airdrop": 8786.277459537918 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1nwzATGkMr+BMfgHDce+UUAaWdz7HNV6bVA+v4wm6Td" - }, - "address": "noble1zunqflj7dxp8p0p630cf7pcm38kp9k0wk9atw2", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 157874236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hFoPN34pfzn0o+/N0MinQ4yUmlCk49tzR9wPrDAppH" - }, - "address": "noble1zu5qpuj7kag70dhvmtclgfwuh42cqe3k3u6mfx", - "percent": "0.0%", - "airdrop": 2773.178099744797 - }, - { - "total_amount": 994193218, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3D5OgtwxjYpgkmSnz0iezUeqQzmMNH/aZhF7UmNdtMr" - }, - "address": "noble1zucye7xm9n9z60pktynl48sluzhjzmhl6n0887", - "percent": "0.01%", - "airdrop": 17463.74157637985 - }, - { - "total_amount": 75726429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8BZetnbTo8J+Jl9Sm6L4TEif8d1XY67f3eEVpDZvqD2" - }, - "address": "noble1zucsel8asc7wpw6k8dlex5zaghhsdznh538f9e", - "percent": "0.0%", - "airdrop": 1330.1909152211465 - }, - { - "total_amount": 153059775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AocYbPsAChxDCFzN8a3jDGG6YhoexYJRaO1KNaRH/Lur" - }, - "address": "noble1zafa3kqsye7jp6gh9hs3fjsl8ysag5mgyj2sr0", - "percent": "0.0%", - "airdrop": 2688.6085198972314 - }, - { - "total_amount": 77029584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkAcY7H0Il6dOYleTRlralgqhhf09vkctV3eKxZJFRON" - }, - "address": "noble1za2un2fnhm47wkgzslsc3nkccnq9znq264vuma", - "percent": "0.0%", - "airdrop": 1353.081799751368 - }, - { - "total_amount": 414925449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5D1XfIUx2yPLXsL2ZLNkAvpoB6EEDx1l7G2XvmKBeTr" - }, - "address": "noble1zawjkaz99q2kxvl3cudn0t307thmm9tg9fca8k", - "percent": "0.0%", - "airdrop": 7288.473390893094 - }, - { - "total_amount": 107996400, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au3X2n4uYiexlMZPk67FL7yoQP5GOpBr8bgXGOz/ldFb" - }, - "address": "noble1zasg8pqyqwvvwa23wem77tpmz60t0wu5vg4w57", - "percent": "0.0%", - "airdrop": 1897.036900506546 - }, - { - "total_amount": 2263979977, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax7uJqP6gLQwyOF9Re4lTeNOUVfgPXRfKjoxwsb1z9wf" - }, - "address": "noble1zasfpcjm5xdk8dg9h9e5swa63zs3datvutexzc", - "percent": "0.01%", - "airdrop": 39768.488193837584 - }, - { - "total_amount": 2495448615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8sLes12rKkL7rr5GzXn1+WBlGM6otzQ4UV3Bdv7slL" - }, - "address": "noble1zakwa82cdfe43qlve66pyhfxg6h8ptddg3jsak", - "percent": "0.01%", - "airdrop": 43834.406572561245 - }, - { - "total_amount": 1875217380, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzSshU4dPs7HTaUZENn6zuBALNuK+rcdrp4UrHr5+pIl" - }, - "address": "noble1z7d4q7vp92hwxqsrkve2taxhzgrm663znwe8g7", - "percent": "0.01%", - "airdrop": 32939.584711446 - }, - { - "total_amount": 67457381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzU3YHdQDWiuVFJlbvwYQN5OfuCXqAKa/uPmRE1yaTy6" - }, - "address": "noble1z7w0x22dj48h66her49mcrjaf9wuu3h75d7jch", - "percent": "0.0%", - "airdrop": 1184.938951377353 - }, - { - "total_amount": 368249048, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhOdxHrwkncYDzyYCV2Fqu5+p3mqjIxq4gaSCheEmGp+" - }, - "address": "noble1z7nr7u677man6kycahudmlr7sjr2vw7f9lkv5y", - "percent": "0.0%", - "airdrop": 6468.567772929527 - }, - { - "total_amount": 738672600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0B+aGvxExv160Zb30uef+AX+cLn9YtTtsWQmTty03g5" - }, - "address": "noble1z74ngefnhft9dzd2eaeee67zyx65jhw3a2wxkx", - "percent": "0.0%", - "airdrop": 12975.332322124734 - }, - { - "total_amount": 577868673, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyEqv1Plvr4xsxK3vkF5QwzanT0BB8Yg9DtBE5vZFiEh" - }, - "address": "noble1z7knckruv2r05d34pmj62e9ez5z5wmctf65vcq", - "percent": "0.0%", - "airdrop": 10150.692026102268 - }, - { - "total_amount": 483149019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6NrvuZRuq7h8Ttbo+wHCcLyU7rgHYe5JXaQaG+zSctZ" - }, - "address": "noble1z7cxan97gt7rzh96l98p9sqf6rfjnna33vuwr9", - "percent": "0.0%", - "airdrop": 8486.871020576042 - }, - { - "total_amount": 461855231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsU7QF+NwQOshBhXFquMTB8idJQEfZiBjzR6A/JZAjjI" - }, - "address": "noble1z7alcrzsjqz48y77wtpjnmcy047lkdd7d4kwgp", - "percent": "0.0%", - "airdrop": 8112.8298341331265 - }, - { - "total_amount": 234007868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au9XSBH1mXAgaoCMV1SP6uCz0uw4ygt33tNbQCjiPn4m" - }, - "address": "noble1z7lc0qcj460c2am3f9gwn2xxdmh3wh0tw4anpn", - "percent": "0.0%", - "airdrop": 4110.52183781001 - }, - { - "total_amount": 298869504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArA6RH1st1H/kUnJJPRZbx5C3YlAzF1Xjc5/xZ5OR4OY" - }, - "address": "noble1zlqmq2jlmq66e4zfll3h20jrmynvrf2nf85q69", - "percent": "0.0%", - "airdrop": 5249.8646021912655 - }, - { - "total_amount": 1161873189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlrxA+co5Lc1bNznM1T0GTKquxbYI5//CVEBBnh9bhlX" - }, - "address": "noble1zlxqae2zah2v68nntkckzlu0vy08vy5vf0tayj", - "percent": "0.01%", - "airdrop": 20409.164687361954 - }, - { - "total_amount": 64820614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AytEZc3856ZsFEtD7gYFDs0Z6Adc7iucG2mCp3eUja1i" - }, - "address": "noble1zlfyus88mcfpzf6vl7axmqv5xslemsl4t7075p", - "percent": "0.0%", - "airdrop": 1138.622182512484 - }, - { - "total_amount": 6453451742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0cnH6Ro6c9IjIE6W1k5/+E0Xgxn7EKeNTk2QvPRztgJ" - }, - "address": "noble1zltat33twv0596lqpztem34ruj7m29x9crkj40", - "percent": "0.04%", - "airdrop": 113359.66837980016 - }, - { - "total_amount": 16958637123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsCQ55rz2htsbxrkZAQWWHHXUh5z6bROFdtcY5WP2wD9" - }, - "address": "noble1zl3v88tqrjj98txp7vlv8aesy2f456j6pjm69k", - "percent": "0.1%", - "airdrop": 297891.0445591813 - }, - { - "total_amount": 563738071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArK51GljYhP9IgdiOVW/HDw+uDtt6OTrzrezWAy8iRK/" - }, - "address": "noble1zl7j6cp7hp9vf6v77lp65mjsjmw69z7knkf5z4", - "percent": "0.0%", - "airdrop": 9902.477516911484 - }, - { - "total_amount": 667352369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VhWkMPHs99Mjp/06KxzH4+FtI1wCAqdIIuxUhZHUwL" - }, - "address": "noble1rqte8zfw2vtammsh8weheq5etpmrm9rslycj6l", - "percent": "0.0%", - "airdrop": 11722.539544220555 - }, - { - "total_amount": 390905615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtcXjEYyytTOg7wVOXTuDHOmTUecY6HEvgobBGRJbNln" - }, - "address": "noble1rq3eqd9pmxsc44nukrw9a2jv6zfzhv5rxngh62", - "percent": "0.0%", - "airdrop": 6866.54718370432 - }, - { - "total_amount": 96025021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArO6aF3lVjDcvXAvDU2pevnGlfWWx3rdHeoe1i6lcN4L" - }, - "address": "noble1rqjrpkntamtyjf0yvswctmzdkqftf5z9d6hqdx", - "percent": "0.0%", - "airdrop": 1686.7507454777751 - }, - { - "total_amount": 105167053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7edCIIp5svYNS61iyNl9OGHh++S4O5E1izYL9cfa2+g" - }, - "address": "noble1rqnd75gg30np9z52pzgvggn9dx6hew9wxwtuhp", - "percent": "0.0%", - "airdrop": 1847.3373210452166 - }, - { - "total_amount": 91290310, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzTHdKGbi6bOXYpB96sAEUAShU1HGIv+KJgHdO6K7fP4" - }, - "address": "noble1rqkkamwhgqae2kszal6ajkcq2rf3szwxme8ts7", - "percent": "0.0%", - "airdrop": 1603.582033555579 - }, - { - "total_amount": 6484622435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8lAGAZ/HPHRRZqCNLLQurUv5zzQ9/eU0d4UQscQ60FO" - }, - "address": "noble1rq64uzvdnlz6x9q3c3z6pn2jjrwzfs7j83ymt0", - "percent": "0.04%", - "airdrop": 113907.2047313393 - }, - { - "total_amount": 425480711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AypabLRC+hc4fDoPkYtae71izRCr9HxyIKwX3eUfD+9r" - }, - "address": "noble1rqu6hz9eu3rmlrhnk0cm3pvreyacceqz80yjrr", - "percent": "0.0%", - "airdrop": 7473.884400042608 - }, - { - "total_amount": 56000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0F+2JLIFtyRvQOyFM9SPkrZP4b4QRuF72lcMYAnFLec" - }, - "address": "noble1rpzsuhade9t7h5qd4lzc5uev9r4zf7puc2apz7", - "percent": "0.0%", - "airdrop": 983.6815526107034 - }, - { - "total_amount": 400000265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtAxCbfzipWQXIe3TVlvSZK8jCPDW1PtJLROVPhWLW7G" - }, - "address": "noble1rpr3l7jcjhunpdxu8ffaxy4qy58r5j7jcdy9c5", - "percent": "0.0%", - "airdrop": 7026.301459283801 - }, - { - "total_amount": 58841156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXaoxMXi7o8IxJ+f4MlhWSMz3XNHS7l7Akl+7MhkLWu" - }, - "address": "noble1rptg468fgyhe7rq0pmh9llr3c76rg9affrq3cg", - "percent": "0.0%", - "airdrop": 1033.5885659194396 - }, - { - "total_amount": 1584573744, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YBHuf8MTRTQyp2VcCy9ZSyuaXV4o11mZYgNoF+I52p" - }, - "address": "noble1rp5vgppcxqglqjwvhxp4ype5gfst28z999hv87", - "percent": "0.01%", - "airdrop": 27834.213584358487 - }, - { - "total_amount": 1613705410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au1L6pE4OaV0XImWSbVs02VU6adZE7kNFcD8bnsvDOE1" - }, - "address": "noble1rpeeue3n2e684a422n00tq5rmttdjqd9qjgad5", - "percent": "0.01%", - "airdrop": 28345.932913662356 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhgCiM5xnJHoFlENvYXdMbCyeCbvQBzb52Z653q1F4JD" - }, - "address": "noble1rpm6mpq053q5ufdp66rqy84xgjauayk494jwjv", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 162938813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0mt63FP/e0CwXl1Vpo5Sz8bW8M3RKqfsgayJHxr1sST" - }, - "address": "noble1rzqxlp58qmds3af4h342r9tnk8pvfjm8qrmlfk", - "percent": "0.0%", - "airdrop": 2862.141152721162 - }, - { - "total_amount": 100340541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApCe8LiKELwuuOwTcIIRHNPV/gdOm8Q7j+EEex9+Cqj8" - }, - "address": "noble1rzyjrn5nxsendchcuafqklzgw9hk5dvgtwz2nq", - "percent": "0.0%", - "airdrop": 1762.5560564406776 - }, - { - "total_amount": 171894376, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmHMLctX8qqqiF7xYPT7tAOFNq9SNwUa1L+jn7CfveSr" - }, - "address": "noble1rzgf5j55snznf2hf5v4vp7cjl35mj5dldf8rm3", - "percent": "0.0%", - "airdrop": 3019.452261941572 - }, - { - "total_amount": 703884737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPq4ny203Cyo7ThMQF/oKj8eXV1JxDc49csQOtbRdb9" - }, - "address": "noble1rzgdc23zh7d8sm3g5vxx3thtpssu99ecxkzxue", - "percent": "0.0%", - "airdrop": 12364.25769555601 - }, - { - "total_amount": 362410213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApYhOSjLjtOSyta0CZOeaq8we7vdZQl89YxGRpI6iqc0" - }, - "address": "noble1rz3rd6fhuycejc6swvyt8xt4yx58smk4rkmgvr", - "percent": "0.0%", - "airdrop": 6366.004303675281 - }, - { - "total_amount": 137939736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amf0YphgTixlm8VVdIroUyPQ5Zs26Fx35bX8oiEhKw8c" - }, - "address": "noble1rzh3t3xa60etn6aj9zja6v2zzzdhnzs9nk3ya4", - "percent": "0.0%", - "airdrop": 2423.0138156284024 - }, - { - "total_amount": 472967070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLbOIC1BCSnpGFtCrKAM7Ro7Vj6lmN+hhOyqriiCgJ7" - }, - "address": "noble1rrz8s9tknvv4f2wgfj56dzu7ggsag7wma582gy", - "percent": "0.0%", - "airdrop": 8308.017531273845 - }, - { - "total_amount": 200192609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArkboFdV9fzwS79+FDaCPkYrHATWdWV4wqYXALAEbV3n" - }, - "address": "noble1rrrlpgf7fnlcs2ehh6dyesgs5v6pxdur3u7rl0", - "percent": "0.0%", - "airdrop": 3516.5317221840623 - }, - { - "total_amount": 60857194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hcMQNdAvsdIXtMohf3tf63QIuzZbevPoXd+8w8+HGx" - }, - "address": "noble1rrxlh066pkulsxpm8c6eq6vdsgkv8pwv0h72w8", - "percent": "0.0%", - "airdrop": 1069.0017693116213 - }, - { - "total_amount": 4931117773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/OFbRJ4mpV7hicBNc45n3aaVbagLG02czw1WQPS+83j" - }, - "address": "noble1rr4fm8m68287c4cqm8q8emy2rdtfuh90umtar5", - "percent": "0.03%", - "airdrop": 86618.74262590848 - }, - { - "total_amount": 50015739, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8aEeqz0hLXgvTJmE8f1gb2Fw5fMYH/dxQlvLeJFRP1J" - }, - "address": "noble1rrhfst9rrxun9z05mnxyvkvz5vg9gd4hyr7hew", - "percent": "0.0%", - "airdrop": 878.5635677587807 - }, - { - "total_amount": 135579709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A52wI0kovhfvf6JeOKueZmoVAwJzjAU9WMCbptq+lnv4" - }, - "address": "noble1rruyxtw5ay44q2ek4sdnsj0s9qzxap3ae5422u", - "percent": "0.0%", - "airdrop": 2381.558190207632 - }, - { - "total_amount": 51027869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtIumVjIqFK2eXsNckz4zRQyK4RHC42tLnWU9vx1ZT9J" - }, - "address": "noble1rrluzsxpk947trt2g6lvep4j236ryfjxzm676e", - "percent": "0.0%", - "airdrop": 896.3423822202783 - }, - { - "total_amount": 138305535, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxnBIWv6+HoqfCEZVk+gtxIG6zbO5xqi+g1ezzkToaRQ" - }, - "address": "noble1ryxrqc0yg6g8x544aamr7g9jlpqfwk8zva48hs", - "percent": "0.0%", - "airdrop": 2429.43934649025 - }, - { - "total_amount": 69534524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+W1R76tY3OGc7j5qfhRQ4Cq9xkcfQ4xcvhy8vjzhuxz" - }, - "address": "noble1rygyppvm9g33grcvmrmhj9jf9ztcvcd72vxem0", - "percent": "0.0%", - "airdrop": 1221.4255094351113 - }, - { - "total_amount": 1642491425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An0UF8l4dACtVWhe4cl1PGoos3E+MMSlWqROMUEkInCN" - }, - "address": "noble1ryg6rn0jqkn05aht7zgxqezd2dw2f8a4v6fld2", - "percent": "0.01%", - "airdrop": 28851.580626674408 - }, - { - "total_amount": 293234143, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aum6oZW/JjkTT71XMsABEZ0QC2XT46RXD4GInWIQSOGy" - }, - "address": "noble1ryfjy25gmqxkggyxjrz93lrv5tc9q3rz24zynd", - "percent": "0.0%", - "airdrop": 5150.875304726947 - }, - { - "total_amount": 218078237, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHmEhUEXoVRMfGuDcjObG+HLH2TcnA2RdursY6oaKO/" - }, - "address": "noble1rysvmwf0zgu32p3gktg2thjusqezspc8h3v0a0", - "percent": "0.0%", - "airdrop": 3830.7060493350887 - }, - { - "total_amount": 1000500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xnLBXQiZrbOLBaTYIKosrjSzi7HRA9QwaC7R40oWl2" - }, - "address": "noble1rykfnnpd3ud2c2vscfwqtlqnmf383c3wu5m6dn", - "percent": "0.01%", - "airdrop": 17574.524881910875 - }, - { - "total_amount": 50099304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzF/GbTf+xrdJkTe5/Ga/omp/w4p/tuaxjm2xZiw8yqq" - }, - "address": "noble1r92xpez906std82ne6y22vege4dcdyprnvlvv4", - "percent": "0.0%", - "airdrop": 880.031448989922 - }, - { - "total_amount": 307762178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay3pEAqKqg+7xehJwgWs7BLQRj8zBodczpDEAKLF7NLn" - }, - "address": "noble1r9tt6xcmu7nus669exdyccjaxdsvrqhv63x97x", - "percent": "0.0%", - "airdrop": 5406.071019462352 - }, - { - "total_amount": 236563916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArPan1fE+KEwCeU8D+uMeR/HBw/goiLWQXKjU/pKCjau" - }, - "address": "noble1r94ygk0npu3c6spe7z6q3h6z66pjmm6lw0th3y", - "percent": "0.0%", - "airdrop": 4155.4207175455 - }, - { - "total_amount": 91401343, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0IrAunj16xY7BOisGUYqPYrGfuLZ5XfuvUuKhV44NP3" - }, - "address": "noble1r9c00n6qh4n0kz0ux5kea4tcmfjf2nr47qj4f2", - "percent": "0.0%", - "airdrop": 1605.532410588276 - }, - { - "total_amount": 881274874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkQbgQVjG1H9l3+WcqK2gfurKD8yWhd7jBoscMXwx84N" - }, - "address": "noble1r9ly5a9chf8ll5p2vezczlmq24vag82sl3xla3", - "percent": "0.01%", - "airdrop": 15480.24707737718 - }, - { - "total_amount": 54685075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AilUfAAmJoObjO5nAtiGHOr2YQ2uzK3CMh0jgIkC+nQv" - }, - "address": "noble1rxp43vf82uaaazl59qzwuhesuxr0gglf2zyd92", - "percent": "0.0%", - "airdrop": 960.5839192970136 - }, - { - "total_amount": 60615981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At8GExMaU6ZGkaPJZLEj5gGGPoiGPT8hv05vvhYHQLv0" - }, - "address": "noble1rxsp7mmt43n70addg2nwmglnklmp2uwjstag6k", - "percent": "0.0%", - "airdrop": 1064.7646839839447 - }, - { - "total_amount": 242402518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnozOuxLRmBdBpgjgK/3HtDstKIfkbQ89cV84LqGrW+9" - }, - "address": "noble1rxjxkcrsg5wql0s3jvttxpnll9j87gj0dgx23v", - "percent": "0.0%", - "airdrop": 4257.980093981857 - }, - { - "total_amount": 1655346035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AquGV5evcPdIfaMw3DveQ97gfjkF8/3vrbA1y4nuIMU9" - }, - "address": "noble1rx58sylp7r84wr23r7tkvnths287s6panw85gk", - "percent": "0.01%", - "airdrop": 29077.381389585214 - }, - { - "total_amount": 120752495, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoS3K8OLFi96O3AX+UDWCkTO82mWGnkODXmsg1Haw7KS" - }, - "address": "noble1rxuk6wjy3clenpzhaae2wy4kn3jw95sf9dm8yu", - "percent": "0.0%", - "airdrop": 2121.1071743431467 - }, - { - "total_amount": 857206451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8r+nB46ZKfl3mcTw1dKmsj3UIwD6hibISHcKwl7bvSY" - }, - "address": "noble1r89t3arnclaz3554u67pg0w9ftkfppv3eufrzh", - "percent": "0.01%", - "airdrop": 15057.467368349837 - }, - { - "total_amount": 382216761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuVZqw9aff/kijyCJyQdBtr80teuAFvFJlkfX2lqnfBv" - }, - "address": "noble1r8vqsajke730sd8legwxt72n8c4t2tpdjr4dzg", - "percent": "0.0%", - "airdrop": 6713.921015969897 - }, - { - "total_amount": 1935086270, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anf5uXXs2ThMXt8qwm3og+tuYL3+SqYGSPKdOvqxhwQe" - }, - "address": "noble1r84290wlxpqfpaeea2rdmjzgea94sp5t2hqqts", - "percent": "0.01%", - "airdrop": 33991.22618766527 - }, - { - "total_amount": 61058449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgW2R6/VeNIUMY4o1/E/QaH9XNJKVVhUUkw2+tSv3Nxv" - }, - "address": "noble1r86j4dl7mwusrnwdvg8k3ud2zf628lqjl9ukjk", - "percent": "0.0%", - "airdrop": 1072.536962720026 - }, - { - "total_amount": 16333336272, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwBNmTIGF+/icIhdNLjrIgjaxX6MU1qzEY1rHZp70/zd" - }, - "address": "noble1r87swr5dpslnlls3v0689pq8ljscnyx3764t9z", - "percent": "0.1%", - "airdrop": 286907.1711313157 - }, - { - "total_amount": 179460855, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1kv3iZd26Bp2kiKwXafWeZrskIjOWhRZBlfCB7BfuxS" - }, - "address": "noble1rgyggmn3den77t6yck6n2cegw85vt6vhgenn8t", - "percent": "0.0%", - "airdrop": 3152.363079986506 - }, - { - "total_amount": 579000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzjzGSFUDROZ+P9A07JkMAXLl1gKCA2JzWViBtnzXiZu" - }, - "address": "noble1rg9vp3svsce4xg4uzca77n7f87c67z6q57cntc", - "percent": "0.0%", - "airdrop": 10170.564624314238 - }, - { - "total_amount": 73300725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7FTkyHWg9vwLX5UKRef9iiBidr/tHxRuFTOVgY+ioDA" - }, - "address": "noble1rg206wlgdykvjkg3d9k6j4j7exhw9uxu9d3ql7", - "percent": "0.0%", - "airdrop": 1287.581624562325 - }, - { - "total_amount": 50041736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyP5y0f6+sjNeRsS4loyRG6Ywi/BilJDDhNn0xEcC02W" - }, - "address": "noble1rgt2r9psgrh4x0rmkqau2llrgyc66khlh8p455", - "percent": "0.0%", - "airdrop": 879.0202243538381 - }, - { - "total_amount": 910411506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1KXWnTKDkb7ShdwxbkE/xFY9teu/UppmaIFAG7Jpr5p" - }, - "address": "noble1rgt0wm6cqm7lj4jt6qjv2dx2uhtqj5r0arh6cl", - "percent": "0.01%", - "airdrop": 15992.053638155872 - }, - { - "total_amount": 7538127067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai5l7mLLMBPQbXb/woqwtHlBv07Xrax63br3E7RgMvgJ" - }, - "address": "noble1rgtctkwpunj290jmkgulr7msupejj57yra488u", - "percent": "0.04%", - "airdrop": 132412.79530434514 - }, - { - "total_amount": 94133202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ODMYpZ69Z722Bkt99uWRBeY9Et4WESNxCOH+M3tehn" - }, - "address": "noble1rgjft6dgz5t5q898ejl7hj32rvy3t4j3avfwus", - "percent": "0.0%", - "airdrop": 1653.519540992446 - }, - { - "total_amount": 73275793397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26PNre5I1eSknvnVeZCUm3mYj+7JGEYzHizxYmaAyt6" - }, - "address": "noble1rg47nzw0gtawkgcfvxnqd8tya976uqu2l9yk5m", - "percent": "0.43%", - "airdrop": 1287143.682456109 - }, - { - "total_amount": 634176815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJFYGKoodVgwXzzKwFkaqwADXBTnlnJ8OaHRL4HhXfo" - }, - "address": "noble1rgkjym9u2g3c8rts9h98kceesjz7pdj0p47pa4", - "percent": "0.0%", - "airdrop": 11139.786321587695 - }, - { - "total_amount": 135540184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2qPCT+bcNd5CT91Sd//wx4cFaxgoIycS+QOwNGUPMXz" - }, - "address": "noble1rgh3ftglt05wqnryehd5vlzkg4xdsn6kpwdx3x", - "percent": "0.0%", - "airdrop": 2380.8639042546506 - }, - { - "total_amount": 669608982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0D96f/Qd6rfoVl4aDj4bBOnbQK76JeBS7WlD9DypicS" - }, - "address": "noble1rgedl4sqj3t8vrmp02azh35gqytrgfewkfds2c", - "percent": "0.0%", - "airdrop": 11762.178625997012 - }, - { - "total_amount": 446505320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/j/7hc7mfFI2IwLn1yAKfhleTt04HLe53gW5J+xOKGZ" - }, - "address": "noble1rgeklgx5tx689ld6e7wadpkv45lsj8pr8dx6jp", - "percent": "0.0%", - "airdrop": 7843.197257616768 - }, - { - "total_amount": 181950171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkooMGdsUPIuPx3Jb1Q31WmFhYD7+tTWSYU9L3SCYibj" - }, - "address": "noble1rfxmjgzh38yl5nx7t9gfz6upangxreg44zs4vh", - "percent": "0.0%", - "airdrop": 3196.089762626125 - }, - { - "total_amount": 567942784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0QMwGrYGq4Jl3JTyOHUc3nWK9hjtth1OuCo/c3nmtRw" - }, - "address": "noble1rf3yzg6yd2jpzl4z22xmudjgh778tvnhceperl", - "percent": "0.0%", - "airdrop": 9976.336420699383 - }, - { - "total_amount": 718927036, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5K3abx6ag3lWaZNQCBOEPlUH5I2ODpDjj4lhyH/u5ZV" - }, - "address": "noble1rfnf6gpxuwnszn296yaeg6xxaudvaww6ngpwsa", - "percent": "0.0%", - "airdrop": 12628.486839040912 - }, - { - "total_amount": 127836073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxkyzJOMIhUVvzA6dnkyiivP0Gd4EQqNkOjbaoSS8CK" - }, - "address": "noble1r2z9ca2u8ymu74lm9mx0nxt4hyw38y3wlm6ffs", - "percent": "0.0%", - "airdrop": 2245.535478005272 - }, - { - "total_amount": 91798129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+vQQw01E1hL6EkS/G+inD54qCDuZbG7eiAVT+Eq5m1L" - }, - "address": "noble1r2rmymxq34hrqp4rf5v737jpj8ghspcly20gt2", - "percent": "0.0%", - "airdrop": 1612.5022510978151 - }, - { - "total_amount": 70109880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjeF+ZK8Nqeh4ZouuGhIYF2RhS3KN6R58lMCaIAg+jc" - }, - "address": "noble1r29prpc6r94690g58xvtzc2wpe5qt4gytvrfgx", - "percent": "0.0%", - "airdrop": 1231.5320644955377 - }, - { - "total_amount": 8554105572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnbRHgqkXasMajzr6y9B7CwZUz66frpq/9m9uzi3j+xq" - }, - "address": "noble1r2dwrpnfq53g54wasw6dymjevnmk2q3enfmpcd", - "percent": "0.05%", - "airdrop": 150259.21161180054 - }, - { - "total_amount": 6277000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AubxWK6OQQi0glN9IlE5GoOXnT6VZyrJcnwCMJkJGiOx" - }, - "address": "noble1r2d3tkangdrdm642w8s30d6lsar47kchxgdfm2", - "percent": "0.04%", - "airdrop": 110260.16260245332 - }, - { - "total_amount": 682719822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At2T+0yoKzyMLIAlau66DSICnxpN+sL+U3B2VX/gmCEO" - }, - "address": "noble1r2jk26hj4y436q30sgc6eprnmystn979elglhe", - "percent": "0.0%", - "airdrop": 11992.480258983269 - }, - { - "total_amount": 657830624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiNf6yZcx2gY4qi6hs2e2+fQvblfd81GHSrioASww2pv" - }, - "address": "noble1r2ntm6lvqnxcu7vvmwpc52n60m6w4xuhln65mz", - "percent": "0.0%", - "airdrop": 11555.283028056927 - }, - { - "total_amount": 113876479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+g1T6rflkZG8oDyFkti+w3Ap7U2f8YKkfWHJ8HajFcK" - }, - "address": "noble1r2kht9xt8dv7lu6p2rsm3p5mjfnz6v5jxl6lwm", - "percent": "0.0%", - "airdrop": 2000.3248512242888 - }, - { - "total_amount": 690720131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5EqH2+OymV6Leskpe8L9RPc33SupzVDJtUROmIVqZtB" - }, - "address": "noble1r2u5q6t6w0wssrk6l66n3t2q3dw2uqny08u3q2", - "percent": "0.0%", - "airdrop": 12133.011622884796 - }, - { - "total_amount": 147668424, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqu/DXm3EU5BqR3lSi77F+WtKe17b9k2dtnMdaD37af3" - }, - "address": "noble1rtq54l6pnyh6qp2eqr6yp2y4pd6q9c5fn0ruuu", - "percent": "0.0%", - "airdrop": 2593.905439140994 - }, - { - "total_amount": 1557982169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awr4YJoQI83340CKCf4kOrbamnRn6TmKYbadyPXedbbe" - }, - "address": "noble1rt0x7matmh4z37v44st30l3428w2lsgdeh5nfe", - "percent": "0.01%", - "airdrop": 27367.112838244848 - }, - { - "total_amount": 163117062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2pFaRFbhl3HVBH2VdcYPqBW0R8uDuzwuGzAEi4K1Z5T" - }, - "address": "noble1rvr8mcz8nqz9sllz2xwl7xnl965dpz426e6gpq", - "percent": "0.0%", - "airdrop": 2865.272228668864 - }, - { - "total_amount": 60890509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw1Oe3DuXIAdhC94KQHsDD+XlJkUAmjmnEmap2u4HsLw" - }, - "address": "noble1rvfpyl3xvx6t3q4c3e6lme6nx93zxh7d6xeuzc", - "percent": "0.0%", - "airdrop": 1069.5869720067146 - }, - { - "total_amount": 68735736, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwInRWzx+ReLpSnA0r3jRcyuyM9rvDQBeT9wmy7eRpQt" - }, - "address": "noble1rvdrlne7s2lxay0pa3gyjyw0wnzwx2j2qwddvl", - "percent": "0.0%", - "airdrop": 1207.394205505704 - }, - { - "total_amount": 19417988121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7yJvOphpWlmvSYqZEfSB866lffRIsOn4JKP7GToaP4B" - }, - "address": "noble1rv0ktx7ptrndf5pk0yh2lk4dmjau25lzfqdl88", - "percent": "0.11%", - "airdrop": 341091.36970431206 - }, - { - "total_amount": 216530616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhznfjU8RNAyaALFg7QzXFbhkFMUwGdG6ED3bwjGYQND" - }, - "address": "noble1rv0af0mmqrj739g0qz8tgynwplf0le9tkn0z9k", - "percent": "0.0%", - "airdrop": 3803.520938118429 - }, - { - "total_amount": 1181471930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ri1BeRyyBwCQUnOBbFby+qhh/3R5a44pecehLjmejv" - }, - "address": "noble1rv4l0w78k5aar859gdh9e3n2y0na0s2pufvvzp", - "percent": "0.01%", - "airdrop": 20753.431115506508 - }, - { - "total_amount": 351654489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2i2OsaRU2/HIcWAWWiIaInJcoCRHr7bGT3OINR4l4Xw" - }, - "address": "noble1rv7jsal2x207j9wc24mt803cpkcmady46vj6ga", - "percent": "0.0%", - "airdrop": 6177.072030750777 - }, - { - "total_amount": 4892490700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWlF9nm4iQ+NqD25jOwWMybhBtffS6kHCyr3qvEls8S" - }, - "address": "noble1rvlkvzj5sa952ytmaac75h87klp7kd7y5ptp8n", - "percent": "0.03%", - "airdrop": 85940.22942695406 - }, - { - "total_amount": 198481161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKOtIfyndTRkLsOwOvqbaDpCHqX37KKTimWKTLPJ79t" - }, - "address": "noble1rdpmufg0dwe790nh8632sqvr6julz967p6wycv", - "percent": "0.0%", - "airdrop": 3486.4688681509824 - }, - { - "total_amount": 1940077263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2j/DR9RoCx1BzVGlpvJ7O/uWD93EsAjufRkD0q5/Mku" - }, - "address": "noble1rdvpudexdsc2y5yp7ah6tw6w8edynaa5ltd5yh", - "percent": "0.01%", - "airdrop": 34078.896683081504 - }, - { - "total_amount": 58077915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7F9Ttfa51gIbNS1bLIYcEdAy1UDUBhxhq4oWWRkJ3M6" - }, - "address": "noble1rdk8qx34q55pt3r8m9lsx268zufes8ewm8yz7c", - "percent": "0.0%", - "airdrop": 1020.181671421294 - }, - { - "total_amount": 362964499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/pDrD759j8bzAEJhMx/21oInaWEuR1x2GansEB1jczm" - }, - "address": "noble1rwp9agdk3vkgp6lw3k7geecsuvs8t9zjmxy8zx", - "percent": "0.0%", - "airdrop": 6375.740748551538 - }, - { - "total_amount": 71738850240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avd0GYaYxQS3tBn1EAgtIMKa6kyzz04h2nlN9PepWWuZ" - }, - "address": "noble1rwydv5jdmt8lje45ylxtr56aaw3e59nsa8n8ss", - "percent": "0.42%", - "airdrop": 1260146.1354748202 - }, - { - "total_amount": 649922267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8yzjGLBpzoojhHE7x4yZjRg9q8iRlfr1frH8Y9XrDgl" - }, - "address": "noble1rwfgdvfr20vmk8vnk0nqyjl9xqm3gzgwqpnuyw", - "percent": "0.0%", - "airdrop": 11416.366869264788 - }, - { - "total_amount": 51848717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9y26C1AJGDjy8s1+1TYj1/JhSTANyIRm3GOMQ072GVB" - }, - "address": "noble1rwdjjmzq9e8wx9255676lak7uzqzh4yjysuu4q", - "percent": "0.0%", - "airdrop": 910.761186418446 - }, - { - "total_amount": 103977382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsmRr5hLhHAPy02D46qlaAUQ+gq/fS8KogojXFvDNDq1" - }, - "address": "noble1rwjva3kzqmnrv5uqrh5va3zxkgtkuk0lahdg90", - "percent": "0.0%", - "airdrop": 1826.439867181361 - }, - { - "total_amount": 200549081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6/QtXKT8wXR9pLVyX0FwVGMXN3nc1XY38JpjMVkzSw2" - }, - "address": "noble1rw5eyc2cdjjqv06zgu97pl8lfr2sjr5lhf76es", - "percent": "0.0%", - "airdrop": 3522.793417370174 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rX7YNSAv0S3NTepfIwv4FCAc89HSDWWA4RhXNDNqfV" - }, - "address": "noble1rwhqv3xzam7v3ems2aky80lyw7lkx0qpjqp08d", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 202606773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0PoWhJhpceKuJwcLxUBvIRSXbkU4/KQmxgrHBQZWoPN" - }, - "address": "noble1rwa0zaw2xdp3uv3rvyq7q4a6wygccr45fg03zz", - "percent": "0.0%", - "airdrop": 3558.938304180078 - }, - { - "total_amount": 374147132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8tUevGd7NvB61XR+ZS2gylKD1dZchGnGvImG5qf7NWe" - }, - "address": "noble1r0rpcz6teu5tscgfvmlw5n9nlwg08yzahv5enw", - "percent": "0.0%", - "airdrop": 6572.171994832176 - }, - { - "total_amount": 54593633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1lF1VB9LoACx0e8GNfglR5xjxy1ezl0VS3bwMB+MSYr" - }, - "address": "noble1r0rhw2k3h26qntsguw7u5lmhz3pw4a03ghemhg", - "percent": "0.0%", - "airdrop": 958.9776727160526 - }, - { - "total_amount": 2115847364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21dvZQ3WK76ldAhGip86U9wIfbKfqMnoz+64fBf8Nsi" - }, - "address": "noble1r0yqz88vtrhn0rcwnysgzj5sm5dkwjjwk4cwrc", - "percent": "0.01%", - "airdrop": 37166.428930478294 - }, - { - "total_amount": 1019292741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxRnS5ehL481UQ4WunG04Lbh9TWsem8GydOu3FY/ZF+v" - }, - "address": "noble1r08sswekxmmve25465jgamtjkrugak6splmlzg", - "percent": "0.01%", - "airdrop": 17904.633321994635 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1RfvUloHBc/DSyCbrXm401/6yAx8HV2djVLYiJAGRDI" - }, - "address": "noble1r086c539nhw5t6khsjy3xe9x3s9f6l5vtyz2lg", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 80870420, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwrxkJIpUTBGV/YVEWSI7EzbX1PV+oTugfrJ5VeZzP9P" - }, - "address": "noble1r0gtpf5s4v3ryujwza96qe2v606cgywfxmk22p", - "percent": "0.0%", - "airdrop": 1420.548934033566 - }, - { - "total_amount": 3252832477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJMVVm+clXOWFb4pGUXyAEbRdNqdBQNW5VNWadzjwOZ" - }, - "address": "noble1r0fp6jmshk4hgkh40u5vjs6j3kgf2wvtus6kfl", - "percent": "0.02%", - "airdrop": 57138.41609567644 - }, - { - "total_amount": 12764403789, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0L1okBgGikX2rmucpfli2xhhU0bfkmnyzIt+QDkvzEM" - }, - "address": "noble1r0s0jr7fwzdq80c03za9srz0p5lkvzf9c74mae", - "percent": "0.06999999999999999%", - "airdrop": 224216.22388059762 - }, - { - "total_amount": 71322295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApLRdGocHwpOj1tYqKx4/Z0hW3icm95p4snt562t532s" - }, - "address": "noble1r0nt244k3qgt6vmc6kzmxhyeqltqynmljcf0w9", - "percent": "0.0%", - "airdrop": 1252.8290335956897 - }, - { - "total_amount": 69782922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmYJtv51fTXvfbl1mM09s6xEqoyP7BANO1PNZKOG1X5i" - }, - "address": "noble1r0kc25us4ej2pk3j0rqnd0h3uekva8jnnqud29", - "percent": "0.0%", - "airdrop": 1225.788804619136 - }, - { - "total_amount": 92009288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtosKAPx3LDatwxWJLMmdfXMMVACfOyPLAlrse9AlLAJ" - }, - "address": "noble1r06tu577rtnfp7wxr06tcj4kjrvxnm6asyucmk", - "percent": "0.0%", - "airdrop": 1616.2114156150958 - }, - { - "total_amount": 73545621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3VycFFr8vvB3Dk5MGGk7M/Xu8Bqb9bAG8N7Kfhtfwuj" - }, - "address": "noble1rspja2xkal9ywvp76tcdtxxvsg2q9edksvxazz", - "percent": "0.0%", - "airdrop": 1291.8834045178278 - }, - { - "total_amount": 64118724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Th8Togqi2ZJyh6sgCCrWdYQXD9Cj9Ac4jZaAOd+LQj" - }, - "address": "noble1rsxg4wzhmd2alp7glt8v5l4j7rpmfvtkvef54u", - "percent": "0.0%", - "airdrop": 1126.2929638524495 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlBsT/BErQDZL/Nl+7GOQc74KvMe1o6tjB0itPDJO31F" - }, - "address": "noble1rsfxhszfmyhnml0lwwt4utfm0w3sake769pvd2", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 1910182397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoAwUrRRb+EMTkc6IWy/Ju2L88VCcDwk92Roy1cwQuIX" - }, - "address": "noble1rs22exvye3w8ctn6y5wt2znsxk7xy2jmfmkmtu", - "percent": "0.01%", - "airdrop": 33553.77117947491 - }, - { - "total_amount": 129538760, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOInjWC4F/QkVMZbN3u+ZVo2wM05KBzHgv7CAfBdz8L" - }, - "address": "noble1rsd6qh6rp68rks5aau572ajcjf365kwpkfs2ml", - "percent": "0.0%", - "airdrop": 2275.4444385725947 - }, - { - "total_amount": 773066274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtvewIt6lULjZ9MCjAMF1cdJLXc94KWO8SzDhYdiSHTS" - }, - "address": "noble1rs345l7llh4ksfjg7a982wyw7859wtfckcafqh", - "percent": "0.0%", - "airdrop": 13579.48272641592 - }, - { - "total_amount": 60297576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJZRXkRttEzfXB/vxnirWGF5gqEVQDZ0YpFlbcsaazg" - }, - "address": "noble1rsntu55zwhlhcfghh2wtzsxkr67qszupww35kh", - "percent": "0.0%", - "airdrop": 1059.1716638989624 - }, - { - "total_amount": 68591102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al4394Y+pvjcxCXQ9Rd/I3tE8JsPaOOhIqn7XfRInDWy" - }, - "address": "noble1rsnwm4fntz8eud7v9vs55dupcj0vm57xzk3c8v", - "percent": "0.0%", - "airdrop": 1204.8536019756987 - }, - { - "total_amount": 657252408, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFKYiTS1rH47nzobRmWr6S+jcQjbt4r4r/qCiP7TFqD" - }, - "address": "noble1rs5m7sqxw6ks6960fv60zyn3km2y3j2hgs063k", - "percent": "0.0%", - "airdrop": 11545.126234974348 - }, - { - "total_amount": 125666824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8IPI3GFWP3M4xOSchLnaDi8SekkQ0SwxRE9CRHoO08S" - }, - "address": "noble1rshh5vctr54r2f5d8pjt7pa9jhfft36sapzl2c", - "percent": "0.0%", - "airdrop": 2207.4310097138573 - }, - { - "total_amount": 3277765805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2upkuOnvzREI7nj7ZqPwG2ZVPckTTsYqzxU6xFx7hpQ" - }, - "address": "noble1rs7clfpnmvsdwfnfg86852lzpwwvzud2nlgfkp", - "percent": "0.02%", - "airdrop": 57576.38850279772 - }, - { - "total_amount": 982022930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al0vcgeL8hOF0KqFCs7x3Ovued0ZF6/6usADdXGiZGRj" - }, - "address": "noble1r3pvn9yawgfych2vmd953fenu5p5xu3meq8x8m", - "percent": "0.01%", - "airdrop": 17249.96143717343 - }, - { - "total_amount": 421238890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AisJJuBGS+2OCBqGWYFt7uHBOZaGWl8rQleWg7e1Gm/G" - }, - "address": "noble1r3p7y3xff4rd22ft25jd86jga85e9zgqwvzpxx", - "percent": "0.0%", - "airdrop": 7399.373666700168 - }, - { - "total_amount": 241243179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoaFVYpgdtNpmCzqFnewosetq20k/flhET65ibdnQliV" - }, - "address": "noble1r3ytqh8tqyhdgh6x2zquq38jcwc98egjpj8hz5", - "percent": "0.0%", - "airdrop": 4237.615444204676 - }, - { - "total_amount": 10966446415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al/p0byD7LxPk/gbFLM8cDsAUGWr3Lle7yoxyZPJGwdn" - }, - "address": "noble1r3ffrj3l3z38n8ry2jet7sutlrl92n6ezvraf5", - "percent": "0.06%", - "airdrop": 192633.76850230864 - }, - { - "total_amount": 131484030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1MJyif0PJhSIrR3KLQLwPpiLLmnJknFVfKTVXuVKe9o" - }, - "address": "noble1r3jf69aqps3w26xyvgts2z7ydywjtz03vte7sy", - "percent": "0.0%", - "airdrop": 2309.614549534149 - }, - { - "total_amount": 256319055, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As4Xzhm2Io9VrReaEmvBaZxFWw1MSN9D/VNG3gKC7AWv" - }, - "address": "noble1r3c0ckms4x8fhnprmvlsm06ukukd8lj0qagm44", - "percent": "0.0%", - "airdrop": 4502.434392609077 - }, - { - "total_amount": 56893428, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cJgjNaGYkN8Rb8H90778mTmJp0mqfbI2Z28Eicy6bD" - }, - "address": "noble1r3lfhr56au49y92jy8uzvpy9z0efts3z8478gm", - "percent": "0.0%", - "airdrop": 999.3752783640227 - }, - { - "total_amount": 775432246, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiw1PgyclINVi8Q4f6RF2m2VUBLDF7pARVLfVB7pMDcw" - }, - "address": "noble1rjpl3q9a77p5889fn2tazeje6qjnpz3easzjv5", - "percent": "0.0%", - "airdrop": 13621.042780172946 - }, - { - "total_amount": 102967233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwQKTYog/36Ua4GbPNNy0KgS7E0UXb5ot8FjARkkxjZt" - }, - "address": "noble1rjkn2u75shs9z5kxpcg89sew2w2vtcc72wh4pd", - "percent": "0.0%", - "airdrop": 1808.6958504547868 - }, - { - "total_amount": 2328393648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiujsUrBNlUuDq69KorQgXZi3J1qApHImQ026FN++0MW" - }, - "address": "noble1rjh5s50r9t5qryrnjuq00r8k42rlv9st06ms3s", - "percent": "0.01%", - "airdrop": 40899.962120598924 - }, - { - "total_amount": 2021723795, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+sWSgwkJl4L4PuMcjHhX07hqHcyWt1E9hsmQa7Qlg98" - }, - "address": "noble1rjazewzf3ecvlgnx79kw54upg3zxlugr6wgnf4", - "percent": "0.01%", - "airdrop": 35513.07860027863 - }, - { - "total_amount": 1070362010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvaZQQlbN/WnRxc14F7WgSyUCEMO1YA6qw/zQo41aTk6" - }, - "address": "noble1rjas5f5rrd7a8x0j2l3pucr2kg8j0sf3yvyxzm", - "percent": "0.01%", - "airdrop": 18801.702925934165 - }, - { - "total_amount": 3523740184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A96qwp67MNvte12DTUPs1QPkr4cHF/4wPrGXn/2CtH+W" - }, - "address": "noble1rng585ex024csm3mqwrpug4lk0elfvxu734ks5", - "percent": "0.02%", - "airdrop": 61897.1109856044 - }, - { - "total_amount": 96042329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuTuuSlh8uN5NGg1/RVP5byrmGR5Tj3f1zAJfugCk9fe" - }, - "address": "noble1rnfcack83ur7kwc3unxcd4e0a7f04femqj8dhd", - "percent": "0.0%", - "airdrop": 1687.0547733404999 - }, - { - "total_amount": 139500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6FoNMBPYywZgrOTH7NbxdcgOfq3FiQ3UStKicvRKoDW" - }, - "address": "noble1rnc77s0pupt23z79uda5mrz6jfskdl57n8ky0k", - "percent": "0.0%", - "airdrop": 2450.421010521306 - }, - { - "total_amount": 162274493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApVqaKCx38JdzPZHuyxZb6W9hNoZQqBlAVa6QlcnU0c5" - }, - "address": "noble1rn752wqnddwm9wjmv4cyy80teh3kstrxamf24k", - "percent": "0.0%", - "airdrop": 2850.4718789884773 - }, - { - "total_amount": 110208967, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An9GFJP74k4adFy9bQmyyQSY7MKsUDTBhqEfb4gLY1Fd" - }, - "address": "noble1rnllxhmfa6mx8egp576v845dedq3e8afdnz0gn", - "percent": "0.0%", - "airdrop": 1935.902281610389 - }, - { - "total_amount": 472637824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7OHQ8fEBK1b5/sz9PP4rqTeDo1MPtT7I5zjFUtoUOw3" - }, - "address": "noble1r5trk7akrgukgcvvf852kwzgzydmla3r96e2y3", - "percent": "0.0%", - "airdrop": 8302.234080979722 - }, - { - "total_amount": 124277487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3PG5oK1eITeA21sKj5bxJQQr4GeSSOTfU/KB68TlQv0" - }, - "address": "noble1r5d6crmpytr6gpflemttk6vysd4gpu0axssz28", - "percent": "0.0%", - "airdrop": 2183.026274405652 - }, - { - "total_amount": 1485110084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77titFgFX2ulO2gdZy5taXekGD51jsoYLIhOF78Lzdu" - }, - "address": "noble1r5w8h3ap82ve73ndc5vcv33syrcku964h24rud", - "percent": "0.01%", - "airdrop": 26087.06059333808 - }, - { - "total_amount": 57145450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5oupWgw1+ef2SW88UnDwBMAJWyWd3YQwfRGSooHkPrm" - }, - "address": "noble1r5jv44flsjz6pgkl3k75f4xpk205k54hxpay5h", - "percent": "0.0%", - "airdrop": 1003.802231797095 - }, - { - "total_amount": 708479357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtKC4PcxsxhVYaktk9Q6RGraxLdbnxQf0h9UOyzQeWpI" - }, - "address": "noble1r5j5rra2ygu0nlc32m3m8s7xwk5ffajzdlq828", - "percent": "0.0%", - "airdrop": 12444.965605114157 - }, - { - "total_amount": 421810896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkOljTLvpQIk4pgrZxhHD3vaund+gm3KSqjI1anlX4hU" - }, - "address": "noble1r5h9584jdd5djhx2huu08yunmh8aknkxr48xly", - "percent": "0.0%", - "airdrop": 7409.421376524858 - }, - { - "total_amount": 72856793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3FX1QjhBnCgPkJW5/Wqy7hsjUc09Sk2NtxjEOZ3rdkX" - }, - "address": "noble1r5u2pzpuva83ud2cje4rqy32u0a5vcazx7m7df", - "percent": "0.0%", - "airdrop": 1279.78362957994 - }, - { - "total_amount": 16619128382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1qQN6Z6dgjxvR5JG7phbVCUQ6umgOS0RW6s1cifihzt" - }, - "address": "noble1r4qaw2swemz0s8t28snq5z6hsxjtnwnjgmcghu", - "percent": "0.1%", - "airdrop": 291927.321604328 - }, - { - "total_amount": 269964215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uLCfk6hhOL5nBRL/X5+2vBtTFUF/9fWl8Zievaq91s" - }, - "address": "noble1r4pme52u2pupvj4mdv5ar238v04883quul3gjv", - "percent": "0.0%", - "airdrop": 4742.121752866603 - }, - { - "total_amount": 70740250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aymg6trZnkH8Cw3WQOMNKULeyDPxyUD1iLF517uMQuyh" - }, - "address": "noble1r4zt2x6y0npzq46x7wwkdvp5fd4tf5yujwrqy3", - "percent": "0.0%", - "airdrop": 1242.6049812869521 - }, - { - "total_amount": 75805966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqG9if3mXlSCOoXeetnXqLRvT2fSjn5kjEXFU2Jy4Fe2" - }, - "address": "noble1r4lrqxmyzv6lm7fqknrd9khna6w8e3xxwj74gj", - "percent": "0.0%", - "airdrop": 1331.588041643468 - }, - { - "total_amount": 443113730, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXjZdwsxpdEh0YgwiqcUH+7r4mH5zkdyO2XjpLGxKgE" - }, - "address": "noble1rkrz3rxprrhukm5flz08j3a4dde4d2qstnqd94", - "percent": "0.0%", - "airdrop": 7783.621462670001 - }, - { - "total_amount": 62000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFuHtA7dD5jSCgttaTwaml8IYYngm404XXAj5w25xGW" - }, - "address": "noble1rktxfugu9avgkztya0umcmzxjt9tty4g5kdn9e", - "percent": "0.0%", - "airdrop": 1089.0760046761359 - }, - { - "total_amount": 1100920201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlnLgt4xO3I+nAXBM8SMvAm++4EVZpy5YD711jf2w4u" - }, - "address": "noble1rkl25tdcswkrs2lmpmee7r0ap5rxyczu3jyhzc", - "percent": "0.01%", - "airdrop": 19338.480225360137 - }, - { - "total_amount": 1230327002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4+apaFezBENabBnwmvIPFQkpJx5hteEt/jPs5053OcJ" - }, - "address": "noble1rhq2vjyvzxdcnfcywxug9gly2vzr29ephjgwpm", - "percent": "0.01%", - "airdrop": 21611.606706182716 - }, - { - "total_amount": 90122063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvtRB9g9+HhAKV7PR447EM+WSVH8E2U+fmYnCf41xwt+" - }, - "address": "noble1rh2kr0ly65cth9tg8xxwn52wdqg6hmtvemkf67", - "percent": "0.0%", - "airdrop": 1583.060908148565 - }, - { - "total_amount": 58251686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnLgizS2tcRsbqZzhbhqCmrS1QRmcJRpmO7DjYROHilO" - }, - "address": "noble1rhty3epxrygqm3dlrg7h27mxn0gl8adg8y4hxj", - "percent": "0.0%", - "airdrop": 1023.2340879762711 - }, - { - "total_amount": 393948196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJ44H7vbCgvqidXqsm+psFapzvbDi34hMCt5SRAiSny" - }, - "address": "noble1rhtflsnmpx9y3hzx4dej94jsr3kgx9gt5qlx82", - "percent": "0.0%", - "airdrop": 6919.992376597603 - }, - { - "total_amount": 152761804, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0u9KPnqoOeVzap0dVgF/fWqMLTU6C+ZR7rIhfFs/E0b" - }, - "address": "noble1rh0egxh89ah89rc0rnzu9dru7ar44geals36z4", - "percent": "0.0%", - "airdrop": 2683.3744381845 - }, - { - "total_amount": 1884751478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5rcP2hcj8neSt//oUZEBy7dVJLdqDdvLhnJpXsJwm4k" - }, - "address": "noble1rhnr6kjcnl7x4ac8d9q5d5jx2kn6093yapy7a5", - "percent": "0.01%", - "airdrop": 33107.05821722068 - }, - { - "total_amount": 189303446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/8Ry7paJbtu6g6SwgzxxYDIM6qji84lRB53gDlkqDjK" - }, - "address": "noble1rhkxnp294ejvj8erasyy9frmqpr4gm6vvl9at0", - "percent": "0.0%", - "airdrop": 3325.2554942113657 - }, - { - "total_amount": 101682400, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyVBXScqYBMWD/VHT83g+v0led8VgFh9QnhqLqRuUUT2" - }, - "address": "noble1rh6ulcuyvwulds6j6rj0fagaqmh09u4vks52ld", - "percent": "0.0%", - "airdrop": 1786.126805449689 - }, - { - "total_amount": 67670955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+xev4Ed7x1dns9bYi8lvv7gT/y1MVPxYlce+XuXKUhg" - }, - "address": "noble1rhuw80xr8569tcztkqars6xv04ju8j3rzqdmc9", - "percent": "0.0%", - "airdrop": 1188.6905371615903 - }, - { - "total_amount": 2567828938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9UWUeFwh9VstV1sXlhgmlPMGf1VEjh3QOiV5gJk17Jr" - }, - "address": "noble1rh7khaeq802cajsn82gc4lvjeuxazelj9ctzs3", - "percent": "0.02%", - "airdrop": 45105.82065304525 - }, - { - "total_amount": 308278189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hpmG9MUa82xJCVvJopTF7G7alk3SRwF/te9wJTLblV" - }, - "address": "noble1rhl2k66n8j5zs32h938zudzcqcj82czkzxusl3", - "percent": "0.0%", - "airdrop": 5415.135135563141 - }, - { - "total_amount": 252136969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmbZ4oUx+GWVQDUo2z+NB0YzOpj9g4Px/n8H3EbId7aC" - }, - "address": "noble1rcp29q3hpd246n6qak7jluqep4v006cda0ttzz", - "percent": "0.0%", - "airdrop": 4428.972948865658 - }, - { - "total_amount": 52285273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmcEFFNNdaUdtST6+a5OIxJKz21ouArh4slubG+TKtCm" - }, - "address": "noble1rckjyht7dl0uhm9qk8k6f2llk0mtz5cyz0xvr4", - "percent": "0.0%", - "airdrop": 918.4296164877588 - }, - { - "total_amount": 1438379968, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiia756MaDntn2Z5XawPWV1erPQeNsn1pmqm55y1wBZu" - }, - "address": "noble1rcchqehnj3h2w67fg53u6x57r92skl0hend2w7", - "percent": "0.01%", - "airdrop": 25266.211431542393 - }, - { - "total_amount": 82714381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+P4HMI+08UtWO4Igk2QsAnpPCMHqNR6Hjjf6FYDn+QH" - }, - "address": "noble1rcchxv6jacp38wqw644ecynh8yl7dzfyd2gww9", - "percent": "0.0%", - "airdrop": 1452.939477237737 - }, - { - "total_amount": 2925424157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A65lTOpj6LVFYp506PYKurYfWUfDKapmXN5acQrxDUGu" - }, - "address": "noble1rc6d2fuh7e00wqmls7czngljwwwl3gd97n5j3c", - "percent": "0.02%", - "airdrop": 51387.24601433247 - }, - { - "total_amount": 408301490, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alz3WQPhuK3ocPMgqQlJvY8g0sgu6r0slLwSttbkduPe" - }, - "address": "noble1rcuft35qpjzpezpg6ytcrf0nmvk3l96qww5nee", - "percent": "0.0%", - "airdrop": 7172.118636008279 - }, - { - "total_amount": 530170314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnuadAqY/Kn6ARsnMbDN5UhAXflhaKZnDX2TazXsmOSl" - }, - "address": "noble1reqhvqh5m565fjuh83leykenpw7aqngtrmr98h", - "percent": "0.0%", - "airdrop": 9312.834957564717 - }, - { - "total_amount": 3310215528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvZ6KHhF+rWW1TEXubbxPvDIHQyMRaZ91kimOo/dX+MU" - }, - "address": "noble1rertplfaqqjdyu5m0h8tdtu0xuudf8ey9gxeqv", - "percent": "0.02%", - "airdrop": 58146.39196534106 - }, - { - "total_amount": 58828273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDxQjI0RIx4Z/reLqVQsGq28yEskK2zkSn2f7OCfBLO" - }, - "address": "noble1rej5vcfqatlz0cd3e48eapjr4jkrx37ujatsu4", - "percent": "0.0%", - "airdrop": 1033.362266465113 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A41dTfdpjUo7MCJlTmlsf+9K5JDbrVOEE/qaVR9Xl0tJ" - }, - "address": "noble1rejau380c05ety566gj5phhuet846fe2kerruv", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 138486130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6U4cVPV3/hWLsjgG07G7QqH4E7Bs9BX1TdIbkNe1tcQ" - }, - "address": "noble1rekersndpvckl7l0qus3f2fyrwrrhak8uedf3x", - "percent": "0.0%", - "airdrop": 2432.6116316687094 - }, - { - "total_amount": 1505616029, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2e17TLSACf13yCIw+COSDWSXkKrOYyHZ43yWqZIMyBB" - }, - "address": "noble1rehqlzp93lkleu8fyjfkpj24x65chu9swzk9gj", - "percent": "0.01%", - "airdrop": 26447.262732897892 - }, - { - "total_amount": 88670153187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AguwRnscV8hrsR8xkKhmeCzTa2ZsyDDSm7dIzWbL8HeL" - }, - "address": "noble1reeywehc76ndcd3gkzaz3yasdk7nfxc0fysuux", - "percent": "0.52%", - "airdrop": 1557557.034950305 - }, - { - "total_amount": 88274582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aitq3S+C26hE+hUv3cBRYZEJguGEYZywi3wsE9yNlJU9" - }, - "address": "noble1reaa5ec776ea3uczejl6pe5elxgcs7nl4nt9q5", - "percent": "0.0%", - "airdrop": 1550.6085335325154 - }, - { - "total_amount": 135857018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzhjzvMa1ZAi5dRL6wHljEueMpZzCbsRUlZQKIlFS3GN" - }, - "address": "noble1r6zy7f3x45m0naw64uuv4ktns948pnmnj4uve2", - "percent": "0.0%", - "airdrop": 2386.429328558934 - }, - { - "total_amount": 15276091088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AieuVm7aNnnPle+l0HIMixVEjDsKnG9htjw3jVCnm7Q2" - }, - "address": "noble1r68g24pjncx5mzrc7pfj9jvyxkx7jph74wxd5e", - "percent": "0.09%", - "airdrop": 268335.8749868995 - }, - { - "total_amount": 79099267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArEQNxTO966jRaLIn5l92x3mw5cPMbG1Z7LGrhshDfgQ" - }, - "address": "noble1r60s04lufgt60uckuahxgmnhuj66p9uruar2jv", - "percent": "0.0%", - "airdrop": 1389.4373173737247 - }, - { - "total_amount": 105217981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhUIS6pbn79XrEGyBM7hd89m4A+RUnRR+8/5A46enKy+" - }, - "address": "noble1r6sgv8zynqw230497x6uy4mde8hmp73cgua2qe", - "percent": "0.0%", - "airdrop": 1848.2319091543482 - }, - { - "total_amount": 86911987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxrHTe2SaFnYeXa+xIXY41k9ilHSkXfGx7+3iYlk8/3c" - }, - "address": "noble1r6nj99d8k5tcjh3dakxyas6vxkwpnnqujfvsug", - "percent": "0.0%", - "airdrop": 1526.6735412971657 - }, - { - "total_amount": 649057543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At2Nvy69B7OrIQIMpXcXQDZQzUvZBvKlamJttvBOhYFD" - }, - "address": "noble1r6h7w64333j4zderxk8huumpu2helrkfqtujkz", - "percent": "0.0%", - "airdrop": 11401.177350570151 - }, - { - "total_amount": 677247961, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+O/p+PlD8UfFW6vs8pcLdKSeCDT6/xXaEc8b1QJHFf9" - }, - "address": "noble1r6exsau592qz8s5slq7t60lhg3390q0ymkm6p0", - "percent": "0.0%", - "airdrop": 11896.362960337736 - }, - { - "total_amount": 293035768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiOenr/UBEd/2nPu9rtGBvddbJ/MDPwrXPPRmwsnHuW9" - }, - "address": "noble1r6u5e6uw5drus97wxagsa6hfnmztwpjj4emxu8", - "percent": "0.0%", - "airdrop": 5147.390700655535 - }, - { - "total_amount": 267612136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9sxpFVQp//pHKhgm0HDe98GFAkL1zS1ay2ZB2CAjRtk" - }, - "address": "noble1rm2sjpprzqamt70ygt3y3dxaqkpyrupmgzkq7j", - "percent": "0.0%", - "airdrop": 4700.805739963334 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhPrJaIfCsyI6QhYezs92NTqLGzlxAL+zXVyzKtDzoOR" - }, - "address": "noble1rmvn9m369snsmxflfv4ktrs6n40rsvs49tc893", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 385425206, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyuY/WkzGdLzA85qbnNq+LEOye8uyIObiahj+c/2Tgn8" - }, - "address": "noble1rm366nm9aypf4n29n7wdt6vjgs22p06cy322ps", - "percent": "0.0%", - "airdrop": 6770.279733096076 - }, - { - "total_amount": 50037133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aud2uKIF9fHOkDd4n7C9C39BY0oJwwUwIAC6d4PC0qPV" - }, - "address": "noble1rmj5s2an3px7dudjvt974xmcn4csla3adcrgj7", - "percent": "0.0%", - "airdrop": 878.939369243362 - }, - { - "total_amount": 56255943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iNz3fLYYd9zh7NyWblk8YgoOTEvgFs5wuP18WiKelz" - }, - "address": "noble1rm5qxlr352yhz3v4pj5urehtlgs7frnl2cgudl", - "percent": "0.0%", - "airdrop": 988.1773813182007 - }, - { - "total_amount": 51144633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7UK72Ze4leVzKdXGH3vj/6X4FnG+FN1RRfHqib2RDBo" - }, - "address": "noble1rmhxagm7avctnuu4ul03sh8glu4a7lraa6h37u", - "percent": "0.0%", - "airdrop": 898.3934285204398 - }, - { - "total_amount": 408117379, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7k762urek2jOAyMiGCxfUIux56KCvWHrtQS+cTBNtPq" - }, - "address": "noble1rmhtxuqdjydxe8egu88xtgk4u8uvnvuhs3pqya", - "percent": "0.0%", - "airdrop": 7168.884589680909 - }, - { - "total_amount": 110941830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7wcQ+0nvKB/LvJr9xMGkNM/gnJ3qdJDJu2Q1Ze66Op1" - }, - "address": "noble1rmlx3wjagktr473kaujmfp7tg8m2lscmg5425s", - "percent": "0.0%", - "airdrop": 1948.7755639977272 - }, - { - "total_amount": 122803837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AugzZGxO+lykS1L2JvMcNWWR6paLUXW2/oQjssNwakeV" - }, - "address": "noble1ruqmwje652d9dgruqexyjr2ry62wmpx8xwl82a", - "percent": "0.0%", - "airdrop": 2157.1405186912816 - }, - { - "total_amount": 2022920129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4PHggDQU8S7WV5J4skqgYBzGrXlY4DJkXMkYzF5wOYu" - }, - "address": "noble1ruzff99wnlky2vx02dwdncr42rq0z2n6cg9t4j", - "percent": "0.01%", - "airdrop": 35534.09309468151 - }, - { - "total_amount": 61085675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqtuHxZro+7psz3RJPYxkz4seafqNMye56O+k7W1wj6a" - }, - "address": "noble1ru8n0ryexq33uerw28wk9s9vrjwjtyazvz4zjc", - "percent": "0.0%", - "airdrop": 1073.015207612015 - }, - { - "total_amount": 380169020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9U+LowFrDenEqkmCUyxl16V+V2MwC85VSc7UhygHQkM" - }, - "address": "noble1runc0rzlemv6graupfarmwu6wwscxmncxhxwkg", - "percent": "0.0%", - "airdrop": 6677.950925858742 - }, - { - "total_amount": 209559674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A64EJAC2mYfKYzEhC/dsCAAPTviohIo0ak2Jpc1R1Elm" - }, - "address": "noble1ru5gjgmcrjzeplxmtd8kkklr0rxq8gh07vjt7z", - "percent": "0.0%", - "airdrop": 3681.0711693734443 - }, - { - "total_amount": 122769884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+nFoz7XN84PNvOBw0JTNrj9Lj6843IBr22W/8iKofPS" - }, - "address": "noble1rukgach9v7znq7dajy09vwxy9qf9ql7yl9d89x", - "percent": "0.0%", - "airdrop": 2156.544109052785 - }, - { - "total_amount": 756201320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuAtjVOEEpulrKcnuY4kOc6xju4oEIzdHf/2EJ3EGrSj" - }, - "address": "noble1ruuqqmf734xx7qf56xdksu3ulrgfx4925dhk9f", - "percent": "0.0%", - "airdrop": 13283.237295426134 - }, - { - "total_amount": 85980918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AunPGJb1RVPw6POEkYRwFjz7qRj7pC+UnimOk39PPrrt" - }, - "address": "noble1raqjqyh4kp5paf52yux5m54txnvfpvkukzja9f", - "percent": "0.0%", - "airdrop": 1510.3186234488142 - }, - { - "total_amount": 287298726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1vQYxB4sJvDKFWY8ZSt2luzHIldm6ZYxlyfnb7MFOBC" - }, - "address": "noble1ra94senfyu04pnyf02j5gd43vcm3cntm9r2ep6", - "percent": "0.0%", - "airdrop": 5046.615300977805 - }, - { - "total_amount": 1789500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah+uXaSVW7vzZIalNlGd7+/GRHrrvjHDd0kWo/wYNAdl" - }, - "address": "noble1rax2qtn40ymkfpx0pmlyfcuwgzt7kqyfxt5zqf", - "percent": "0.01%", - "airdrop": 31433.89532851525 - }, - { - "total_amount": 1430311355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4lauusQb+VXnL6/FKbD7MZ28oser5/UtSw/rKvrc4tD" - }, - "address": "noble1raj3t5kgcnjphymxfzrhpzwkf9dakdjux8d6gk", - "percent": "0.01%", - "airdrop": 25124.480257198557 - }, - { - "total_amount": 157815097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3NpqrqGqSnbeHhMXhqJjei99UX0mJG1MbYp+/FOhXWr" - }, - "address": "noble1r7k6eycczakfd5qa2vld9j3r04ujkpfgu833v4", - "percent": "0.0%", - "airdrop": 2772.139279328014 - }, - { - "total_amount": 588163939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqP2uRruInbH6cZ/Jw7xgcoNb98jXvlQTCz/U9apBc7U" - }, - "address": "noble1r7mul5yxz4e44dlxm0s5r894g3y2tkkqg4aj8q", - "percent": "0.0%", - "airdrop": 10331.536012591912 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atpk0TKJ+Zer+DEtmWgvCn672yzGCSThIckAxqK9Fr55" - }, - "address": "noble1r7l96hrxf7zwpsdm29weydad26fp92d9lum3rz", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 50095960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A25BFcvzSf/h3xJTsqUFVLYQmWjzuwk9eZ3S3hhgnFXc" - }, - "address": "noble1rlpl6qp0nk6xkcr5jk8u3mkvl4g58pwmss5jue", - "percent": "0.0%", - "airdrop": 879.9727091486375 - }, - { - "total_amount": 372885391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6evtfnv2G+zm5tM2mDwZNRR4MPTj+OkSg9QxVGTHLTP" - }, - "address": "noble1rlgjxqp3rqrwssq84wtlnllqndmq4xjfs94j0t", - "percent": "0.0%", - "airdrop": 6550.008577941594 - }, - { - "total_amount": 3956559279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar18X8xTFLrrFJE3r6d1wEQVW3+HFKnyj7K1XxFFszcM" - }, - "address": "noble1rlf9x4lzp04vl3eyt238834pzq8hakr7jydrqn", - "percent": "0.02%", - "airdrop": 69499.89954576796 - }, - { - "total_amount": 98507197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsLj0tMJMnjDljCDrHBBuWzj4VhbYBYLxOHb3ldN2WfJ" - }, - "address": "noble1rl2exhekmpvxrjps90nv9h53s2d3rtmapecgmt", - "percent": "0.0%", - "airdrop": 1730.3520087194365 - }, - { - "total_amount": 875948674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84ob9e8EyI1xh96eN2B2hRTJXXG4/XostPjim96LTqn" - }, - "address": "noble1rlvzffz522tsvgdrksaa7hmylljuhc52df0pvw", - "percent": "0.01%", - "airdrop": 15386.688422278696 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awa3mPW7pDiKmRxTwRLWIs2/pLv1kjBccVblxSmCwZaV" - }, - "address": "noble1rljzt9dczg4jxz8ekppfcgxe6pjtkvzc5g92ex", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 50238507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhwYjqKPZ6aQeeK/JYNX/svNUDEo6aJmmYzsBcAt8+O9" - }, - "address": "noble1rlj87qcqf47qv2nve60a28a2x6ue344sr55ycr", - "percent": "0.0%", - "airdrop": 882.476652975066 - }, - { - "total_amount": 544865560, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aykmhu3i6JHUJ1XFYsj6U92Day/MjO+wGq2qnt45NAWV" - }, - "address": "noble1rluvqde40xlhrzms83m7hn7zkvlnx2uhzfy5xw", - "percent": "0.0%", - "airdrop": 9570.967857587508 - }, - { - "total_amount": 4165790982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AodIYu0MFl5DgDflUo7QQj7LsgKIhM3IJ12s4HbPnaJY" - }, - "address": "noble1yqquzz2jrl4hvmny0l2c8jxv2f5yk0pmqd6rdv", - "percent": "0.02%", - "airdrop": 73175.20966116834 - }, - { - "total_amount": 52001209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap25Zi8YU6avRkVvxV0JXqcxzmllPjSJrRbGtEWa60ID" - }, - "address": "noble1yqxtj0ke9yxn2vjpe0v5gqc5zptfrzexn5aflc", - "percent": "0.0%", - "airdrop": 913.4398215491731 - }, - { - "total_amount": 175529724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwAMwPEl0c+0RxLwxK73W2OAmvzaXPCYFZB4kTg6vcZY" - }, - "address": "noble1yq8tl54yydesau7fkc24ywfkc05ldnek57p40s", - "percent": "0.0%", - "airdrop": 3083.309847029433 - }, - { - "total_amount": 1070926217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4SKxIG7IPYQLrz9N1/D6hwzzNsjqdq8MJkPeB86NXvd" - }, - "address": "noble1yqd7fmrl854tkpcx3fws06z0arycmh85kprykw", - "percent": "0.01%", - "airdrop": 18811.613640536914 - }, - { - "total_amount": 696991297, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5NXFFLrzoSYowW48IrPUGW9kqibXthsLX/7y6wzQlRT" - }, - "address": "noble1yqjqknx7slqumknypznm8gy9ztpzqnvpfn5ygm", - "percent": "0.0%", - "airdrop": 12243.169306948357 - }, - { - "total_amount": 294338088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0sQTM0FuKo06y4TonRkXjIQDFKHoRgRWLrH5aWr74ld" - }, - "address": "noble1yqe92ysnulgkmjt4wa8rzg690uncgtp5vkwu8p", - "percent": "0.0%", - "airdrop": 5170.266917791177 - }, - { - "total_amount": 61578412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnN9cgxHggyYDbIVJXEOXtKwEiHFI1O4VirFTBNJMofn" - }, - "address": "noble1yqed3n9tyw949kdc3l59nr6xvtwlruc7twtaf3", - "percent": "0.0%", - "airdrop": 1081.6704986332425 - }, - { - "total_amount": 92004047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag0jP46mOaC36qxuaCMGWVqdpdXeaQbxmsDydb5T8zMq" - }, - "address": "noble1yql4c7rejssu98lw3u6ddegdueexxjg3nkyjej", - "percent": "0.0%", - "airdrop": 1616.1193535612167 - }, - { - "total_amount": 75227902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw3cZGO7b2ilrJbL6odYJ1kbt6qf/HNFb/H//hnd2xZJ" - }, - "address": "noble1yppvgxamxma0702j4t00l53hkl2kfkl7u8z0ew", - "percent": "0.0%", - "airdrop": 1321.433918553676 - }, - { - "total_amount": 1717932409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak7j0tC/gqEBUnvos8CCYCxwZf+4UPsIrTPKCXaS7cLa" - }, - "address": "noble1ypygpcq84faneh06cw0m3t2qtsyl5nj4f0mrl7", - "percent": "0.01%", - "airdrop": 30176.757488667252 - }, - { - "total_amount": 326527446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+DIMCjvGXNTf23//j0aUPSIII0IGetYUbbWgNFDEO3v" - }, - "address": "noble1ypg9vhznp93ej3pdd9pq0q6l3ww2qhz5mj65n4", - "percent": "0.0%", - "airdrop": 5735.696875915851 - }, - { - "total_amount": 545599605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmSRCs+DnKMaU2PkUKtNvWV9r1Qs1yc9X9skSR9tZ9Sh" - }, - "address": "noble1ypv9h04t20uck5w5d43zvcua0vxlgxf64wh0e4", - "percent": "0.0%", - "airdrop": 9583.861902681903 - }, - { - "total_amount": 1300581002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3KxK2aLlVsFtpDv5WjeUqr0CXD//jV08qjDLc4IvLGa" - }, - "address": "noble1ypnke0r4uk6u82w4gh73kc5tz0qsn0ahqctagt", - "percent": "0.01%", - "airdrop": 22845.670345416864 - }, - { - "total_amount": 63928802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjQb1AWMx4WOZ9fmX7EaEmJE1hqVrGi1z51CqkWJaCmW" - }, - "address": "noble1yp40d9trxyuth9lfhgg6ejeva4xz54aqcv3s7v", - "percent": "0.0%", - "airdrop": 1122.9568429982544 - }, - { - "total_amount": 907059690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJNvCYsOQilUKLpReXtap44JrBtvqbElsRigWaQd2Em" - }, - "address": "noble1ypkm38yyesa6ys7eeded7lezm9u7f3nplt4lyf", - "percent": "0.01%", - "airdrop": 15933.176503031847 - }, - { - "total_amount": 68764544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoLoDH0JDXaYyhrvWZn0lN0cEP3BpqXCXFJKZOsSFbFJ" - }, - "address": "noble1yp793xg5232lgmqcfstgmnd2mra7d5t67cvtrl", - "percent": "0.0%", - "airdrop": 1207.9002394015542 - }, - { - "total_amount": 150154766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cfUVv8vfw8xfm9cylMYSs5wqtHV0mBWaViI5Y0t2ik" - }, - "address": "noble1yzzj7cjhxnsqhvperf638phq882zss2kcywzxx", - "percent": "0.0%", - "airdrop": 2637.5798812638727 - }, - { - "total_amount": 165989919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHw8uVguKD6T+SQuzVbT5PNp3JUbTJ4GsIJeocCFOdK" - }, - "address": "noble1yzyet5n3ctap6rt5xkmtyaxmr3w7eew4n03my3", - "percent": "0.0%", - "airdrop": 2915.7360935650877 - }, - { - "total_amount": 149489192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayi1AUTLEfpB1O8zxYHTmTrf4wZFkTFnf6HDCwljSVDv" - }, - "address": "noble1yzw0nme2gcy3qzxsc7lvtkxvpde580xy0gzs66", - "percent": "0.0%", - "airdrop": 2625.8885800907065 - }, - { - "total_amount": 199527777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtKY5iLEM0de40yozxPb5Z1sGzGXMSsjZu+Io7IzRMqq" - }, - "address": "noble1yz5xya9caq3l6e8nrk93rjjrjyzngkthcn4s55", - "percent": "0.0%", - "airdrop": 3504.8534547914683 - }, - { - "total_amount": 442398994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnlfQUansN56mp5EhSBr863HFlAyv3xj0WhGmA5hVhQR" - }, - "address": "noble1yz4da8tdydtygt4yqcfwsedtmfrwnvfd0hwyvz", - "percent": "0.0%", - "airdrop": 7771.066594488095 - }, - { - "total_amount": 57146391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuFdgs82LwLMQXn3nbvHFobPGKc08KcJYCpHKuH2ZHa6" - }, - "address": "noble1yz4acayrguljge4cjleqjasc07728pkq2x4k5m", - "percent": "0.0%", - "airdrop": 1003.8187611603273 - }, - { - "total_amount": 148157542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSntX5venoqk4HnYFp+O+q1vWwRhuWGsdB6Qi0fyE09" - }, - "address": "noble1yr93k8fqry7lx0x297n4vazshlmp22vzjhnz8a", - "percent": "0.0%", - "airdrop": 2602.4971597418844 - }, - { - "total_amount": 50122765, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax70oAu3YAr8SZk6cw2fC08faYSQalYlpuDxg2HvjOue" - }, - "address": "noble1yrd730g3znkpwdgm65lvydmpta04usj7n4c8g0", - "percent": "0.0%", - "airdrop": 880.4435588632398 - }, - { - "total_amount": 343745355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTmidz6fsBumB95U5O7xoyc//dx6LZMXChXvZsVO2oz" - }, - "address": "noble1yrwwx3ak3q966r5cchu6shr848wt28sgzkq657", - "percent": "0.0%", - "airdrop": 6038.142223377097 - }, - { - "total_amount": 1951709496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajmky4kXNeQHInfA0Tb9xb0g7Yi4RDSRshDW/dJU2QlH" - }, - "address": "noble1yrhxzsz0h9alj078qdc647e0jtneht8ytxx4e8", - "percent": "0.01%", - "airdrop": 34283.225486970245 - }, - { - "total_amount": 1436456559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnNjEs5BfAsenH5xI5aRMRWzOORMrB7LbNJf2Y9t+o0B" - }, - "address": "noble1yreqngeudeftdgpaasfkz6yp75kje7rl0qvvq6", - "percent": "0.01%", - "airdrop": 25232.42532526694 - }, - { - "total_amount": 74346601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNPNPeWBOjuCOHGYw6VPSgAzCNl9t4E+SOlVHUJqStf" - }, - "address": "noble1yrmm2zm4dfzd0n78lv5trh2ftklrafxhh2h244", - "percent": "0.0%", - "airdrop": 1305.9532125537228 - }, - { - "total_amount": 129772366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Tmsc2RCLx9685DUzzZ2rEmsUnx90hX7R6ReONUnvVm" - }, - "address": "noble1yyx3cf04ewhw0dnkgq2gmgfap3avrwumak4tkm", - "percent": "0.0%", - "airdrop": 2279.5479013007944 - }, - { - "total_amount": 60948625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Yp7f69NTYQfRSsUMIX+xY8+RXGkR1iQK7wEKkTzCoU" - }, - "address": "noble1yyv5lj9s0yt9ar6d7mmr9jrtnz4sz95yn89etj", - "percent": "0.0%", - "airdrop": 1070.6078226694203 - }, - { - "total_amount": 134894435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqOHltIjvq/fjuPrWpkBVWbV1bXc/g6WUHMvJAE+CGgd" - }, - "address": "noble1yydpwgypzwzcc8uer6a9a8ah7zwxjcvftrlhhh", - "percent": "0.0%", - "airdrop": 2369.5208439168505 - }, - { - "total_amount": 581887697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2WOmMg+JjDAaTVrwy2j9Fgo/Hdx9XtTef+Bz8Y7Y2Rj" - }, - "address": "noble1yy3l0ya3wx565v9v433c70k0prtnx2u26e0xan", - "percent": "0.0%", - "airdrop": 10221.289164821905 - }, - { - "total_amount": 158671003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKiFsxknai0qcHlPx/UQL7ueEhMspGlFvOjrV9O8HG4" - }, - "address": "noble1yyex40yfa4t3lvgcud9hvazepc8wmjpavfxqrl", - "percent": "0.0%", - "airdrop": 2787.1739033096 - }, - { - "total_amount": 89202793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CLtshVk2HYy5KMzn4I1+Ndjw0Mnocrq+Iyvts8q3V5" - }, - "address": "noble1yyunex6wkeu7hgfl8ntch0qxwxfkaw9v7lxnrg", - "percent": "0.0%", - "airdrop": 1566.9132484901997 - }, - { - "total_amount": 82675986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2oh1y/skM/0IaUbeGo4++3NaYDIHUoTRsZMeem69XNf" - }, - "address": "noble1yylkkg3lrnulz4ue3wg58ld6hlentprhyh87un", - "percent": "0.0%", - "airdrop": 1452.2650405732284 - }, - { - "total_amount": 232496191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8gcmviMX49vAQEkhcCcGFvweYjWfIkhjTxZO03Fi5qP" - }, - "address": "noble1y90tjhsry79xqa72m2gfasa6ny82qr63z0hp2a", - "percent": "0.0%", - "airdrop": 4083.9681096241907 - }, - { - "total_amount": 101649265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9sXFEISJSYTyOE80abAS/OzQYALOvg7We7iNt3DSb0p" - }, - "address": "noble1y93qtzmq48ast7ksrf5ldwkcppxf33lk0kqra4", - "percent": "0.0%", - "airdrop": 1785.544764588158 - }, - { - "total_amount": 548868809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzimPZAiY+s/ejU4fonJP3g8nLB3F4B2aacmGlujFTG9" - }, - "address": "noble1yxsxpvhrrth852s53u7z6sq2zcvsfyenjcfuh4", - "percent": "0.0%", - "airdrop": 9641.287896726923 - }, - { - "total_amount": 142642306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8alMo9cn8p1ehZDJaZVRuooQNyh2/mdRsNSh3DRPp3s" - }, - "address": "noble1yxchl7wqeleevxz9k09xcmc2pgtc0amcj833t6", - "percent": "0.0%", - "airdrop": 2505.6179470366264 - }, - { - "total_amount": 73117845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az35D240q4Xhn36DxsofnJ631BjF+q2UvNRYusHKeYmV" - }, - "address": "noble1yxagajx644fn77e2f9sz4r3tthka6szlvrllw2", - "percent": "0.0%", - "airdrop": 1284.3692016633706 - }, - { - "total_amount": 527540514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9B0Qj5jmuU6nEYYBitvLPcVMJ00RBVGAzf3p9QSXpYr" - }, - "address": "noble1yxasaa5l4ywqx6j2wjmt53jhahta04rku5dxvg", - "percent": "0.0%", - "airdrop": 9266.640569224439 - }, - { - "total_amount": 109998700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AspnBHF1G5g1CHACGhnT5/FVf4jxbwHCptCvFYEPCzxZ" - }, - "address": "noble1yx7enyuq405gmfkh0a659jypxmuy96f4elp632", - "percent": "0.0%", - "airdrop": 1932.208785734982 - }, - { - "total_amount": 2600520151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4sE2T7W6vzLOvQO+S7AWLBnelEp6cMcXjRw/ggXSZKH" - }, - "address": "noble1y895wujvctese26gylm74e4wej9q3r406p0s9l", - "percent": "0.02%", - "airdrop": 45680.0660666268 - }, - { - "total_amount": 150330744, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsxaICJQ61AIgSuE8UbjEj6ZLivomMNZvTyhYF9ihdkR" - }, - "address": "noble1y8f8dc7vrs4jkw0dqvpa0dgsq02nr6hkut2gw9", - "percent": "0.0%", - "airdrop": 2640.6710654114677 - }, - { - "total_amount": 50746677, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqcww3zlOZSPgE6BlAUxK59PnnNZv/hba1VXhFbOQ+en" - }, - "address": "noble1y8jham0v3lhlnwmsh0nw8g92fkqxt9gs797g2c", - "percent": "0.0%", - "airdrop": 891.4030360927479 - }, - { - "total_amount": 11626281772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxMlMbQ+4DDpFgEjrJ3HbaRlMGjHIkAztIjpuyO/DLjB" - }, - "address": "noble1y8ekncqkmpjtedn2zrferz4f0mgt0zyet8yvl0", - "percent": "0.06999999999999999%", - "airdrop": 204224.26615304433 - }, - { - "total_amount": 53871746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21RjG4mNLu37gIiJzS5cSHPSdnDE/v+CEkRVlX9Xn8l" - }, - "address": "noble1ygrky0j9w4ltm20l8kvelq9drsdcz2p9z27rw2", - "percent": "0.0%", - "airdrop": 946.2971919130259 - }, - { - "total_amount": 50018039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjNeZlX5F2dYHmUI7/Hdf25XjO8/GIDfCcnAY03SzOPo" - }, - "address": "noble1ygxyccsq7nxl5rwg5xe0zmqwup4wdn6t58qexr", - "percent": "0.0%", - "airdrop": 878.6039689654057 - }, - { - "total_amount": 662335186, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuZauEbR+bMtI58SmACmGtDMBsjimtrBGPt+23BLquDR" - }, - "address": "noble1ygvm6wdxv4zgpkhurqaddlvtwherryvmg7n2cx", - "percent": "0.0%", - "airdrop": 11634.409002021055 - }, - { - "total_amount": 129578873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av/1cXXaorJq7tnjb46EmZYeSRBb+9WsrfaPLZI03Kr8" - }, - "address": "noble1yg3zps5kp8e4zwdp63janesyh8xnx33ed29acc", - "percent": "0.0%", - "airdrop": 2276.149053181878 - }, - { - "total_amount": 54777566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkANXMuxd/7zLfX7ebggT4QKmZmyw541zBtPUPdEypct" - }, - "address": "noble1yg36eryq2zgq23wnhw3fjs4ax45slw7avakya9", - "percent": "0.0%", - "airdrop": 962.2085923413445 - }, - { - "total_amount": 1385977946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8hh+IN31vZC/MuwVr7pNvkxWxOj8jvYSEN9QXsmqQ9T" - }, - "address": "noble1yg5vuqw6gc6pff52wy6hgxwtxyrcefq6lzr885", - "percent": "0.01%", - "airdrop": 24345.731032240605 - }, - { - "total_amount": 82619277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnxfZsOVQlFOqKvpyFbm8KlXJpbwUukqyLwiXwSc+DKa" - }, - "address": "noble1yg4vpe9zr2mdv7jq3e3rr506ahrl963vf8umk8", - "percent": "0.0%", - "airdrop": 1451.268904909532 - }, - { - "total_amount": 50091555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amqglu76LnsoQzVmP1cmVmxUKS1+TEx/+oBG/kjCBhMv" - }, - "address": "noble1ygkthe8l5p6sg68hn4myjfddmmvxselhyvlz3m", - "percent": "0.0%", - "airdrop": 879.8953320550795 - }, - { - "total_amount": 1176370626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1SOB2Yv0Pt/zjLBqX2Ty3DAdYMmI/KfDfiO49faXisv" - }, - "address": "noble1ygarrkevfqehg4hlgwtw3mdzygm3rzpc4qvehg", - "percent": "0.01%", - "airdrop": 20663.82292552331 - }, - { - "total_amount": 1011841846, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxYAtNv9zsZQFw6oK+yxcoCdPP9in3Z0bEXEEpxCfFfO" - }, - "address": "noble1ygadp7chakalsju5thj4aw26ehwkuz3tk3pj27", - "percent": "0.01%", - "airdrop": 17773.752822674294 - }, - { - "total_amount": 1322405891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Y2OMhsHSGLsYUu1ZZ7cVNPvKZA/VwRW9xmrRC+ZQwK" - }, - "address": "noble1yg7eu4c3v0nk76mvd0ukep8epnlcu2w64kmvsl", - "percent": "0.01%", - "airdrop": 23229.04071500751 - }, - { - "total_amount": 75231791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzUUs53oyYwolw+WZVy+TNAK4jdZaS2LcQnZk03s+zsO" - }, - "address": "noble1yfq45zuruasku2qgjt56ee9v2ck9fev9lcxufv", - "percent": "0.0%", - "airdrop": 1321.5022317243563 - }, - { - "total_amount": 122301184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apc5S8G9PnlgjXzmrldJAeMbCsXttZ1A+pfkydIpDqD6" - }, - "address": "noble1yfpqv9pp6zn26syvmzd6c37532wq8pujdrn94x", - "percent": "0.0%", - "airdrop": 2148.3110457722737 - }, - { - "total_amount": 105087944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5NtRIWbxPA/Uy68bC9AI3bJc9NFqTca1exojSafTqzW" - }, - "address": "noble1yfglgmw36gnz4nn36dkvk8feczsdmkgez2r88d", - "percent": "0.0%", - "airdrop": 1845.9477127604762 - }, - { - "total_amount": 420757043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9IUVp/fp2E2DwOiuDHNKk0dmqM3DxBXkpHj/kkiPezs" - }, - "address": "noble1yff56curmqhfqn4uytx9w4905wknglyh3ea3rl", - "percent": "0.0%", - "airdrop": 7390.909666609438 - }, - { - "total_amount": 175302802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AknKd+6EQQPHgDKmwQb4v0+Yzste71tW20zdkb/fU6HO" - }, - "address": "noble1yfkyt6clmgk0tk5wqtjxjulpsl258uusfgdw9t", - "percent": "0.0%", - "airdrop": 3079.3237937208346 - }, - { - "total_amount": 70404123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0XEy/9K7eoG5wSiT15PEU/ynQK+5v5t8UlwMVg7XkUl" - }, - "address": "noble1yfuftk25tec4lvgwspetr8002stfkw6gae0frl", - "percent": "0.0%", - "airdrop": 1236.7006611220525 - }, - { - "total_amount": 11953432450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtFi+qkNJ9pT8YygbeMSn5ygl2z9slyiwmBSo40ArJ+x" - }, - "address": "noble1y2ptynyf78vjl7agjj7e7x9t2k3gwgv5mrhd7m", - "percent": "0.06999999999999999%", - "airdrop": 209970.9105614851 - }, - { - "total_amount": 61907624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A620ra1nZWPzYzFLXjaksz4klwGoip9/TxBNz4/whUmd" - }, - "address": "noble1y2f6q56hv2873qqzu6g00fq3kw8u0neryfvd6q", - "percent": "0.0%", - "airdrop": 1087.4533516921367 - }, - { - "total_amount": 243171049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84LZgGOIwKSO1lsrrk7mho7BwUzIlzhIU0fnExW+z3m" - }, - "address": "noble1y2knaz4gga4rrce38w5evnztsueq937phq70v5", - "percent": "0.0%", - "airdrop": 4271.479911255241 - }, - { - "total_amount": 302931944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A732h8CXAbtIbQupI4k9iIkobk2VevoalN/3Gfv2EvpQ" - }, - "address": "noble1y2uuvqdx3d9wz2egvdt862d0a4u0cvzxduxsx8", - "percent": "0.0%", - "airdrop": 5321.224375166048 - }, - { - "total_amount": 1929901453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8z9H1KtplaFwjh96g68kM4DLGiGr6NdpYEXjv/YYbaC" - }, - "address": "noble1ytzn5edca7nnh8rn6s27kq5rlr2etjpjlulxc5", - "percent": "0.01%", - "airdrop": 33900.151029869514 - }, - { - "total_amount": 549011515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av4RpbnZtysROpw0itbIBT0GlXUjN5KjcnjUS7hUhFdt" - }, - "address": "noble1ytr0nujljr44t7kw2vhe566ecjz8mtn8mfek72", - "percent": "0.0%", - "airdrop": 9643.794633506332 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aup2J7mCLEVXE/z3r/3JwNCSCoWCo1/vBKvlcaBN1DY+" - }, - "address": "noble1yteukxfe0eermvhv49vupjs6pvxz9fucu2at3c", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 3168829123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0QFxh7F1bMIi4j0hPVSpZtz3Q9l/P98ZHIgaxAei4/s" - }, - "address": "noble1ytaj26vnnv309gcl5kh9qr2klr49lkmpcnrcn4", - "percent": "0.02%", - "airdrop": 55662.83485126168 - }, - { - "total_amount": 1226367725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBW7sUTGrYi2Vi/49UTywzb2rIq+IGz5HiPlZ7byO/n" - }, - "address": "noble1yvrw5z5ec0n9c253hpy5lkq9cufmk8dvyces7k", - "percent": "0.01%", - "airdrop": 21542.059067851005 - }, - { - "total_amount": 111313630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuoIoxFL5sf7E0ztQZXbOg+BO+x1Rd0czXje7ZXTPOKE" - }, - "address": "noble1yv8k46fnpju0nrk87frcygase88975xmmnkk97", - "percent": "0.0%", - "airdrop": 1955.3065068773817 - }, - { - "total_amount": 145000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXnsM4vEefJ/VHsfSY008GvpU5PZXWrUpo+bIG85S9+" - }, - "address": "noble1yvtkklegn8kq5j42hu744hwhtrucrdp3ssmrhc", - "percent": "0.0%", - "airdrop": 2547.0325915812855 - }, - { - "total_amount": 399693025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsrxRTe+8bXT4XATGbsEZy/qVMZuRBaBbXsaNX44nZRc" - }, - "address": "noble1yvvkkmzh8zs4z4v7gzn0ux8ag0me79ecesqn9f", - "percent": "0.0%", - "airdrop": 7020.90456070837 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6pESdIQYDNPo0u1r5LX/eSOlur5dewsIxQ2E9Uy5Np" - }, - "address": "noble1yvd3rqt4ytlft67jwyl8rgl2myr3p0fs3yvuza", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 83841002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzhJ2HzhM0iFw5Jt3CmCttCZTocDv7HGc0L4gsqzeHKs" - }, - "address": "noble1yvjqexyqg6h3tca6suwm92k4acanq6739gs7ge", - "percent": "0.0%", - "airdrop": 1472.7294110678051 - }, - { - "total_amount": 325375330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/PIBV1+O6AnpEG/rPgx4oxZRaiGK8pdLt1Szxh2txbe" - }, - "address": "noble1yvhfsfzmnqv43exsmu0klahdwtt7p70htgw0wg", - "percent": "0.0%", - "airdrop": 5715.459103493215 - }, - { - "total_amount": 165844837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aspx5rUEBbHOMqFugLQnxr5vBnY8ijm3wT0ul2K4QSmi" - }, - "address": "noble1yv6nx4xz0cnp3da5yaudm5325upk38zfg7fj23", - "percent": "0.0%", - "airdrop": 2913.1876205826616 - }, - { - "total_amount": 1053227275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auws7n7Ss+6RomgJTCnmQRgUMexsu62XbqjD7mjyZuiX" - }, - "address": "noble1yvl2emhsqq08cryq5zzdtmkvwwes8hhdnrwqh4", - "percent": "0.01%", - "airdrop": 18500.718591498935 - }, - { - "total_amount": 1645161106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32ZLnSP20OeL1BG+zTswVjRik8ghORlgVroShNiwtRn" - }, - "address": "noble1ydxzu6nqa4ret3mj83rmnz45enpl5qp7j4ug9h", - "percent": "0.01%", - "airdrop": 28898.475554371827 - }, - { - "total_amount": 50019374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A38tWn44PLijJ3J1apeuZkbO8CmniTVcvaPixdCHTqb4" - }, - "address": "noble1ydaxmjx95vle9h6ej9mm3gupvlv04q6xzj5xuz", - "percent": "0.0%", - "airdrop": 878.6274192309903 - }, - { - "total_amount": 178510179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqdv6pymnPsikfHtCa0gzhOtu4cIVCRcxYcnrzT9v4HG" - }, - "address": "noble1ywqjtwhtn02zkph80cgwlg6kkmzl8wg77kdjsq", - "percent": "0.0%", - "airdrop": 3135.6637506345464 - }, - { - "total_amount": 168248300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnYkgs+T7GVyQPHyfL+Q2LZE770++N043+ALCjMKHiXC" - }, - "address": "noble1ywyk2knhmsql652dysecaxtev35sly96x40qxg", - "percent": "0.0%", - "airdrop": 2955.406231573418 - }, - { - "total_amount": 642736008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5FjBZrQGRhCIq4KsgKUu48oOxCW1CzqYicrmj4o3Hb3" - }, - "address": "noble1ywgp5ar9w6gfny8vzx8gxsgtuc3zu0kq5umqg9", - "percent": "0.0%", - "airdrop": 11290.134897647242 - }, - { - "total_amount": 81219349, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3f1uyO3jRoRCKDshMdOCEwWnjvFJ1ST2RV8AT3udI21" - }, - "address": "noble1ywwepdj7xe6h3zve5l9x7k24rman2mjt4lar8v", - "percent": "0.0%", - "airdrop": 1426.678130827689 - }, - { - "total_amount": 158401920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgZyR/xWYPh5yugyDyB911Oqp3GmjB8sXmu5IXlvN6oj" - }, - "address": "noble1yw398s3kzg0vsehyg6aq4n4xv9l8a735x0405g", - "percent": "0.0%", - "airdrop": 2782.4472607520793 - }, - { - "total_amount": 155770169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayd+KodUY7PzzHnM0iRwmXLiSPR3PgstqOqYJgEHtfHB" - }, - "address": "noble1y0qqew96mze2hzqc0lfsnevfd3f85nuw9anjzk", - "percent": "0.0%", - "airdrop": 2736.2186016491373 - }, - { - "total_amount": 54005658, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao1gPxFqodrQFv4H+uNODe4yIH4uYl8BBr1XFSQMf9OB" - }, - "address": "noble1y0qhxmuxusfr94ql6k525jglw27lhkhucgzzd9", - "percent": "0.0%", - "airdrop": 948.6494555571903 - }, - { - "total_amount": 2187864524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApHvEwIvkBI44n2yadOi10zH8Qxh/wZH+LBvARI+/s3M" - }, - "address": "noble1y0t2lsm93mujl5z85u0t6wwtxqf4vr3re7p25v", - "percent": "0.01%", - "airdrop": 38431.463783396386 - }, - { - "total_amount": 859273684, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ny3uTWdtmhTviHYapb2q9644Vn/7Z13CmCCWjcaRF7" - }, - "address": "noble1y0dfn2y67dmsmje68qk2gylyac6cdp60gk7s9v", - "percent": "0.01%", - "airdrop": 15093.779849904267 - }, - { - "total_amount": 312843771, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQYj472cswy3nw0Lmjj/4V91Sx1E/+Nc/CQ8fIIR+aF" - }, - "address": "noble1y0kuhuxeewsdcqsmlm0azpv4yr2cnz056m5rr2", - "percent": "0.0%", - "airdrop": 5495.3329711047745 - }, - { - "total_amount": 50153999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6jqWNLiTKHIIlHGxZ2XSP2oo4r/qTl5al1K2G0z8e/g" - }, - "address": "noble1y0m2u5munzfz536tmrs73geyunncyszrjcma9l", - "percent": "0.0%", - "airdrop": 880.9922072492084 - }, - { - "total_amount": 116182019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A11u1QN/l+ohbSDJjASJNGLDkfy4Qas39f8RREz/9fsH" - }, - "address": "noble1ysqtvq6lgzet63snuz78up4ghw0yln7rm3grg3", - "percent": "0.0%", - "airdrop": 2040.8233720601115 - }, - { - "total_amount": 1165806822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akrstmkbv56zWaQAvyax+A6mNdWvkQmJlksmb+Pkqfn0" - }, - "address": "noble1ys8d9wllcfwmyp9nnngesky5cfex8jut68t7u0", - "percent": "0.01%", - "airdrop": 20478.261869805538 - }, - { - "total_amount": 1639530014, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGc7zEg28xnBdkXeMJJWdJBrQeO9C+Ioby6IhEW25+m" - }, - "address": "noble1ysg4y82keupvh0mgmf4f2tppt6yt2ya0jy3lza", - "percent": "0.01%", - "airdrop": 28799.56124506015 - }, - { - "total_amount": 2524710236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlWcTMFjlfc5CpkEix1ODQGLCCPsK7TT2k4sjYlpKyy" - }, - "address": "noble1ystvu9sp6fmc8dfeaxkm3kdhrym35rtxgvk5em", - "percent": "0.01%", - "airdrop": 44348.40865786814 - }, - { - "total_amount": 52552668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9l3Z+tNZxZKWDmwy+L7pmrn+ntRLEmFFjXVI/4FTrFx" - }, - "address": "noble1ys3uh7v2sk4kn0czs3q5mhlt4cqyzzdhmyw6v2", - "percent": "0.0%", - "airdrop": 923.126608072765 - }, - { - "total_amount": 7105465537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A53NoLQTfbbW25EUHPJEpybSBUqftGsK0q8IAA2gA7Yr" - }, - "address": "noble1ys4wgk5wq4jeferctz8ysh3p7w7esljnn283ht", - "percent": "0.04%", - "airdrop": 124812.77449032154 - }, - { - "total_amount": 203650692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6qefcDfInv9vRDNXTGWICZx0l2XunDe0e3eb91WkcuS" - }, - "address": "noble1ysk9hggzlzrcgtjrg36rsu0zeqd35wvvg6awqk", - "percent": "0.0%", - "airdrop": 3577.2755160143606 - }, - { - "total_amount": 366692354, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0KFTL/B78L+Di41UU7rdxVDahKRmy/S5fQtPUk34Jqg" - }, - "address": "noble1ysunnmn0sn4xpa2y4vhwzmpt5fz47rkv5ygs70", - "percent": "0.0%", - "airdrop": 6441.223287735602 - }, - { - "total_amount": 132777823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5RemcXwzbK8G65a7YRbv22efl7TZOZnckVHHtom3vsz" - }, - "address": "noble1y38hlz28tyjktm6hwa2pguvpsycmkkehxevskk", - "percent": "0.0%", - "airdrop": 2332.340983587664 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqOxonRrZwyCl4icDD5nK50ZczQ5O1/iiGPoQGs2osBT" - }, - "address": "noble1y3v7z6tls70hezwn8fcmxcpvgfmcr8f9mdn6tl", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 199069177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmvG495pNZgkPTqDvgYJdW5HMiQQv8WPW0bdOVYakCHf" - }, - "address": "noble1y3s5n3axrel305p8dk23w25gt5f5sak2kk2ctf", - "percent": "0.0%", - "airdrop": 3496.797805505267 - }, - { - "total_amount": 125850000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9TRBXuXfbFHA7J9Y0RREGt7mkygX/BjRhn+KnzAcjF1" - }, - "address": "noble1y3596u7nkyjxfzg5qh69vdnpzrxfzgzqlllgr9", - "percent": "0.0%", - "airdrop": 2210.648632072447 - }, - { - "total_amount": 57016474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A12d0ZYLEFUv/BdopjlN3tWzh9Z4s21TsRS2nnVsYu2x" - }, - "address": "noble1y345znu3kk3mt4da48kz3qyr9lj6angqghgg6r", - "percent": "0.0%", - "airdrop": 1001.5366726554967 - }, - { - "total_amount": 402394092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwPwGi+C1zKtoSyoCjzFT2Aq4ToS/+149kYX3xuyRplT" - }, - "address": "noble1y3cv85veatdv6wupp6u25jqtk4nq6n06ge4wv2", - "percent": "0.0%", - "airdrop": 7068.3508067845405 - }, - { - "total_amount": 135437451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlqteLlA+b0swpu+sTpz20vpWkZINbhLRTC8pnHYqqO3" - }, - "address": "noble1y36q4585hh8exjr367qaxyp5dmcxzcy97rk6pz", - "percent": "0.0%", - "airdrop": 2379.0593228806442 - }, - { - "total_amount": 831000242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AumcZZgzigDAtLC1kcB6A+fhdk1EsvfwM56lEjIaE8C8" - }, - "address": "noble1yjs0a9fuzxlr4hnd7r7q2z03duur2lww378tsx", - "percent": "0.0%", - "airdrop": 14597.13586197197 - }, - { - "total_amount": 259640897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/uRuN2JtH4a7UmmCnSapdcRs8Pc2cWfYYvfqZUpKt1v" - }, - "address": "noble1yj3tyku424kmyp44ql26cn0twsneq8lll6epjl", - "percent": "0.0%", - "airdrop": 4560.785012182067 - }, - { - "total_amount": 58526450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/gctK+jasuTjKH3f5ILtPB4/f3T67CmE/K+gLyqUPGC" - }, - "address": "noble1yj4ys34df0wfru2kgtppszkjyv8t5y2e06743z", - "percent": "0.0%", - "airdrop": 1028.0605215141554 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwXRrmIeFf9FDs4htSc0ZeRRfOjYjADaTxe1jSptzphv" - }, - "address": "noble1yjkldr4v4lau9cy5ds6halvex3f567ldpznsr8", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 99785783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/7Zx51KGmFPNtKFOp2q/y6sZAmE6SQxDsBpGd3ZUsca" - }, - "address": "noble1yjcwxk4pnsfamjz0l0vukz742mrgpp4r2c4g8y", - "percent": "0.0%", - "airdrop": 1752.8113205341917 - }, - { - "total_amount": 897267008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxhQZJVA2FwWBgELA6i6I1+u5uwjuGcpH7P3rwuH5dsl" - }, - "address": "noble1yjcw7c9d8repec3t4t0elnw7nga7r89l9fug2c", - "percent": "0.01%", - "airdrop": 15761.16077742501 - }, - { - "total_amount": 375017986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4mT9LzRDJtShvNiJF97nLvI+IWRHD1ZIlWwiwhio8VV" - }, - "address": "noble1yj6qg3ac5tym0lerh0jjnwkdzlywgzydhxz276", - "percent": "0.0%", - "airdrop": 6587.46919152534 - }, - { - "total_amount": 81488472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjQSOqabAsjdToyKYra6vWcb8FMNJw6f6eNT7vitcmP8" - }, - "address": "noble1yn9yrgh5f3an23y8g0ktt5c6uc285lg8hx8mjh", - "percent": "0.0%", - "airdrop": 1431.4054760148902 - }, - { - "total_amount": 2220052121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqWRHoGoqiJH8GHLaD3izSr7cSzt0BMA34R9GYwWDEtO" - }, - "address": "noble1yng9j50r23j4nvmqdg6tyjmk4clnrq9d083g6q", - "percent": "0.01%", - "airdrop": 38996.86280824938 - }, - { - "total_amount": 58551002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+b3YE8TWSnDGLM/sLxeEtkk846LciSDfE9lxoKDkbF+" - }, - "address": "noble1ynt9sawfrsfgyfnffhg67qzjhzs6c2qhrc609f", - "percent": "0.0%", - "airdrop": 1028.4917956120073 - }, - { - "total_amount": 504369230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkDlpVHAQwMuHzs0B2ommFWoYmLw4lLDbHKbQUp4gbGF" - }, - "address": "noble1ynv040cnmetr4x43pmczx26cww62kpjqy66djd", - "percent": "0.0%", - "airdrop": 8859.619772419019 - }, - { - "total_amount": 56927599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoApjpqy3zbndByjB7IKLSn9qvQnhuaIxTxVX/4A610b" - }, - "address": "noble1yn5gcaxlay6amfj2vv4mucdp0hs6rzpc6eu96e", - "percent": "0.0%", - "airdrop": 999.9755173342775 - }, - { - "total_amount": 816349257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9YNl9nJceGKgvtd+jbtLFJtmb1g4JQ2ippHO9owrJYy" - }, - "address": "noble1ynuv6fwt0fwthapje2sp54gzjjhxhy4z2veyg7", - "percent": "0.0%", - "airdrop": 14339.780439256327 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0G+LiinLtbdnkYIsWXWJv3M2dm7/TGQsZjkcwPUikEM" - }, - "address": "noble1y5qy47ec4p0mah040lz46duzpt4sxlddv9g3nx", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 519315866, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9weJ7B4SyohML8HnsODnxQKilEN4BGDTxNaHoSH4SjK" - }, - "address": "noble1y5q2nvxkgjkgc3ud3hsmrsmuvqqs8hlahqy9q2", - "percent": "0.0%", - "airdrop": 9122.168524325929 - }, - { - "total_amount": 87182916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkMxwpFTHSfeXk7cqveoZQ4A7nJ8KPapvkj7ppK6cVCS" - }, - "address": "noble1y5p3vug89nsepggwh4lgvvgkkxp0v4a0rzu9v7", - "percent": "0.0%", - "airdrop": 1531.4326102144385 - }, - { - "total_amount": 103374353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJDOiwjb/UDUuvKarI16hQBASlH/Zhl1i6i6QMvYjDO" - }, - "address": "noble1y5v2lenpfdagencjylmcx0fyyjtgeppgac0ppm", - "percent": "0.0%", - "airdrop": 1815.8472153422665 - }, - { - "total_amount": 63415264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4SELiHbeXxDEMUhImyn6iW+2JHpUrxMUPNaC+Frw0Jn" - }, - "address": "noble1y5dpq8ucazpfars7y0ds24hu3k75ycvgyctxx0", - "percent": "0.0%", - "airdrop": 1113.936166977458 - }, - { - "total_amount": 364507408, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyjotzKx6KqNK90+K6BRkeF+U2FlzAxXXpn9zP/art+0" - }, - "address": "noble1y5s7u7utln0fca2lzzzj3uh499mwavlwy7k98n", - "percent": "0.0%", - "airdrop": 6402.843089991842 - }, - { - "total_amount": 116201271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4J4UOX0XcxAlZ+UevUj6gv2G0NLCxe3J+pcAHawrd5/" - }, - "address": "noble1y5j9jnpry9scp52mvl20zav4tkwl87maks8m53", - "percent": "0.0%", - "airdrop": 2041.1615477253058 - }, - { - "total_amount": 226867157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AllHmgFUoCmVpVAaVRokOqhinGWM3Kt8uxQgbYgJs3u5" - }, - "address": "noble1y5hxn0t8dfwhr5xaaxv5jfh3jhevhqjvn8dr6w", - "percent": "0.0%", - "airdrop": 3985.089950609575 - }, - { - "total_amount": 53066217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxhawFqi/BYNGjId+xG2SrRlqGrI9jKLq7qkXUhRxo5i" - }, - "address": "noble1y4x8uxpdrcwgpuswx8ndh22gevqpnc2zuuwfg9", - "percent": "0.0%", - "airdrop": 932.1474773167234 - }, - { - "total_amount": 64957642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnpRy4HajkWa1EkR8r6v3rfgpSNECEYADMp2NE4hcSTq" - }, - "address": "noble1y4teyl0hz67x9nmknes5yt60gmntcjx4hrqc5d", - "percent": "0.0%", - "airdrop": 1141.0291810087544 - }, - { - "total_amount": 145007097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah0XijtR9UK7PXgbqaKaAmIyANSAQauLfwe5/74qnMf7" - }, - "address": "noble1y4tm6lmarlwv0v0fjar64sg3dm9h3nmzvhqp0c", - "percent": "0.0%", - "airdrop": 2547.1572556523374 - }, - { - "total_amount": 638607902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsohoneN1Z+Yw6jpmhvOrgqPxQCgIRJPegUyDBy1nnEA" - }, - "address": "noble1y4hv9vrmrknamd9hrlgetlknvv4pwy7yd6gn73", - "percent": "0.0%", - "airdrop": 11217.621652657572 - }, - { - "total_amount": 858445789, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj0mw3CmmDPcZm6WMfbVui7L+HT0ZHt5LCc6kfIkIKl7" - }, - "address": "noble1y4msv0fu2j2gfv3yafz4uyx6r4dx64twk4dazy", - "percent": "0.01%", - "airdrop": 15079.237259922149 - }, - { - "total_amount": 300135508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AysYObq2bRXV1+6pXiKfZUTColHhPFsQNjBfSi3ES94t" - }, - "address": "noble1ykpqxr9yauul8eh06e7zq4spur5zw86vzzwf62", - "percent": "0.0%", - "airdrop": 5272.1029018400395 - }, - { - "total_amount": 185235981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At05+b7roJzdBTv23Cvp6STft8Fm18ORqhPyCEnwjPyN" - }, - "address": "noble1ykxrf4zwkfv4g0fpd5qg2xukeck56dfrkmxfrl", - "percent": "0.0%", - "airdrop": 3253.807453382978 - }, - { - "total_amount": 3188226282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0pnY5MQtBvaHNL45f0AZLcp5U6ZHGlBgmMEft5FL1IX" - }, - "address": "noble1ykdgnftc5x2tlkc6248h9nq746vmxvk5qdc5ag", - "percent": "0.02%", - "airdrop": 56003.560342000186 - }, - { - "total_amount": 174727885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3LR2SzQLiA+JqTgVncUcbY5twGrAeYqw9/YmaYoS9Yv" - }, - "address": "noble1ykdkwlenhxhtsj5qr2lr8u0u455kxfnn879283", - "percent": "0.0%", - "airdrop": 3069.2249500211506 - }, - { - "total_amount": 334250305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Ya8/sOZ6EVli9Bp1IXM4+fAvZp0BfuQ/vMjppLDj67" - }, - "address": "noble1yk0h2y2tjen6fyyddf2676tzmrp45q8fvcgmhx", - "percent": "0.0%", - "airdrop": 5871.35462469645 - }, - { - "total_amount": 61241302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahbx0gIslQ/IcXMAR7iul0isrPce2zRuQbUDnQoytcZ3" - }, - "address": "noble1yk55ng4heshrg257st6t0hj4cl5d2jqckuhqud", - "percent": "0.0%", - "airdrop": 1075.748911343946 - }, - { - "total_amount": 50056312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai7GxHztG6W3mZVxQsSAlyZvnFwOAUn1xTutqBV5nItg" - }, - "address": "noble1yk67s35ndjytl2vwxr56se8vq809nx48anf5d6", - "percent": "0.0%", - "airdrop": 879.2762626093892 - }, - { - "total_amount": 1937824377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+KwoZ8Gy5YzTWjwQcoS5Kl4R+lFNeWRItvYqHcfoxEz" - }, - "address": "noble1yhppklazvehhap0je5lerlpuwzq9jhzvca9ysj", - "percent": "0.01%", - "airdrop": 34039.32306882552 - }, - { - "total_amount": 578559185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsNq9Tn3emtfy1RZOIgl+ytcR6Pu3rjhkdwMWKC7Ezeo" - }, - "address": "noble1yhxxx4xaf4k0a77vqkj5gsg229wrp6a5vz0dgp", - "percent": "0.0%", - "airdrop": 10162.821381749702 - }, - { - "total_amount": 12002030524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjwTIEwEqCAgD/l3M5Lcc1hqJ8aDgQM/OI0ZmL74MBQ" - }, - "address": "noble1yhfhug0fugshv9fqvwvvgwaghqj7rzfmz0n6l3", - "percent": "0.06999999999999999%", - "airdrop": 210824.57179159598 - }, - { - "total_amount": 2943608066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0vgsdNMoyE2TJScpJv/xWRGJhdHU1KUO5MtmlxQL7+C" - }, - "address": "noble1yhw9hhvrt0y3vtkgknrs6rdvc8zv22g20t8ucd", - "percent": "0.02%", - "airdrop": 51706.65986857625 - }, - { - "total_amount": 455575092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8nLY2dAaO+PlExwTWbNI6Ft5lFAOslqUsbzJIATwmqY" - }, - "address": "noble1yh4wlek6mqywj7v4kuxfyw6lzd0dy0wxnf2wxs", - "percent": "0.0%", - "airdrop": 8002.5145326665015 - }, - { - "total_amount": 501015475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgChKbEFDuq+T0YqG1D4AfVSH1djK02mqN1ro/r73OxG" - }, - "address": "noble1ycph24pcmntcmdyjdwgkt27h3kfwfymt98tyuu", - "percent": "0.0%", - "airdrop": 8800.708577321233 - }, - { - "total_amount": 194521134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlJiNKBBkZpZYxkJEMCvIdj9nYRVDO0B+AJzDqDUB/t7" - }, - "address": "noble1ycgxgzc3cgfnr0qwe8safxqdqucj7rl92kh9ru", - "percent": "0.0%", - "airdrop": 3416.908055512763 - }, - { - "total_amount": 880313148, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajpxci2mQ8oHHpAby2vhkagFh+0Xo0Kpd3q0Y+il6eVz" - }, - "address": "noble1yc0v9gmha08kny37tv6lwdg6l0dfel28e4nu6q", - "percent": "0.01%", - "airdrop": 15463.353646576 - }, - { - "total_amount": 73624478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyhFBOHexAaP30Z9aJltPeWAYSge31c1c7px24czXzHa" - }, - "address": "noble1yc5qs7nyupr96jpwv7q6563z0ke65r6j5yn9v8", - "percent": "0.0%", - "airdrop": 1293.2685862355818 - }, - { - "total_amount": 343999430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1pF/n5UHKhzpsOF6n4k39MS1xGk2FroN89VP0CmpRhr" - }, - "address": "noble1ych3kkm5cw57w5kml5vvrmzueezvyrlpc3kmey", - "percent": "0.0%", - "airdrop": 6042.605239278519 - }, - { - "total_amount": 2178849665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cKdd64Vbcc0GJt2uibVcdW2pBbLavzhJJHvgBJItvd" - }, - "address": "noble1ycaelu4ju2r8jrsedeuzd32a5dwv5v0549r67x", - "percent": "0.01%", - "airdrop": 38273.111095937704 - }, - { - "total_amount": 99892913, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqGL146/dIcZIRENmigkhOuC6aI8PUvbMnrMh8hJ2dnK" - }, - "address": "noble1yc720azsdrmv8933aqjasvh88aqr4qazdkpptn", - "percent": "0.0%", - "airdrop": 1754.6931384758202 - }, - { - "total_amount": 184518738, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anb46RoKa5HKZVZf0SPIw+nqmfyGGw2FSNANOAKveFlY" - }, - "address": "noble1yey69mwvdw7kugvkkka0hq85vlut3y6u7flz7d", - "percent": "0.0%", - "airdrop": 3241.2085478858503 - }, - { - "total_amount": 1358113387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cH4EuOmG9Atu3fZisc+ajVjynW7tPKqdNQERd+uQw7" - }, - "address": "noble1ye995fdz6y8tj4xheppq3pm7fctp3hrxdkwq5k", - "percent": "0.01%", - "airdrop": 23856.26937759895 - }, - { - "total_amount": 137807536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9CmY3JopED2eQKtTVrcah7MzqGjDH5+NpCfS2LdhTq+" - }, - "address": "noble1yex3lcnw6lry48gd7m6d9ys0q70dchneq4k5ft", - "percent": "0.0%", - "airdrop": 2420.691624534561 - }, - { - "total_amount": 133620873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyhzIYLWdnhc3Aj4LqEHaO07LmojukwdgFWV49v3Ivai" - }, - "address": "noble1yevnk9vftraykaastq4j6s3y9seusxl3s9fqjy", - "percent": "0.0%", - "airdrop": 2347.1497823899576 - }, - { - "total_amount": 278518122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmG/oQT+FKxbAjy70dk1rFMyKhGJwzLYTf6u5PLZdQpT" - }, - "address": "noble1yesazejfmyn725nh4jxp39cnj2ada88mceatgs", - "percent": "0.0%", - "airdrop": 4892.377476413881 - }, - { - "total_amount": 190941147, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkgXsxOlWHFRBPodnF1Nr3bttKaWC3IWvUoVTsBuHzhl" - }, - "address": "noble1ye3ln9el5jwetf8mr5z9a3fvjereztzw25gk3z", - "percent": "0.0%", - "airdrop": 3354.0229274683675 - }, - { - "total_amount": 242409027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgUNe0g+RWxA/yfu68xgA80SOFN+RqMjvQajhaRjwp0m" - }, - "address": "noble1y6q4rzmpjgclvtd0ulym9qsq8073unpzu4p7pe", - "percent": "0.0%", - "airdrop": 4258.094429396606 - }, - { - "total_amount": 185488289, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ZH/Xae716MB69B4e+LXBfPxuutyaGnydDnl7MkWUAX" - }, - "address": "noble1y6zaecax7zen64ql446n5c6qzsktpcp7pxm564", - "percent": "0.0%", - "airdrop": 3258.239430618266 - }, - { - "total_amount": 1468140735, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+TeXdnDNodns1wYj1vPnW3wydQRi+2GxCTnf/MGegX" - }, - "address": "noble1y6xa05hxc3x7xlgw3d8u56gkcaqzmpjn0durxs", - "percent": "0.01%", - "airdrop": 25788.98138671106 - }, - { - "total_amount": 1872647523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0blrHTgmcsqznSpeYR5ByVABGUzFgYRDO95xyRo6/9a" - }, - "address": "noble1y6vauvc9kls0kjc2a2gs2q6h89fzryrp0tzdgf", - "percent": "0.01%", - "airdrop": 32894.44326637907 - }, - { - "total_amount": 403685271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3SqpC4p0MBsD2kAl9ch3L+CZMQKxvpdmuuMvt8z/UeP" - }, - "address": "noble1y6wu644sfr3ds7kxnckk0sn8k9stmkt5lkqpzh", - "percent": "0.0%", - "airdrop": 7091.031323988439 - }, - { - "total_amount": 619880321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VeY8HgiWajJgCSLrKBFgE54KDq8YB5aFW7oKOCq1qH" - }, - "address": "noble1y65zj26xeu52cvq8rx4pj48usrh9kgwadlfy5r", - "percent": "0.0%", - "airdrop": 10888.657796323236 - }, - { - "total_amount": 67270750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtBjrXRfx8/iRaMHUFGQ9ayruxEc29GTOCSOQaLb6sB8" - }, - "address": "noble1y6ceu4r67u7p7gtnnuxvmdt9sljkzq9p0t69lg", - "percent": "0.0%", - "airdrop": 1181.6606393801158 - }, - { - "total_amount": 241917516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhqE/ffQ9RtJGv8EAkN8FM8ut+BnmsQVSU9qt11kTFN5" - }, - "address": "noble1y6uzd03xhppc8cfxm0lae6kexh4rn4dgy98sez", - "percent": "0.0%", - "airdrop": 4249.460673975083 - }, - { - "total_amount": 312203149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fRjK8+Kf78cYfnX3aTw8wYd3Imghlnr2AzbNaS6HlJ" - }, - "address": "noble1y677r4ln660w69ldk4fu45snljh9cpkw4rydnc", - "percent": "0.0%", - "airdrop": 5484.079970326264 - }, - { - "total_amount": 11846346063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiAnM3IpbEInFdpRYFUJlllqQunyp0U761o5JRuBMhqT" - }, - "address": "noble1ymq9l8jw9nzu39tljry0aapn634zaj4e2w6zrv", - "percent": "0.06999999999999999%", - "airdrop": 208089.85871456313 - }, - { - "total_amount": 150449795, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A96fJzS9SIvlifuQAyYr//hbOpmDr4VgZgNbLkteyrjp" - }, - "address": "noble1ym8vv4wpvesl4sw4zhcvy6ftq4fr084h3zevu6", - "percent": "0.0%", - "airdrop": 2642.762284563608 - }, - { - "total_amount": 3701395125, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjLKJ+JZt+NxSn3ja8NgJi88yEnCwLkKM81DsZ6jPJQO" - }, - "address": "noble1ymvkf7cm8ls4pn0wcx4avcludmu6udrlm8z2hf", - "percent": "0.02%", - "airdrop": 65017.751846173014 - }, - { - "total_amount": 1175528888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiUImBgbSLaxGxGNTKNnLPD3NUgZ/3QTf0DpBHZlmJOL" - }, - "address": "noble1ymjjkl5ljtsvyhwn8j3q0mz2qckqt0wynksjdv", - "percent": "0.01%", - "airdrop": 20649.03717297453 - }, - { - "total_amount": 155140896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsidxM0X3+E+OS6WzdnskyST1myn3z1y4EQTAczJmoZ6" - }, - "address": "noble1yme500nmhj05phq8l28duf9hyueflz2e6zdnmv", - "percent": "0.0%", - "airdrop": 2725.1649544767088 - }, - { - "total_amount": 699084661, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A895BYcR0GQSGE+n/aVcDe8hzxwNFsJZfsffry4+ALZp" - }, - "address": "noble1yuy0tg0ayvxa6rz7g687eem2ktcr2tvxnpugy9", - "percent": "0.0%", - "airdrop": 12279.940798907273 - }, - { - "total_amount": 171268603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhaVcGCMQz4uARuNAn+YYFUIvvS/KDIYhrrUHCBRIM/Z" - }, - "address": "noble1yu9emq9uatzpenzgcjn77j8mde53rh6wfpz0ew", - "percent": "0.0%", - "airdrop": 3008.460094866182 - }, - { - "total_amount": 282942282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+J85JRlAq3HPd9mtSYBEfNl0MlAWs4Ku+ZwfrR85OWt" - }, - "address": "noble1yu3728qepua9kyvk8rp89dy7phsjsjhfjmsvy2", - "percent": "0.0%", - "airdrop": 4970.091129588849 - }, - { - "total_amount": 1508497542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6lofUsHSM0WsYsxW/l0v6/ZWWnMKVuJlbnVkukAt6SU" - }, - "address": "noble1yukanr99vaus8v55ps5spat0q2jktjd06g5cqt", - "percent": "0.01%", - "airdrop": 26497.87864685696 - }, - { - "total_amount": 70865312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag2QGyJqmyvHOAdS4mTbbM1ASr/bFd8/ba1BI7dmb2+Y" - }, - "address": "noble1yucyzx4wadzwtrjxs0226k67gsz2jslme35un9", - "percent": "0.0%", - "airdrop": 1244.8017881143198 - }, - { - "total_amount": 488009322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AucbXG8Bzb08gwmR+ZsYnleAp3ve6W04HqXM04067eij" - }, - "address": "noble1yucffj4d7ahgnc4trvjj32sgsw02d86uqqdwe6", - "percent": "0.0%", - "airdrop": 8572.24584916887 - }, - { - "total_amount": 61373492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3RaqpajJbwVz5U3O6XnBe2mTq8KCQwRP/sKZh5D2sZt" - }, - "address": "noble1yuetds5gnaryfgg5ldj9pvtttwwynshqkfkn3k", - "percent": "0.0%", - "airdrop": 1078.0709267803677 - }, - { - "total_amount": 1734050113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzppNk4T0WrA6x6/kLjWnSWqCiIMbY9zyFgCHevLxaat" - }, - "address": "noble1yu7qk5z54vd5p62dzfvtlhssdfasxhfm04g8ta", - "percent": "0.01%", - "airdrop": 30459.87691893939 - }, - { - "total_amount": 161219622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtunkMqn0o7TtONsIrXHATYz1gYc3B3c6WsUVYjmN/jx" - }, - "address": "noble1yarm854m96f7yhk9tmftfu5pvnnc68saks3qv4", - "percent": "0.0%", - "airdrop": 2831.942287147692 - }, - { - "total_amount": 820047031, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AihN9/Rdq2f8RBKQFudbOPIbcQ0woh7oGeylPBMrHUvd" - }, - "address": "noble1yafscz9engytwmxwdanfa8m2xjdjtp48ar0lfg", - "percent": "0.0%", - "airdrop": 14404.734583354959 - }, - { - "total_amount": 108276859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiH4K4vL2bAS3/JyoFMuyTnBHwURzlFwYPqsS5+aUXME" - }, - "address": "noble1yatt86erfkzytewnkxcv08dlw76c0eqg0e6m62", - "percent": "0.0%", - "airdrop": 1901.9633709451825 - }, - { - "total_amount": 746625000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7H8LB7K0P6JFLg6uSzapOHhh1oCYBhFuJCdHvRTYbop" - }, - "address": "noble1yavks9cvh3e9pp0vjdksczzqxvc2m7khqh7stu", - "percent": "0.0%", - "airdrop": 13115.022128892258 - }, - { - "total_amount": 4671917392, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkdoWPs3LQ6oHpiaSsBHMMBnIEse0w1UhIuabUgDT+cz" - }, - "address": "noble1yanmz5k777adpw4rqkah0zsnec2hvtgdu9fftg", - "percent": "0.03%", - "airdrop": 82065.69560413407 - }, - { - "total_amount": 165116168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRF5K27GQeEobpesp38nU1UdkZDFSPdud88zt3tWCRk" - }, - "address": "noble1ya403hmh5ehj2qp6uf0pa672ynjguc7ae9nr02", - "percent": "0.0%", - "airdrop": 2900.388008917317 - }, - { - "total_amount": 292869864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8VFo3u+USBBcUH70TUhl9+04CjQnuwn1QNQ3IleTxJN" - }, - "address": "noble1yahw0jt9609n7qm0ygtktx3r8etgrtdggrqctk", - "percent": "0.0%", - "airdrop": 5144.476473792956 - }, - { - "total_amount": 138640971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlY8UHMzrad+tMKHTfYlzFjri6/emRZv0C81lIwBp5sd" - }, - "address": "noble1yamcxvsywp2ldedxjk8llszdrywq957d47y6vd", - "percent": "0.0%", - "airdrop": 2435.33152872742 - }, - { - "total_amount": 1268937175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai81lX9r8OIKFwMW/7uBDEHfYFmG/DB3OLQgY5KKJUJL" - }, - "address": "noble1yaalaz04te7p6m9em67a6dk04mufm9txg23qzx", - "percent": "0.01%", - "airdrop": 22289.823044097142 - }, - { - "total_amount": 1960631162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4u+DF6biRATYYr1P9R5cGMUDEBxrZ8Il8FpHxr8YBFL" - }, - "address": "noble1ya7eghexjw6x27hcvc9qgphg3x4xncl569qsvy", - "percent": "0.01%", - "airdrop": 34439.94117023371 - }, - { - "total_amount": 128797686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiYwfImDGLFYG7qA/5vRZkET/FEyLFAlO0+33Zr/qTP9" - }, - "address": "noble1y79363daufxc09ghk4x0d3gtwgzf8fn5pnyg4f", - "percent": "0.0%", - "airdrop": 2262.4269238776046 - }, - { - "total_amount": 921012642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cDv7Bw0aseKEpQYLlge0M+YxTe1j5XjylMx2xj3cyq" - }, - "address": "noble1y7gplqgh5u2vhe0pr57pp5rd9sthhzpad6djx9", - "percent": "0.01%", - "airdrop": 16178.270458154393 - }, - { - "total_amount": 857722507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A98dwcfWzCdQbYjN5kHUkmg0SDtyS4j7h5MAI3aCAv7C" - }, - "address": "noble1y7tc6g66ewgkux44u5htnyje59p4mnj2j8d67f", - "percent": "0.01%", - "airdrop": 15066.532274909017 - }, - { - "total_amount": 187626964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ySK4FvFellTmaZ1RnSAwVwhVRTQHudQxft6b2YSAbe" - }, - "address": "noble1ylpmcttdy8skxv3q36af00vqmpdqvwhy64chu7", - "percent": "0.0%", - "airdrop": 3295.806843913439 - }, - { - "total_amount": 381982000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ZuU4xLIev7eg4k2p7GrjrZ5RC1Il+cRndjJ9MZwQtD" - }, - "address": "noble1yl9m54hen623n98wj840wfnsgvsfvdphpvwg4z", - "percent": "0.0%", - "airdrop": 6709.797264809675 - }, - { - "total_amount": 139831824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ZTXnJmovBWxjzLbrJNZqgMIf1Zd4nJOPePG1VH+nos" - }, - "address": "noble1ylx685geysj7776236nlkcjhkcq0xvrp2zzd0p", - "percent": "0.0%", - "airdrop": 2456.249745298333 - }, - { - "total_amount": 85868395340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax7p0IpXI9pW2vDAY53madI/J4+iKljhooj3i0SurEZN" - }, - "address": "noble1yl8jzkmcw36urhw0rg0gyfzghay508fzdqyxs0", - "percent": "0.5%", - "airdrop": 1508342.0794328733 - }, - { - "total_amount": 248975696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPlclg9DDkgycO+oe8nwyjCHc0yEce9BC1nInSqoqCE" - }, - "address": "noble1ylwnlhh5cv4jhp8ra7d2tndkdkfef62z603xxq", - "percent": "0.0%", - "airdrop": 4373.442842921617 - }, - { - "total_amount": 106525505, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArlEmWTfwi75yCkbmmLSaNAJ6V56XVIbG3KKwfZubOr3" - }, - "address": "noble1ylj9fd0ex5hehylg7nzk93dfw0w8758n24nk3v", - "percent": "0.0%", - "airdrop": 1871.1995384114155 - }, - { - "total_amount": 9268970188, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1/gudi15x+KDNo0qQ7ml/YqqDOW/R3t2+x+mb+PW6mO" - }, - "address": "noble1ylhn8j57jrd4zlqkyln0r9jr9khhc5z8pf2gr5", - "percent": "0.05%", - "airdrop": 162816.33902918152 - }, - { - "total_amount": 749117774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsPq8VWjitg4rezHI8R3yejotrtZDdeqz4TV8HY2XNcp" - }, - "address": "noble1ylm75gruqyhfg5dkeh4k53xsfqlumzr27jpzmw", - "percent": "0.0%", - "airdrop": 13158.809553867752 - }, - { - "total_amount": 690525047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apvc03s0nLhZv/e8bZC1jTD6GlhfYjrEz7gBaf5P93Cz" - }, - "address": "noble19qz4t3nldwwmkrae9yvkfmy8pf8jnxqz6rn3kd", - "percent": "0.0%", - "airdrop": 12129.58482767034 - }, - { - "total_amount": 170293994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnuHepHzUIEtVUbjVd8TgEuf5ifsotJdjJbm5RGO2bAS" - }, - "address": "noble19q9je6e4gfcec3w5mq5dmq9cmh570trcwpru5j", - "percent": "0.0%", - "airdrop": 2991.3403646106754 - }, - { - "total_amount": 12046478913, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/MB9IL4iy1uTR2Qk8wnEUrkWzuC45q9M63zIWJk7mD2" - }, - "address": "noble19qc2wlv7rkr77tafrh4n88j64skl8jhh955zc2", - "percent": "0.06999999999999999%", - "airdrop": 211605.34072557034 - }, - { - "total_amount": 720400924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Ht7Uiy767q7V+N2P4VU52+sjRH3bIMgsTzMpsnmRST" - }, - "address": "noble19qepgfyxzvrct7kq7c8axvxertc4k6pa64yt9a", - "percent": "0.0%", - "airdrop": 12654.376775401883 - }, - { - "total_amount": 339658230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhPblbg+HSKSItgOvNdPTNV1ly4E53ju6zwylVUleoUr" - }, - "address": "noble19q6wuqm4hfs52wsm64y8q4au78xjgr8cvkmy5m", - "percent": "0.0%", - "airdrop": 5966.348840060776 - }, - { - "total_amount": 671800351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akccxw8M5p2DcdPZCxioH3dRH/0wZ25zHOhnL+OieDj1" - }, - "address": "noble19qmr2cjpx6sthq6ur92g9jv836sj9atn8m8fwf", - "percent": "0.0%", - "airdrop": 11800.671648501708 - }, - { - "total_amount": 94239151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8L7MtE2qB/DF+/qhmBYHIE5QXPZdpyk5lHiLOKTsw8w" - }, - "address": "noble19qutuj0c0s38sfkrlrt9kdzf0f26vjm5h23e83", - "percent": "0.0%", - "airdrop": 1655.3806137927595 - }, - { - "total_amount": 99200900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Sy+spqKY9JrsPilHzQ1Wny6/D3d2vFkB7lyRUvt1q/" - }, - "address": "noble19pf7mwvs30gd9wt0kzu899zuglrsfqa5vc4ppx", - "percent": "0.0%", - "airdrop": 1742.5374166496274 - }, - { - "total_amount": 105822566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay5iAEFZVMCt9fexGNtN38DmI0S1hId1cQ9eU92h0Jpx" - }, - "address": "noble19pwdpmft63thkqtyy3lfgqndt2dng6ycwv6g6x", - "percent": "0.0%", - "airdrop": 1858.8518932880115 - }, - { - "total_amount": 77700497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak14nvbhUx4EJFZKDsvjHoVzXq6XHwpoYNcyNdR1BGZl" - }, - "address": "noble19p0vr6k64chs0whun93yekwj38jy69fsauk4uh", - "percent": "0.0%", - "airdrop": 1364.8668844211306 - }, - { - "total_amount": 698606614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApnkA0xxFDbNsWEKKcxc12iYEaloEqZ5IYEeGbMtQTYK" - }, - "address": "noble19pn90698r36n6hsjhce6xxjnptx57e57wwlup8", - "percent": "0.0%", - "airdrop": 12271.543548636186 - }, - { - "total_amount": 83160414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmgDF64RDUn4dsm8ESc2uM36oMNCKfQ1OXdv3O5lkeaA" - }, - "address": "noble19p65gc8x36pydcehcc54660ak6j6n53n5y3tk5", - "percent": "0.0%", - "airdrop": 1460.7743778440872 - }, - { - "total_amount": 122993409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9dWQvEwDGrbOQWMjKUu6ioC3FHnNrJPpO5suqdPa7rQ" - }, - "address": "noble19zfswdtfhal3h639r2kw0pwar405g4g5zld5gp", - "percent": "0.0%", - "airdrop": 2160.4704915357725 - }, - { - "total_amount": 74819864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlugCFV8QeQt04z9l5KgQ877umb+DnsrwNFCYzb50zv9" - }, - "address": "noble19zvd24xd75majwvzn393jwhuctdum47gprehz0", - "percent": "0.0%", - "airdrop": 1314.26642831503 - }, - { - "total_amount": 85744626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3RnYErayMRgUVXRWqaKWUMTYSvbMujTr89rNwtrYnvi" - }, - "address": "noble19z0luylhjd6j90t2eq5z605z2n38twa54kn3kz", - "percent": "0.0%", - "airdrop": 1506.167979137573 - }, - { - "total_amount": 353434734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvXrST6Qgrkiy4vZgEWTNTGgE4FbRINJxHOi22oCqMbP" - }, - "address": "noble19zcy2cgt0na7dp0ctqq83s0dggqnr7zl3as30n", - "percent": "0.0%", - "airdrop": 6208.343355136983 - }, - { - "total_amount": 6601544879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4DC5sHRWLbclSeCorGkbmfV9vAIhJHXDM9PzF1Dwf+q" - }, - "address": "noble19rpz9zzhtd9hyssnfwg7j4mpqass2vp2rfmnur", - "percent": "0.04%", - "airdrop": 115961.03421792782 - }, - { - "total_amount": 200591996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A606SOndoyqsU8LM/SU9HXChkBQE0GLpIHdaft5tmZ/v" - }, - "address": "noble19rfqwv3equna5eyypmhrw7yvc0qz0y9meynpsp", - "percent": "0.0%", - "airdrop": 3523.547251188572 - }, - { - "total_amount": 55399256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "And6vOdf2ffQ/e32HwjKSzHfWpRtDRLWp+edvXxhwouT" - }, - "address": "noble19r2hzv66m47xf7eamtv60frs6azaayflnucg5s", - "percent": "0.0%", - "airdrop": 973.1290384921042 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5qSt1Kaf+cTfk71RcKGYdw8VUmy1mWs0umv46fLzoZ/" - }, - "address": "noble19rsj0scvc0jt3le0ha2k29pgc7228jl5vfmmn7", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 818615661, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21R1U4yfWO0VG8bwcjO/bL5AwdGhgDW5dQeaqu8frB+" - }, - "address": "noble19r32su6kcea7xk9v2p4gvmd285tua7gqjq6pry", - "percent": "0.0%", - "airdrop": 14379.59150721281 - }, - { - "total_amount": 102485605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6BmfPq2pLtX5IwvSJYdQLKu8oJWYPAubV6ozfitHKeo" - }, - "address": "noble19rnclhg0ctnq9ys2rcym5z66dfw90q6lvxwex2", - "percent": "0.0%", - "airdrop": 1800.2356972615585 - }, - { - "total_amount": 89246090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArvR806R1zjGACQd0cPswyi3nNAuPRG6N5orFu6CD5S/" - }, - "address": "noble19rcjfmppwnvhqqt0vnk3qr4wakk3mzmn3a26dv", - "percent": "0.0%", - "airdrop": 1567.673792422046 - }, - { - "total_amount": 150521778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al9rnF+xYFiJwc74+MJ9QP/Cd/h1IBcCRj17N3GUoMw3" - }, - "address": "noble19rcusumrfwe25jm39t92sc0q0nljmwyug2q74h", - "percent": "0.0%", - "airdrop": 2644.026719370779 - }, - { - "total_amount": 807688837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+wKv/taVpFY6sOttxRSM9oNP0o8b8MyqqsELRrvwG3b" - }, - "address": "noble19yp3j6zm9g82afwh8wqz07p4zmpxf0ud7vk2j8", - "percent": "0.0%", - "airdrop": 14187.653735830241 - }, - { - "total_amount": 5053778860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsqJLL1yZWDBdoOzE3iijqlo1t2V1hKpw3ZmaY+8dM8E" - }, - "address": "noble19yyk9jmlkcjfvfjupe5mtxkqra8n5altgcnrrv", - "percent": "0.03%", - "airdrop": 88773.3756349277 - }, - { - "total_amount": 51676135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstYljjmrpb/B2vftH7yN1uwNlCboVJMFQs5gRDIjfwZ" - }, - "address": "noble19y28k4akxj9wqhrweksckl7uk3jfwhu8r40l2n", - "percent": "0.0%", - "airdrop": 907.7296555307199 - }, - { - "total_amount": 67010013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiroVozGO6ohbqkZzDOUB+kBPrlItAnEDj4s0O05Wowr" - }, - "address": "noble19ytl089w74qg27jsg9tuwctyfh7q27t2e9wrs8", - "percent": "0.0%", - "airdrop": 1177.0806005054183 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A02YKGwtbVK2FXE07bREj1Iaa4q62AWE6a973Jr4qDBJ" - }, - "address": "noble19yvvl0cz068qu4sg7v2pxln0cqm8nt77w48xrq", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiHSOrPl3b9Qq3cA768jH1vHULXLaHFSrkPy4yBEQ2TA" - }, - "address": "noble19y0jg0aq985m6sgdq82g4hf5mjdyrdwxzx0ejk", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 750355087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhwAkrTRAgaBBEiwSN7hxB1DvPrdwvJ/Td0WbHgwZN3P" - }, - "address": "noble19y3u28h8wsu5d6n2g3pqxrlwysa68tsnz9paku", - "percent": "0.0%", - "airdrop": 13180.54387481249 - }, - { - "total_amount": 419642030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtAnj8U/+rhYZUk140PphoYiHAO9pTJ/MqTpJ7IVXZPZ" - }, - "address": "noble19y6tjtufje53rgrjvf04ys2wtafj82mfyewe6m", - "percent": "0.0%", - "airdrop": 7371.323635912633 - }, - { - "total_amount": 3120599365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al70Zxx2F9NE8vY8ovIHVB4N4mmhS+Adj/WxTF3hnCba" - }, - "address": "noble19ymqcqesn9t76r6y2yhkz4zlxwlmxe3s05wvvw", - "percent": "0.02%", - "airdrop": 54815.64336498528 - }, - { - "total_amount": 161658767, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap9veTZSJIQ7wxvwOnTIiuWpjVkKh79Anu3c/saO1dye" - }, - "address": "noble199dchctfx5mqfaqr7zyrahjuge9ffjw74jh3wc", - "percent": "0.0%", - "airdrop": 2839.656194923071 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AybWjwmXTdloUKM5V1saokrndnYIuUXJ+xq+KUXyjBe3" - }, - "address": "noble199s7sp2sfcu9s7z9qf9js4pxj3clem42caj5vv", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 1219085308, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag/MyWMXjS6H5bszns7ewj/3COusi8pzTBRvZ8vkgHGe" - }, - "address": "noble199jxlfuvrq3dzuzwjn94zwd7w07lvtdlp499ct", - "percent": "0.01%", - "airdrop": 21414.138009613172 - }, - { - "total_amount": 71512950, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9D3TG+Jn8BCXXvq0xrMkxMLxxZh0kRrRGHjrmkr6q/K" - }, - "address": "noble19968c7tfu9a3z8ett5nqwc0p69fuzfs6qn050x", - "percent": "0.0%", - "airdrop": 1256.1780301387787 - }, - { - "total_amount": 637032569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2RWe+N0GZnAi8Btwsm/KbF5h0QLFxYe5mQmi6j1mJQ7" - }, - "address": "noble199a3y3av9hvpeuyevjc4lvnhyafhqs58cpf32l", - "percent": "0.0%", - "airdrop": 11189.949759598305 - }, - { - "total_amount": 65239491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amis0fVUJfYnw9Dfxh0v/e3e8JR0FqH/2hB3kxOQq53a" - }, - "address": "noble199la9a36f0u332mnqy8mcarhdjte6glxv4v5ya", - "percent": "0.0%", - "airdrop": 1145.9800678287859 - }, - { - "total_amount": 6034271444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ZrpoJQuIxiodXjQpyDNTdIdfRUKSDnK9TPSg3xfwHy" - }, - "address": "noble19xz5kfpeph25d0lwr6c3dkd04eu7djcqpzs0su", - "percent": "0.04%", - "airdrop": 105996.45540907771 - }, - { - "total_amount": 4130541898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxsvOrGCRjKzH00Nn0WDHJrKz1JaIZNpO8OojUtG4mRy" - }, - "address": "noble19xxv8c7ayv2g5h2r6gvytkf8yppr760r8l5p9k", - "percent": "0.02%", - "airdrop": 72556.0333455036 - }, - { - "total_amount": 1330789314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3jH92BtTG4EVPdGj2cqdySBArXrB7VakdAmT8huQfnr" - }, - "address": "noble19x24a07hg9xd7g0xd5tv2npafqc5038uc9qs2m", - "percent": "0.01%", - "airdrop": 23376.301760593804 - }, - { - "total_amount": 52875584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwsBGtmdvVGYSUEKk/2swyudGcpBERUenk1pVVWhXWp2" - }, - "address": "noble19xncw9gzg3dtt2hztl7vq0u202w5efe6fltye3", - "percent": "0.0%", - "airdrop": 928.7988672199584 - }, - { - "total_amount": 53378063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ksbufBz6iOpAcPCK/nmtkfYFxmMIEdALZcfOLQr8ml" - }, - "address": "noble19xma25ppv8ugwtvzpx5n5mde67ngazy4ljxgrp", - "percent": "0.0%", - "airdrop": 937.6252836998563 - }, - { - "total_amount": 144091622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Dbla9WcgcwK+3aTHzT1YxO5mjBJONbu3aQ6fCmS+3T" - }, - "address": "noble19xus8kr64rptmtrgc7557tkmmya0qq6uefzjwg", - "percent": "0.0%", - "airdrop": 2531.0762579849034 - }, - { - "total_amount": 553976901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyCI8+cA0KqnfIwreyPUYiUS3jE/gfcL0VYVWFx6SHSL" - }, - "address": "noble19x7w5eglqrpuy4wjrnj5m8jjez7l6jlth5tvp2", - "percent": "0.0%", - "airdrop": 9731.015322966892 - }, - { - "total_amount": 149420025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At8fGpWi3G32HLV70UpXxohn4wlVrftfQlRnt/r4yVak" - }, - "address": "noble198znmy3hx08lyh43e5mm5qp253crxvvrnkwy9u", - "percent": "0.0%", - "airdrop": 2624.673610413038 - }, - { - "total_amount": 552354927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aidr2fiE8Ep0XfLQVXPV3rb3nmKAJ3XsOOhGpYUuSBHE" - }, - "address": "noble19888klzxl025wlug4x0a2xh0qnwpf7sujlg5zj", - "percent": "0.0%", - "airdrop": 9702.524146134496 - }, - { - "total_amount": 371050051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A67hY+8YcnAaeFRbvdLl7f8pfWcJ5Tnps/mtkd7tljag" - }, - "address": "noble198f0t4ppknkkp8p29ygxgf9jv2k8vck7ntyyys", - "percent": "0.0%", - "airdrop": 6517.769468999299 - }, - { - "total_amount": 101395375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/kLQc8mQz4h9Ip4dyWLOVvxhvyIjwaFAuQ5KFcUjt0" - }, - "address": "noble198wpsxgqhkxlh0qh0zr6wxcmncunln7z66pc52", - "percent": "0.0%", - "airdrop": 1781.084998349009 - }, - { - "total_amount": 83421116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AimSM/DxEOPeyq+/s4eWjdsjdZsJq+bGJaEM0q+lmSS4" - }, - "address": "noble1980gcsyy3vdnc7lkkaqlfwwe4xnljqskr7fquf", - "percent": "0.0%", - "airdrop": 1465.3538019178145 - }, - { - "total_amount": 51378795, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7poXrYux+kBNOdaaXLSq88VbIAt3vn0JET1b5As0Xxr" - }, - "address": "noble198009v4vt9pj44yw7w9j5lx88kqay5vkjygcx2", - "percent": "0.0%", - "airdrop": 902.5066578011973 - }, - { - "total_amount": 4764456151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqiE9G2/41x0OIL+0cxP9O9xES2tKCBHoZjphilPWunR" - }, - "address": "noble19863f6vse7qc8jegpmg8wzagdy7n0h6fhlxkn4", - "percent": "0.03%", - "airdrop": 83691.20757073745 - }, - { - "total_amount": 176463541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlhGkrDXV/qGCDlheUK5oLOjfIuMUonoHWHvBpwSh0Tn" - }, - "address": "noble1986mjj25t0hkgf6vyck3jk5cl44n83t6kymx5z", - "percent": "0.0%", - "airdrop": 3099.713035536831 - }, - { - "total_amount": 3086178092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJakhc/jmt4iLyIrOA5p74pBvGcdyptEIoYMEhvNFvM" - }, - "address": "noble19gq259j7c7ptp6sphus3kpqn3df0kyer82xhl8", - "percent": "0.02%", - "airdrop": 54211.00816378033 - }, - { - "total_amount": 562096548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhukNNKI8j4BO0jxRbUFy04kZBg4rV3gA7Qeupf1nYi5" - }, - "address": "noble19grm04dx3vf5uz9r0e2p6qs0gkdkdnw3p3lhz6", - "percent": "0.0%", - "airdrop": 9873.642947388515 - }, - { - "total_amount": 51182546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6gSEq2zq2oAN2xBgrGc1PPlufOOY6FFCMp1gYUx4bb2" - }, - "address": "noble19g8lhudzanxxtg0v99z9te50qc2hv3aq8uwvwa", - "percent": "0.0%", - "airdrop": 899.0593984972992 - }, - { - "total_amount": 3409082461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7cfodl6nCjNppU5Tas+JMqJzyQ2i7Kqnlmg57a+RKx" - }, - "address": "noble19gspfvxruslwura5nxa6tgmfqvlgnrt9zpzu47", - "percent": "0.02%", - "airdrop": 59883.06300382854 - }, - { - "total_amount": 68199610551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AswXw4dadsjRpYgcXVWVJ/ovVqQW3esrJNiVr6W+YSuF" - }, - "address": "noble19gk75r4pd0e6hzz60nqgg3nps5xh980nydlunv", - "percent": "0.4%", - "airdrop": 1197976.7641830894 - }, - { - "total_amount": 300401317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvjplELuWLpwtlrKEQ83P41GUnB11+x4FIFqFgOb1WXf" - }, - "address": "noble19gc940vdsl9tp5kvkzec7m8njlup7ay0s2m37a", - "percent": "0.0%", - "airdrop": 5276.772034158216 - }, - { - "total_amount": 69545614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0jZl5AHn2ZTfnpOo2sK2bEq3XW1vu0SJBmA0mNIK9bg" - }, - "address": "noble19gavslcda5ha5n30rxn9n5zr44gx02gzq8djq0", - "percent": "0.0%", - "airdrop": 1221.620313514012 - }, - { - "total_amount": 628101786, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoV0Y3K6FzTRZB6m0iE4YHCK10WckCByjIbZZ9fG4xEd" - }, - "address": "noble19fr88dv6zu4hu224ulmcak6adexs0xw96cqmrz", - "percent": "0.0%", - "airdrop": 11033.073929464925 - }, - { - "total_amount": 513652019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AziyXi+/MCMEK9IrZrGTUcQMJksTynyVOBbww7pSUjze" - }, - "address": "noble19fv9hqrpelggfxw9gp5rd7zr08cs4cmwj603qp", - "percent": "0.0%", - "airdrop": 9022.678849134689 - }, - { - "total_amount": 52267438, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9DZ7wkgkw8QqEe92RX44yW0pXAtZumD8THLodBm54e" - }, - "address": "noble19fds7t3d6q6zul6ydrhh8qfpa2hh6fvah9s7lh", - "percent": "0.0%", - "airdrop": 918.1163314789943 - }, - { - "total_amount": 226415226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aia+MOWU/deqpQ9pygHL63teHnnxVJfD8kr4A+XgF6me" - }, - "address": "noble19fkg84w4mt38dlk90maz7r33eype57zxdyq50w", - "percent": "0.0%", - "airdrop": 3977.151447256845 - }, - { - "total_amount": 6257033057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsKYhUEyzF+kNY88R2PcOsKu2HM/M+m7Q2FHy+voHzPk" - }, - "address": "noble19feus3tzf6mwzuh96nvrkss9fgn5u2z7tggzxf", - "percent": "0.04%", - "airdrop": 109909.42843296885 - }, - { - "total_amount": 359351647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJ0Ar8hAu9CY+izhbYVnjm0SDMES6S43TV0esgABucy" - }, - "address": "noble19f6t6k4asp7wnkydznfyp23zctu8w7xxsus4qx", - "percent": "0.0%", - "airdrop": 6312.278322395954 - }, - { - "total_amount": 344841286, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al1fgYpcRdaBbjMqGB7GGcIUVRqC8jlCQxdfgb5LtBoE" - }, - "address": "noble19fuzmnqk5wtu2pcvfdq2asj9zn5g4hn5mce0fj", - "percent": "0.0%", - "airdrop": 6057.393064584851 - }, - { - "total_amount": 208109456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnEB5Nqcvp4cXD933z2pWkXz2wDDcMXCerOMhpsAhNLq" - }, - "address": "noble192ycaszmefnf5nve0rx9ude8pu7lgwrh2xzllw", - "percent": "0.0%", - "airdrop": 3655.5970141258726 - }, - { - "total_amount": 241452496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+d/LKvD0zLrEARk5csIhjDZiFjkv4Zet81YV204lvZ4" - }, - "address": "noble192wf9wta2p7ehxl8y9q6n9ea8y2yfw5r8vnt6m", - "percent": "0.0%", - "airdrop": 4241.292252625173 - }, - { - "total_amount": 193820157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4a4c0DeDMH9dqrnZYofS2nAOkvGxQIUjZH9YQmWqyNE" - }, - "address": "noble19204sssh2e5vm4sfnehqjr5267tclxkrj7tcdx", - "percent": "0.0%", - "airdrop": 3404.594874375184 - }, - { - "total_amount": 753131756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MyysYlo6BztePKoBHJJTS/+tXOzPbcF2fCrtwrzuph" - }, - "address": "noble192s99ahncgl79axjvng4zupllcqy2rhyntsxwu", - "percent": "0.0%", - "airdrop": 13229.318126116172 - }, - { - "total_amount": 82356565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTtbbhd61AWUfV3JZTdLH5CbrrKxDeOFi4PSXKDeimC" - }, - "address": "noble1926plerpwq5gutmajkw5c8ul7xuugq2wxmq83h", - "percent": "0.0%", - "airdrop": 1446.654173694363 - }, - { - "total_amount": 477182885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag+FGklJrP8trEzbRpDS29qbm2CVgdQJI49vrV83I5OS" - }, - "address": "noble19tqpf8sys0757llg0xna665ve5acaes0vh7l5p", - "percent": "0.0%", - "airdrop": 8382.07144992955 - }, - { - "total_amount": 65000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4uK4cILA9KIIWQ4oPhN2Lf/ev8NJ1S/rCt+W61U9M8D" - }, - "address": "noble19trdpjp5hslmlevkdj670szts2x9vm26p65n36", - "percent": "0.0%", - "airdrop": 1141.7732307088522 - }, - { - "total_amount": 20000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRnjvYOZww5TlPk/EAhDcBfQvQTZWTBmdFw3MMkyQ0C" - }, - "address": "noble19t8cn7f96pj97myxe0w4l49refu4s50c5cmhk0", - "percent": "0.12%", - "airdrop": 351314.8402181084 - }, - { - "total_amount": 267343448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyQsF9lohN3K8E4EpbQZzy5LB/4I+RLVZGKxh+t1cqTq" - }, - "address": "noble19t0l0hvz6ynwqnxgvt5h538n5cq86dvatt0mlp", - "percent": "0.0%", - "airdrop": 4696.086035873908 - }, - { - "total_amount": 60569108, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap0UrrxJXzbaOcwoURZdQz5tZUBY8jqwIPpD0W3m5kGM" - }, - "address": "noble19tnk4pll8awhrcl39akg45tjm9v7akg5kvwgw0", - "percent": "0.0%", - "airdrop": 1063.9413249586676 - }, - { - "total_amount": 368700314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4EEXm7QTqxvHMnIn1b269W8ac69WPIJdBBHoCYqA8JE" - }, - "address": "noble19th8sur9t9u89fln9p595zh3fvek3q5h3agkpl", - "percent": "0.0%", - "airdrop": 6476.494595063819 - }, - { - "total_amount": 208375451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9flOsGxMDBgfjyjX//7PT/8ihcBCN/kUcP/zYdIyzgq" - }, - "address": "noble19thnsnrmygzzalfl3ch6kyu2gqkdc4p50f7zqm", - "percent": "0.0%", - "airdrop": 3660.269413672064 - }, - { - "total_amount": 109684610, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9B/12LtTgx8JYpt9fMSb3ohwmDehFTmz1qyxABKOHnD" - }, - "address": "noble19tu392hqz6n7ftfelkfplvdjyuaydeaxftrz53", - "percent": "0.0%", - "airdrop": 1926.6915618267767 - }, - { - "total_amount": 56842515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqgxeoXrqDX85NisBUOwr8rIwfkGxJz7vxwoxk3X4itR" - }, - "address": "noble19ta39q9cr0lpl573a3nu7fy66g2m4qntls69vv", - "percent": "0.0%", - "airdrop": 998.4809537410215 - }, - { - "total_amount": 1458105353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyKFQ7Sv30epQn0/ey5zu+aemVldd8i3vPgXuFfCwnAG" - }, - "address": "noble19vq3s7xpec678kq4c07u85gskdyp7japalxsks", - "percent": "0.01%", - "airdrop": 25612.702455518174 - }, - { - "total_amount": 500012871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsfpILk+d6kh34ARQJjSS/1WriTjtQ58SCMh3UoKDOG1" - }, - "address": "noble19vvtrc2zkfdrj0zucyqrru22rhp6qmduurzpw8", - "percent": "0.0%", - "airdrop": 8783.097094118131 - }, - { - "total_amount": 121000810, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av+tFVtvb+pJLrlppmlvESPpH7a5a4z3UB94A8p4dyDT" - }, - "address": "noble19vsflxdx3c0tvjjdsmp3ap4xrkh4zx2v5dn3np", - "percent": "0.0%", - "airdrop": 2125.4690115705844 - }, - { - "total_amount": 230125449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8LvIbnIXB9NguDCl+I/SdcfMsz5XLce9RqR/0q0+1gX" - }, - "address": "noble19v4cuqtx3cdallxgv4tzgxe4jangjggmd8q8n6", - "percent": "0.0%", - "airdrop": 4042.3242672777724 - }, - { - "total_amount": 249488770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahzg+zk3TXFfOd6BZYuKImbTfd5/iqkvWFCZJJgJkXll" - }, - "address": "noble19dzh9gxasqq7mp3rf89nkd3mj2pztk8yjpfzzz", - "percent": "0.0%", - "airdrop": 4382.45536843812 - }, - { - "total_amount": 4901454699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsINkr+mNRXB92Zycjroc9w/J3KAOEu/CMSycSUkgaF4" - }, - "address": "noble19dy5ytcqs9srvr82uwjc54wsz0gld3surw5rav", - "percent": "0.03%", - "airdrop": 86097.68872077408 - }, - { - "total_amount": 414954120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AngDAYZxMl34tlDHj48lJi8Rtor4594COicRauk/lNf+" - }, - "address": "noble19d9p2zjzl6k7m696flejrwm2930f7e8wjyv4ck", - "percent": "0.0%", - "airdrop": 7288.9770182822895 - }, - { - "total_amount": 78736202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av18BbLwr4b0J2TPNDrncdVcD7C3I5bstL4W0WPebH5o" - }, - "address": "noble19dwlllcz2tvs9k4skjwxtv7mmznul0g7avnx72", - "percent": "0.0%", - "airdrop": 1383.0598112505354 - }, - { - "total_amount": 2204824213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+op8xdtmAaqpoDMB9PeFQmBSQdYXDyaC5c+dfk24BAA" - }, - "address": "noble19wr7d80njkuaacgs2upfyv99th6kn658cr40fz", - "percent": "0.01%", - "airdrop": 38729.37330495558 - }, - { - "total_amount": 147116292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxjwjsNj1Oez2kRtbu09VjaoC99J2NFTCJ8E+EMAl3n4" - }, - "address": "noble19wve75shv42gc94prqtjs9f5anutrk2zupwquz", - "percent": "0.0%", - "airdrop": 2584.2068308730286 - }, - { - "total_amount": 2146800192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al5mRg5czcCxPjxAfKQXJjPDdmrzkZoHQ7QDcmgGtqgC" - }, - "address": "noble19w0ekjlsg9zpdpc38lepa6cj6mnhjpv2h6qqtf", - "percent": "0.01%", - "airdrop": 37710.13832163422 - }, - { - "total_amount": 164538159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3LCP8wdCqBUgm+f6zOSp5cNmwkvO3R3TK978jreBGpu" - }, - "address": "noble19wh403fyjg3z4500w0kccy8qwuw7y45py3ljee", - "percent": "0.0%", - "airdrop": 2890.234851943336 - }, - { - "total_amount": 154816960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1HnlEmtRshcNGW51PaHJFDxNTbVX7BMRlX5Uw06PycN" - }, - "address": "noble19wc32p9dsnlh8sxr2ns9c5z8547g76g8n04g4y", - "percent": "0.0%", - "airdrop": 2719.474778272664 - }, - { - "total_amount": 550000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7s8L+6Il3KWtqKg17owZZ7f51WrGG+QvbF7NluSLZ+E" - }, - "address": "noble19w6qytzaettgsg2vc79y7mw7z03alswkd400fv", - "percent": "0.0%", - "airdrop": 9661.158105997982 - }, - { - "total_amount": 91146020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0JptzFGz/bZ3kLaiTmzOSRJjqKJrDnvzC+qdI98JXd" - }, - "address": "noble19wmrprg8pf9rgljg37rkszwtj25vg2zf2c4qcx", - "percent": "0.0%", - "airdrop": 1601.0474726408256 - }, - { - "total_amount": 70413062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3XWCYfyDQlbHp0QADvxEID29B5KDfpX/lgvQ/EIzNMj" - }, - "address": "noble19wlqhpvz4pqpck94zpmmhlhsqgmufx82hurd88", - "percent": "0.0%", - "airdrop": 1236.857681289888 - }, - { - "total_amount": 326848502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmwZHFaRzRCT8RfoxMQK8N0wpUGbg3/VRxgG+HeRwwIK" - }, - "address": "noble19wlk8gkfjckqr8d73dyp4n0f0k89q4h7wqy5ku", - "percent": "0.0%", - "airdrop": 5741.336462782904 - }, - { - "total_amount": 502847451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3D5ap3HxoQGxXx2HGwUvk840rXUC57T/uBFn8G7lBtP" - }, - "address": "noble190258ff7h93jc9xatc0qp2zvznuadwrftp54gk", - "percent": "0.0%", - "airdrop": 8832.888595107404 - }, - { - "total_amount": 3071839130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqA7lZroI8SuUYfun4NxVy1veRm/zWu9KJ2TEd9Lbmsf" - }, - "address": "noble1902l3lus5z956d0ez5kpzs2ykp3kd2dt6ekp00", - "percent": "0.02%", - "airdrop": 53959.13365658415 - }, - { - "total_amount": 98876029, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/vINwkOyoT2zjiCxMR9BtAMDGTsPpQJJeC+Bx/6G53s" - }, - "address": "noble190wv09xrg833r4tmwv6ncnayrc596a57n7kt72", - "percent": "0.0%", - "airdrop": 1736.8308164768025 - }, - { - "total_amount": 1036829387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmoR8gYD/B2oeEd85HlTlipod5pxY41z1rjW5+RNES21" - }, - "address": "noble190algrmdhd5we4puhmhuzed2ascfem4r793af0", - "percent": "0.01%", - "airdrop": 18212.677521367215 - }, - { - "total_amount": 106058472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao2+6/qWXcgUjoZDAXMQizxIvPjkXv2gIPMrOYaYkRLq" - }, - "address": "noble19sph5wrfs2kh7xgh27fksadv93dctjpzkdye4j", - "percent": "0.0%", - "airdrop": 1862.9957572228361 - }, - { - "total_amount": 87661564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+C8WLdBa8a3lgBoxgrprgSG88CutXZkBHmyQh8gbzy+" - }, - "address": "noble19sz9zp4fcg3mm9s8dx727mur6kj6kahmncsnph", - "percent": "0.0%", - "airdrop": 1539.8404174964742 - }, - { - "total_amount": 282098741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhBB7GFpm3pLQLzJXuHp3k6FMOek04EDrnLIHpQiNRbu" - }, - "address": "noble19sgdk5d469ndphsx54wy7jrl8j0q984yax66yp", - "percent": "0.0%", - "airdrop": 4955.273706007228 - }, - { - "total_amount": 72389389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw42eOMvOAGW/nHApJKzxCSdA+8kkGqv8/YTRgHmKzXH" - }, - "address": "noble19stc5tf4mr9t9pqp2l7a8hj7l55l5v5csr0232", - "percent": "0.0%", - "airdrop": 1271.5733315010748 - }, - { - "total_amount": 189224035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8IRU9aewzxhqu9rYSTyyl8bVxET1brQu0as+JKDUsRG" - }, - "address": "noble19sh5lelxkzdwa43hjtm8554plhdl0fehe6954j", - "percent": "0.0%", - "airdrop": 3323.8605810725376 - }, - { - "total_amount": 779509006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4v9AE2LoUTWeHyLR5ydqoDAzHrpkq+Ysuqi68GwZmYx" - }, - "address": "noble19slqpslpctaet05629ut7q9ar00zuk86qfu902", - "percent": "0.0%", - "airdrop": 13692.654094573325 - }, - { - "total_amount": 94708654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A01SRSqzyJHkiR1BEjc3eEtwQmlLKOvFoXwGz4KXd1y+" - }, - "address": "noble193fztwge54p94yhd3unn4c4pt8uxarkct0dhc3", - "percent": "0.0%", - "airdrop": 1663.6277823641055 - }, - { - "total_amount": 54333208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2gTId2XZzZNDm06sq27q5IrW3nR6bPHSz/ekwjZRISE" - }, - "address": "noble1932p8lwv65z7wyh2jnw7sqshuldhynm6ujks0g", - "percent": "0.0%", - "airdrop": 954.4031143528624 - }, - { - "total_amount": 80341176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxLWsYh8wEkMn5DqB2SYZ9jd80WWw1kpyNAmdMuoLkd+" - }, - "address": "noble193wwflv3g4y2elqr2fw4mu7yzc2zl7wsvuect0", - "percent": "0.0%", - "airdrop": 1411.2523704687464 - }, - { - "total_amount": 319113171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2t/vBI30q7CTXHWWzHalatCCYdMAjQS6/fBXRHxjaV" - }, - "address": "noble193kfalvettrpzd8ccvlk60vtcx3cj23fzhl4su", - "percent": "0.0%", - "airdrop": 5605.4596340679445 - }, - { - "total_amount": 107878704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlWw0REfAqBBZ2LtCnVG3ItF1F49BJuLeQ1674ZgPiKt" - }, - "address": "noble193k5z90g5ce0ssa7j4ehtc7sgfcfwhxknqx60c", - "percent": "0.0%", - "airdrop": 1894.9694829348307 - }, - { - "total_amount": 248325872, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ais4sOdvkpOysKdX4tbHNcB6S7PjDJVmVuKvPLppeRYm" - }, - "address": "noble19jqu824mhvll8cjk0gg5hmt68madcv8snpus22", - "percent": "0.0%", - "airdrop": 4362.028202185122 - }, - { - "total_amount": 774000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmedThh9JyLYZtCxoFOPSFocrLSdddY4r6Iv8+ga73rw" - }, - "address": "noble19j0kx8g09nah8dkrw9f9svt4f0ntgyz96g86nk", - "percent": "0.0%", - "airdrop": 13595.884316440795 - }, - { - "total_amount": 1237537575, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtmIS4fD0VxnyKAtb+dh+YKpo6AuBZcgfVLI/AJnNH61" - }, - "address": "noble19jn2mfcu90hrswzmrfske3znlx4wdesgtw479l", - "percent": "0.01%", - "airdrop": 21738.265771251517 - }, - { - "total_amount": 27433350452, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AomY/GGvcBwP2Q43mZGqfdEDeSmA+ELdMN6QeOHOkMVJ" - }, - "address": "noble19jep8uyr6dfnxywvmhvdsgetnkp95ksmev9tsh", - "percent": "0.16%", - "airdrop": 481887.15653458756 - }, - { - "total_amount": 264521456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A96CRdT4UnsXurBTFjb4gIJ+Na6u9zrDVNU3YHF6AcDn" - }, - "address": "noble19ju90q2tmz39k5xjju5ukajwnszlwe5fyfp3fk", - "percent": "0.0%", - "airdrop": 4646.5156524450695 - }, - { - "total_amount": 3623305781, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag7EPZz8poV6W6oI1KZ5ZzWIZeXeDBZhO7qBfGixqwTA" - }, - "address": "noble19np4ydy96ucy8vw7kjfh7axg8clztvjf75gskg", - "percent": "0.02%", - "airdrop": 63646.054575668175 - }, - { - "total_amount": 717681450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4bhGuW6jMKotrd3SHjzbPenWmYfUySQ8jnD94PAM8V9" - }, - "address": "noble19nmr56uvn0gew86zjsadm0xz30pgf2smdh62mk", - "percent": "0.0%", - "airdrop": 12606.607196712517 - }, - { - "total_amount": 509481568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoMKuNOLMfyrzrBI2Hkl8Dc3VHCAaPlNccDLNF7bRkAT" - }, - "address": "noble195fgcvjndzfwa95maqr759c9zt45z70v84e30k", - "percent": "0.0%", - "airdrop": 8949.421782799567 - }, - { - "total_amount": 160000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au/QoJgcSmV+ijvbOso1uCM1ud2T7e9k05K8dWJxodEL" - }, - "address": "noble195w6wdeyksrpkvw6nc7depcdp6gc6epsjryu37", - "percent": "0.0%", - "airdrop": 2810.518721744867 - }, - { - "total_amount": 76842621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0cQI/mibD9bIGEoE6MFpMvyDFFLFDwPDZzcvFyRficB" - }, - "address": "noble1950v4hpjvfkh0skchv3pn4wfdk0lgzxlkhxvz9", - "percent": "0.0%", - "airdrop": 1349.7976559277831 - }, - { - "total_amount": 656238360, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgU5rTKgOgwvJrks12uMISIcw0iBMLBYfMju+gMUQHIs" - }, - "address": "noble195lptujc2mqzj5ajtfg2l0x94rcuw6553rjq42", - "percent": "0.0%", - "airdrop": 11527.313729419675 - }, - { - "total_amount": 73919093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyPgVKCcP++zwSRVqMuuu3WHnJOk8PTmVnBP4Lct8vpt" - }, - "address": "noble194f2zmf7n2u6egtzekqqs0pe7xs38mjgpgv6jg", - "percent": "0.0%", - "airdrop": 1298.4437173181245 - }, - { - "total_amount": 103400423480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwyMcLA5+NDjKhNYyPa2/pOyOSKVhRKrlWJMek5cGEf1" - }, - "address": "noble1942nsx3ltkngryj78xl8r3s8kj90vmfklspgu3", - "percent": "0.61%", - "airdrop": 1816305.1626680472 - }, - { - "total_amount": 6216910919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtsPPvrOtf3oRIpZ9x7VcObAvr5tDBwGf68/LY8WD1zr" - }, - "address": "noble194syj7k9z68ge37wrunp5lxt7yxzd93ctuenqh", - "percent": "0.04%", - "airdrop": 109204.65330793493 - }, - { - "total_amount": 3308917640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6WmzvfqydwGaqXksUlkepR8xOR8Pt6K6QyXBf0+pBWG" - }, - "address": "noble19kr6zj4nt67d2emlrh2ew6mstfthum289ccd4x", - "percent": "0.02%", - "airdrop": 58123.593599574015 - }, - { - "total_amount": 292254970, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlrrsLbwstgljc7juft/ZHjmH7Exx8EQsX/RoGwypP+r" - }, - "address": "noble19kxxls8f2a4yznr5wtuszlwxx86vft7lm6a8nu", - "percent": "0.0%", - "airdrop": 5133.675404424903 - }, - { - "total_amount": 195414350, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsucJt5Q1gEu6zMRowVh+D+Dla6turv4G81cMgmchUvx" - }, - "address": "noble19kgm04yh4kmtpg7hmt2zvyzzfgsj5t5lhes0em", - "percent": "0.0%", - "airdrop": 3432.5980573287757 - }, - { - "total_amount": 62690539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A82o3do47Fd4JHWKTDwZKjuIV+58jJU1qwUUD8yZyiEZ" - }, - "address": "noble19ktds2h7enud5pksm3anzdeuqkq8236f9jgzey", - "percent": "0.0%", - "airdrop": 1101.2058345986047 - }, - { - "total_amount": 1391853559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtKr5DWGghyblqrU7GZ7drk4yJd9L5ZuQYi2IO/mRu06" - }, - "address": "noble19kd6f0yn50qh80xw54jtr7aeesch0ksh6j3gxa", - "percent": "0.01%", - "airdrop": 24448.940534354526 - }, - { - "total_amount": 147333920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av4IHIgko4tqcJc4uKnm+ZzjvKwyDCrCmYVpmp1z9Uzw" - }, - "address": "noble19k5vuza4mktv6rwwqhs8k9aam6aganfm30anm2", - "percent": "0.0%", - "airdrop": 2588.0296281753785 - }, - { - "total_amount": 567814532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Ixr1zVuxTsPEySoE8KyGAc0wdSkk4MMuexvjnyEWso" - }, - "address": "noble19kc2xk4sn83ruc95npwz7wpzz3m43n2tv4zuk9", - "percent": "0.0%", - "airdrop": 9974.083579155 - }, - { - "total_amount": 16035429069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoBpNbaVT2HVGcn24ZcJ+Fg8DtGJ3QGzXo3mTp20vn3Q" - }, - "address": "noble19k7qj2j3z03lf23y386ecsgj7x8rq8cwxctedw", - "percent": "0.09%", - "airdrop": 281674.2100602273 - }, - { - "total_amount": 320887115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1mhwSKDapXtIM02kvFzpgrdWXPz8C3Z0qDRW/1P0d9q" - }, - "address": "noble19h36rgu9dww2radvef00ajg4exj7svmydx75z2", - "percent": "0.0%", - "airdrop": 5636.620276713738 - }, - { - "total_amount": 623644883, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsVxXen2SjiktIL2LT4q0y0kqXSB8NOBhYGcxi+A95NA" - }, - "address": "noble19hkxtqmskaccq7585acvc48lduk5ca3l6etzan", - "percent": "0.0%", - "airdrop": 10954.785121199297 - }, - { - "total_amount": 3126263841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aokn+VVWY0p7sTc3OA5e7XVuMTk1lWKmcX9MALmHUMNw" - }, - "address": "noble19heha0ru0x2my6f35mxc85ynv4exe078gd5j28", - "percent": "0.02%", - "airdrop": 54915.14408902824 - }, - { - "total_amount": 2445276588, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0775j3SCT5BnBzycEM0r9me4cwFr4gltYA4SAzpJRTJ" - }, - "address": "noble19h6z8kcq994gj3wsd76npqryrngp3u8853e5mg", - "percent": "0.01%", - "airdrop": 42953.097690115064 - }, - { - "total_amount": 16663596389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwvAadqEbPo2Nwxj5DVHdNnAPpZpaFparA9KEYSeG3k" - }, - "address": "noble19h7jfvfujzgwtlfwgr43wh55wthkhqpcsgme9d", - "percent": "0.1%", - "airdrop": 292708.43514302914 - }, - { - "total_amount": 315729949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0gbNZ+kurkVqkdFwxZLZXPYfbC4YovHPeFhnot0PB1U" - }, - "address": "noble19cp0z496j2hd6hr5d8rtm58epcmf57fnzus2hc", - "percent": "0.0%", - "airdrop": 5546.030829250325 - }, - { - "total_amount": 190949280, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOXEyfGqL9bex9TbYAz0KH1kL6STdcmeuBlNBOO9yVC" - }, - "address": "noble19cxnxqndx8pla94xl2cu283mgs88jn90cmfuuc", - "percent": "0.0%", - "airdrop": 3354.165789648142 - }, - { - "total_amount": 104659499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9SmpXRR2CnCqYM2LI7hSBS9a1L8Z2Q5hXma4dxLvRc3" - }, - "address": "noble19csg7dkg2aw7ymyr3mwxxeplnvu9zdl55epx37", - "percent": "0.0%", - "airdrop": 1838.421758424614 - }, - { - "total_amount": 1711189590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/EF56vvxisLMCNCPYL8XDJ6lF+5Z6z2nXr8QgFflV33" - }, - "address": "noble19cs7du6lsxe5awgp0zjx52rjkw5qrzkhnxaydh", - "percent": "0.01%", - "airdrop": 30058.31486968702 - }, - { - "total_amount": 13386578750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwPtU8ezqo4YlEYRz13pmZ2QYv1sLTvNKlD17Iaj1D/N" - }, - "address": "noble19c6yta008t6fdatdlaukpnqpekkccehmsxxyfv", - "percent": "0.08%", - "airdrop": 235145.18873116878 - }, - { - "total_amount": 306676538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7H1QWn72xL0OhdVY496fis3Q/fP40qMngo/BNEWIWvw" - }, - "address": "noble19cm59zg00x7r60pn2jqq4pdlrcxvagyyewwv68", - "percent": "0.0%", - "airdrop": 5387.0009473056325 - }, - { - "total_amount": 286402666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyAWjifMVZGn/7rLiEmwMizd1VJvarsZMOSCWm/ej0U1" - }, - "address": "noble19cl2nkzmz8jmc49z6ankhkkaphaw37pmaslpsv", - "percent": "0.0%", - "airdrop": 5030.8753421915135 - }, - { - "total_amount": 72553350, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsMiP4FdfF6DHz3gl0M123Ga4w6m947g8TLrxe8QMxlS" - }, - "address": "noble19epu6wwfulyxzcr0vu7xsh8efzv99hyf2wktft", - "percent": "0.0%", - "airdrop": 1274.4534281269248 - }, - { - "total_amount": 170000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ga6LFb0ian+JSTgKRShD/Sr7WWlnALZAkUixaYn87H" - }, - "address": "noble19e2670v3akpgnj4wetq2g4c954zkpkt8vxz960", - "percent": "0.0%", - "airdrop": 2986.1761418539213 - }, - { - "total_amount": 50813456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajf+nISx6+Xpgia5KsDtdR2bVMXTT08/kYtm1ic3FznK" - }, - "address": "noble19eerh68q3fa7cgfcj5c6q23w72rnxgxj6qvts7", - "percent": "0.0%", - "airdrop": 892.576058778494 - }, - { - "total_amount": 115634049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJebtPK7zOH0/ZikVuTX4yzXVnktCBOpfRWb0f1wt89" - }, - "address": "noble19eu7y34vmfn6vhjg5aqccnvt4rc6tdzm5s722m", - "percent": "0.0%", - "airdrop": 2031.1978724103958 - }, - { - "total_amount": 137108616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar6sKgS21S46UjW0QWIJCbnM7pqNXeyzkCWkMxGrMIBN" - }, - "address": "noble196zv7r5dnuajr6fk9pnz7t9u8xr44665w4tw75", - "percent": "0.0%", - "airdrop": 2408.414576128299 - }, - { - "total_amount": 878799672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXPAn9kXOmAovgES2WhXxJITzImDcFUWv+FJfpxvnQK" - }, - "address": "noble19684tn079l8rxhg0gprgcv52tk04a8x39srv0j", - "percent": "0.01%", - "airdrop": 15436.768317620303 - }, - { - "total_amount": 12219293500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ODO4pb6cxdfe9V8/Stgo4wRHNW+naeEn1hVO0cwYaH" - }, - "address": "noble196vsspq2773x67rmlrxtz5ghcjw5g2ga2g9gpm", - "percent": "0.06999999999999999%", - "airdrop": 214640.95717653353 - }, - { - "total_amount": 402136756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkewmsnfqEWH35eyfQF3j/GBEuEEyvAHwVY0MbTdUcNZ" - }, - "address": "noble19633cj2s384wzuxddr000vp9ns5seyupwkwlty", - "percent": "0.0%", - "airdrop": 7063.830508998422 - }, - { - "total_amount": 526932983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw79+GF9R5cY2QWAZhLYZ5OIWjb5qEmOCPis19QlYBzd" - }, - "address": "noble196cdxhufjk3va3lqt40vsvu6ase9ll2cfdzt39", - "percent": "0.0%", - "airdrop": 9255.96883641481 - }, - { - "total_amount": 266000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajw7pwP92TJ29/Uh6azY6gx3hiJDYKiYeXlJfG8fv4UQ" - }, - "address": "noble196mzywj9mpjxklwc0gs8g9mdfgvr5tmp6tqpta", - "percent": "0.0%", - "airdrop": 4672.487374900841 - }, - { - "total_amount": 223900183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjnYcT5Ot5xR08Pg0knDuA90HPb2ZRGNwzYLZjJQfO/T" - }, - "address": "noble19mqreusx3ae6jxtsa6e6zvpe9mk8wzjau2f0zx", - "percent": "0.0%", - "airdrop": 3932.9728507725117 - }, - { - "total_amount": 242540755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2DY9KN6RHSkRdJHEbswEl37xU2jopai6z2eVjSSDEUY" - }, - "address": "noble19m8ktn6r9zuusrswye90p50sr2vuqyxrw9xgjg", - "percent": "0.0%", - "airdrop": 4260.408329460219 - }, - { - "total_amount": 600466906, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2WjUVhZ9V5lctjC+M/OND8vbHLlizh5w2vYs+DEPpcx" - }, - "address": "noble19mfhnnr8rmthsalns23hxwlck24tsa7c9mseff", - "percent": "0.0%", - "airdrop": 10547.646756882596 - }, - { - "total_amount": 110420675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A34G3f8P6aY4PZdSMeYUFwzaKGpyCV/MoONF+S06b1Nu" - }, - "address": "noble19m3kl38w57gdyedhckjxd5g64afrwg3kfugau4", - "percent": "0.0%", - "airdrop": 1939.6210897200338 - }, - { - "total_amount": 1228572845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoqbQ73m/JVIvqnwnoeuqwPOtqyKL3Tn28DFiiRpPL59" - }, - "address": "noble19mnfnrd4f26c260ld6vxnkjr5fznfnlr0qhm6d", - "percent": "0.01%", - "airdrop": 21580.793636874092 - }, - { - "total_amount": 144225907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As9MoJOn6euqUn0T71UWYexfbCL/6QMmG366CqXHvQLE" - }, - "address": "noble19mmhdc30nqmc43acr0csw8am84dqm9ngvxdla6", - "percent": "0.0%", - "airdrop": 2533.435073650838 - }, - { - "total_amount": 50372181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fbB9GCL/WOEAmtQBAQ5hPNeXq1yYm/8fDEoqRFgz1M" - }, - "address": "noble19ug44nls5eaur37ahtzckvegmkg6fxu8g5j4zg", - "percent": "0.0%", - "airdrop": 884.8247359726319 - }, - { - "total_amount": 310603323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxqnCVzJ5U+FmxjixjPjLQmYPnwqd2vC7GLmwHDRukXB" - }, - "address": "noble19uwulu3ru30aguqu4qscpu5tys2h7reezj5ell", - "percent": "0.0%", - "airdrop": 5455.977839547925 - }, - { - "total_amount": 3363339297, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AotQ1/u+HAfbkoi5MMN1UAiwflz2TXjLlq+3D+sFbYq8" - }, - "address": "noble19usfw5xtrupjw3mffe7tt399k8nxz8pr8chnxm", - "percent": "0.02%", - "airdrop": 59079.550386242 - }, - { - "total_amount": 28504105692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1aptezCQBgJhfVnnEWkYrZ6GcMRyF4EpNg/44KQyckw" - }, - "address": "noble19ueyqsqmmtnwv8z5rvcrxv9t24hw9zcdj5gvxk", - "percent": "0.16999999999999998%", - "airdrop": 500695.7668372527 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6xC8ABY5Tiz5zHPkKX26lHumUxZDnOW8DbnFYSqrMjA" - }, - "address": "noble19u7jlrhhga3eg7tmyk5pduzwsmpanf6e66xd8z", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 161017555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuGtrGmITtKPtHs7oMMMfPXQ3uzW15c8z8h6Rid1rWsY" - }, - "address": "noble19azdjgq5k28k2kj74r6kj5yku27tz924kmyhac", - "percent": "0.0%", - "airdrop": 2828.392830356774 - }, - { - "total_amount": 292925002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am/FWtiWbRtG4ALwe6jH4qNpd4r2iwJDTGvmioAKkLs1" - }, - "address": "noble19ay9zp333dd4hyp9l6qxqvj2dmfkegqrh66z9z", - "percent": "0.0%", - "airdrop": 5145.445013675954 - }, - { - "total_amount": 544781936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgcCkIMXkr+5nZwGQ30fvGeFt0zF1DpEYvj+1su0tdva" - }, - "address": "noble19aygrkpmd5ws8ypkkurpq05v59nqurwyve25uy", - "percent": "0.0%", - "airdrop": 9569.498939977588 - }, - { - "total_amount": 247401048, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjS1/UiR15Qz1NRlHy1cnI/4X4O+ksPmAUQdJkJ6cAM4" - }, - "address": "noble19a2d6pmlhk6qfa8uj3mtxgv0l5tzf6w26nzwge", - "percent": "0.0%", - "airdrop": 4345.782982395628 - }, - { - "total_amount": 114807756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AspNIKRbIPHHxXmpL6v9K21epCf9jVuUT/CcAdgrzgoM" - }, - "address": "noble19adxqyatyq7ff53dn8jrrdsyfz87s3y9gk2m7r", - "percent": "0.0%", - "airdrop": 2016.6834227469787 - }, - { - "total_amount": 200446006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApWx4Njol/2Q0p0DUjh3iTv/aPcUjvQzGBGPCekhF2wo" - }, - "address": "noble19ajjf8ykjt033hv84n2cssuv2nt8958pde6wql", - "percent": "0.0%", - "airdrop": 3520.9828285124 - }, - { - "total_amount": 37323176462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6geOkOxf74htVLYjf/2CGm3l/vg+iqXlReWffK9NYRZ" - }, - "address": "noble19a5fvwtjzmlpp09cr8qqguc8xr9axed5jkme0r", - "percent": "0.22%", - "airdrop": 655609.2887589898 - }, - { - "total_amount": 5133789003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtUXNq81MILfw5REw02PlgVG2+e3Y6hr97V5mFYZIn8I" - }, - "address": "noble19a4vxxd390xuvddhqamqm3yxyvwdgstmwe5ewq", - "percent": "0.03%", - "airdrop": 90178.81316512135 - }, - { - "total_amount": 521498990, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apt1RqAT8ZnkuzOH7L+gBCOY1IC+6rihw1RKlQBl9Wyf" - }, - "address": "noble19ak0k5y6rkgmzsq8l5khdss66erfvq2mey7skz", - "percent": "0.0%", - "airdrop": 9160.516717287745 - }, - { - "total_amount": 632511119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+x8Olr+jlLKII8PClEHUCI0iRHdJbzX7xfybQarDI1z" - }, - "address": "noble19aazmkggrjrqpcrgt8g9fg86f8sauncksyha7p", - "percent": "0.0%", - "airdrop": 11110.527135383096 - }, - { - "total_amount": 50753765, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5G9xddWG/SfPr1Zrs4sln7QUBuvlAu6PIvYxLU74iPY" - }, - "address": "noble19al5ggcdashsh8rdnh60z3zzh9alk9uu0wgm3f", - "percent": "0.0%", - "airdrop": 891.5275420721212 - }, - { - "total_amount": 134201761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuNOoJCK3BvT6OWzEqy+IC4a/lVmrqYseVuSOO7Wevku" - }, - "address": "noble19alhhjzqsg25fae3m6fpxm4pl8fplm3d07cjus", - "percent": "0.0%", - "airdrop": 2357.3535111351885 - }, - { - "total_amount": 611790969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3eXpf+9VHm308yXNdPlFHnz54XGCZqer2wLiC+bDFr8" - }, - "address": "noble197p5garh0qshq3l0q7mxjdf45dd9n6affu8936", - "percent": "0.0%", - "airdrop": 10746.562326055835 - }, - { - "total_amount": 600000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/QlaHpQ/aJMmxKkXonsQQ7WQnQXJuZqUcT43Sbq5zAK" - }, - "address": "noble197raqlun9nyprw3ud42trtcwnt40k7mtaxyay2", - "percent": "0.0%", - "airdrop": 10539.44520654325 - }, - { - "total_amount": 76458000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3dxBF61qgLx4M5P+CzxlB2WRZ2vR8eepJ/IlYN/s69o" - }, - "address": "noble1978nlur6cqvluztzvv7vcceqsfq836wamrawqc", - "percent": "0.0%", - "airdrop": 1343.0415026698067 - }, - { - "total_amount": 80719101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/4spjSuO02kDhfviKpWvP2iZz1yGzZkajhlua7nCo1r" - }, - "address": "noble1972x7xxhl9y4wsfd0ec035w2vv0mrmpkzf8uj7", - "percent": "0.0%", - "airdrop": 1417.8909035182176 - }, - { - "total_amount": 80430222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5h7k+c4yAYGwwZSlXrXXTROkapXwXMwkOGu4f8zgIfe" - }, - "address": "noble1972gys70m4f4cs8kr7927e0qvlffdl6j2aylpv", - "percent": "0.0%", - "airdrop": 1412.8165295318495 - }, - { - "total_amount": 50086189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am48FgB4nI9LaAco3jhOiWAeLLWC+WZgIADGhoBOKOHI" - }, - "address": "noble1970q655k7ss0fcuuv3kxnpxfl8mj2jfr77yxlr", - "percent": "0.0%", - "airdrop": 879.8010742834489 - }, - { - "total_amount": 63515043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At7deAEU/7ueRkpqqz7PKwcZE6000LZmKQW0UOBMHN/O" - }, - "address": "noble19707e6gszfmjlvj9lejd74juh2yfya4vlpty3t", - "percent": "0.0%", - "airdrop": 1115.6888591495642 - }, - { - "total_amount": 1041669874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai4NnbkaNvRjxGZBFJKUL15z02mnKobWRF+kz8A55MLM" - }, - "address": "noble1973qhhswmsf0y99h88t40v7ecgzqhs6rhk7xpr", - "percent": "0.01%", - "airdrop": 18297.704267216355 - }, - { - "total_amount": 6968381687, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1BIBB9nQDSx6JGIGAo2ceEelpotxqoh1Tw8oUyGvl2P" - }, - "address": "noble197kx7r56c72gmcgughmd7nakjl749gjrmx2ejx", - "percent": "0.04%", - "airdrop": 122404.79494735989 - }, - { - "total_amount": 1960908936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0e9sXi1u/omxIEJjJd/WaVxnZXPFVJwDqGYjCYj2BQc" - }, - "address": "noble19ly7g56ftcska2fjay0y2dgqk3un0ygmzpcpz5", - "percent": "0.01%", - "airdrop": 34444.82047665505 - }, - { - "total_amount": 195347492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3d09z9w9YibxXu6iiMSmls9nB6iA7x8fEb87JPP9QXc" - }, - "address": "noble19lwlkdl3qh6kujwcpp9latxqe94nwsfmdwlrzd", - "percent": "0.0%", - "airdrop": 3431.423646949411 - }, - { - "total_amount": 268799373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFuXEGdgpLgdwYJmhXCRIVjbc1ID4NhlJ76+0sMUDE/" - }, - "address": "noble19lcvf4fh6sk46vd4xh7crmhpxwpqxl5d9acpru", - "percent": "0.0%", - "airdrop": 4721.660438811136 - }, - { - "total_amount": 50463905, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvH44WGBzAAgmovXpikrvutlvJ/orQRrvLuxRde4pWoq" - }, - "address": "noble19l6ryekypmy369lzjfc2l76nlcklcauejhkltc", - "percent": "0.0%", - "airdrop": 886.43593609284 - }, - { - "total_amount": 993576243, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqSEMT6Wv2icfa0djuEzZtvBN2jVgteTMBzBQ8LVifjf" - }, - "address": "noble19lm08sfkt6mtkcsjr5mf0ex399r2rm2ye3upc4", - "percent": "0.01%", - "airdrop": 17452.903952702673 - }, - { - "total_amount": 87001304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An66kzz7wCaeTPvmaxXK29Ga/hSuPwcIlPE9Sw7YHjtC" - }, - "address": "noble19llge6hkswsqjqqsr9zksqccu4caqz7utep0pe", - "percent": "0.0%", - "airdrop": 1528.2424606763536 - }, - { - "total_amount": 688608505, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/P4ohmFWzzxyqVFzEafmEDn4ghMwOSv42OIe6bdPsnB" - }, - "address": "noble1xqtqcv02gdj4mpz5c33mrlkk09ss6sst6gw8ju", - "percent": "0.0%", - "airdrop": 12095.919345345274 - }, - { - "total_amount": 513846627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+PQY55GyP9Q1PEgRAqCmfxJkmCrTdFlOuHSpZcRN91a" - }, - "address": "noble1xqtt9gj26zy8qam43ch4ahgrxjd8nm04fntdj5", - "percent": "0.0%", - "airdrop": 9026.097283055948 - }, - { - "total_amount": 77559708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNjvJtFfdKnqY7LkPsoTStiHFyTCWJMwfNGInXWNgVy" - }, - "address": "noble1xq3ejydua8dpr7nhd30kxnfr39vm3j70lxhf8l", - "percent": "0.0%", - "airdrop": 1362.3938211691573 - }, - { - "total_amount": 1083326539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao/b8whusJMlcOwMtUI11h9wbrbMR9gZ/fyYja5ZRTJo" - }, - "address": "noble1xqnal8xpeg2yckwgrp37h6xls9xmxg5d245yse", - "percent": "0.01%", - "airdrop": 19029.43449764107 - }, - { - "total_amount": 266401478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A13xRzfZwNNNegmA2cicTsFL6bGohXWLg2CZ/Q3bgVDB" - }, - "address": "noble1xppddg7r4mdwk08duvdpv8fxh0lypzszqm6ncl", - "percent": "0.0%", - "airdrop": 4679.5396338718965 - }, - { - "total_amount": 52671602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj4y3w/2YGuKuBKHy+qY2To4RILwwof1j0sP8l7A06IR" - }, - "address": "noble1xpxczuwr0x7tsnt6q2l7ke4vvlz7medpd7qty3", - "percent": "0.0%", - "airdrop": 925.2157720330899 - }, - { - "total_amount": 107062835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmqKVhbFGYA774uS0FFEnqhccc1zADp53mBW8h65VccZ" - }, - "address": "noble1xptqnezdwths96vu7mr70qht90x77p0ufjuqrt", - "percent": "0.0%", - "airdrop": 1880.638138566135 - }, - { - "total_amount": 127782471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyIMA4QGuvrvBrOLQSK4xc/+X9KLzuSXXV44NSmX9XEL" - }, - "address": "noble1xptveqvz08w9sdm9j082m5xv9xs5ae5tf4kxdl", - "percent": "0.0%", - "airdrop": 2244.5939191020034 - }, - { - "total_amount": 154593611, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkDUpeo4evPNyuy+sd4bnq2VET/GDFp/KbLtTOXmLB34" - }, - "address": "noble1xp0ytkpfuetafwf7x2xptu8ket4n637ww75fah", - "percent": "0.0%", - "airdrop": 2715.55148736027 - }, - { - "total_amount": 672577709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak32SgfKH//Cuduvtgv8BgDxh3AwiI5wBFn7JVOfaDku" - }, - "address": "noble1xpuv3tyqkhdxe4045v00x2432qtxf69sevxek6", - "percent": "0.0%", - "airdrop": 11814.326518579821 - }, - { - "total_amount": 77092948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7aE6DPtf57tSMBwhhdLByGDXTKELbj8Qi2Zfg3EP8G3" - }, - "address": "noble1xpus6rcs04kuck5dpkazayvpqt9qh9sw3sn5j3", - "percent": "0.0%", - "airdrop": 1354.194835428147 - }, - { - "total_amount": 93371745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AheP6qyhu+g++ZmQIwvyZOsuDnieAK5SsfAA5wvr0L9w" - }, - "address": "noble1xpa4hxmx0dmccqd78hqc5mnwtkhxqg3pr3cpxp", - "percent": "0.0%", - "airdrop": 1640.143983778048 - }, - { - "total_amount": 402647766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlHq3+tSURVZYV5DYsUrlSYhLiNYyOlxTxjO8X8Xbz4e" - }, - "address": "noble1xpl2exslqmcp90w6jxrhu390fufjj6ps4ewvrp", - "percent": "0.0%", - "airdrop": 7072.806778823415 - }, - { - "total_amount": 70929659, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A69XhS08X3AoOe5ShnN8oT9new+5RDULfVaSUgjzIs50" - }, - "address": "noble1xztfr20rjqy9vhdl968cf6q46e597jwyyay3dj", - "percent": "0.0%", - "airdrop": 1245.9320909154958 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2fPQOm0GoY754rP06TIjfRxbHTMbH5upY/9uMbBjVZ" - }, - "address": "noble1xz3w6rxum2sa6j7058as8mgdqe2pza8f3n925s", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 399326106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj2HNMYi5Te+f65X+/xlcV5CyydUT0ECRzN7A2atRodx" - }, - "address": "noble1xzjt2n5te8ca0wjddpr7qj85ud9kly8hlgagxh", - "percent": "0.0%", - "airdrop": 7014.4593562154705 - }, - { - "total_amount": 1000081328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+BfDLkqORnO4C9atI7yF1CS/+hFK20Uqdqn8y0S67nX" - }, - "address": "noble1xzkpdcphmygtphaxmtjx35wjhgnlsdda7h5m0n", - "percent": "0.01%", - "airdrop": 17567.170597571683 - }, - { - "total_amount": 1725114431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4gzvQgTMDM6IxmQk1RNDO3sY81HLSHfICfQ8Km3vr+b" - }, - "address": "noble1xzktzllzsydqneqqlkun8v5ks0vlmexuvu4n83", - "percent": "0.01%", - "airdrop": 30302.9150342359 - }, - { - "total_amount": 4327729078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnPSOEQjn1fVdwdrmHfS8EvsmnHcST2YSK6AjfcvcwOU" - }, - "address": "noble1xr999hmrd3s6qaevcwqddc6wxly0pw9yd0hcq6", - "percent": "0.03%", - "airdrop": 76019.77247724158 - }, - { - "total_amount": 206754531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0AypQhTNdoBYQFBoiHyTtZQaeITqzTaW0faJRQdHiXO" - }, - "address": "noble1xrfkdd6pamquamlqxvdlmh86kn9jxvk3s9zeua", - "percent": "0.0%", - "airdrop": 3631.796751131747 - }, - { - "total_amount": 51783070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzXtwrfAxDiOzU1uoDH4eVAfx7XypT2iMHKjYV1cYUYl" - }, - "address": "noble1xr2gtnw8qn2408exxvdgqef9clvcmjw7gcsxx0", - "percent": "0.0%", - "airdrop": 909.6080481526561 - }, - { - "total_amount": 119653372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AouVo7AvoDVqZr9qUMQu6DrHm2xrmG36d6AmpUiBNFC7" - }, - "address": "noble1xrj5qe6kmfemm9c0nmqn6lyv908ty2ea0vym5w", - "percent": "0.0%", - "airdrop": 2101.8002632868943 - }, - { - "total_amount": 2082519395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2x8hoBkJGx5zXIkEEMIOzucA0qasPOB0ZxiCY9GqPL4" - }, - "address": "noble1xr44rw0l3xhr32nvx5qc2r2nx7zajjzqdz5q6d", - "percent": "0.01%", - "airdrop": 36580.99842527684 - }, - { - "total_amount": 38660771311, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhkTX/l+XTafUzeisNUdpSE5ablVgag2qEaOBr6dlwMx" - }, - "address": "noble1xrkmfgnm2m2ll6pu43xhm3y4sn2sz5drg7luch", - "percent": "0.22999999999999998%", - "airdrop": 679105.1347916397 - }, - { - "total_amount": 1130516482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHL33uywc8kNB1cL4FBljdjnkzv5CXShmayJszXv0A7" - }, - "address": "noble1xyqkfvzt943hedxz838gr50vm0e3jncx5fw7fa", - "percent": "0.01%", - "airdrop": 19858.3608618884 - }, - { - "total_amount": 400252385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgBCH2DRJRM6U1Gn5jkJS/rw311q+szRg4ff/cg5vW4B" - }, - "address": "noble1xy6mumde6ag5mnls4g6us9lfe4ku54qkha4m83", - "percent": "0.0%", - "airdrop": 7030.73013415959 - }, - { - "total_amount": 660121063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnaBpu5NJ8ZNKiVQrZvThfKLMar/cp01RPZs+nTdV/HF" - }, - "address": "noble1x99055hlxa0e9rwy9dvmfnygmn9pqzajupja7h", - "percent": "0.0%", - "airdrop": 11595.516288622644 - }, - { - "total_amount": 200418730, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ZsOeU/OyEdmABguyIexr2TLpiC1gF1m6DxVLQH+0c5" - }, - "address": "noble1x98rz20hcgfjstuqr6fpyxmknkat7m8dxlyzjg", - "percent": "0.0%", - "airdrop": 3520.5037053333103 - }, - { - "total_amount": 67945815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7O7ORK2RkeHP+1z1NkAK1zm8NB9DcKFwO1tPo2abyfo" - }, - "address": "noble1x9vdaaldvu03zh7qpta6a9um2cmgc4kumhq3vx", - "percent": "0.0%", - "airdrop": 1193.5186570107078 - }, - { - "total_amount": 251174536732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwS9xSWNQMjEoT/Gj46LFCypZwMqs0j0Gs7apZYt0jfy" - }, - "address": "noble1x9dc5enk7f77apgscc3emep5nz0fapxmn0utky", - "percent": "1.47%", - "airdrop": 4412067.111942999 - }, - { - "total_amount": 302967208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3x+L7st9B3U4mUeeYGm8JvsIIzrpZN/ZStBFrTdrQQ4" - }, - "address": "noble1x9s2ulkgd28aw080qnslhp3mlhprvt9mdh9t75", - "percent": "0.0%", - "airdrop": 5321.84381349232 - }, - { - "total_amount": 346498650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3WPQ8sEitD7oSu0tVJJLK/5E4mNRw/3Rl1nwU6o8cz" - }, - "address": "noble1x93vxwdcjym4qx4mecrglagyttaz4vgyalw2at", - "percent": "0.0%", - "airdrop": 6086.5058930270125 - }, - { - "total_amount": 38750269916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qS7zcJBQuXUVrQ3C96ihJzAx6cf5D5Wq7D2rsi6JpT" - }, - "address": "noble1x9e8gxajhdhnmy3pr06eahng92vf9sga4xq324", - "percent": "0.22999999999999998%", - "airdrop": 680677.2441974056 - }, - { - "total_amount": 50035633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiwP4XkMx0i2tGi7KdeVS/Y5vKn3rlhfFujouQQIlPdN" - }, - "address": "noble1x9eftjw9nhnpaz44f655yxtkf4vgxqskd9jtmw", - "percent": "0.0%", - "airdrop": 878.9130206303456 - }, - { - "total_amount": 51468171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApeFWRz+zjfhIFBPNGp7XvR1e2iaWA39Rn911szOIcNj" - }, - "address": "noble1xxzqguy9j0mtmkpku2fg3mfan8a6lms8tc8syy", - "percent": "0.0%", - "airdrop": 904.076613559164 - }, - { - "total_amount": 270000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxU0NwCdTUti9Ck9Lxbm2qP5lAAo06O42QJLffjZDdlq" - }, - "address": "noble1xxh2c806kx66j77zv5ty794uhpj3ntdqcye4kl", - "percent": "0.0%", - "airdrop": 4742.750342944464 - }, - { - "total_amount": 631766420, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax5QiQhr+AqmBwboXW+efkxglT7QZkTICPYBBlLBhWmP" - }, - "address": "noble1xxedg9tsj88ystwzk6hlfx8mzf4f7rajtycj5s", - "percent": "0.0%", - "airdrop": 11097.44594487332 - }, - { - "total_amount": 97537339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2cTFXw26cYTGN/jJspJaSEjDjTw87VKDhZYAokTKfoZ" - }, - "address": "noble1xx64nu0xgxeefstl5v72nlgsy8f73w0tnsq5h3", - "percent": "0.0%", - "airdrop": 1713.3157333042236 - }, - { - "total_amount": 50218762, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Pn9PEYFaZeCjQGUHnWNEfOqFJDzKGBVyi0N+C0H5D4" - }, - "address": "noble1xxuk7adet4n6vac3f2d8uuph3yza9w7qs7x33p", - "percent": "0.0%", - "airdrop": 882.1298173990607 - }, - { - "total_amount": 50936284, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvUTNoIbwdG/xkaVw+IYm2RDw4IwXNm2dUa1SglIDfO4" - }, - "address": "noble1x8958xm5el05p4thmg3vajv883z2w434cf5qrn", - "percent": "0.0%", - "airdrop": 894.7336237382096 - }, - { - "total_amount": 10690155841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8pkwXEo5a0Nc+6yBqPMRx6sddzihQJe998Vjw9SeKcs" - }, - "address": "noble1x8nkyt0g7p033jm68g5gaj2ljfgcw3q6dxt3rw", - "percent": "0.06%", - "airdrop": 187780.51955937967 - }, - { - "total_amount": 54195484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4oPaArUe9p59vWfTbMFfE3GviLrPgbZWUPgHXKfTcp5" - }, - "address": "noble1x8chd4ejed8zuxrnrwwf97yt2n0x44cguvjn67", - "percent": "0.0%", - "airdrop": 951.9838901001525 - }, - { - "total_amount": 2794789549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgTQ0gZFACahKvYI/OwWaJiS37CnjswilJZcK9H17uaP" - }, - "address": "noble1x8uyaf3xxwm0zt8j9jg0fuk6g6zlvrkmy08xlg", - "percent": "0.02%", - "airdrop": 49092.55219250871 - }, - { - "total_amount": 4547002959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsVRZD3ZMPVHWKr+WrSfoSq8T3T/hGxTb2BM92GEOTd2" - }, - "address": "noble1xgpzgpm3uxtkfqyyhakx2xse4x4uk9dclwcnvf", - "percent": "0.03%", - "airdrop": 79871.48090061756 - }, - { - "total_amount": 377867466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3XgI/6EXRS+6ToAzsQYRnZ6zxMi/awPb2usbQ6Rw58U" - }, - "address": "noble1xgp5cuqjyrdtrysfsqzu0ektndha72pu4p92e4", - "percent": "0.0%", - "airdrop": 6637.522422070575 - }, - { - "total_amount": 97595706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awd8VCm1UyKTwsdMxgnrCf8vYgeJmU79aqykSdFiWqZA" - }, - "address": "noble1xgyuw2ywl8s4u5tgnja4cr0kh8m3a4vnauu2d6", - "percent": "0.0%", - "airdrop": 1714.340992968174 - }, - { - "total_amount": 1141607981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8QMhChOkB1y9JCM+PggQEYwhrJpsekwpA69/vqzVPXK" - }, - "address": "noble1xg36qqcpqpjdnx0vx6kkut6um8kfkuhh3tn75f", - "percent": "0.01%", - "airdrop": 20053.19127183662 - }, - { - "total_amount": 7200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlncegoRPLWZLqq326LochLN8CbyaVWPfPYQMLcu4i/j" - }, - "address": "noble1xgjfnl5trg9agk3vh2guc03nt65gla8e835zmu", - "percent": "0.04%", - "airdrop": 126473.34247851903 - }, - { - "total_amount": 50418328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhcrhTJLWIBWnE+H7hOke7TKW+Nl8R2ONbS0XDVf+48I" - }, - "address": "noble1xghtn4fy0ge5wavr63a4llqzkc4p49h6ka549v", - "percent": "0.0%", - "airdrop": 885.635342269209 - }, - { - "total_amount": 8969726153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Ou1CgrL+6Q1+2CLTe3I5yYSoj2gVqIPgoXP4faLKMH" - }, - "address": "noble1xgu6ep87shux0yjlmxaznduh6j2p9f92ktynv7", - "percent": "0.05%", - "airdrop": 157559.89551206914 - }, - { - "total_amount": 178420286, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwhY9XrhhnlK7vilxxqXN/7t+FRPAsq21CFKSJs3CzPx" - }, - "address": "noble1xgul8eky94x0pe5wstufhnwxza80qkse3pnuqa", - "percent": "0.0%", - "airdrop": 3134.08471338796 - }, - { - "total_amount": 763493757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+6Ww4Wui9eKrUdnc+cZ3TAh1oiA8lwY5dvAYoDyFtG6" - }, - "address": "noble1xgl757g35nunclwsc4a42uup2eexth3qld25yu", - "percent": "0.0%", - "airdrop": 13411.334362398915 - }, - { - "total_amount": 198700267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0gUjQSlkR/4rwDR/BhSsGLcorvCdm0caoGMCmarHKNt" - }, - "address": "noble1xfy855c97jvyegjcs9a80dtdck9tsectfwsx2c", - "percent": "0.0%", - "airdrop": 3490.317627620024 - }, - { - "total_amount": 224458274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77TKV9cplExhF1NNONNu+zduM2A94ZkCWZcw897tLjX" - }, - "address": "noble1xfg3dgyt7jsp3qafpj0yumz8m8gkm7kc7k8l38", - "percent": "0.0%", - "airdrop": 3942.77613329712 - }, - { - "total_amount": 59500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw5y0SZIW6L+moUXsPPtZGHYplQtcHrVYhhTx8rmVi6s" - }, - "address": "noble1xf2t562xwx64my2k827shwzx7n6uw5ucdv9d5e", - "percent": "0.0%", - "airdrop": 1045.1616496488725 - }, - { - "total_amount": 659066334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1TWeGpxFVkGZSdpLCBtvOTtai5P/JWNiJkkYOGqhQnY" - }, - "address": "noble1xfspmegdk0puaamv47hgew300hpexjptpn59v9", - "percent": "0.0%", - "airdrop": 11576.989191117224 - }, - { - "total_amount": 56113995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A80/K2fITnDKwQRAl0xzIAEF0gAXZ2tvY9RpRQJJliYd" - }, - "address": "noble1xfj2fzgq2xaag7xuy4y6yccdau6tkfv5vmn3cr", - "percent": "0.0%", - "airdrop": 985.6839593712367 - }, - { - "total_amount": 669305803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak/6yZaffdmSuybHJo0+7ug+nnxI2R0mvVATMe0m4uoE" - }, - "address": "noble1xfjvjnaejpjgw9gk3ehyk0958vkawj98evzcf8", - "percent": "0.0%", - "airdrop": 11756.853061899888 - }, - { - "total_amount": 2877207463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyY3GcQhUS7A8sq2boERXl3piyb1/86pxonVYoh2vTg5" - }, - "address": "noble1xfnrhyjydhsxmqgfm57vratvjejlnv0p9p9r9l", - "percent": "0.02%", - "airdrop": 50540.2840069097 - }, - { - "total_amount": 2705066475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9zJActJBNwaHmcfT+7wh6y4LF9faVtNjtWABrFqBFy7" - }, - "address": "noble1xfc9tram3gdck68yawxwhn8c9r5536qpfjwrfz", - "percent": "0.02%", - "airdrop": 47516.49982219934 - }, - { - "total_amount": 1197982371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai+v5cVXNiTuCcUmn2lqxlZqHQKkpJVU32uXp7BTUFNw" - }, - "address": "noble1xfm2u7wv0x7t7erda2g2z57azlmr7ka8mqkl8l", - "percent": "0.01%", - "airdrop": 21043.44926259878 - }, - { - "total_amount": 29699702770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmZppzLJrhiAmsLRQ0qG9jCtAz2Yz/rk+R47pPUE+MOR" - }, - "address": "noble1xf73tjv0pd62qdn6u3r79rxlqu9uz46nrhtwya", - "percent": "0.16999999999999998%", - "airdrop": 521697.316658393 - }, - { - "total_amount": 1932604703, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArQ/uzw0KtNKz1m/3P8gxjjh6foakr7htHqd2GfZlqDG" - }, - "address": "noble1x2fwcw274ugr5lcnyf4a3ayza7m3vc3cmz2hwn", - "percent": "0.01%", - "airdrop": 33947.63562196049 - }, - { - "total_amount": 1536809746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6EO+cUvZbAJS3jN1IKeT9LBbp1g74fjo3kSiYTMgKNb" - }, - "address": "noble1x24e6ust4dsdtewuh4vcxrqddgjfahz33y6w4s", - "percent": "0.01%", - "airdrop": 26995.203518081085 - }, - { - "total_amount": 69019739, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6uiBr2QAsgXouKbIlbUfoHAVaD/e+LPMvUdq9af4Qoa" - }, - "address": "noble1x2ahkskuf8drrzvn3g99r5aqyr0lgan7dsdggc", - "percent": "0.0%", - "airdrop": 1212.3829289340272 - }, - { - "total_amount": 180661905, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Irg19q1PN2JtZaeNXVATip17V26lJ+mrjyEQOwvCGx" - }, - "address": "noble1x2am06w9g5upzlemz2p87w4254xerm525dmqeq", - "percent": "0.0%", - "airdrop": 3173.460414428704 - }, - { - "total_amount": 50155921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Ojew5pniwDLe14WCHUL3bQlWocor6wpphn/n+Px2mp" - }, - "address": "noble1xtqp2zd2n2qwlxq0sf57krxd402zlu46r7ydj9", - "percent": "0.0%", - "airdrop": 881.0259686053533 - }, - { - "total_amount": 551384634, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8xgd6uaSBPXPw9JiJFr+QvSYXBlY3eMlR1QocyldBGU" - }, - "address": "noble1xtrk70hdctwnc93wzyhnjm2vd7pxv3clthgfh4", - "percent": "0.0%", - "airdrop": 9685.48022962151 - }, - { - "total_amount": 263763805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiOaxGTPrr7Q70f9jNI7BrYhOjiRpQ40WVz6A9lbDhVq" - }, - "address": "noble1xt8gjx303p0egj0cqzccaycumhesuvda3ng9f2", - "percent": "0.0%", - "airdrop": 4633.2069504447645 - }, - { - "total_amount": 1030503149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq6vpSjg3a+LGsdUb8X+dL6Df1FGrw/BuBQUoa65jno2" - }, - "address": "noble1xtf5dvpwaaruugv57vajwchc7q25ptrhqs9tyv", - "percent": "0.01%", - "airdrop": 18101.55245675963 - }, - { - "total_amount": 1141762021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "All3uXUzf2IK0fAPqCwpITsqpQrIgwS0TYHnKlmaoYV1" - }, - "address": "noble1xtflwjs0uuwdzpkakr7edjjyrnrxx6s3knmna8", - "percent": "0.01%", - "airdrop": 20055.897098735975 - }, - { - "total_amount": 408500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8TyESb8HZH1jMPobkSMKj2sMa0FMiJfH3PyA37K0rJp" - }, - "address": "noble1xt5x8s4klc0x2jt4cyqqcmrxnhwa9cv6fc3302", - "percent": "0.0%", - "airdrop": 7175.605611454864 - }, - { - "total_amount": 95880804, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoZvhGVCFolXdhuKrCAZYQ0uLqPwOssL7DvKJ9k2KEdz" - }, - "address": "noble1xvvzrflekfkv649q94uhrmrlcnqp8pfqu9fw72", - "percent": "0.0%", - "airdrop": 1684.2174668621885 - }, - { - "total_amount": 76395881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9DW47OaTS6uScr7XItkmh5v1aV7MXv+PVLdvqV3JmNz" - }, - "address": "noble1xv0kxazdhr0eeynlrva8ds6mayeny3nam05kxn", - "percent": "0.0%", - "airdrop": 1341.9503363418312 - }, - { - "total_amount": 119769515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+dOdvsiomPC5DeIurYxRmszt80o3QRqxwVe/1bteRDp" - }, - "address": "noble1xvkrdmtj0qw6htydtlzj88qvpqk8h96mzuujwk", - "percent": "0.0%", - "airdrop": 2103.840401261267 - }, - { - "total_amount": 1571394365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9pL6lkQLm20hTOW8bQLTmFZdSmRsqOUhzt9yEZo59M+" - }, - "address": "noble1xdqf0j3zf8kdzhslfn4x20k4rcmuaxvgnu25g0", - "percent": "0.01%", - "airdrop": 27602.708012980544 - }, - { - "total_amount": 327344555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhWXkoZBseOMGVrfp47yPReAKXxkJ7HB7bV27AuaxpNQ" - }, - "address": "noble1xdxqlv2c7gdhjyhnyye0tuduyu688sz5upu36s", - "percent": "0.0%", - "airdrop": 5750.05000180464 - }, - { - "total_amount": 250000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aif3jH57Q8L+eJxLHL7PGlSUTVgffYuIcAEZjjCGTAOD" - }, - "address": "noble1xdncpjldyjw86ym3yrvaguj6s2lw7zn8xkhu5h", - "percent": "0.0%", - "airdrop": 4391.435502726355 - }, - { - "total_amount": 4039345929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuD8EneJPBJS354054mLL+tCaXy6pb3UhA2n5TdNuk8U" - }, - "address": "noble1xwywmx62pmjd9pzj0z5gzgznfcxlxmvwfdt3cq", - "percent": "0.02%", - "airdrop": 70954.10848161508 - }, - { - "total_amount": 2383630492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AifYsOhsSLSbFkPsk0rrPIC3W6Tszq2w6UUTECWa2c9a" - }, - "address": "noble1xw96a64t6lus6jhhc7wha0z5y0996kmm57kz5g", - "percent": "0.01%", - "airdrop": 41870.23827179955 - }, - { - "total_amount": 94119873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3mS7BoAEMKVbcYxEWBDpkW9++ZyYd4h6RWUphPqbnw" - }, - "address": "noble1xw2j7q9r5uq6ucag779wdmtuaku86uk4dssv32", - "percent": "0.0%", - "airdrop": 1653.2854072171826 - }, - { - "total_amount": 1120146219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7BtYSK7Ogh4Ulx+B1ayrTL1j2F6KKAnpKTLo7g0u5al" - }, - "address": "noble1xwtv7qw3mg4edr4jq0d5lv8fm4lg2r7u4u0hre", - "percent": "0.01%", - "airdrop": 19676.199497445166 - }, - { - "total_amount": 7417794427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ain9T1+3NDiu9D/GG8NYGnQbXodjLFZMYObAfUHifQ9K" - }, - "address": "noble1xwvw0q95fwgfj3s6gcpv2p00h8ad8xj8d2q2kw", - "percent": "0.04%", - "airdrop": 130299.063194614 - }, - { - "total_amount": 1374322612, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlgWa043Qnz9BYQHofM9sVcqPTIR+89vpUL3twSfstW" - }, - "address": "noble1xwkwxkr5yngguy028hstwy0qea0d49wxwmphlx", - "percent": "0.01%", - "airdrop": 24140.996442145668 - }, - { - "total_amount": 744105555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmyLTnelrZ0zgMx4bFl/n237JKlztLUkhPbHCq6uP/vw" - }, - "address": "noble1xwazl8ftks4gn00y5x3c47auquc62ssudgnj77", - "percent": "0.0%", - "airdrop": 13070.766208011593 - }, - { - "total_amount": 2850280064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay0c5nJPxGWYxkNdLotvs08M5zPD7eYGzOuMyUrJoLhK" - }, - "address": "noble1xwa64ceenxzcc5sqzsn36g7ulqjpxcru4ut9qw", - "percent": "0.02%", - "airdrop": 50067.284263050984 - }, - { - "total_amount": 2913236127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmW7E+Epr7f1hPIjJvfRp67reUfFCOVL19qilDmsBao1" - }, - "address": "noble1x0qkp8zksz3n0dwy065vj646ncq0ygh7m7nla4", - "percent": "0.02%", - "airdrop": 51173.1542237313 - }, - { - "total_amount": 167299250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgI8hws16F6uTwBhyuA7nQuU7Us6SIbN1dMenV2kF73O" - }, - "address": "noble1x0z3yr5ncc2qtwey0c79ueydgh8dqsllfzq5qj", - "percent": "0.0%", - "airdrop": 2938.7354641179686 - }, - { - "total_amount": 326728772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhrNEtOCzINkvtUXUNU/4jim15Werw6LTL+KW8ij96mv" - }, - "address": "noble1x0zj0thtqhqhandk604c3s58tx3mecmkk3xhrw", - "percent": "0.0%", - "airdrop": 5739.233316491939 - }, - { - "total_amount": 188288159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxTlEFcBTEYdMEvpzRMAKKTOj3H/24/vIZEmD0GOI7BJ" - }, - "address": "noble1x0rl3kf8g6uyvts0anrdhfgdw2jnyrw8mctu7p", - "percent": "0.0%", - "airdrop": 3307.4212247023393 - }, - { - "total_amount": 76060619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay2urICSIUTw/8JNmpbfHyGUvWfHBnqgcPs7N7PZk9fq" - }, - "address": "noble1x08k7nn7q75de89cvt4s7krncsgdppud90st9m", - "percent": "0.0%", - "airdrop": 1336.061210543771 - }, - { - "total_amount": 4340285374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUYyqG/HbQKVsqvsHSxgdWxk9LkrhCeNTJ1XXrftM1E" - }, - "address": "noble1x0gzyfzykqe4kl8p7tnzu6pwn9hnyaxc4wc4p2", - "percent": "0.03%", - "airdrop": 76240.33313339014 - }, - { - "total_amount": 683316827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ayu1sfM2Nzd9+CmopKxMShiaFc3grs0bmxEzCfA/OB" - }, - "address": "noble1x02dsqpzkvwfvv8vvv0huxyjxh244t9u7d95pv", - "percent": "0.0%", - "airdrop": 12002.967094792491 - }, - { - "total_amount": 975892966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/0heJ3wVVfc4y33HQStQZELmkGKVY4eyvX+4z0YVR+" - }, - "address": "noble1x02sfjkarulq4648v28a5jnw085a0elm74geq0", - "percent": "0.01%", - "airdrop": 17142.284071013295 - }, - { - "total_amount": 91014164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8LZ8eD0dJWqEoXDYfIp0BkLQC0GfdC0LLOmjMC6ql7r" - }, - "address": "noble1x0vpyrwczm2hr663umur6xdja93zt8lr385v8p", - "percent": "0.0%", - "airdrop": 1598.7313241622355 - }, - { - "total_amount": 242785437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5+CRkUcEnZaGOcDRX4M7v91SYitb0yBVDr2HxNoqglK" - }, - "address": "noble1x0v5wjsm5zxk0cza2akp4mr5dcxfsnzrx5h47h", - "percent": "0.0%", - "airdrop": 4264.706350346931 - }, - { - "total_amount": 2499878930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ala2ng071lviWVJXbpq2TuoHk+yMKWtC+UFkrgxxy8Yp" - }, - "address": "noble1x0wa3ffgvz7ypwxw3vn0j9xsdl44f4d6tflj64", - "percent": "0.01%", - "airdrop": 43912.22834287829 - }, - { - "total_amount": 5904084471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqU10PaxnHc6RcQwTUj7pWmv+DootzFYU6fJQgwxDio8" - }, - "address": "noble1x07m9t95mny4vf7nyujwux0wac8mqc7fxzuw3f", - "percent": "0.03%", - "airdrop": 103709.62462817901 - }, - { - "total_amount": 7384214604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qtSCZMmZnEwQYCz1sooFG/nxT6d/3ts7OAhapcGFnT" - }, - "address": "noble1x0lpl4laaywaukzfqm50uxe98h0zsjqqvpvtfl", - "percent": "0.04%", - "airdrop": 129709.20868702412 - }, - { - "total_amount": 54359513, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9z85dl5d595kVSXmeAjF5s+Rf2iMBs+PQAk2t9gavmA" - }, - "address": "noble1x0l6m4pz9svwuk3g2syqpf47p909thrx6hardr", - "percent": "0.0%", - "airdrop": 954.8651811964593 - }, - { - "total_amount": 130235247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuusvorEGZzJ2ihicLCLmZZhwvKNIUnTOc2EhhI6bCO0" - }, - "address": "noble1xszq0rgk6rwvnc7frzzxxepkm46ej3eu524g7l", - "percent": "0.0%", - "airdrop": 2287.678749528544 - }, - { - "total_amount": 12348334843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3QulLUUtq5PnmcT4LMcPeQfNRSTj1aB+Vy3qNb54k5Y" - }, - "address": "noble1xs0xv4h9d2y2fpagyt99vpm3d3f8jxh9uz0kl5", - "percent": "0.06999999999999999%", - "airdrop": 216907.66411641228 - }, - { - "total_amount": 2843301625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AueveI+wWgskBHa+yc36waA2RCsrvp0LveIlJZ5oz/aw" - }, - "address": "noble1xssmx59c8e6qzynf8xkgls6tguhfruuwqg7xkm", - "percent": "0.02%", - "airdrop": 49944.70280393815 - }, - { - "total_amount": 91412118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0h3kqm8xMNk9YF4G1TNvtygZmi3nJs5Gg7wZY7YsT6r" - }, - "address": "noble1xshtplqpt77setgm0camm0egdrvf2vyyaawq3s", - "percent": "0.0%", - "airdrop": 1605.7216814584435 - }, - { - "total_amount": 387271230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fSGNdVFJ2MBPZQBYSOETG8ZzZ9zOaXcAg7/QoAmBiE" - }, - "address": "noble1xsc3k3pf7tca3zlymh9q5lcacehl6kjg08kew8", - "percent": "0.0%", - "airdrop": 6802.706514426016 - }, - { - "total_amount": 53320189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvP4+Z3uqd+qvr9VUu5aH4iR8AYkxwQWzehZDs81+elK" - }, - "address": "noble1xsew5d3hd6cpplqf7j0226yhwp2k63q5vemq4s", - "percent": "0.0%", - "airdrop": 936.608683946717 - }, - { - "total_amount": 198957778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao+/l3eCwfHhLDl93Q9yKk6X9uDTGYrggM1Pphvc09oU" - }, - "address": "noble1xsa9g2vdm9rnaqjvp4emzsvh6es5kejhpws8t5", - "percent": "0.0%", - "airdrop": 3494.8409994109943 - }, - { - "total_amount": 150600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anmu255BIfu9V8oAeGO9exEq7NeCrRyWKkOWKzL4Wz76" - }, - "address": "noble1x3r4pfyxqj2wdk7mh7lejmwwxhmtw6v9ak6qq8", - "percent": "0.0%", - "airdrop": 2645.400746842356 - }, - { - "total_amount": 186800842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6m1GsCmRPSyNUzUqGLWGv1OtNDyjORA6bEkE2ZO83Uo" - }, - "address": "noble1x3f6ql2yw6w8dz7z3vuahe303z4gxh8l6a6gx2", - "percent": "0.0%", - "airdrop": 3281.2953979919057 - }, - { - "total_amount": 433796330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar/CwmrhvbFjguWgcL4dul/i6KCOiGDGL3+zHY7B4sb/" - }, - "address": "noble1x30k27eg7v0xa5ac03a7t756j4que73v2gttd6", - "percent": "0.0%", - "airdrop": 7619.95441805759 - }, - { - "total_amount": 2491803200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Mz0wAPH3nNNEl7go2sQp0E3mxR7oIVaTfXfTEojvYU" - }, - "address": "noble1x357wqtvv8q44fhhslkj4xvemva2zhtrnetjjz", - "percent": "0.01%", - "airdrop": 43770.372153148564 - }, - { - "total_amount": 58960856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aua6qnFbvZ5T2gcKXEARyzFnBdrFDq0Y1LkuYqBVJ5A3" - }, - "address": "noble1x3mhge24ms4svxyw8ja490t3x2gwkeahdt20xy", - "percent": "0.0%", - "airdrop": 1035.6911852381447 - }, - { - "total_amount": 185533982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjOqiXbq4jVziX5W71iQlSee6LzhRc36r6coNTUu6HPl" - }, - "address": "noble1x3apaxajum0qkka9fqxe9hhcydxdsxr2kyhzxv", - "percent": "0.0%", - "airdrop": 3259.04206206797 - }, - { - "total_amount": 809392891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0WGMQR8l5blm3JhS/HMxTULw28BFe3SX+UNf27kU7SH" - }, - "address": "noble1x3a5rmtpsq2g3r58mgdm37lnjy9478ch32qjtm", - "percent": "0.0%", - "airdrop": 14217.58670876689 - }, - { - "total_amount": 3958487488, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Owf+xa034R7j0DrWoAhO9F+TCGbVkvwFTJn0c/DQ5e" - }, - "address": "noble1x3l5ddq8t78u490lt4u44f0zmltkh26l84wze7", - "percent": "0.02%", - "airdrop": 69533.76996760507 - }, - { - "total_amount": 1137772231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4gPuUzK5t+fO5xYXUThkCmmThXcaWz6IF2dDkP43oQ5" - }, - "address": "noble1xjzk0nxv2yahgekwj6uh2je3698e85c6hygcj3", - "percent": "0.01%", - "airdrop": 19985.813476918287 - }, - { - "total_amount": 840200000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0mxPN89BZS7pjNvqNYvscj7hFrAw6p22+ydvk3mMdww" - }, - "address": "noble1xj9wg2aeeu6xkx7etk00w76ly73kugcnad8352", - "percent": "0.0%", - "airdrop": 14758.736437562733 - }, - { - "total_amount": 110355116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6X4emK+zD5uipP0T8fZG+t4winy3EHEF8rfGC/vJmin" - }, - "address": "noble1xjx9dr803qkz87wjwn67ns9efxy4upr4sq4s7d", - "percent": "0.0%", - "airdrop": 1938.469497239541 - }, - { - "total_amount": 103160423, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyigxIEd8Ax3FFwo015J3j7fasazMMW/ct5sCewX7Zvf" - }, - "address": "noble1xjw5tgt07d9tn3m92jnptea520m9csw6wzygy8", - "percent": "0.0%", - "airdrop": 1812.0893761538737 - }, - { - "total_amount": 130004405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyyVJUpS67HJYQfaQ3y7/zD2Ph3/yTOxcn+ts2RClslA" - }, - "address": "noble1xjn96jm0jjuhclp3x9r5kuncazaegk62825rfx", - "percent": "0.0%", - "airdrop": 2283.623838511263 - }, - { - "total_amount": 671775675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlI8NV2Kp9wfukwT8Yv5waSyzPhsBZ6tGh57TA5QzOET" - }, - "address": "noble1xjn6tq9qsrhgt764krtgeqq6mdtqg3uu9ww4n9", - "percent": "0.0%", - "airdrop": 11800.238196251847 - }, - { - "total_amount": 153583614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bvrBb9/cAtAcVTBLMfpeosuk0DQw4lEZOPY3PGeDeP" - }, - "address": "noble1xjc0japqhc7ay8g2scfh9rsf70lhzjl5khp3es", - "percent": "0.0%", - "airdrop": 2697.810140626482 - }, - { - "total_amount": 822203482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmMaLK7l5GgMFOXBf2iY4osl9mR20nsE/vqg415HUpRJ" - }, - "address": "noble1xjeu50lcavlv8hddrt6rvgz88hrza8ge8kjw8x", - "percent": "0.0%", - "airdrop": 14442.614245280118 - }, - { - "total_amount": 79202632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+zz8kZQ18kfts8b0L9CqB/dZM4VwG+UQUYbkfjeRhs/" - }, - "address": "noble1xnqyt9yj6u6ljqjh2cc85zugnpqkklp24pyung", - "percent": "0.0%", - "airdrop": 1391.2530002966819 - }, - { - "total_amount": 68123874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6p+M5VMpCZga6EZ81ILctxLtl6HwoP3qOxnXPTJPNQN" - }, - "address": "noble1xn035q928lfkmkmr40dkvs4fc6z8hws2kl59cm", - "percent": "0.0%", - "airdrop": 1196.6463954674273 - }, - { - "total_amount": 174102099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhT7zAaQp1QbmfmOrxz7nuf2/MW/I9gO3x6QgcODKrYU" - }, - "address": "noble1xn3kpxq4xdvgejzjs6frq7q3wrmh4g3hx4qn66", - "percent": "0.0%", - "airdrop": 3058.2325545911144 - }, - { - "total_amount": 52852203, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyemYbwL0/X0ppBL6vemdzV5zma62A3xKWaxOHher6aw" - }, - "address": "noble1xnj2hxsw6zk75w7fpwc0d3jel7elu5y0v2zap6", - "percent": "0.0%", - "airdrop": 928.3881626060014 - }, - { - "total_amount": 393384700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvOw7MJYzxZShbTl/M4f0kWPo3RMJUBEBTQm4z4RQ1FP" - }, - "address": "noble1xn7xg8ajtdd3k8euxpcpjctv99jtkvwz6jmjlm", - "percent": "0.0%", - "airdrop": 6910.094151237426 - }, - { - "total_amount": 120756509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhifD0sCanxZ2YXkzqvSKrlvFOL9xsOeMj6x59a0vCvw" - }, - "address": "noble1xn7wlch88fl23fcsvcs6aw7v04l5gngr4ujd3j", - "percent": "0.0%", - "airdrop": 2121.1776832315786 - }, - { - "total_amount": 122156115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmLDCwLhPMiuSroEK454DFXe9mui5VCKnk6CUam4xjcJ" - }, - "address": "noble1x5xd5fkt3utamw22q52gkqa4dlza5mckt260yg", - "percent": "0.0%", - "airdrop": 2145.7628011444936 - }, - { - "total_amount": 69150000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyqK2p4OuJ+pBMQpPsakioQzVvHWzgVynlpHaXFeg+l5" - }, - "address": "noble1x5gwnq4ekax5y9n4zf9sapq3qa9lfhtszdyaqu", - "percent": "0.0%", - "airdrop": 1214.6710600541098 - }, - { - "total_amount": 1178657576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqU24MVuupvPAN12cyRdwgrW3b2zYpl0SLCB3DspCnf9" - }, - "address": "noble1x5djm7m8w9q23k365rvx8ye39lkxjv6nwrm0vv", - "percent": "0.01%", - "airdrop": 20703.994899215144 - }, - { - "total_amount": 67332889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyW5UTCpYCtTj1elvfgXCNEJJEc5l1dACpVUiUsGBFz1" - }, - "address": "noble1x5d4uhqz4sgtdjh9auaxxcrwahruvjxg3wa734", - "percent": "0.0%", - "airdrop": 1182.7521570229314 - }, - { - "total_amount": 61274084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7wuMk0GqJAWbXMjvI1rUmj4TodFe8Xv0FhcuMYJfcET" - }, - "address": "noble1x5dlm0x4jrj0fnvjvm55j964f4qgn6q9gl8fpm", - "percent": "0.0%", - "airdrop": 1076.3247514985476 - }, - { - "total_amount": 60976721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ary3tiKU9BbLd8ePP76tBPMP0XquaBt9KDJTCxX/d18b" - }, - "address": "noble1x5s6u7aqc62epehnm3dcw8dgvdksz04r2e8grf", - "percent": "0.0%", - "airdrop": 1071.1013497569586 - }, - { - "total_amount": 3672102342, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmA5Hofj8o2koGf6/apHT5cdh96Ow2aZjUGWUiV0xYrj" - }, - "address": "noble1x5nnaf4e3e7n69s2j89tyfcmfea4udtyfrfpyq", - "percent": "0.02%", - "airdrop": 64503.20237721359 - }, - { - "total_amount": 459253671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azn4GKUm7aUgOP0ECMkrDkuHwSIE2T/hzb360M+QOJg2" - }, - "address": "noble1x5nedvv4zj6vqq7alcmnv2875xlxlcxs7m0rxr", - "percent": "0.0%", - "airdrop": 8067.131502347236 - }, - { - "total_amount": 358450641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjMft0jkSmmLhooLuh46/Wg3Pk2d7Z+hTE8mQLwfjha+" - }, - "address": "noble1x54sn77wu2m44dxv5hrv09chcfc597tj0fswau", - "percent": "0.0%", - "airdrop": 6296.451483449677 - }, - { - "total_amount": 77157011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0CMldm9C+qYAEn/af6hbgJkj2G2QN8c4QDm97IygWOd" - }, - "address": "noble1x5k9dkl3vntlqtjmdggs0cvfv868c7828y6gck", - "percent": "0.0%", - "airdrop": 1355.3201495585915 - }, - { - "total_amount": 162961306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqPvPMldVvJTw/MmNfe8KMMvL50Ug0Y5/pk4Y7lgvT1u" - }, - "address": "noble1x5c8fduzk75wju9744htk6nw67rphwklukrqjh", - "percent": "0.0%", - "airdrop": 2862.5362589562137 - }, - { - "total_amount": 140583026, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjeRHypvc11OPj11NvArZppfhoJNFw/LUHFMnTE9ZHYw" - }, - "address": "noble1x57m36p8fcl8qpd372v9jj3lpr4tdp9vj3wan3", - "percent": "0.0%", - "airdrop": 2469.445165828409 - }, - { - "total_amount": 93021546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwR4112jHwPq3lZ1KA1GhgEzjUbwXwis/1zYVXV1tYdf" - }, - "address": "noble1x4ve4u2n6079k0rjvdc2dd57g5dlykj22cnl0w", - "percent": "0.0%", - "airdrop": 1633.9924784915709 - }, - { - "total_amount": 90316568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoCATzrlKZtTXMytku+xxkGw9GKMilmF95aIdCiz6ruN" - }, - "address": "noble1x4jxnn7mmk89r6y92vwrdjrfvcr7wa93kl8j8f", - "percent": "0.0%", - "airdrop": 1586.4775327983962 - }, - { - "total_amount": 700310362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3YSK87swbdXXJxTtl9YeMI0rtGq0ALwBokagNn6bg1m" - }, - "address": "noble1x4n8mstcd3pfs9mslhnkxalcquv0p8ca5gzk29", - "percent": "0.0%", - "airdrop": 12301.471146455784 - }, - { - "total_amount": 61414526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjDQGnmYa+9zoFpAuGJu5vNKBUoCUsH3rf2Gqlnhsa8c" - }, - "address": "noble1x46ff45ctkak6rjqka9uqvwqt4vhdr45re7x8d", - "percent": "0.0%", - "airdrop": 1078.7917194380432 - }, - { - "total_amount": 280000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvW+uLhZ65klyYw6r70wBBBEbYNajJyfa37AH14kylQN" - }, - "address": "noble1xkxcccznrvaxc0dx8km8pu5dfmzy0lpsmpr4u3", - "percent": "0.0%", - "airdrop": 4918.407763053517 - }, - { - "total_amount": 1132554434, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4QFmWfdh6/2DI3YF8y3XT/AGzpGLtL6q/SeM5vLMa+d" - }, - "address": "noble1xkkuvyeypdtu7m9yfv2c88uk5lqnlmza30t0h4", - "percent": "0.01%", - "airdrop": 19894.159000951007 - }, - { - "total_amount": 3884845293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0R3eCu3enSNhGhK9vmQsnROMSWDHx2zQEgR6o+mIKsM" - }, - "address": "noble1xk60kvt673m345wshu073e4vp7rpynd3t6vefc", - "percent": "0.02%", - "airdrop": 68240.19016911827 - }, - { - "total_amount": 50038476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A66oSziZJyuFTNgYkADvtfTMuoyPKj82R/814XyT6zTT" - }, - "address": "noble1xkmm8naa8yyjpgduzjlp4f8fs6j0vz3pq3dnvc", - "percent": "0.0%", - "airdrop": 878.9629600348826 - }, - { - "total_amount": 1892652261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7yvBU4gq1KLeHeSpb+LKe+brhKvinCRkxEgdvfTWQ0o" - }, - "address": "noble1xkl6dvdd6f2mghcmkje2grjl0pjxe686la5z9x", - "percent": "0.01%", - "airdrop": 33245.84133308283 - }, - { - "total_amount": 245515492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0ayk0rp9QS5htqaL6IrC7DkQy4FziKMbAOVvLYg9UHC" - }, - "address": "noble1xhfshccr3gv2d02uqs7gsjtcdmsj60zeax0680", - "percent": "0.0%", - "airdrop": 4312.661792152513 - }, - { - "total_amount": 225735574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahqta3cPpe8jMrqL8twF85REcBr3ofxk1mr5SWWGVXJN" - }, - "address": "noble1xhw07yzfj338jgqt6m82x27l5xkwjm8h9ss0ll", - "percent": "0.0%", - "airdrop": 3965.2128555676495 - }, - { - "total_amount": 62756665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqLzkaKn2k2DdrohOpfMLWHHuf/A4aIfVvys3mfRgmrO" - }, - "address": "noble1xhwcv9egw7qgx8ef7v032tk2fga58ayuanfeem", - "percent": "0.0%", - "airdrop": 1102.3673868548178 - }, - { - "total_amount": 70282381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahrhe5sHSD6KmnZM65Q4awXFYq6L1pVLLyxEt0AB427e" - }, - "address": "noble1xhj0ctl4kxse6zsdlnhvmst9agmqfafqpgvy9q", - "percent": "0.0%", - "airdrop": 1234.5621725581607 - }, - { - "total_amount": 249029863, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj8FkgbARxi6BqP708l0LR7FA84LXdpc9chOpnLcnvSi" - }, - "address": "noble1xh4r9sjnjn8j8xj5aw5f7lx7pct5322c3nvsd3", - "percent": "0.0%", - "airdrop": 4374.394326469122 - }, - { - "total_amount": 505251265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApXY//Zk5eCb3uFdOZDafuWgOLS0eq9u3CNVfiCvsBvm" - }, - "address": "noble1xhhquwctvwm40qn3nmmqq067pc2gw22edp04lj", - "percent": "0.0%", - "airdrop": 8875.113371673608 - }, - { - "total_amount": 1268831177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/e3r+31d1/XhquB9kDoX2+vVnC8L1mOn6cvtnIGkcfZ" - }, - "address": "noble1xheehyaddw2nnd2xqmjwmarmm6rsx82ullcjqd", - "percent": "0.01%", - "airdrop": 22287.96111057547 - }, - { - "total_amount": 32723196232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq6RxKWQ9a4YR3LyCkW7M40Ho3PQTxu+LGS3oAUczerL" - }, - "address": "noble1xhe6w4za2mgj2j2nluxn3n8fgsgmqfkys8wvqf", - "percent": "0.19%", - "airdrop": 574807.2227835443 - }, - { - "total_amount": 78878192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4c0FUwmjp2r+PvARjpA4jAZRMrPG0KJvbjp7i9ybWAJ" - }, - "address": "noble1xh6k42thkhfmnt89fuaa68grfju7pt64jztqww", - "percent": "0.0%", - "airdrop": 1385.5539709586637 - }, - { - "total_amount": 69033507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5O4ldx3nB8OThpLlbGPwvUAudpztec/D6AlnbwGMswP" - }, - "address": "noble1xh7zad436zupmnahuqdxjn3dhdcgzdjs350a7g", - "percent": "0.0%", - "airdrop": 1212.6247740700333 - }, - { - "total_amount": 995003550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8SjVRcqBCE+RcSfxuKMEwy7sOyFArk3YKNn9h1ca9Tk" - }, - "address": "noble1xh77t4a6n42gpa5vdec4w89qel65wwczlmnc8z", - "percent": "0.01%", - "airdrop": 17477.97565923503 - }, - { - "total_amount": 380368631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YY8eVYEdzXkYams0XOsntap58+D117VUqTBrSc/b2Y" - }, - "address": "noble1xc2t364d97d0ejsrm2h5ruv8yv7kfuyc837agy", - "percent": "0.0%", - "airdrop": 6681.457241187282 - }, - { - "total_amount": 54137050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/gmvwquy8fpZOfmt3El6wAYh8OAptQ7aYa0MWYRFGPT" - }, - "address": "noble1xc0nwj0gy822jpv94wyadn5mtwvm68rezx7keu", - "percent": "0.0%", - "airdrop": 950.9574535314873 - }, - { - "total_amount": 272483577, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avjr2eMGmq0sC2+r/06z4bY951S4Cw7z+wsOKP1V7GDI" - }, - "address": "noble1xc3v8cq9mkpe0svrp7g4lwg2csvdf7u4dy9j32", - "percent": "0.0%", - "airdrop": 4786.376215790681 - }, - { - "total_amount": 97562056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+PyTjmq3Sv9kyPKrSvWEHEcBZktllF6C3IcGMiYybsx" - }, - "address": "noble1xc4f77pgqtw32jl0yx7vmhn8pt3lg8t2lzc02v", - "percent": "0.0%", - "airdrop": 1713.749905749507 - }, - { - "total_amount": 931672132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8pnJb+7nAEPu6fJMxN3z6poykSMcxnVnaHF9miZ5F1c" - }, - "address": "noble1xc4e9qped5x77k92h378jt3sq7frnp2kjk6w03", - "percent": "0.01%", - "airdrop": 16365.51230946222 - }, - { - "total_amount": 147079439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyLmQwxzWEAv1YyBGnJgqesWx22yb1NMHBehIYmziExC" - }, - "address": "noble1xex5n5q54qh5n7vslz9tls6k543hah3hqguc4v", - "percent": "0.0%", - "airdrop": 2583.559480582701 - }, - { - "total_amount": 50094686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1da+8dnlbFVg2gQ/QW4wkhByOw4MZpHpPKz0mPK2uFp" - }, - "address": "noble1xe886g8ahj70tasyuslv2a4vvm2kq33wfj8ptn", - "percent": "0.0%", - "airdrop": 879.9503303933155 - }, - { - "total_amount": 1547277669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5oZ/S4iKdqQjxY5/wVGZaNl/HP1L7mfRX7mNYrsJYro" - }, - "address": "noble1xet0sp2y2jsr8y9rxp8p0c4r6uq2jrlsuxvgz3", - "percent": "0.01%", - "airdrop": 27179.08035288911 - }, - { - "total_amount": 5682567005, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ZhLnQL14HP1Tp43E6Sy60qoLbv+8HLo9H3gHA8LHh1" - }, - "address": "noble1xew2nqqzuxm5u6s6rrcgjuxggaupapjh27nr4t", - "percent": "0.03%", - "airdrop": 99818.5059695135 - }, - { - "total_amount": 55315600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiW9faax3v958q2TgVTqU9X90c7N/Ie4YgM7Su9tSU3J" - }, - "address": "noble1xe0awk5planmtsmjel5xtx2hzhqdw5p8m3d54f", - "percent": "0.0%", - "airdrop": 971.6595587784398 - }, - { - "total_amount": 114589690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzUo8IP3sntz8iXM6ACrarpVG9WQnof8MxW1Tvl7GM4C" - }, - "address": "noble1xej8haa6cuaqyj0y4vhv43yfzfl9jg4hxn87uw", - "percent": "0.0%", - "airdrop": 2012.8529316496288 - }, - { - "total_amount": 41966549411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtiUpn75zexuecAsfIKpnX2isjSQ/dX0uTl13peMVVox" - }, - "address": "noble1xekdaycf5zhfhxefpxkfkwptcz0jyxhuhwll48", - "percent": "0.25%", - "airdrop": 737173.5800415408 - }, - { - "total_amount": 1107876717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyC1quLulm+h2aOippVqKQmiVjsH9z6kujK+9PmAFSoJ" - }, - "address": "noble1xeed2gfvuce9tfx3cdnuwdn6c488chuvl45pz0", - "percent": "0.01%", - "airdrop": 19460.676590710875 - }, - { - "total_amount": 85620195, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/rkzAEVUzy1QVNRH05MioNQxu2OZponlTEXAqVYXpAj" - }, - "address": "noble1xea2apte2naee64chnh0q9zlnddyxtadj9kzl7", - "percent": "0.0%", - "airdrop": 1503.9822562934141 - }, - { - "total_amount": 58516405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak1h0nkwaSit0ebKq4KCtaH9zvmlpjjHNd4cvWGWsvlG" - }, - "address": "noble1xe7e6x5fegvwh3j94xlvxkxwjfd4n2p4tyakvh", - "percent": "0.0%", - "airdrop": 1027.8840736356558 - }, - { - "total_amount": 57323930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6pATZ7ArOe3vLD/oxmc7YK/9wyWbmZ0X2aUoS2zvFCx" - }, - "address": "noble1x6qtr6p3p82xumnx4fqkzk5v4yc8chwjaj77ag", - "percent": "0.0%", - "airdrop": 1006.9373654312016 - }, - { - "total_amount": 121901294, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2GVsH28U5TrXxEgfk+ypG/nnOk+FsTUNS2873iyj6Md" - }, - "address": "noble1x6zwrezxczlzt2jcs30alr5gyrk59ugd500fsc", - "percent": "0.0%", - "airdrop": 2141.2866811995327 - }, - { - "total_amount": 14521652634, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At9kdvUadjuDdELlk09Nn72bjWTOsuqmwEO+GjblyMuY" - }, - "address": "noble1x6vkt9mq4haleuyg8kfdxxa6kdev0hkrnhsymn", - "percent": "0.09%", - "airdrop": 255083.60374082916 - }, - { - "total_amount": 580996480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auud9i2A62VcCakUHuV5RekMTKnVSJabPA+IiyP1mC97" - }, - "address": "noble1x63qwxnefsevw5fu0x55k0vwnxjy3zjtalf76d", - "percent": "0.0%", - "airdrop": 10205.634276924171 - }, - { - "total_amount": 3019904161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AocegaSk1M7aTP7hvEe0ISxzih7PVGNAIopGGgOzSwbD" - }, - "address": "noble1x659ucy0j2s3ek20yp5qcpv2xfc2srmvjukv4f", - "percent": "0.02%", - "airdrop": 53046.85738978578 - }, - { - "total_amount": 363433504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AitAZ31vuOitqomLFX7TDkL3DKFT0HXcAn+nKAih7CT9" - }, - "address": "noble1x64z27ejgflfc8vuc645tp0ss0gta2j9ekqhma", - "percent": "0.0%", - "airdrop": 6383.979169383362 - }, - { - "total_amount": 457194882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkxyCFoUlOQTaBJIYqsAYVkEaIY2mqaWMXHtk4mjbpTX" - }, - "address": "noble1x6eyg69r0ugj2rd2tumsfk4tjpavwv68ur0p0n", - "percent": "0.0%", - "airdrop": 8030.967345918346 - }, - { - "total_amount": 671647454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An1k1o8IrQNKFni6tJzIbc8nSK7xDvBZQzwbf67VnPn5" - }, - "address": "noble1x6ekwewlfpfvn5hmnezs6kxjutqkuandcv256p", - "percent": "0.0%", - "airdrop": 11797.985899245465 - }, - { - "total_amount": 57760544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5sRh8q07eYDUQIAZPWcW1o3JZYW6BfADy6NkaeKSiuJ" - }, - "address": "noble1x6m588ylgx4nedyw5x7v06v3hafqer2e85646e", - "percent": "0.0%", - "airdrop": 1014.606814313551 - }, - { - "total_amount": 859672852, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuICIR6gMlCBGIsZcGTynVWqekDACF9uLCzv3c4Pf6cY" - }, - "address": "noble1xmpk67thvzspnp6a5dfyc8upgkl2d9u8vurk8v", - "percent": "0.01%", - "airdrop": 15100.791532011277 - }, - { - "total_amount": 234157260, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2avr9Rk7z85woA+3SFefC8ilLav6zB4vjpu/w88WUnb" - }, - "address": "noble1xm9us65wrgh6m00m0q6jf9ja8ppeqe4fmy60pl", - "percent": "0.0%", - "airdrop": 4113.146019140503 - }, - { - "total_amount": 70004759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzfMJ8pNl1L3BRd040EYKTvH5Y9rdTKQcyGBUHUYYsdz" - }, - "address": "noble1xmftllegjtwp0sdhrvxvnc0rqf4cphc85hd7as", - "percent": "0.0%", - "airdrop": 1229.6855361296093 - }, - { - "total_amount": 54075019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A98DW0Rpc+yX2s9e9ySavvOOeiwI1SzflXrzLCtoi9im" - }, - "address": "noble1xmdazl9cwgzmzmdrdtffg6x6m6e73fnpgj0c45", - "percent": "0.0%", - "airdrop": 949.8678329888087 - }, - { - "total_amount": 1336560726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AooT4gfUOLSrpTSzJDToITbEVgaiPwd/j5KQBCQJnWhN" - }, - "address": "noble1xm3rse7kvsr3ndulg2ncrj556sz6a0j3ey8k9u", - "percent": "0.01%", - "airdrop": 23477.680894824447 - }, - { - "total_amount": 512380621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A20tmuNigyU4WMZUlpFeE9yqBf2K8UHFNrBAI1P1w7s3" - }, - "address": "noble1xm4lu8y852truts924kl99wa2dlh4hgp40x9w4", - "percent": "0.0%", - "airdrop": 9000.345799873508 - }, - { - "total_amount": 372000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+c2HxJw8DBgg1EVgJ8zFb54Q5CE/EVQQ/etRfMDApJd" - }, - "address": "noble1xmmc4p4tdy2cxyzdzm4az7t02jndd9fpz4xjuj", - "percent": "0.0%", - "airdrop": 6534.456028056816 - }, - { - "total_amount": 300079510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A11fSrXeVur23StinuypHFW3/CmEDTSMCLmWM4GNo4Sr" - }, - "address": "noble1xmuav7zgwe7jawmesu878hfajs2j7f6tdugacp", - "percent": "0.0%", - "airdrop": 5271.119255418913 - }, - { - "total_amount": 241542569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0zCAF3h8C2rKg7/UoFNNnzmfhD0Fh183hAt1tRoHrtK" - }, - "address": "noble1xufmktj9k6zx9h3va3cnwfu5f2pfjfcsqhmem2", - "percent": "0.0%", - "airdrop": 4242.874451705321 - }, - { - "total_amount": 53234246, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8p1dM9+4ZZvzpyfsCXlU+MBp2VX31tRbId3arhbq4k6" - }, - "address": "noble1xu3gawvpgykepm6kg4ayvs7q8zepj2jz3mv99g", - "percent": "0.0%", - "airdrop": 935.0990313810738 - }, - { - "total_amount": 1401308036, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/X6Dq+wDKcJluqE89khGy56yq5VS1TfbmneMVMVqAPw" - }, - "address": "noble1xucws7ckux2lpegtvqghgfuc53h39z52h6kez3", - "percent": "0.01%", - "airdrop": 24615.015438184564 - }, - { - "total_amount": 1393826726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3uvHA9GTcENKdqKWpe9Wkc7m83FfZwj+VPPGIOTnNDv" - }, - "address": "noble1xueyy0ta7any5tmw9zntlgg8z50x95zw7jjz9r", - "percent": "0.01%", - "airdrop": 24483.60067682096 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4Fq2mGRbgjhHX+72ZEyC555sVBmOXMitcZMS0O9UyL" - }, - "address": "noble1xapp3yyfpy2mzz7a0fnngwu9pn6mlvfxrshryz", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 310196532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmEzr95x75Un+C9nHZyz2cwaQRYws/6W8PPn10SZ87tj" - }, - "address": "noble1xa8ad7ahggrltd0ld3nkezvt8j77tkxc68n5g5", - "percent": "0.0%", - "airdrop": 5448.832253789567 - }, - { - "total_amount": 1130784053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au9Pz26Sn/IAUtxYC4SqnDSbPz6bmIU0c3humHdBR8Dg" - }, - "address": "noble1xadfefqhfue3s54jrw2yl2fkchsktk4uezg4qj", - "percent": "0.01%", - "airdrop": 19863.060945044 - }, - { - "total_amount": 8341628531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqOE8xvmcSo6V4DRX/H/6Ikp0ppHfJhEDEEiZ9r7/CeA" - }, - "address": "noble1xasz07a260s5sprrtu8uvs24vnfv2ec3ckhfpt", - "percent": "0.05%", - "airdrop": 146526.89472635396 - }, - { - "total_amount": 54230281, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An4dtkOR6DUsp2zPM1MWif7nUJtninwSZni4fDWqXJPg" - }, - "address": "noble1xaswt2fwdmscxs9g8k8w5p9v4gjddenhde58u5", - "percent": "0.0%", - "airdrop": 952.5951252249059 - }, - { - "total_amount": 122962446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqGvnblTttlkFGRwOxAycQMa2hF7OfT60hEt+1sfuJ0e" - }, - "address": "noble1xa6qaase0f59cxu00lvp9t6esc7waeya3q0aa5", - "percent": "0.0%", - "airdrop": 2159.926603465889 - }, - { - "total_amount": 15950874436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Uo/9/GHdJSNPRwrAPT5euc7L33bSOKUmz9sv7V56SF" - }, - "address": "noble1xa6vdy5lzkwv685j3rvyuegwtq0z57lg8ze87v", - "percent": "0.09%", - "airdrop": 280188.9451911225 - }, - { - "total_amount": 159574713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqCgVZ4A9iYQ20tvHxvv2qW0qkAuo7z7xJMHeZXMHKor" - }, - "address": "noble1xa6kpu9aektq0wefypw62sr7j85psjnl38gdfr", - "percent": "0.0%", - "airdrop": 2803.0482400222754 - }, - { - "total_amount": 10905272271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2EzGax+1CCSxMn43spr3Aqw2aYqi9KaWm3cmXRSQq4s" - }, - "address": "noble1xaavzylezlv320aa3zyr3sy0qfckw9vnlc0z3z", - "percent": "0.06%", - "airdrop": 191559.19927106664 - }, - { - "total_amount": 74593325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1T+JjmW0529vqqnGuy4B4g6nOfbxsOMx/f9wTxrPt3V" - }, - "address": "noble1x7pm3pj54pzyrldxujhzxwq0t5g7u7x3xv0nlf", - "percent": "0.0%", - "airdrop": 1310.2871026856214 - }, - { - "total_amount": 111074314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyBQ5VJlHCxmQuxjITNGDcUL2gaVlV8xa4/0J1lP+AGG" - }, - "address": "noble1x79u5q9eldwx4cp8h93p65jx3q6fzyfpchrkry", - "percent": "0.0%", - "airdrop": 1951.1027437623 - }, - { - "total_amount": 15863549190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuxOr8H9VXXLWubjvrKkyut8xxOpYNnrLmisdsEtmOli" - }, - "address": "noble1x7t4akaprfpef45cz9ccvqkhmmqcetrk44s8pw", - "percent": "0.09%", - "airdrop": 278655.01244884764 - }, - { - "total_amount": 669535067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3jihnqHR2/QkGubm5xBS+++RrdbS4a9DRm5aakbCjDw" - }, - "address": "noble1x707rgjlzcx49884k3a9d89032vsvrpgqeu3fc", - "percent": "0.0%", - "airdrop": 11760.880254176274 - }, - { - "total_amount": 362039570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw8C8fctQbiOtqIIEVQ7hS18ggDs/4AjmR6ogZiLy8Ct" - }, - "address": "noble1xltumke6uhee4f3gatx3m5cfe50hn2ycr9vpq0", - "percent": "0.0%", - "airdrop": 6359.493684359134 - }, - { - "total_amount": 816739489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5rLPDaK6BhlP13+4s/KfHVy6OT2VdDD3pMPf7hmlya/" - }, - "address": "noble1xl4gtlfghw7hl7r2vl94hlkfs0thq0lskpec53", - "percent": "0.0%", - "airdrop": 14346.635153892725 - }, - { - "total_amount": 218027811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+kJ3we+PVfcrnnRH1arGtsMUDbO6VH1qpYDMfHowRne" - }, - "address": "noble1xlk53ekjylpseca6f8e0kqyyklwk76aj5l04mz", - "percent": "0.0%", - "airdrop": 3829.820279228447 - }, - { - "total_amount": 104077394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXi05GlSbd6eC5hzcVwoRkd4hrNxi331xTObygsygce" - }, - "address": "noble1xlcua9lqtz2t86srptf5y7sdsn870524wnlj3g", - "percent": "0.0%", - "airdrop": 1828.1966521713557 - }, - { - "total_amount": 217681946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bqJvHi5NeuugHnf1w7aysw7d04cm41I9+5UApgHfKW" - }, - "address": "noble18qqzlpffrga9nelhaf38afg3kr2ktm7es63guk", - "percent": "0.0%", - "airdrop": 3823.744903867845 - }, - { - "total_amount": 234710825, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlQ26T3RbBWsjDXQCFryYidKTwuoh/+aGlMmrCPR4LWH" - }, - "address": "noble18qtxhdm3s5rxeau2ddwact6wczv984zs3ls2gu", - "percent": "0.0%", - "airdrop": 4122.86979911677 - }, - { - "total_amount": 356429418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnV5Uhi2IMYR/fN6udTjcXkGoSBb7SlSTvcW0AoUwCP4" - }, - "address": "noble18qvyx26j2sxjyhd4nuehe6ehxl38m5mzge42mc", - "percent": "0.0%", - "airdrop": 6260.947201685169 - }, - { - "total_amount": 59674616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxbthJtJdmkMZNAPR98INi0KSHjHnFPD5zsJ4eX2TKyh" - }, - "address": "noble18qdmw4yj9nndwyhkmq8hnnpz9eya7295jwz9cs", - "percent": "0.0%", - "airdrop": 1048.2289092558487 - }, - { - "total_amount": 8201680439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+hZFIZ3i+5jD83trhShTmD/bAAXpIyb6tHJDJtiOAn6" - }, - "address": "noble18qw9ydpewh405w4lvmuhlg9gtaep79vy5edcuc", - "percent": "0.05%", - "airdrop": 144068.6026473635 - }, - { - "total_amount": 98655314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A17vunxoopm7W7AQ6TTX0ZYnMMdWJzdkL0ukSQIYVg/s" - }, - "address": "noble18q0zrvjshws904smrpzypt670a2ee9c5fp9s9f", - "percent": "0.0%", - "airdrop": 1732.9537937288655 - }, - { - "total_amount": 1097637645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0kergu/Tz1H6vQhKAJX+oZ4scKdo9dYcoS+aVT8kMO/" - }, - "address": "noble18qjdsfrf3ahc40hpvw40typ04yj8wnh5g7lyaj", - "percent": "0.01%", - "airdrop": 19280.81969352779 - }, - { - "total_amount": 80000870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq9Jjv2buM/+zu/OufOxTEUeDFkKa+TtcDZ3yQ0dCEbC" - }, - "address": "noble18q5wz9s2st8dmvua7a6whe42m3y59326a9kwnd", - "percent": "0.0%", - "airdrop": 1405.2746430679829 - }, - { - "total_amount": 320176075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0ulPKxmVdRfdrhnK2+kvcOlP9UnREwi85zCudVraZEQ" - }, - "address": "noble18pz3hvrgxg8s9hl6wu6vyj37rewvvxpq5gltua", - "percent": "0.0%", - "airdrop": 5624.130331514305 - }, - { - "total_amount": 433367417, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlvAda47C1ms9867Y4KNulUoi0NCE2rpL+W3a/k7Jjgt" - }, - "address": "noble18p5kceqy23vmthkl2cmh6ya2wt46jk2cchxz7t", - "percent": "0.0%", - "airdrop": 7612.4202429544675 - }, - { - "total_amount": 1056671764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fDlbzPTC5lhU/HEtuYNiMEiNtcrykQRv9QbuC8yTZg" - }, - "address": "noble18pkjl97qfech33dusdhsh65tfj3p3jnsx0upnw", - "percent": "0.01%", - "airdrop": 18561.223596632335 - }, - { - "total_amount": 95878784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azfu3F0KPCTF0FuSpd+nYMofV6j+zFtAKsJalMdv/0j8" - }, - "address": "noble18plzan8rhecxnhfrznudaaa23rxq445t2f750e", - "percent": "0.0%", - "airdrop": 1684.1819840633264 - }, - { - "total_amount": 1412501849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37xezLTxtln520xnj9MNfIasM61YXduUMoWX9zL9fXO" - }, - "address": "noble18zqr3a0kwy9uukuwqzkqezwwnffzh2xe3al9hg", - "percent": "0.01%", - "airdrop": 24811.643069460886 - }, - { - "total_amount": 61500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxnTu6gfvVQ64f7ZwHfeZxQozRwQJFrdyEBvl6kPXHJW" - }, - "address": "noble18zx4alwux3lus93pyjnmcsp5uak6psvgfxhjtc", - "percent": "0.0%", - "airdrop": 1080.2931336706833 - }, - { - "total_amount": 7457486594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWONWzeU3oJMNlXX/pOmBM/MJVvWtYfvlGTujnVXN1N" - }, - "address": "noble18za60g3gehakdt4ecvau6sahqkydr7hw32h06k", - "percent": "0.04%", - "airdrop": 130996.28555998976 - }, - { - "total_amount": 1340534203, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnI/S26jdFeWd30HMzWYWuI9ilCCoItqcxUtZpHUiku4" - }, - "address": "noble18rrz3q9h4ggpwamsdqzwzyl8cqwrn9se56rrp8", - "percent": "0.01%", - "airdrop": 23547.477966692713 - }, - { - "total_amount": 9264500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4mEpNNojFuH4n0XAswj6lWksZ6Kff/+5wU9n/ZdnUBp" - }, - "address": "noble18rrs5e86pd39ve5uthd66u8aymn4rzq85zw0rp", - "percent": "0.05%", - "airdrop": 162737.8168600333 - }, - { - "total_amount": 491904605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Mv1H2KSyArZqZgygTvAL8jRQjs/Sl2Txmx5HKlpFX1" - }, - "address": "noble18ryvsjcqhdusetat5qltkc3lfssf0qy7umj99d", - "percent": "0.0%", - "airdrop": 8640.669385406336 - }, - { - "total_amount": 488190574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2OnsTMQ10IqWaYg7JqcHkAceCzr4oG1YzjpNE0+hiFm" - }, - "address": "noble18r8hk7c2yxlxcfdw7yn7l397cj9wte93tzrnsa", - "percent": "0.0%", - "airdrop": 8575.429675039832 - }, - { - "total_amount": 300466529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgudqquvAJULRO722CRo8KZ8+tZvX2PXF5IOvELuAg5G" - }, - "address": "noble18r4ehe2m88xvdchf3wp62ljklzn2448hvuzpfk", - "percent": "0.0%", - "airdrop": 5277.917531326232 - }, - { - "total_amount": 77867409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Ml8Lp/T8G/1+Z22m4msfn2jMZbpLEXZBMexqK1WtVL" - }, - "address": "noble18rk93f0m6actx32g5yca5ufgt3x8z9vqzr8yvd", - "percent": "0.0%", - "airdrop": 1367.7988175516548 - }, - { - "total_amount": 131236027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstDxEJOGdphxmX+TnSC537b2A9AK+5HFz1NfGQ5Bzr8" - }, - "address": "noble18ru2sffd4u2al42s3ns6kefhdkcput7v29dsr4", - "percent": "0.0%", - "airdrop": 2305.258192818218 - }, - { - "total_amount": 204056475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am6qyDN3X0zen8dJdH3svcBCfHQYbSpyx0fy8dWYCY1W" - }, - "address": "noble18y0f9zlx4v7nh0felg8jya44zuzhpxg3gtsrt5", - "percent": "0.0%", - "airdrop": 3584.4033955047717 - }, - { - "total_amount": 2517569308, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6nQfNV1vXXB263FufC59FMPiKfi9L0kbYdSAHTQiwL1" - }, - "address": "noble18y53njs6qp3ex0k724sd9mfsjftxet9rjja29k", - "percent": "0.01%", - "airdrop": 44222.972958901686 - }, - { - "total_amount": 2700134267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9EjlmUsQtSQiPwPn5osNFS60/cWno1nTMBzCgQmES4n" - }, - "address": "noble18yky5fsw3w5w3gt6xjr60ujlmt2czu6s4m5hkf", - "percent": "0.02%", - "airdrop": 47429.86192892721 - }, - { - "total_amount": 5235360046, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsAwz+pKT5gEZmAHVpIKEVXPxEXmdsbbSTagZrMsVUhx" - }, - "address": "noble18yhudxdkudku0920pu9vsjyl0lc3ca3gkwm2xz", - "percent": "0.03%", - "airdrop": 91962.98390223792 - }, - { - "total_amount": 3758585385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoGJzkDkBOaiVkpo1RfIz5b8B/obBSzbhGCigjNwuOct" - }, - "address": "noble189x4selp40gdm6s2j8tj2s9szj6lkg5a9gzkx9", - "percent": "0.02%", - "airdrop": 66022.34119886962 - }, - { - "total_amount": 7499238127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2cIX02VQr7PjrMdBeHv5zcZpipMaVcU7FQQO6Fsu+er" - }, - "address": "noble1898nyt6lqyezqrh3yzcurk3rxwv8ucvnk5ezj8", - "percent": "0.04%", - "airdrop": 131729.68221722756 - }, - { - "total_amount": 72134995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKB8DxWnYrZ5oV+gcPAos1Tr3WCBJBtOjjSySH+298q" - }, - "address": "noble189vmrcqwaus996sma6mltx0qjhkxp5rn4pql93", - "percent": "0.0%", - "airdrop": 1267.1047121279523 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFxyRB6RErrxI0ISLy3k20wqZZD6gOuYf4JJirqCnwO" - }, - "address": "noble1895zrecldxzszx5ap3uthl63pftjjfm3zxt0jg", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 1037438080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7fXj0HjojRac4IMhJpB2fuNUB6AphBPeI4bQXMYErXb" - }, - "address": "noble1897gymleah5fequrfsqqqlejmma4mzz0m50vts", - "percent": "0.01%", - "airdrop": 18223.36966556906 - }, - { - "total_amount": 658704815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjhteGyj5rXWNM9PH8pIW8O+a6kOCSffh3mCA5Vm1MM" - }, - "address": "noble189lph6e9fqtlrg60y0453yzvkjyudmwyyu8yhc", - "percent": "0.0%", - "airdrop": 11570.638841631182 - }, - { - "total_amount": 169294972, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZbMMnNxtavnWivIf7+FABxIQh8pEdCeudc5fDlsSRP" - }, - "address": "noble18xxj9y8l42ad8vxpu0pq3gpwq8nj98zp5xsncl", - "percent": "0.0%", - "airdrop": 2973.7918018954565 - }, - { - "total_amount": 85125815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6maCrlW6Cnj3vCt6G4rrPezPln+YV+zOXbQTaGp50H3" - }, - "address": "noble18xddcf3ymdhq8nkcduqtt8x5t2zpjg7wj2q4lj", - "percent": "0.0%", - "airdrop": 1495.298104758063 - }, - { - "total_amount": 95362247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxlRpOSQ72c8whL/lUr06dm0TossNm/yXU7EgbG140jK" - }, - "address": "noble18xdsuh7wm0qul5vs0px05gneg9seycqq62t8ns", - "percent": "0.0%", - "airdrop": 1675.1086283822394 - }, - { - "total_amount": 94784175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq+3xuOcyVW3TV21Uhy7gNrEucBYSCnGjbtV97HlSYhG" - }, - "address": "noble18xd5n3x2e7rwaalggsuyejxdaw9g6hm8yupdgt", - "percent": "0.0%", - "airdrop": 1664.9543647665112 - }, - { - "total_amount": 897654387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtcEf3mCyqg2nSrfQw8ElCw6nwQgmSQbG1xvG5h8du8R" - }, - "address": "noble18xwazjxuu9h6v2h8ke30qz2z30d540c6n7wjjs", - "percent": "0.01%", - "airdrop": 15767.965376999451 - }, - { - "total_amount": 570126427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxiUNeDxZdahucQi82Ql4sl7wahezRN24oUhGb36oZGX" - }, - "address": "noble18x06pkzd03djkjsgyw4mf2e0d3wp9nm68xs923", - "percent": "0.0%", - "airdrop": 10014.693730281302 - }, - { - "total_amount": 6691452100, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxOdPWe5A8cn7v6N5SNpElohGT2KipB9sLye4k5KZLkQ" - }, - "address": "noble18x4tk46y6s9jylzxq8mdcxuye8ykyw0xal0vhg", - "percent": "0.04%", - "airdrop": 117540.32126693129 - }, - { - "total_amount": 98000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMQo24Q8tzdyf+vC6Czl6mCU9nTy+CMxNkxZ+18iLJ2" - }, - "address": "noble188ggnqqxngja68txt60jalefyan2lu687dhh0z", - "percent": "0.0%", - "airdrop": 1721.442717068731 - }, - { - "total_amount": 102910409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlWoIg2PDhspNdIhqwpxyK9ZnZZ4n/3QnfrubREAeqfU" - }, - "address": "noble188fae2mtfak0xdrn0a66hyst2zlr94wdlx6pcd", - "percent": "0.0%", - "airdrop": 1807.6976947307592 - }, - { - "total_amount": 95196026, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhIPPw6ldVYMs5xEGYVDI+TN0HdUKDNdQdjk7zvQFyMo" - }, - "address": "noble1880z9278v00hnksusunyxvgde9wvgkxkawcts5", - "percent": "0.0%", - "airdrop": 1672.1888331794446 - }, - { - "total_amount": 17063522648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axi9Ub77OtBgxOTtv27QY43vkWbnogaDR9DiKZT90MQ0" - }, - "address": "noble1887ye8m4u60rm8fct7vm8a305sahl3gjwa98z5", - "percent": "0.1%", - "airdrop": 299733.4366320097 - }, - { - "total_amount": 84835995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNR4ZWpzbhSRs891Lv5hoeLwQnyyYXinZAFUvYWlvYV" - }, - "address": "noble18gry7apt60sndrw6phjyw736ayquef7wj38qk5", - "percent": "0.0%", - "airdrop": 1490.2072014084622 - }, - { - "total_amount": 60321477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArVAFDemHec2AB/vwi0a1CWlE17a0G4LUs0McW9gF77M" - }, - "address": "noble18gxxv3t59jrehzvvulmehwqlmtwhzyre7rdhq9", - "percent": "0.0%", - "airdrop": 1059.591502698765 - }, - { - "total_amount": 71480927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At2IxiRHeba/XQSkRTCbtEnfbqk0bDfs9l1To4fpPOvU" - }, - "address": "noble18g0xnsdk6yjwa9r6xesglhr27gtgcffj3992zc", - "percent": "0.0%", - "airdrop": 1255.6155223823637 - }, - { - "total_amount": 209121985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5JHms32IcIh09rbtwCa/CX9IYEUZLrY8Z7ll7QYWMAS" - }, - "address": "noble18gjyj0t20sggv89xw3wurnrsxjrpv0yj0487vy", - "percent": "0.0%", - "airdrop": 3673.382837318433 - }, - { - "total_amount": 493068922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmceX1YBDT220MitWQ5sm4ynsvlmdsz59fVmGCJvhS0K" - }, - "address": "noble18get4fa0c4dpgn32nwq32apelquxlqh2uhm5qp", - "percent": "0.0%", - "airdrop": 8661.121477447248 - }, - { - "total_amount": 66184371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A55Dp62wOMOo/WZVOCUwZRB9g6lK4c+cIC1DuRaP+vpW" - }, - "address": "noble18frk83c9lj7n6wmhgyzfpywsfq9uck56g94seg", - "percent": "0.0%", - "airdrop": 1162.5775861400505 - }, - { - "total_amount": 379767868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah5TYbiJZmp80LMMuExMheMfAdkff9eyzXq0B6sydf3v" - }, - "address": "noble18fvt4pg9mlf77p70ps20fpg4xcvgfhhud2h9ny", - "percent": "0.0%", - "airdrop": 6670.904393319584 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aud2uVb4NwBlgw7dCCgCQVzqsYgOsn9iVvRXDdRKFkv5" - }, - "address": "noble18fvcg9h2ln3snlulq255hv43v24xmq3gwz4jpu", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 196635225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2uL/4kcnEHdcTnbtpSDKtgW6Yy+Hl9UX1UxJzOi/a6x" - }, - "address": "noble18f0m3cc2cfvca7an5wmgymdcmk8g8h45mtqwcc", - "percent": "0.0%", - "airdrop": 3454.0436326063395 - }, - { - "total_amount": 723966865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9jcORkhr8ONqbCoCVat5wK1oM4lJz2O1HRqzQF+AdHV" - }, - "address": "noble18f3v3kk0wtqhpqp6qjg8sdvjwrfgxj2ynmnrsy", - "percent": "0.0%", - "airdrop": 12717.015175033994 - }, - { - "total_amount": 21267054193, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9A0gvr9d69sJc4dzNPC3BVsz+u+mvliKgDBqQaRVxN/" - }, - "address": "noble18fupcl0vpmvumfwal5tdl3yuw0tqqtv03eflsl", - "percent": "0.12%", - "airdrop": 373571.58728618233 - }, - { - "total_amount": 360082103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhA7CRQuWip/xx2oV91/MQ6TExBANmjMQQ03TY94P6gK" - }, - "address": "noble18fl6cdwfscpcmrhahdk7sh8kjjknv98lfzqvj6", - "percent": "0.0%", - "airdrop": 6325.109324042272 - }, - { - "total_amount": 276087303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTMuRGvkINETX4EU6533EnOqUrIQnWarYbITT48ontK" - }, - "address": "noble182fr3wl03m2mf0lhwgcxa53vxg424v9n2qushg", - "percent": "0.0%", - "airdrop": 4849.678336984674 - }, - { - "total_amount": 69333774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6VHoQYKnnui1NYIMlxoUXfkK10KpGFz0PlCtTdCQzG+" - }, - "address": "noble1822yk6575y2lp6yy3ruzl8fmhqswz2hv59r085", - "percent": "0.0%", - "airdrop": 1217.899186726422 - }, - { - "total_amount": 574011262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/5vt/OKqw9fMlcQrAeybAFeNtSecHnbbhCew/NfVpb1" - }, - "address": "noble182hdh9w3wj77uzjsljdwjktpqwljf4rhm5ehww", - "percent": "0.0%", - "airdrop": 10082.933739646238 - }, - { - "total_amount": 26158818381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlFB1cTkxxjGkVvG6xAHttUBdiWFle3fe9puxtQ2+w9T" - }, - "address": "noble182ch5829enu9d6xwzmtk3luhzsya5resyjny7r", - "percent": "0.15%", - "airdrop": 459499.0549907766 - }, - { - "total_amount": 313422414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+7+2IwIRDkdcuGGAqmrrp1RU3+12gPFlGOHCvVHGrw+" - }, - "address": "noble182mzj3c7hg96fsaratn0wt2khgtgxgvl6pftss", - "percent": "0.0%", - "airdrop": 5505.497264759191 - }, - { - "total_amount": 124208275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlgJxZZtinNqkkjxgCLK9dmrqkOygQnHcXRjHRDC5cHE" - }, - "address": "noble18tpxn2gx5r32es9nnnyhzr5mdvnz6vxcqxzc6s", - "percent": "0.0%", - "airdrop": 2181.810514269593 - }, - { - "total_amount": 102259049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5LPbeun5hNYL6hB/NRtCChMxdVzA/eORys0wiXBwWFl" - }, - "address": "noble18txe5gl7xk0q8vj66ykjcrv8ckzcp42urjj7na", - "percent": "0.0%", - "airdrop": 1796.2560730145358 - }, - { - "total_amount": 20000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6CjRiFB1IJDQihgSJyyZIJiZQNqpPleBiIExHgdqXep" - }, - "address": "noble18txu2dmjatag8luej4uv3spazx3cvw55kslzh4", - "percent": "0.12%", - "airdrop": 351314.8402181084 - }, - { - "total_amount": 63184525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArgkYLJmE2VParntmH7klKvo1A9HON17Jz854TMoI792" - }, - "address": "noble18tfk2sdug3kvhnqlz4r8j5ywv6udxxkjn74djg", - "percent": "0.0%", - "airdrop": 1109.8830652316037 - }, - { - "total_amount": 78783827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwSa1zGYZvWf8xCq+NthBo4f5hRVO7uDzycLf9qXFL+D" - }, - "address": "noble18tv8an0dxgx3ak5majnv4608xh5xqpyh3g2cvz", - "percent": "0.0%", - "airdrop": 1383.8963797138047 - }, - { - "total_amount": 15306365351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+I4t/iRh3OLbfUxdM3SGjW4NzKtTvSFdcRdqNDAmIsj" - }, - "address": "noble18taxzzkxvwhgxc3cksl8fxu04ey8n9a3zw0zqm", - "percent": "0.09%", - "airdrop": 268867.66488032776 - }, - { - "total_amount": 135172935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anhsg//mJsPL6oTM+IW03p8qdefm0J8SEArZgHFuQjKe" - }, - "address": "noble18taden93804ah4ljp4vjpex82hsnpevv7ua5gx", - "percent": "0.0%", - "airdrop": 2374.412903066888 - }, - { - "total_amount": 247005053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6JpLjz47b+kUvTA1xlpyw+PJm607OHJsviB1dLhIzoW" - }, - "address": "noble18t7dzem4662cqgsjhq37zhd73vxlakjepyma0x", - "percent": "0.0%", - "airdrop": 4338.82703638802 - }, - { - "total_amount": 520382477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnbS9XbXZjg8wk9GO3tV5KBLaCGCiuS5cVWZTt2cXqQ6" - }, - "address": "noble18v9mm4vsvyn6n6hkmld453naagw9pqnsnhzlhc", - "percent": "0.0%", - "airdrop": 9140.904337977923 - }, - { - "total_amount": 116854410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CBEIYHPFl8KR1Lc7FMkH2KnWZyOMjwuSPp9SVukmow" - }, - "address": "noble18vt7slk37450vdzfjmvjaquhlgtl9xvt83792n", - "percent": "0.0%", - "airdrop": 2052.6344188965663 - }, - { - "total_amount": 83186767, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5XTpOU58Vbynmd3dodXv1oOsRsTzNIb2LA8jHxZVj2O" - }, - "address": "noble18vs0q8a0t5lgfcz7m4fy5uvqqnkeytsewyhgl9", - "percent": "0.0%", - "airdrop": 1461.2372878433007 - }, - { - "total_amount": 1000639418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApmnnimB310wGOLhO0GMXeIOxET3uzRyPk2bSNpJeJjc" - }, - "address": "noble18vkrt0j5zfkddwr894vaxz853th9f5aevryfme", - "percent": "0.01%", - "airdrop": 17576.973862530547 - }, - { - "total_amount": 126290709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzaeVnds4WoDBzAj8x0EgCG0+EdykFCHWB1hakdnjpQX" - }, - "address": "noble18vm4r5zuvtvdq30t0thzpaguypng9dz996nhat", - "percent": "0.0%", - "airdrop": 2218.390012668331 - }, - { - "total_amount": 2408780717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AujkmPTdAruYBciDjtUu3iHMTQBNe1S/kQSVGh0TV4D6" - }, - "address": "noble18dyg7n4f6yjfq063gngvre3y6t2ngq6axjfdd3", - "percent": "0.01%", - "airdrop": 42312.02063566578 - }, - { - "total_amount": 100383648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AifHWg73fTlb8faaXtupJKhjq9Bt8XPcXc3SmIvNO3Ix" - }, - "address": "noble18dxqrxcr2w3800mh4ed0k49xjq9jwwks4yhqr7", - "percent": "0.0%", - "airdrop": 1763.3132628815417 - }, - { - "total_amount": 152325836, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpWLRZ9nnSqqMnm1+Q6nGbJvEUhmCGDb2fTpDrhuXBn" - }, - "address": "noble18dg4tkhkgq3tzdt0z8penwss2qw2zk9almefzz", - "percent": "0.0%", - "airdrop": 2675.7163367714893 - }, - { - "total_amount": 50085706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgO1RYZNdrWamKi1tadT/8feBgrELhb9ZktZ9rcTFXJo" - }, - "address": "noble18d2gzh82jjvyva2e8xf2avlafg4g8zxj25vxnq", - "percent": "0.0%", - "airdrop": 879.7925900300577 - }, - { - "total_amount": 258591115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0W3yzwIBPwr2w/zjheOyE6T+ot+klEXxqkRvidx3jVx" - }, - "address": "noble18d2d7hwg8s87ch08eg9zz2vdg40mjtzlhrn0jd", - "percent": "0.0%", - "airdrop": 4542.344812402374 - }, - { - "total_amount": 564127531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxhhI2mwkWlcJl0oM6IWuGlsv21kEZo832mqNLjAvHK5" - }, - "address": "noble18dhrlw57ev73v550nrmghwpyvcxys2uc3dxddx", - "percent": "0.0%", - "airdrop": 9909.31867079505 - }, - { - "total_amount": 53478044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6VzX1D1QDq4lezQo0B9guD9L0ap3ToSL0Z7LGfDC+X0" - }, - "address": "noble18d63lwa3ej9q8ux9sfxmt27fftdk3nqct2hl8u", - "percent": "0.0%", - "airdrop": 939.3815241518485 - }, - { - "total_amount": 1965378080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlNIppGu2vO10xwQMzxY2h+StsMEwhlzR1976WSfwuWc" - }, - "address": "noble18wrwfpm45g8vahs3zwvgda7dfqewhjupna3lg4", - "percent": "0.01%", - "airdrop": 34523.32430716864 - }, - { - "total_amount": 4603101645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ywtMZKPB08dW0hvHwdXPE1TGm/88PCFOWYr4Ueu/u6" - }, - "address": "noble18w9gvt5ejfw72zp5xc229862uetl7as4m64s9w", - "percent": "0.03%", - "airdrop": 80856.89594604434 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhsEmutVh/meamnsfgDklMjkKOdT+YFAQqzZ86N6oNh4" - }, - "address": "noble18wwcjm4vzlv9qkm5xl6uca076p9vsylkqd6n8p", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 8866455033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AywHCsXxRzWP+ZvQ2ZvvqGJ/NF9gjX5vyQUA+kIKRXO+" - }, - "address": "noble180pcjurtujakmx8zmrd6zvawzkhnq6sqepc5uv", - "percent": "0.05%", - "airdrop": 155745.86166097192 - }, - { - "total_amount": 136962516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqPbc6rBLo5p9dD4oAoB01xR9FIz4kK+pkD50Qyr1jjj" - }, - "address": "noble180zz70znjv2a8umz7ev59xrhzsnpxsu5nrj8wl", - "percent": "0.0%", - "airdrop": 2405.848221220506 - }, - { - "total_amount": 170961671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZ1in4zV7LFfdqPv9Gek2j3uSqYmT3odpuRz11TH//H" - }, - "address": "noble180rwq2vqtu6xkh6yvg8u7tglkvtdn7w48wgswc", - "percent": "0.0%", - "airdrop": 3003.068606539291 - }, - { - "total_amount": 367563450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvhC4LxpGNqq8Z+LyNXI/1Lcpuqb19Gkw1iraWhANurP" - }, - "address": "noble1805ytftgt86n860yyt6t7lwves55w925nnjgv2", - "percent": "0.0%", - "airdrop": 6456.524735338333 - }, - { - "total_amount": 424212921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3O3XcmwQm1dnWxDMWx0H6PRNIpgf4osAhZGFX+JyUk8" - }, - "address": "noble180kr4730ug2vwpfszx9v4dhcy68d4e5p4y8lna", - "percent": "0.0%", - "airdrop": 7451.614727978602 - }, - { - "total_amount": 132161585, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArQP0y2nuBSyjAqu8Vb9evxtJ7to9CePAz9h8WsP7zmd" - }, - "address": "noble180kfx9h48mcxmx35aecdkkye3zsdgq6n9pgyyn", - "percent": "0.0%", - "airdrop": 2321.5163058623475 - }, - { - "total_amount": 162857864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjX7JI+FzEEdRU2Jb7A8/0SNsxMxBYwRHegH92tV8ZF" - }, - "address": "noble180ef3u5uyyz0rg8gaatxj4f6wy6t3eadjfna9t", - "percent": "0.0%", - "airdrop": 2860.7192234711215 - }, - { - "total_amount": 50022278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwFqKBbEtbNWhln0HQEJwZT1khr0LPRPl5ZDeA24KHUd" - }, - "address": "noble18srx5n9590403f49l72c70v7v2kx8fe730dgkf", - "percent": "0.0%", - "airdrop": 878.6784301457899 - }, - { - "total_amount": 90474504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A19EiyQsZmkuS+KiAbXXBB/i4AoTrJRsskL2XPKW7huz" - }, - "address": "noble18sgat2247xup35kxcp8yfygl3n29ncfz2yurae", - "percent": "0.0%", - "airdrop": 1589.2517958286305 - }, - { - "total_amount": 51524097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bug6AvnpckFRAEacSaDr28bl6pMLx/TD81rgSeyahK" - }, - "address": "noble18svv27zqv9xqwk62ug6ewktuwscqf26h0xpgdj", - "percent": "0.0%", - "airdrop": 905.0589952468658 - }, - { - "total_amount": 56677955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgV0XhfhMgo6DDRuLEcfCDScFv6uwZRdMFXblsISewQN" - }, - "address": "noble18s00v33e2mxxcpq6cug4mqt3f0nezmmlp9n093", - "percent": "0.0%", - "airdrop": 995.5903352357069 - }, - { - "total_amount": 208796698, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2aXyMc0DsXY5lL912IPlk+mf8OyQhBUasDZPPy7G00" - }, - "address": "noble18smgsfadpg320pclyn5l6h2n8fx0w0t7tp6wjz", - "percent": "0.0%", - "airdrop": 3667.668929796932 - }, - { - "total_amount": 53364468, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwfrWMrHgBG8qNLbAE3GW2PZozpZe0RpDGmEv5okbgnq" - }, - "address": "noble183zljw7sv5lkfd0x0k54djpmrx6qqf7w0g4k6l", - "percent": "0.0%", - "airdrop": 937.3864774372179 - }, - { - "total_amount": 109134478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3EsDWPpr00NsQtDFAao2zOHPFLoILZoLEZuT1K6Oq7A" - }, - "address": "noble183r3hxqyly5c8v8hjpde23ll80mwhps8cl9epq", - "percent": "0.0%", - "airdrop": 1917.0280850428333 - }, - { - "total_amount": 51988435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhAKXs45z2MLy/9Us79+CIwaPvGLOoHjGf+INURcSb12" - }, - "address": "noble183xh7f4umya7prz7v90z7lzq6g48wgeucynw5y", - "percent": "0.0%", - "airdrop": 913.2154367607258 - }, - { - "total_amount": 224199635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+tuIR8EKLZfkKHtZ8ogsBLUrXDZ/bxBD4CFKu5wo1CI" - }, - "address": "noble183uaf5cvwu0jy9hpdw2f3h4wpvxnq8z39tcrjq", - "percent": "0.0%", - "airdrop": 3938.2329473491613 - }, - { - "total_amount": 204236281, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzuNNjL0n8/us+kDBBpMk6BL3zbl1Z9ZcNacS75oZTEB" - }, - "address": "noble18j8xp0mvwcpvgrragjfzwtuxtq4z0dtzarq5fq", - "percent": "0.0%", - "airdrop": 3587.561821312784 - }, - { - "total_amount": 900613995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDwO/MADLVFlYOzUa33a2E7/dJCo/oLmVsIbqu/IlSE" - }, - "address": "noble18jdp4pal7amfwgy6qq6h399zfll5f2t6m00z93", - "percent": "0.01%", - "airdrop": 15819.953087580863 - }, - { - "total_amount": 1443035307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnzI1fegtfN1xdFJTc2USxi9+qcW+VC5H5/YMXmPg/cb" - }, - "address": "noble18j6wmk9vdkm0rezyx2ag9eh7alkpc2ksw74ptz", - "percent": "0.01%", - "airdrop": 25347.9859153897 - }, - { - "total_amount": 256242377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Ah3RWnSW+/Ph4NvBpUvXl2C9xSM8/4ncifXhkzcru1" - }, - "address": "noble18jlgfktmqhyexeg83am5v5pts8pjafnkhcxm44", - "percent": "0.0%", - "airdrop": 4501.087486643165 - }, - { - "total_amount": 226476395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkHMAPOTtAeA8aDsylDRIba/dcDmj1Ip9bcp9flKIDK0" - }, - "address": "noble18jlc56v4gxux4wcah5njcnkxv6lde2hngnw228", - "percent": "0.0%", - "airdrop": 3978.22592612991 - }, - { - "total_amount": 176469728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajri2UGxuDaHwpnJrBolBrp7Ys3FW/K6JyNzdzdHJFkO" - }, - "address": "noble18n9qgfzesrtz6tzeegxevpmwu4q0px4lzwarey", - "percent": "0.0%", - "airdrop": 3099.8217147826526 - }, - { - "total_amount": 375030224, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtAZa7G59zMmngdfucUgrBFXetuua2/LnFl+E0HX4uQe" - }, - "address": "noble18nft3jyfm73rk3jn6z4ug4ya4tquwljhkg2ghw", - "percent": "0.0%", - "airdrop": 6587.684161076069 - }, - { - "total_amount": 331720544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4B+c30/7ZmbWpRqvSZtVMa5sKsZqYeiLkIkJLXYaL0I" - }, - "address": "noble18nfwspxpm3cgqgq2x549a8qhcuu8xf7e8ffpdz", - "percent": "0.0%", - "airdrop": 5826.917495621199 - }, - { - "total_amount": 120421607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7jhHCHjpGCZa2or7MGHoJVobMMHza+CacjdL0X2WlsZ" - }, - "address": "noble18nj6s8vdlk94g9q73g6e2kgw7ag0dhcfcmejz3", - "percent": "0.0%", - "airdrop": 2115.294881100642 - }, - { - "total_amount": 115689538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zfw6RMG9p8aU5YMidfLwZ3EDsC5CDqLcW/EkVZgt4b" - }, - "address": "noble18nupa5ptx6n5q2240xpgm4pqlhy2080z3xdvvd", - "percent": "0.0%", - "airdrop": 2032.172577868839 - }, - { - "total_amount": 119457179, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzBnJHhn6WKrpod/4hfnnt6kUsdHy60IAP4HCsdr/9pl" - }, - "address": "noble1859xcatnsgtz96sz7n37njady85ewtl2zw6aes", - "percent": "0.0%", - "airdrop": 2098.3539876645486 - }, - { - "total_amount": 110000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar3/TsMUegRqn/IsgdxPIyMc6AKMVKvhYLs7HBQxFGve" - }, - "address": "noble185xr9cuf5f2u2tuhuq4fjw2guf0pxrdrp2eq52", - "percent": "0.0%", - "airdrop": 1932.2316211995962 - }, - { - "total_amount": 139655127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoCywpeO9hI4IXgXK9N+2f7M/uMxn0RKNKE42loWEiyo" - }, - "address": "noble185svu5mzamk24uvt5u8nvpl840cnl53y70l469", - "percent": "0.0%", - "airdrop": 2453.1459313822315 - }, - { - "total_amount": 6771197138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgSfTEtyvBjOKNmjvXnX7tF4HtAjUJzVrZssP1WUWs7m" - }, - "address": "noble1853wyy4v2y776850hevqgyu5c8md72z4wgzgxk", - "percent": "0.04%", - "airdrop": 118941.10203108915 - }, - { - "total_amount": 200566896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsRUC5mWHTWlNTugvFID6WbecuTuc6tYRV76V9gw3vsV" - }, - "address": "noble1854ctl9sxw4pqqccfzeyqvz5005h4k04pwfm6h", - "percent": "0.0%", - "airdrop": 3523.1063510640984 - }, - { - "total_amount": 70054369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7SidVs1klu7YmDFPHxSAvdlZ0UoLODbs0sCBhmEUm1" - }, - "address": "noble185e582exxpj7lsz9sgwsm4lv5eanml03l92grf", - "percent": "0.0%", - "airdrop": 1230.5569725907703 - }, - { - "total_amount": 50467027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+eC6KgKn9oDQs+ORL6DbC82Rd1+Z6T/2/8Dwymvyfje" - }, - "address": "noble185659dvj7ma7ty7j9knjgn26d9ldepvve8xt2h", - "percent": "0.0%", - "airdrop": 886.4907763393982 - }, - { - "total_amount": 490429166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apf4JTDKhVb5NOTo6pd7bW1QySSQBBqer991v4bLIlSf" - }, - "address": "noble185uz5fmgkfj65rncnwak76j6075zvgrqu4qrsv", - "percent": "0.0%", - "airdrop": 8614.752204579509 - }, - { - "total_amount": 415972486, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvduYQapaQqxw992XAdqjzjlzuQpyorFzin6Fj27Dccq" - }, - "address": "noble184p7qzr6749tf9z5fl6jatxgakrt4z66gmpptd", - "percent": "0.0%", - "airdrop": 7306.865372710966 - }, - { - "total_amount": 138873971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/yjTVqDehFhGDLlyxE5NfJYxX7fr0s31scGEb2H6qML" - }, - "address": "noble184remxnhpv5y8puqhpu4gzyneldy2vpkzdwrla", - "percent": "0.0%", - "airdrop": 2439.424346615961 - }, - { - "total_amount": 589786540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CnQuVcf8FCX8MM0DP/UsJP/QIRc/+q1vY2KEYvn/sx" - }, - "address": "noble184xgc6syr87pecec6samsn052h0t23a8spwrv6", - "percent": "0.0%", - "airdrop": 10360.03820314455 - }, - { - "total_amount": 19116394715, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1TWFTTO/Ye47oqtXUue1LC9+cOzzqrKEBPlmBt60QVl" - }, - "address": "noble184fgl8jqlm4kc63stvax3jw4jw6y9ejsvfuzgh", - "percent": "0.11%", - "airdrop": 335793.65774232586 - }, - { - "total_amount": 55024430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ykliG8D3bg5CmZ1gctZDawteZTFmDimOBrC6YHCRD8" - }, - "address": "noble184vzpavu5meugmc6swrvtst07qn60l6qhxv8d3", - "percent": "0.0%", - "airdrop": 966.5449416771245 - }, - { - "total_amount": 52286302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApoaGqPdGLWBI3GtAfU+fdlBXU9E5f22QAl1bUzV3SNB" - }, - "address": "noble184vgznh93wf8p0xdrfhp5hlga93m0dxcf9vaal", - "percent": "0.0%", - "airdrop": 918.447691636288 - }, - { - "total_amount": 70812522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjDLIVNwfbqXy6EOd4TGCWM3sg1GGSEzeBjUIc9Gb3/C" - }, - "address": "noble18405wlvdwyy6x3len0rg900rp3t52e9k2mdhsj", - "percent": "0.0%", - "airdrop": 1243.8744925935644 - }, - { - "total_amount": 7158763080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5slx36+DLrC3VjbcowjGd6Fg1+ctGWl1C1DszBpxuaz" - }, - "address": "noble18kqk84t54q4rqtw8v5crsgv2fsrw0xpf49qp3q", - "percent": "0.04%", - "airdrop": 125748.98538047468 - }, - { - "total_amount": 377665477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvMEAMkscQNV+ft1isWyfnCmUJAqvi5I6NKB9IPE2/8M" - }, - "address": "noble18kym4taayyu5nqm6cs45umhtf63ktvgcvujgd5", - "percent": "0.0%", - "airdrop": 6633.974335407534 - }, - { - "total_amount": 300715367, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rQ+40uJ7n9VgRa1UX4y25ENIq78FiULbUM2ggHLxvt" - }, - "address": "noble18kfmzlwmg9fkxudkvutd9c44ch8xgw5jr6ufpl", - "percent": "0.0%", - "airdrop": 5282.288555436741 - }, - { - "total_amount": 720365392, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzOCMRc09ebFWwko+gTyadSa5A9S1SM9vyO3hKZ8rXf" - }, - "address": "noble18ksj3zyxj27mhwatl39heymregu87armt8w92s", - "percent": "0.0%", - "airdrop": 12653.75262945675 - }, - { - "total_amount": 10000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap50SBuwYSVt660a3yNh7PlJqKtrht9jAEnXsKwAFKgi" - }, - "address": "noble18knsxzd0a6wcd07k2vg369st04wwh5tkpatlxe", - "percent": "0.06%", - "airdrop": 175657.4201090542 - }, - { - "total_amount": 384866922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTKzJIUh8AMqRGdwvFfkirngVVJ2LtwW1axqoQdaONM" - }, - "address": "noble18k5uznd2gxl4xhamhtcn2z36ghc80quru4p6qf", - "percent": "0.0%", - "airdrop": 6760.473060383259 - }, - { - "total_amount": 109069734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj8kUNjWb8oTYzdmDXl7wG9iFnFPCGfto4zICDjwK9qD" - }, - "address": "noble18k6qyv3kk4kx265qf6nnm4764nmmjs6x9dnaxw", - "percent": "0.0%", - "airdrop": 1915.8908086420793 - }, - { - "total_amount": 24349644333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag7/xLRSTY/KolhRJKtkOsldtVL/mWXaQKJmaoJKSwWe" - }, - "address": "noble18ka2z529m235wuu5v7yfck9rp4xn50laxn993e", - "percent": "0.13999999999999999%", - "airdrop": 427719.5704107832 - }, - { - "total_amount": 1807109431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzTYcmrp/FifOpXVXFSsa1iH+Jus14lajOyzDwyVOAQl" - }, - "address": "noble18hy83y6at92q8gt5u9f9nhcdap6q8qhv0662qy", - "percent": "0.01%", - "airdrop": 31743.218050420088 - }, - { - "total_amount": 745399890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwR4J7cr/pfoC/YWIq0iGugmSDlW69l+fG6FjqtnKSbP" - }, - "address": "noble18h4ftdxx79krthg79v36fyg8leyu42laj3xqah", - "percent": "0.0%", - "airdrop": 13093.50216269728 - }, - { - "total_amount": 302575260, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtUadXJ5v837MZ6iuXM4eipYGW8TJUI6PcoZ7LZBws2a" - }, - "address": "noble18hkpeqj7jlrz7f65ypmwc36tsequ5285ytlwl8", - "percent": "0.0%", - "airdrop": 5314.95895604263 - }, - { - "total_amount": 1013603275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2qMoNP+wKXeNAJ0V5ZVwog8qrKseRBMLvDp5pnBYkOz" - }, - "address": "noble18hkjnj60ejkg94f3d0qykrgat66yaj9hgv4uqw", - "percent": "0.01%", - "airdrop": 17804.69363005882 - }, - { - "total_amount": 3643098248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1PVWj5VYJ4vpj3Z2Be8EdwBetEPAVg2Gwcjdc6cB7H6" - }, - "address": "noble18cp2493zclaac4fdhgrmuyd2l7whgxpkn2hn3f", - "percent": "0.02%", - "airdrop": 63993.72394474954 - }, - { - "total_amount": 1478451456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiWSOlWZi/WfkXCA5v2Nt3N16m6TBb0v0y7o2mz5nuMk" - }, - "address": "noble18czxae96wxkzhzeduml5df09jay7he7y8u0964", - "percent": "0.01%", - "airdrop": 25970.09685174349 - }, - { - "total_amount": 51539432, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4gU0kiS7D+KPea6GJqV51TuNknBnqrqt+Ggs0ZsKXil" - }, - "address": "noble18crh2zlxusj0pv6fg6yhawxqavmefzf2zu0alh", - "percent": "0.0%", - "airdrop": 905.3283659006032 - }, - { - "total_amount": 88366906, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9zJBuq8MIH+/KRiSofGEZaXNm2E2W6DHox7I8mKtPxL" - }, - "address": "noble18cf4yvs67lwn9l3g8vggjvjgfkuj4grgms63cz", - "percent": "0.0%", - "airdrop": 1552.2302730979302 - }, - { - "total_amount": 149245851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alp2/szMI024lJoUAsarqVnwTzG1hy0+E7kg6T9B4590" - }, - "address": "noble18ctj7as72quaqxqjx99c84phzq5nwc805aq72l", - "percent": "0.0%", - "airdrop": 2621.614114864031 - }, - { - "total_amount": 3517290293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwfCDvG2sQrDw0Itl2IYqiBXEJbhwt+2f17PMkTPv9W" - }, - "address": "noble18c03y9fwukm8mapzzq9q5536lczxtzqud4cnr4", - "percent": "0.02%", - "airdrop": 61783.813864299926 - }, - { - "total_amount": 820559662, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsSl5NryRHX+fA309dXSjSCe9gpCIZKyEgYN0uu+NyOu" - }, - "address": "noble18c53wxdxlzqay08pl6ug3smmvzkpl76trnqnag", - "percent": "0.0%", - "airdrop": 14413.739327247751 - }, - { - "total_amount": 163536294, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgG1f32PyYWZZ8TD5+KIkYOTdGEMVsdJhVYIsBUGKhTW" - }, - "address": "noble18c43hedjduxc2sjl44srle4ugrpdygf6pgxvg3", - "percent": "0.0%", - "airdrop": 2872.6363498235796 - }, - { - "total_amount": 85503653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwBbi6MzgeS64UwlTA3VW9UcR6STYi4hTXssmxDi/EqX" - }, - "address": "noble18cen0ldy5pzjvsclkx8q0alfnvej8u0494ndhq", - "percent": "0.0%", - "airdrop": 1501.9351095879792 - }, - { - "total_amount": 146518933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayy0SrBgx2ggmxnk5d4SlEJWo73HWVV2QniZlH2yEPJA" - }, - "address": "noble18ey5r04l90weuvp3nazrstu32xswrwwtwdvcz4", - "percent": "0.0%", - "airdrop": 2573.7137767911363 - }, - { - "total_amount": 381027023, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1t1KaPy4xis6jWH8iGSsVfi6zW3CxP42K+AwP+kKQJn" - }, - "address": "noble18e47hvzqyuj2tumryu22r8gh2ptr93su7r2w07", - "percent": "0.0%", - "airdrop": 6693.022385201325 - }, - { - "total_amount": 199049288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxYyYfK4t7MkmvkmeslpTMCY/y+sfjGXCt+/tlSdRGjh" - }, - "address": "noble18ekyky37lmusj9rsfru7f5w7p0krcfr6nqz9kz", - "percent": "0.0%", - "airdrop": 3496.4484404624122 - }, - { - "total_amount": 862638433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A02uTAREC+I4WtnSQwCSHEuBX+rlLVMdoXrfrIEhcwVT" - }, - "address": "noble186qgcvxx29azdr5c32d2gthp4wnyvsl659yuhx", - "percent": "0.01%", - "airdrop": 15152.88416276972 - }, - { - "total_amount": 75000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0UwPm4gRtZJKkMth45q04v10eRmdcVhCu01q/G7D3Ax" - }, - "address": "noble186q6ky99qyanx6v99rzm0kjd38652npklmascg", - "percent": "0.0%", - "airdrop": 1317.4306508179063 - }, - { - "total_amount": 53191087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArUoez1XWe5jTh94DLJeEbB15zn68/qH9aWaG477YSLi" - }, - "address": "noble186yga5nks460an0ryd7uqklzexrynexn3c8q53", - "percent": "0.0%", - "airdrop": 934.3409115216251 - }, - { - "total_amount": 55546409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5wBx+BGs0qfHiSoxE9DHtE3B8zfA+TcmYQmhFITmrcd" - }, - "address": "noble186xlw5cfvyuplrywzncx6y4ljtjc748l7u8f06", - "percent": "0.0%", - "airdrop": 975.7138901262349 - }, - { - "total_amount": 66780989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhITWrrXItPO7x1fLFaHqlVHcl4NbT2Tk6zByMqa164t" - }, - "address": "noble186wkj93065766e252n68fw65lzhq7gqwuxwfdx", - "percent": "0.0%", - "airdrop": 1173.0576240071127 - }, - { - "total_amount": 3000304380, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asn9etty8ae4UJt7jbl1sTKTZAsRwpGXNktOcZK4yy0J" - }, - "address": "noble186sq5hxrcumlndtn3q0tywjmm5ve5x7ss8ajjx", - "percent": "0.02%", - "airdrop": 52702.57269326953 - }, - { - "total_amount": 1051597297, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3YKob7XbEpEM+yHzyaHj0Q7FF6nn4i1cHbz32Edm2Q" - }, - "address": "noble186je3q2z29qsknuh5fqj9zqjqfr400h0v07xxf", - "percent": "0.01%", - "airdrop": 18472.086818467484 - }, - { - "total_amount": 137491239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5UEhcyyPCue9O1/FJYZG0SHckhO32h8R2NZJ6QDDTOg" - }, - "address": "noble1864yvxh690z0nxjpl67va7kqz9xpglllxsktee", - "percent": "0.0%", - "airdrop": 2415.1356330337376 - }, - { - "total_amount": 655916377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtreZ3gQF/BlY+tz7NnlbfJxQXdBxBOaRwi10Qoq0FOW" - }, - "address": "noble186kh7c0k0gh4ww0wh4jqc4yhzu7n7dhswppd63", - "percent": "0.0%", - "airdrop": 11521.657859109777 - }, - { - "total_amount": 87854341, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AktGFypnvIvtGNuss7HWehzSolgQoO28cBjovd9f/3ju" - }, - "address": "noble186hff5xzsd9stm4flvcvlgrxwcsvjfd84qf9k4", - "percent": "0.0%", - "airdrop": 1543.2266885441106 - }, - { - "total_amount": 554182530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTK9U23dbPZVv3NJAcrIzxcYvkmuU7ge2VHZGb/rMQh" - }, - "address": "noble18mzplx6pxgs2xa00fygxvmhhuqwsnq3e9xwdqv", - "percent": "0.0%", - "airdrop": 9734.627348930853 - }, - { - "total_amount": 526621011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1D2IKBKTvqi/Bl5ISeufnJoMUzrwRgGJhTbPIZAIL1P" - }, - "address": "noble18m9l8chg7avgmu2qvzdatdzgswcmchjd650pzp", - "percent": "0.0%", - "airdrop": 9250.488816748186 - }, - { - "total_amount": 19667000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahs3obWuH0/L1V+WdRzEecO7iichf6spNjngUdW3pKAY" - }, - "address": "noble18m5z84fzhjgq2ks58d050aqfhjmcxsx6njzc0e", - "percent": "0.12%", - "airdrop": 345465.44812847686 - }, - { - "total_amount": 283145761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arf8r4H7nGjA6XXjZqHU/o2QKwRugq8Rbwv4LBq0YSH1" - }, - "address": "noble18mhwf4detxh8zamtd8y0p7u69gju8jr5uwlqc3", - "percent": "0.0%", - "airdrop": 4973.6653892074855 - }, - { - "total_amount": 1911500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxIgXbCemwgdqptCZtPqL2fEBkkuyELZ7ASrbJGuDOoR" - }, - "address": "noble18mmruat2mwt3uk6xdu95ayf0wpuwzuhx0ra9g6", - "percent": "0.01%", - "airdrop": 33576.91585384571 - }, - { - "total_amount": 212567472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6EehLeSSCR670kaMBZxgUkKlBn/Ez384wXHF2umyQoD" - }, - "address": "noble18u9qxcff3sylzfpeqwe9p5zxcu8wffsz6zh6vm", - "percent": "0.0%", - "airdrop": 3733.9053730623614 - }, - { - "total_amount": 58946572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8J/JcQrWLRS7D4PaPxINn9sSjY/i3BQ3kqyyfsDDIuo" - }, - "address": "noble18u2dtwkl85knxyp99ze38c2mvkt7ajcdr3hx55", - "percent": "0.0%", - "airdrop": 1035.4402761792612 - }, - { - "total_amount": 58315843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xNL+dAcBw9Ip5nR9cERbF1vLADAF9S1lgLkwHmZZ9T" - }, - "address": "noble18u0y7373x0pv9gv473y6jvv69ynzsx3l3pmqdu", - "percent": "0.0%", - "airdrop": 1024.3610532864648 - }, - { - "total_amount": 465975559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUnVOZEq5wa5hkJJpuAtZGIFniyHKMx03nN61sVbwVx" - }, - "address": "noble18ucy57v5afeugpp8as4yve3sckel2gv7msqg32", - "percent": "0.0%", - "airdrop": 8185.206452781437 - }, - { - "total_amount": 525579067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiDaXkL2BzSYbVBJOJGvDdhn8r0KRGnK7U2dvVZWDO1q" - }, - "address": "noble18uc0lnrwecte262ngg3aksa8vtyuwde9sxc6tl", - "percent": "0.0%", - "airdrop": 9232.186297254375 - }, - { - "total_amount": 1372022230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1dWpWwTKv3n9w/lZctInDt1wmnWSZSdt3BnT25tc+NR" - }, - "address": "noble18u6lt588ts54xu54twkhp7x78mpk0v9zajf947", - "percent": "0.01%", - "airdrop": 24100.588525407136 - }, - { - "total_amount": 518226872, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsTH+g40Y5a2eKguDXQbiP5dKjl82z3QVhvKKGbgR3yD" - }, - "address": "noble18uanx5053kts6eyy2meylpv3gyp94d8suae8gw", - "percent": "0.0%", - "airdrop": 9103.039536670505 - }, - { - "total_amount": 510572452, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyDFzU0xuIqS359sl2BU+7Yz+B+Ku4zBiTEL807BzQAP" - }, - "address": "noble18u788je3qe2c07cdsyxv968p4gateth0k4tasl", - "percent": "0.0%", - "airdrop": 8968.583969707392 - }, - { - "total_amount": 70301365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Syfw/SCTeG2hl1lQMsW4kzaFSB1FO66Hw5T34Pd1ZE" - }, - "address": "noble18aqjyx9md8hh0f8vvz0gu0jzufmtcxtc2m5ev9", - "percent": "0.0%", - "airdrop": 1234.895640604496 - }, - { - "total_amount": 203691621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aso+USY3b3F1Q+tg/3zcltcMrXO1ETV6wdVIwkfjC4uh" - }, - "address": "noble18axrf4l9jwgu768whgpus0kzn6784gszudlftx", - "percent": "0.0%", - "airdrop": 3577.994464269125 - }, - { - "total_amount": 337972728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/sj7v9CgI6TROmEbpcGi5RZ/rY64pZpy1XZrorUmwuM" - }, - "address": "noble18a8mv573ffdlfjqqkus0npsqkfkugnpmrvlxu9", - "percent": "0.0%", - "airdrop": 5936.74174676991 - }, - { - "total_amount": 50027575, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4farKf6ubVcC+i6rY/HGX4bM6AIxIgzwmZnnxaZo4F6" - }, - "address": "noble18ag8srcnmt0fqjr4qnm7jz55dsmctxd0chv6yr", - "percent": "0.0%", - "airdrop": 878.7714758812217 - }, - { - "total_amount": 4945656489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AysUlZW9w1NkEstah1xVUHdsrCX19ZYNLMjc0BsdqO88" - }, - "address": "noble18a3579c6dcjlsf4dcj3qp7dna3xga2gjxwnjev", - "percent": "0.03%", - "airdrop": 86874.1259603343 - }, - { - "total_amount": 687766163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjpJMwlEkuYno63RlMDmzbVjd6j3iQ+4Jq4/1t+pzUJS" - }, - "address": "noble18ajc7euypp0f79eak6q3yutw33ge5y8sn6jq4z", - "percent": "0.0%", - "airdrop": 12081.122983088324 - }, - { - "total_amount": 1623200838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApECymanvRhPZMkKbm5QFldbQkAf80UJ/xGehc/vvPc2" - }, - "address": "noble18amnezlycrkaz4eyljrdv9djudx6qvpmdn0pxg", - "percent": "0.01%", - "airdrop": 28512.72715219348 - }, - { - "total_amount": 14102740481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ILsBZfz/Q8/sS6CV3H3TApfNnarxG5zpN2YSmiscyI" - }, - "address": "noble187r3j5rcu6vwtf7zh9vq3yxt632jmau5zc0hza", - "percent": "0.08%", - "airdrop": 247725.1009359982 - }, - { - "total_amount": 6252101316, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpqKZ0LbfOgShvprezIyarcjfaR9VdXrAzfu12VUDZ4" - }, - "address": "noble187reejg4et24jpggqt55vnc47l926w0p6kqpv9", - "percent": "0.04%", - "airdrop": 109822.79874289826 - }, - { - "total_amount": 266809295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atn42cteSAmlH/GlAXCzGa9NoAxs8ce99P5MFR9mVRIL" - }, - "address": "noble18794fh266shxqv656y8w3c47e88ngpj0r4tn00", - "percent": "0.0%", - "airdrop": 4686.703242081558 - }, - { - "total_amount": 108645502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnqK7wssBDWLbSxeEHdoosKQ2J18dkWGsM7LE9jlkOoZ" - }, - "address": "noble187gv8e5f8dkn7qpw436j6pgj9jhyh7kwe3em5g", - "percent": "0.0%", - "airdrop": 1908.4388587773087 - }, - { - "total_amount": 1001610514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxBvQMLBJ+MLKlNErJOrtoz1nFzykuLnVlHDNCorrXbB" - }, - "address": "noble187tftsj083tj2qy7fjxj8nzrhw6d4j6lkzxh6f", - "percent": "0.01%", - "airdrop": 17594.03188433437 - }, - { - "total_amount": 2405990512, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+dVWrQaVp8SBXSJFcG8C5cxAM3HinJFzar9ttbgLsWX" - }, - "address": "noble1876l4y23yfqu6ccc9lwr0wms7kt2l06a7vy7g2", - "percent": "0.01%", - "airdrop": 42263.00861447824 - }, - { - "total_amount": 78600981517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agr3DaaRYWnN+9YyyxpDZu7jYwy/T7DwudBej9+DY8Vg" - }, - "address": "noble187agas65ccrwvxzd4z69ukgvm6m2rvr5y2wdj9", - "percent": "0.45999999999999996%", - "airdrop": 1380684.5631315673 - }, - { - "total_amount": 51949178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqDw4iuzASU8Dmt/4im13tgQGTjqR2s1cRsRMEgh6GiD" - }, - "address": "noble187llah7hvkdq4atwgkqqjwe52dcs2amwkvskaj", - "percent": "0.0%", - "airdrop": 912.5258584266036 - }, - { - "total_amount": 90858882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhuGvKlSKy9bjBEXC+FQfUYL4u0nxZIy6OKmKHUn2gDp" - }, - "address": "noble18lqc83qlhthlc0u0j4ux3n0rhtehy9az95ck9q", - "percent": "0.0%", - "airdrop": 1596.0036806112983 - }, - { - "total_amount": 160545517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmhZAvWesrIKHtKJklMzSq9BYAO5BzyqHbWxeITBVrsU" - }, - "address": "noble18lxfswz35rp6ky09q4n8frcqthsz7x0d03dtxj", - "percent": "0.0%", - "airdrop": 2820.1011326294306 - }, - { - "total_amount": 90571213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1qico7j9pszRC7Fp6smJyPN8CGFFNr7VCU+5KTHA1Ed" - }, - "address": "noble18lxmwnk9add32xh3vsmen49k4kv0rkm3xklm70", - "percent": "0.0%", - "airdrop": 1590.9505611727632 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AolasLDmmDxodqe/ahU1QqP2g8GTiQSreX+m8LtZX/bF" - }, - "address": "noble18lg8shcdrpym7ly70m8le9z85sufhav05nq2hf", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 50811397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30VIGNGQxPc4kejzyTZsC4axe4kX96lflLKrbEX454B" - }, - "address": "noble18lfy44z4lvxce7p5u9w64apm7drj09kk0qf73x", - "percent": "0.0%", - "airdrop": 892.5398909156936 - }, - { - "total_amount": 109352817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Ycnk86v/o3SsC6ksBn+CHCLGPlyYzscN3EAfQVGtng" - }, - "address": "noble18lf0tn4z2a79phlhhhgeh55lm05ryp8xlawuul", - "percent": "0.0%", - "airdrop": 1920.8633715877522 - }, - { - "total_amount": 170572024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoga+ZsvuC/IWzELq9bt2dpWFrCjCHagFYJ+w2MGpnYd" - }, - "address": "noble18ldx2sdz6r38lfuqw78zkujf935795qvyf3ugf", - "percent": "0.0%", - "airdrop": 2996.224167861967 - }, - { - "total_amount": 123512899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlYi3FcdNutW/Qg8AlDtUVQ6+hXuWApx/HqbaILg9Jdg" - }, - "address": "noble18lnxwzu4dtxlam4sxm44jmhpyalleeysdp4gt9", - "percent": "0.0%", - "airdrop": 2169.595718853018 - }, - { - "total_amount": 85104466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5FFqmvQazF83D6ZKQdvtOIkP8C22JXogOp0eWQlwLxF" - }, - "address": "noble18l4we9mj4q7egpq0r74a0dwkwg9n7w4ccdyfdm", - "percent": "0.0%", - "airdrop": 1494.9230937318719 - }, - { - "total_amount": 59393467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awii2PouNHkP6CM7Gt5THoVG1odj+Q9rhb2jcTTpb5j2" - }, - "address": "noble18lcfmmupqjysfg4stvhp7f24hxv96nuwshe6cy", - "percent": "0.0%", - "airdrop": 1043.2903184552247 - }, - { - "total_amount": 2691750711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8gtVm39W56MnptJdp1ZModWYS8ft8lFzxspAouF4eUu" - }, - "address": "noble18lucazh2jn32tqv0wwk7a29fkw477kxwejnylj", - "percent": "0.02%", - "airdrop": 47282.59854709724 - }, - { - "total_amount": 300728636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq1hwhLAnfMoRlMlhVzwEBL4YGcf3NGDpl4oVEUViQ9i" - }, - "address": "noble1gqzsunhlmj6rzdme2y4g227u7zfjmsfh6pqqp8", - "percent": "0.0%", - "airdrop": 5282.521635267483 - }, - { - "total_amount": 99977579, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5ZF/uCNmpzOs5BkKfz+fnmOvRt/05FhY5zOBux+UcW" - }, - "address": "noble1gqrda2768k43ap2aurfwkdsw395t2l4flnvd5g", - "percent": "0.0%", - "airdrop": 1756.1803595889155 - }, - { - "total_amount": 253509750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvFag88GOunh9H6QK46oekFxI7Cd9K6//vypup9PoxUL" - }, - "address": "noble1gqt8as8s6fxcqgz5c0n2yge2p68encaq43muvq", - "percent": "0.0%", - "airdrop": 4453.08686574913 - }, - { - "total_amount": 63328868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AidgzxN+NdKnrHPBux+he56Rn7O5Q7HnOzN87sQKIYF8" - }, - "address": "noble1gq3v47kxrpaf8zr54gk2c5lmaqx78gqqmnh0mm", - "percent": "0.0%", - "airdrop": 1112.418557130684 - }, - { - "total_amount": 84665366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2O1eTCW+ZAW7eVq1XwaVZJzl5+jBQ+Pd7CU+Ch/pNnK" - }, - "address": "noble1gqn56ztqjjff5v4h4335n7djnd7knqvprgjdkc", - "percent": "0.0%", - "airdrop": 1487.2099764148834 - }, - { - "total_amount": 220261176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoH0h8wZWuw5stYa3B5AFkxCRBaXcU6xuHDvWcULNLxG" - }, - "address": "noble1gqus3vq9k6437klxlhekgxrkv2z283f7ww8hyl", - "percent": "0.0%", - "airdrop": 3869.0509926346326 - }, - { - "total_amount": 224180033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9A4L2Y4XOyL3my+B41CrAVDBQ/jxO+98QWK8450CAkR" - }, - "address": "noble1gpqw2kkpzl6sdgnntmkukvsfxudcv09z22x98j", - "percent": "0.0%", - "airdrop": 3937.8886236742637 - }, - { - "total_amount": 419678499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw62rn1EOAkoPpNszBaUo/SgEH7OlMjaZNBmfsM8utWh" - }, - "address": "noble1gpy0ee7ys3c5lccef32hp9u5cv8pjad0m7vzl2", - "percent": "0.0%", - "airdrop": 7371.964240958028 - }, - { - "total_amount": 89813934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcqUJxD/dTClfCX917Y+vwucX+5CkdvzG5k6twAp/k1" - }, - "address": "noble1gpwwzglyrn787qnuhef3v3rga9k0zt74quv7jy", - "percent": "0.0%", - "airdrop": 1577.6483936284867 - }, - { - "total_amount": 1005244396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax04RPRvM+5qjQ6ivDmFqk60MK4bgldV+1i6GG/7j9H9" - }, - "address": "noble1gpw632acd2qz2p5u52997g2vz8hes43592stsu", - "percent": "0.01%", - "airdrop": 17657.863718044442 - }, - { - "total_amount": 538517648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqSPU48IKwc9i7pEskuqSA+yQnSPdj5MKbJ2mYhcHDDg" - }, - "address": "noble1gp690v5cacystnsl89j4ljnxcdntf5knxf9lmj", - "percent": "0.0%", - "airdrop": 9459.462073087576 - }, - { - "total_amount": 697863079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhPkjr5iyaB9Fr0ozoIdoAhfhi1kKESb5B6xRBVewz2u" - }, - "address": "noble1gp79kxpw8k7uchp8p5vd7czm0mrqnq5g3aj6kw", - "percent": "0.0%", - "airdrop": 12258.482804650108 - }, - { - "total_amount": 1074735828, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0R7aOe85+SZRvq5g5y/CLCVvVKCyuf5F1iweATv4Go1" - }, - "address": "noble1gzpq6fs7eujkl8p5ez2cmu0g2wk0xzy0vj5tpx", - "percent": "0.01%", - "airdrop": 18878.532284524823 - }, - { - "total_amount": 97021880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1S66ZaXRe/QXAMJqCiveioAG8iRXrDV0QJ2kmfFtn7l" - }, - "address": "noble1gzx09ycqu5303q37fetwruynx76476pyj3586r", - "percent": "0.0%", - "airdrop": 1704.2613134930243 - }, - { - "total_amount": 165223230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzTAM4OWrPEybQHlr7SLQFMkvSJjrT+YkUQnDx4C7Ab/" - }, - "address": "noble1gzfaa8cmzhd93rpttufd95hqs5klhc868n3tqu", - "percent": "0.0%", - "airdrop": 2902.2686323884886 - }, - { - "total_amount": 400205057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Ik85Z7nCp5IHc9Ekyv4wQWSKXsT38HNYc4MHi90ICm" - }, - "address": "noble1gztgyu60e8lzppc2f7cr94vxprnfm74e2xkwk9", - "percent": "0.0%", - "airdrop": 7029.898782721698 - }, - { - "total_amount": 206682633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzceC89/LVOQO/c9QDhVnopBVh3qt9PTKcyy9UZtBFSt" - }, - "address": "noble1gz0d3de2673hraccqnu7u5tus7sjctvzpeqwd5", - "percent": "0.0%", - "airdrop": 3630.533809412647 - }, - { - "total_amount": 632049263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xC7Gh1onm8uqphEGniBtvkKTEnyGEKtXAm6MUTH9tI" - }, - "address": "noble1gz6r9d278t2ppcljltpgfrp03pdmxjhnaxm2vj", - "percent": "0.0%", - "airdrop": 11102.41429204091 - }, - { - "total_amount": 74927981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7zpY+KJfHdpyntxzjYML2r3wBAI0cLJgCwcmR+XLtqI" - }, - "address": "noble1gr9lft9zsnury0mun7y0e6ve9afn0u2cac6s2z", - "percent": "0.0%", - "airdrop": 1316.1655836440232 - }, - { - "total_amount": 779372690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvVo1FHfym3/UXrBR0BkV30c6/vo8i0o5RmF5ylA5mM8" - }, - "address": "noble1grd98e8y3890kvzmjjeejlycka8dz89wtqceuh", - "percent": "0.0%", - "airdrop": 13690.259602885366 - }, - { - "total_amount": 445739236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aou+QKpTbU36D1lvXnw6Rn5hwW+c9yUReTI/yVYIlghD" - }, - "address": "noble1gr0zryw5h0kmxdj24yh3t0y8c4xfel27kpcfyd", - "percent": "0.0%", - "airdrop": 7829.740423714085 - }, - { - "total_amount": 165398148, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+XO7ZzhkSRYKZJ4K75zrnh/GaK3kvqHfdu39i2/cCN7" - }, - "address": "noble1grnqj4atrlu4rfyfy8c3zv8tpuja43auvxcayl", - "percent": "0.0%", - "airdrop": 2905.341196849552 - }, - { - "total_amount": 51041797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amx2SP4LaxxXG/sHVi8HegYaomNwqWY99TMYm7Dc3c2W" - }, - "address": "noble1grnczudan6m4fnm4spxlkhhsjc4kusedkh45v5", - "percent": "0.0%", - "airdrop": 896.5870378750063 - }, - { - "total_amount": 226221083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/Lh4j1qXM5TPY5SqGovgqj0N1zv3iCVmr2GP9y58Ll" - }, - "address": "noble1grkwn5pz3dcmdeejk2me2zre9r4264huumfxkg", - "percent": "0.0%", - "airdrop": 3973.741181405622 - }, - { - "total_amount": 508883057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6wLWuCWBHR4u/J7gd6F0M7CuuqwusWMuk7kB//hoEGz" - }, - "address": "noble1grh0k6pmjp4a6c5y39aj7nhf3g827g4actwwng", - "percent": "0.0%", - "airdrop": 8938.908492982877 - }, - { - "total_amount": 81335578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apx+vdE5m3SXFBmlDHdI7sGqj3KYAtIbdgwLCDsDm/Ba" - }, - "address": "noble1gydzrslxr825khj5re584k3ctve2y5tnapraf3", - "percent": "0.0%", - "airdrop": 1428.7197794558747 - }, - { - "total_amount": 705170802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4JnYhXtA9UvjqyDXSTNdlobGGtVV6R7VRSkY5kY4ue" - }, - "address": "noble1gywh2dmsg8tm6fwtghj22q5f4sdwav36tq06n6", - "percent": "0.0%", - "airdrop": 12386.848381555268 - }, - { - "total_amount": 133346041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az92wJNJjNUziNMG6YcFGwltSqpZjsIRdAugbdfwJQY1" - }, - "address": "noble1gyjl08pzee7s88kkm2p5f4mv6ysrx3mxxgn6r3", - "percent": "0.0%", - "airdrop": 2342.322154381616 - }, - { - "total_amount": 101465151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzzXMK/ehgEsxgjzdGhhYhUqGOyxdY/i4VZLOVxV4rOA" - }, - "address": "noble1gyaa02auwcztfsc9c957lzyanyp522lvusnnws", - "percent": "0.0%", - "airdrop": 1782.310665563562 - }, - { - "total_amount": 50798764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9F5PKSHjSvpSScow5Ztp+IPNHUYBIqUSbM9zV5l/vqO" - }, - "address": "noble1gylqtxwlqs307e800g2dnk5ycy8klrzwdx5hv8", - "percent": "0.0%", - "airdrop": 892.3179828968699 - }, - { - "total_amount": 340102842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap4wWiyZ4rSVICXiJ3czyX3QQqtrz8+W8JOIXEaHNWaw" - }, - "address": "noble1g9qaztrr55ss3s4drzgt25x8r7c6svak8dnmkr", - "percent": "0.0%", - "airdrop": 5974.158779747729 - }, - { - "total_amount": 141472839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmC4GMD4EtF9ACG10gR+qJ/kYMgjGuL8zwNLqdIAb3w7" - }, - "address": "noble1g9phny0tazf6mz8dhmnswm3k5wnkr3g93l4fm5", - "percent": "0.0%", - "airdrop": 2485.0753914243587 - }, - { - "total_amount": 436160302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArvFnU5OU8TETJtmLw7k8dHS7TPu9DcA0xDfTdVihSlD" - }, - "address": "noble1g9zluy5ye6vfy9vknr4vrtv4ysqsxq5zfcss08", - "percent": "0.0%", - "airdrop": 7661.479340330595 - }, - { - "total_amount": 1695002521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8is+vzJI+pxQ73qcGvAVhshvtMMfTzsHB6gokUvHH4v" - }, - "address": "noble1g9guwqtgggk7k03fk6v4sr42nlvzajl5ppdjzx", - "percent": "0.01%", - "airdrop": 29773.976991720298 - }, - { - "total_amount": 63809544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnJYvhZUK8Qejw1JIEaxL8NNWQOaj+UjXLRxph+h1dSb" - }, - "address": "noble1g9vhwafpuk8h3pcge27twpjdmurmv32u62fxwg", - "percent": "0.0%", - "airdrop": 1120.861987737518 - }, - { - "total_amount": 13332406046, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+uATqEu5aVJvLcM5MhT+eABDVH/yjOgmhYioGMbXwye" - }, - "address": "noble1g9vut6r8rd5sem4qu45cmw4x23euv3c2qruc99", - "percent": "0.08%", - "airdrop": 234193.6049886716 - }, - { - "total_amount": 4199494850, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9F5sbQqKPN+EcawaJ9XStLuIdiSOUoaKnhW4x3JrVVe" - }, - "address": "noble1g93ysdk75v3ee9t22xesdxd2mk4cdddl3yfvz2", - "percent": "0.02%", - "airdrop": 73767.24311122595 - }, - { - "total_amount": 143049146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmzQKq8nZAFYx4PEhzflhLC/CQWjeWIi6SIzepka+V8A" - }, - "address": "noble1g9cdvfh0s9zfu8rmjq4sugtujg2ql4yvfurjaa", - "percent": "0.0%", - "airdrop": 2512.7643935163433 - }, - { - "total_amount": 64197693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ujwc/Zuuh+GmRw+t5zfUI77bfbuuGA/VrKE4mRT8Y5" - }, - "address": "noble1g9enw5qsxedngt0t4rtzvn7ej7lmmhr3ppe4m5", - "percent": "0.0%", - "airdrop": 1127.6801129333087 - }, - { - "total_amount": 74930467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjTsLB3IG7gZA1w68PYbeuPI1vlETg+YwxqO8qWhhwYT" - }, - "address": "noble1g9lm98pncf9pzxazcavwf4zz2m32432783hr2v", - "percent": "0.0%", - "airdrop": 1316.209252078662 - }, - { - "total_amount": 50002328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8WLKR7PwcDX74c4MB4SsIO6kpLc/Zv3HpJA0NkUt40e" - }, - "address": "noble1gx9ukgjwnn36jeyfhrvmskm4dm55n0cfrfw0ag", - "percent": "0.0%", - "airdrop": 878.3279935926723 - }, - { - "total_amount": 52105982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqa2l7rjwxB80Py0wjIGOCGhzV9l1bdK94W9n4fPyNbv" - }, - "address": "noble1gxguymjxekptyf07dlmtxmpvfacj3t6pte03qd", - "percent": "0.0%", - "airdrop": 915.2802370368817 - }, - { - "total_amount": 60172186, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apr6KFsi86SAhAvzupYZgna92KTlqNSiTcGXaGM5WBX4" - }, - "address": "noble1gxsm2x3nfqj3uv037kvzwawpa2eff42zz8xz3c", - "percent": "0.0%", - "airdrop": 1056.969095508215 - }, - { - "total_amount": 115069102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A02YMuk9zyUGXO1lS0RxYjsMa1B2LFM9ZIWOkWA5uP4o" - }, - "address": "noble1gxhcqgkzzdqwpnjw8zt4w42afe5rp6z577d85t", - "percent": "0.0%", - "airdrop": 2021.2741591585607 - }, - { - "total_amount": 9701627536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7w5iIg9BuDWe6ybUhQDrUNkTbVJy6QS2t884Q/HY/9e" - }, - "address": "noble1gxe38pdkz5g2h3g07pwa96zunsyugkgx4advrf", - "percent": "0.06%", - "airdrop": 170416.28638327203 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A91FM7gA3DFQvkpRKuBBAA8ixW0t42UXRUVJO6vXzHl4" - }, - "address": "noble1gxlkm0xue3q2wlkcdn32ra8q0369fsnsfw5re7", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgS1J3KNCYgTw7EXjE29zwy6QMhiUWbv1kLkYkvl1VDd" - }, - "address": "noble1g8qtgww6j7dew8mmh7fgkpwwnq6pkcj98ywjmw", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 64663806, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0BwaOuf4xc7IZSa0DJ0mWkD3AMq6dTsPrhi7D+GMWSg" - }, - "address": "noble1g8rgcs90xrkc8yclela2c4ekgzgmmddem43r49", - "percent": "0.0%", - "airdrop": 1135.867733639238 - }, - { - "total_amount": 87610476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgZGxFLRUjJVpVAq4B2h9YHMrpnNvQgWkRXzKGhk/C7K" - }, - "address": "noble1g839cet6ca4c9gd7p08g0v7dyjk8csek94a0zk", - "percent": "0.0%", - "airdrop": 1538.943018868621 - }, - { - "total_amount": 124687310, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjmlEngQGFOKZnvR3SS1WcOLuVLE5VJPplMr55JW3Epj" - }, - "address": "noble1g85p2nslmyfhlu272ydqczp7k2ykquwt4s3mtn", - "percent": "0.0%", - "airdrop": 2190.2251194937876 - }, - { - "total_amount": 799722336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhHC2s/jNrPWgvvWF0k1Hhyu/s1gXYSZSRStsopXUWD3" - }, - "address": "noble1gg9wv39723nqlmrmxd5pdgmn0t0vgwp5syf0c8", - "percent": "0.0%", - "airdrop": 14047.716234534619 - }, - { - "total_amount": 1305431582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzFq4eu/PNq/XHdXl5X6AMdPrmBCkgt5rJBD7G/2irGL" - }, - "address": "noble1ggdxje0jshwq9lntez57a7yc689ylgz8lfrhyj", - "percent": "0.01%", - "airdrop": 22930.874382300124 - }, - { - "total_amount": 4732631482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqZ6peXgaY4X3BwHy7vj/QBw9KnWxt9acRmgBFTwPmW9" - }, - "address": "noble1gg3zpe57trnk9g9ds7e2wnh7d8pwv6z6jwn48j", - "percent": "0.03%", - "airdrop": 83132.18364550098 - }, - { - "total_amount": 1059148449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7dE1JMXto6y69duXoyxf+txli61gSgyDx93hhNRPR4n" - }, - "address": "noble1gg52u8700pzdtg05pgu2crs02m63px8qd7tv7k", - "percent": "0.01%", - "airdrop": 18604.728406384616 - }, - { - "total_amount": 483000864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Uay8bYr5WSH//vh8uoesbCAuq32YWKY54iGiNvjs4y" - }, - "address": "noble1gg5lr2rrh5fwgjpmxgtmvyqft5dx73sjhvane8", - "percent": "0.0%", - "airdrop": 8484.268568068415 - }, - { - "total_amount": 245055383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5CGaBYEv5lZXTec3W2Ek6cd3yZaaZfl/mowosGvXlIT" - }, - "address": "noble1gg4pj75chwjhn2n7047n9cjg6gr4aymuk6jelh", - "percent": "0.0%", - "airdrop": 4304.579636161618 - }, - { - "total_amount": 16192145080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A10dt8/Kz9OCx4ONNKB32NP3bqv8wfNbhUPIzyc+EeH0" - }, - "address": "noble1gg6see7tn2sxylz6k9d2dv2vhh7w7qexy0nnk0", - "percent": "0.09%", - "airdrop": 284427.0430784315 - }, - { - "total_amount": 50056661, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6DswMq9pxVX0DLwi4rXsyTQNa2OzuhAKtuHKXepgEgm" - }, - "address": "noble1ggm2unxmnz9jc599gx5f5634htrd2tspkpd660", - "percent": "0.0%", - "airdrop": 879.2823930533508 - }, - { - "total_amount": 14284795974, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmzLDIcA4Y7xIaWDlxDbA93xDK1SjMw9atpkEvjx0cKu" - }, - "address": "noble1ggaxflptqrg8jz0yh7vaf8ss99p2m0s550gu9z", - "percent": "0.08%", - "airdrop": 250923.0407577044 - }, - { - "total_amount": 58403093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoEPeZg4w2coBNkgHX0/ROHIJyhaq79DP/DRb/wRFCgW" - }, - "address": "noble1gfgrzzspdehnjg7mtzr8h3jrgfresuuewdxdn0", - "percent": "0.0%", - "airdrop": 1025.8936642769163 - }, - { - "total_amount": 7043930300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArlLHkqwbJ6I0fbq/P+aBeBtq5nPShy8LmkCRo0SFiVw" - }, - "address": "noble1gffk5hhfpyl49z8cvhmcleyhpm6jzj3lrtgur4", - "percent": "0.04%", - "airdrop": 123731.86239259962 - }, - { - "total_amount": 71737590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2a0uWt0raEFPlSZq0y7usRwPxPDfNHZ3A2U6NuWAukU" - }, - "address": "noble1gfdr654p76ma2yw8lsz7xvw0vfq8qyldusd4my", - "percent": "0.0%", - "airdrop": 1260.1239984241085 - }, - { - "total_amount": 285396851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArOMwXLxCzLYq6KhLBDfig259uCEKopG+8DBvBs2RuL0" - }, - "address": "noble1gfwqwjsw8ny8298d6lvx0g6um4x6q8qnvqyfe3", - "percent": "0.0%", - "airdrop": 5013.207455390815 - }, - { - "total_amount": 63104958, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar8m31zbn8mG35EzmyIKEj2tfYXgot2e/hblkHd1PPa2" - }, - "address": "noble1gfh8w08d9nmsml7ka4ylzweqrcueq9alfl8tzn", - "percent": "0.0%", - "airdrop": 1108.485411837022 - }, - { - "total_amount": 532097238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2RN+HY6efXWFvgNhfDT9i+8jZKrmUh5LhH8ltSX/XOo" - }, - "address": "noble1gfaq34e4ekxqf7svd45gvq6t9e3x4lcpe9n6va", - "percent": "0.0%", - "airdrop": 9346.68280742334 - }, - { - "total_amount": 503787529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1nG2tgMptioSh1X/pKY985P65Ns6q1cvk1C0SSK/3ep" - }, - "address": "noble1g2999l3ynca5hpxedl2qc562nv3mq26qqujwc5", - "percent": "0.0%", - "airdrop": 8849.401762725533 - }, - { - "total_amount": 195052250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+QJV0rvZmwzP0j9zU4iCcZlrzCaSIFyTnVhKAuZpC+X" - }, - "address": "noble1g28awl6mlr4llqd8r0lqac2alr5qx5my2lqkk5", - "percent": "0.0%", - "airdrop": 3426.2375021466264 - }, - { - "total_amount": 1067434164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Gk0DGFFkP5O4qPaGeAuHFiPgVdLL7bNlftdErjJhvG" - }, - "address": "noble1g2d27d9fqx9xrjtm5j6v4g8ckc75wxxrp770ps", - "percent": "0.01%", - "airdrop": 18750.273138450506 - }, - { - "total_amount": 385549591, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap2PU+TASpc9LiZ1yFVlpLvn5CYdxVENbiSgVCr0H7sm" - }, - "address": "noble1g2ny38x87ywcdq5xeagpfv7vky0jevzlnt0r49", - "percent": "0.0%", - "airdrop": 6772.464647916102 - }, - { - "total_amount": 645636378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkYUQNsgt0XWnM9cM8PbC2nYbYq4TwkmiwVlO1X7mkcE" - }, - "address": "noble1g2kz3hzj9dpyq9fcpnvhczw6tud6kgmj3d9knn", - "percent": "0.0%", - "airdrop": 11341.082048803411 - }, - { - "total_amount": 1274896132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmcfWT/SPlXcluTfcvUp3MbAZogD5gfS3O+OpQjycH9J" - }, - "address": "noble1gtrl9uf98cvu3suxyanz09nzjpfj0ewdngvlvv", - "percent": "0.01%", - "airdrop": 22394.49654541322 - }, - { - "total_amount": 50077783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8UvCc6dxUgDPRB+Q2VF1k3HJ+uKBPKowA8ZkKTsRTL" - }, - "address": "noble1gtgu5cxc6smvn4cuas9nlvvmzmqa6st3y7hq9j", - "percent": "0.0%", - "airdrop": 879.6534166561053 - }, - { - "total_amount": 524747788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApeTZ0eDt2C9qWdirvL/PXnalyrxQcBzS5cA2Kmp8ORI" - }, - "address": "noble1gtvrzkmrwtl9un5qan7rk4ufmc64fudulpx4f6", - "percent": "0.0%", - "airdrop": 9217.584264801291 - }, - { - "total_amount": 453714287001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arp6Vc2EnkVjA0rkgTDt7GUakicgMPn4LHgnCYVl+9za" - }, - "address": "noble1gtdxj6hay8xdjvvyh8cpk2jaw2eazpz3prkycs", - "percent": "2.6599999999999997%", - "airdrop": 7969828.112121465 - }, - { - "total_amount": 3138008246, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6A+Ih6uhPfgxnPCEC8UJJmUVqSXw1UVdINmcoBYWN78" - }, - "address": "noble1gtu3fj3jhrnr3vysp45jsj4d23y57kvr2agkvy", - "percent": "0.02%", - "airdrop": 55121.44327732983 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+k9sbHYPgtD2oqBcjSoB5UYGU68fkYu6yHvXKYNR1MS" - }, - "address": "noble1gtuj8jeh0kcwjkvh8k5uuk0xsfsh2vxsmsmp8k", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 839500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9QAJvz5WByoZe4thqqUNDIDHdoiEDu5K00nbU9QJkfl" - }, - "address": "noble1gt700f2tp56vy5hv6vxwea7pcdugcdmtwcfr2c", - "percent": "0.0%", - "airdrop": 14746.4404181551 - }, - { - "total_amount": 105760840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjFB88p2tKrsvLVI8QviJ0IQQ6c6MQ1UslYVfMkRhbDh" - }, - "address": "noble1gt7mn55vwty0cyrwj6gd2un0rcddz3v9pfcgc2", - "percent": "0.0%", - "airdrop": 1857.7676302966465 - }, - { - "total_amount": 98523366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5uln0bvS7r5du0RhgKPiWbzmQu1o9+UCcP2u4n3pBRC" - }, - "address": "noble1gvt9l5tshr0fp8ksl2tuem584z69eyvtl2gu6v", - "percent": "0.0%", - "airdrop": 1730.6360292020106 - }, - { - "total_amount": 503881813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aya6e7p4wnb2B4R3oyAmHMp5Gwiu4Pz6gIcHdWwvNjIF" - }, - "address": "noble1gvsqfvq69rgaq8k80uydrggjhk9tcscsgdsz4d", - "percent": "0.0%", - "airdrop": 8851.05793114529 - }, - { - "total_amount": 374654201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArmlNGL4V1aN+gKR4dWAaoQMVg4Ad8KAIm4Q0qLMXFy5" - }, - "address": "noble1gv3szcf8p2dyn5jjk8l68qsdlqt9j8qqjwjzyj", - "percent": "0.0%", - "airdrop": 6581.079038067904 - }, - { - "total_amount": 1282790680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amhi6rW9cj1p6UbYvsicIMx2gvxinC03aXnjJCGcghKO" - }, - "address": "noble1gva4w4j6um4p7t9msxknqqlxvqytm8pn7qwvrp", - "percent": "0.01%", - "airdrop": 22533.17013887393 - }, - { - "total_amount": 68806313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A705A8EyqGf5cY+0pkURh5xMoi/IGApknuuCejcp1Qj5" - }, - "address": "noble1gv7tc8gcxs7rl75e2drn34hgal4ka8nqde5rqr", - "percent": "0.0%", - "airdrop": 1208.6339428796077 - }, - { - "total_amount": 866353788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax0lqEkYEWedj3ev+l8IPpI3r4toh1E7TCkylGU0uO/O" - }, - "address": "noble1gdxdt0r0vxetr56a042mj4r5aetdy4an8ej4ac", - "percent": "0.01%", - "airdrop": 15218.147130178648 - }, - { - "total_amount": 118526755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjA0RB6RaKi8issAjRFUOAj1FEwF4U3X9BUinU5igUq2" - }, - "address": "noble1gdtqahmv345y3a5kjwt5n6f3cu6vj7nefg0shg", - "percent": "0.0%", - "airdrop": 2082.010399719794 - }, - { - "total_amount": 475423075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjFDBaAESnkEa8Jt5UNraJQacQCbkoUbMV328iI05YHJ" - }, - "address": "noble1gdsewy6pdu279fzlkddye9cfkgjupfa9nxhnyu", - "percent": "0.0%", - "airdrop": 8351.159081481337 - }, - { - "total_amount": 95253545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax4q2d7kWw3hP2BuX7V0D694G10nSH38nzB3EK9IA1bA" - }, - "address": "noble1gdh04ynjsay6uq47z6c487vvfgpgn0ahfg9etz", - "percent": "0.0%", - "airdrop": 1673.19919709417 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlAUqwtAaKTjzdQ4fATFPZUOV90jzKiCD7n6m13NRhbl" - }, - "address": "noble1gde7p2rdhmfwh7jsxp7mu8hwu7wd5rdy7rx60f", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 428922915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2MyLbNAXt70/0fO9YFKO8bM56klZPdPdKl+Il0LXUGM" - }, - "address": "noble1gdm04gxmsw3jzcyq7sa9cc4r0s4gjk28vkgk2m", - "percent": "0.0%", - "airdrop": 7534.349267455515 - }, - { - "total_amount": 2211030269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsTdZ/MKw+e7gh4R39t7NFKgHcTKAJvvN7peaP+pMOQW" - }, - "address": "noble1gw3czwfcjefxej7wf6hx05a6tuv3mehr4wssep", - "percent": "0.01%", - "airdrop": 38838.38728355681 - }, - { - "total_amount": 167995729, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwOBXAUtxiRn4JKbld4aYKG2GAiKljdI3JidgVs0p2a6" - }, - "address": "noble1gwnavnyf36sm2lzkt767qngzqau8y3tr7vd2wc", - "percent": "0.0%", - "airdrop": 2950.969634547982 - }, - { - "total_amount": 320723452, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akg0oDMKpLQo6lAy4nt3wjmcTm3aR8Ea0vS0TQDzXp8w" - }, - "address": "noble1gwh6l6f5mel772ay8edk8kutq6dtrhqt7sc4uz", - "percent": "0.0%", - "airdrop": 5633.745414679009 - }, - { - "total_amount": 11098463593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7AiUsxjh7KQT06BhDyDgn1SQeFFoP0RkxDEUdCiyeIJ" - }, - "address": "noble1g0p07t4tvz3wk0tunw2exwa0m4qjx3lnz7gh55", - "percent": "0.06%", - "airdrop": 194952.7481920644 - }, - { - "total_amount": 55973306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/+5APbfjb49YPtWJcR9OYbfM4LBbLCk93Juo7i2EXA" - }, - "address": "noble1g098mxjn02ct5tx0x73293xxx55rttqfqnu7ny", - "percent": "0.0%", - "airdrop": 983.2126526934643 - }, - { - "total_amount": 51333833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UQnev5v3uHmhbeANRQ5wVN9R87wY3mxwgiTqO/+fRv" - }, - "address": "noble1g0xg7xvkhm4nyxw38v70qjmjs0ajn7ezjqenxv", - "percent": "0.0%", - "airdrop": 901.7168669089031 - }, - { - "total_amount": 311915443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/DjM6ivTXJBf62+jS5AKQXeRr3JQpMJwFEUgRqJ8FCc" - }, - "address": "noble1g0f9t3rw7ngv9tkr5p7273nrmyc0af60xfkl0w", - "percent": "0.0%", - "airdrop": 5479.026200955275 - }, - { - "total_amount": 915014796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am0L2p5folddwl2c2aYvJmiubNdvfMG9wPNP/8TzvZzy" - }, - "address": "noble1g003ql3feflq94wyfkqc50z74d4cxvfz3ejt4c", - "percent": "0.01%", - "airdrop": 16072.913842697253 - }, - { - "total_amount": 273364338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZTrgu0fnGQgUIp4kzzqhTELakaUl7bltMFqKKjPt/P" - }, - "address": "noble1g0c9de4zsw2jsj9ys96r0qryuak05fvc93m7ns", - "percent": "0.0%", - "airdrop": 4801.84743628995 - }, - { - "total_amount": 196327813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwNN6i+qx1lwfpumLXZfM0FTLnSrWCCn+dbuMO2cs4DO" - }, - "address": "noble1g0aqnrlcq9eaadsxwudkhc7ep25gpga2k2eahk", - "percent": "0.0%", - "airdrop": 3448.6437127232834 - }, - { - "total_amount": 301616671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/LYSv55D5kQENqdKFpbK1mbRvuiIijxg9RUaZi6h8yI" - }, - "address": "noble1gsqe4w8ckxs42hkt2ytzsnw266uyew5gzcjdeh", - "percent": "0.0%", - "airdrop": 5298.1206289741385 - }, - { - "total_amount": 74562072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApVFUDpFQhVva7hwskQ9szalqN/vUuilcHf9aOkXqrGP" - }, - "address": "noble1gspxtq7rsc8k2xph6wn7mz36l7z3jcyghm2h72", - "percent": "0.0%", - "airdrop": 1309.7381205505549 - }, - { - "total_amount": 68543644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhG8fGnM/vtg3x+qW+tAtzPW4FJmCRzoRqd3gSZvMkoW" - }, - "address": "noble1gsxhnrz67e9zanuh57hf7x3ej79sr0e95vrcdc", - "percent": "0.0%", - "airdrop": 1204.0199669913452 - }, - { - "total_amount": 5094230732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHkR/prTv+h2OyPvzqPrAjDJkK3Bx3PWnl98MAvvhYH" - }, - "address": "noble1gsjdh3wr587kgzcax5vax9vpyjwktmlzff95ne", - "percent": "0.03%", - "airdrop": 89483.94278233786 - }, - { - "total_amount": 102892742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bgBsQKQkHRG4bEQ5gbMIul1IOvT8OMzFt3jf8+6RdA" - }, - "address": "noble1gsksvxlalq9w46q2q4hh8d86rhq8es8z0tpuyx", - "percent": "0.0%", - "airdrop": 1807.3873607666526 - }, - { - "total_amount": 72958568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqBLi2oqGNE78Owd3c+QiFnVeY8fQVNRjfB0zoXtljdv" - }, - "address": "noble1gseh9xxgtx09m99lk3s9vxzqnhtp5dhe3tn9mj", - "percent": "0.0%", - "airdrop": 1281.5713829730996 - }, - { - "total_amount": 210719022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6Jtk3AQGOx1Q9Ip00QfD/wA4n2aZaNdJvlQQUAyeZR" - }, - "address": "noble1gs75k8xl9ckjqms0a59txyf9mr90unmtjct7nr", - "percent": "0.0%", - "airdrop": 3701.435977242303 - }, - { - "total_amount": 745234426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag4jfTe9QYG5gyc3VtAiS6x2F/H8oiR9I3zh7/9hYc0c" - }, - "address": "noble1g3p420t58q0fsxjhws6tfur5ylsummmausnchz", - "percent": "0.0%", - "airdrop": 13090.595664761187 - }, - { - "total_amount": 2722975596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amw9fTKuXwIP8r/QmaMwLLSRFCKFy+x54LZ8o2n3xgNM" - }, - "address": "noble1g3rwpz8485y3epcjc4jeml8agc5h4g7c9fdkm0", - "percent": "0.02%", - "airdrop": 47831.08682132742 - }, - { - "total_amount": 10049374156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A54ejAt0IUEF3jXtsz1Ga8FS4jYhfYBLnM9m1tdamrFF" - }, - "address": "noble1g396xde8z8jtv736jzkqs5sc0rnd9pfy9kmds6", - "percent": "0.06%", - "airdrop": 176524.7137953564 - }, - { - "total_amount": 1063694298, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkhxO0H+9cGN3pj9k6fu3DaFC1ZJATi3J40bVJ/qCPyy" - }, - "address": "noble1g33gygas6hpr5ueu9ys6a32h8nwz3kncj7lavn", - "percent": "0.01%", - "airdrop": 18684.57961713915 - }, - { - "total_amount": 50085502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UFnHIDZc+ziJNh1zOWu0lrbhO1z8ONP6MQIW4qG6ZY" - }, - "address": "noble1g334fkt5kdqlu27w3p4zskp8fwvgjvd64v44nj", - "percent": "0.0%", - "airdrop": 879.7890066186875 - }, - { - "total_amount": 671396857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A35ufV26GWkpyE8sdL5p1C+3deqYAkz043nXF+GfRgMu" - }, - "address": "noble1g347vuw8kwswtspx7h4qz5ckaq89q3mhdkgdh6", - "percent": "0.0%", - "airdrop": 11793.583976994758 - }, - { - "total_amount": 3126648397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsxdsE3AJnsLHpt1mxt9T+485PIP4Jhw0qTgmsWeAe4v" - }, - "address": "noble1gjrdn546cn9pdjggcgyd4lsuun2543t7lmkxmj", - "percent": "0.02%", - "airdrop": 54921.89910051299 - }, - { - "total_amount": 174675237, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Iih8w+UHKXj3R47CyPmLpZ1U6Y4uY+WRILih/31aig" - }, - "address": "noble1gjwurwdxwm9jqa53xzp0z59rww9zgd6kzkrks2", - "percent": "0.0%", - "airdrop": 3068.300148835761 - }, - { - "total_amount": 3882020061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApuDWaMUYbIOuCVRNb3NCcqF7+esVFB44rJ3pYuP05e1" - }, - "address": "noble1gj0xggmcyndpmss5qqtadjn9mf7pny3g538pxf", - "percent": "0.02%", - "airdrop": 68190.56287268532 - }, - { - "total_amount": 148499295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AswYL+Abudlyv/Z/MC35ekAzl3IggpfNtFqAp/IhVyUf" - }, - "address": "noble1gn92wnedqf0tgkxej47245963refuxrz7s8ys0", - "percent": "0.0%", - "airdrop": 2608.500304771337 - }, - { - "total_amount": 301147936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "All1T8FND6kcduOM2j5AYthnCFaltv5K8GS/Z6ThdCLZ" - }, - "address": "noble1gn85mum72p08fm9uggvshqjkwzg23y7mlmhgj4", - "percent": "0.0%", - "airdrop": 5289.886950892656 - }, - { - "total_amount": 106871590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnZyQr3gmjZzpaS8dq7h9cq120U6yR9ncGFBdRAzkf33" - }, - "address": "noble1gnf74u7n4tky926ln2u5s50srzr5hnu5nv5t5s", - "percent": "0.0%", - "airdrop": 1877.2787782352596 - }, - { - "total_amount": 104743930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axi3lQNypPWWUDNXH9qBC6DuW84EBvn0w3dRC+MAbtU2" - }, - "address": "noble1gnj7rh5h360ez824sp34zu3ak34557zv4m6czr", - "percent": "0.0%", - "airdrop": 1839.9048515883364 - }, - { - "total_amount": 3802388912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akc8EdyEJhmwXnQh7vlCENFgLMsyCUwXsVQfWjICDkgb" - }, - "address": "noble1gnmwj6z3a95p5ncp7n24rwq74lpp9xjnf3fhnp", - "percent": "0.02%", - "airdrop": 66791.78265331934 - }, - { - "total_amount": 138558025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4YYMVvPoggynUyzbyggRSOuzHy4v2QDNymTf5gTWZRb" - }, - "address": "noble1gnuzzjk98qsetenz4q27vjplvmjg94mlp9juxe", - "percent": "0.0%", - "airdrop": 2433.8745206905837 - }, - { - "total_amount": 174490514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0JU4MRqDQqPLilJHJRtLGkUivsSAsl1GB1gzaXD3q7d" - }, - "address": "noble1gn7zgx66e7k2fjex45kdwnpn73jl3nyh8dlpga", - "percent": "0.0%", - "airdrop": 3065.0553522742803 - }, - { - "total_amount": 1154783511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7I9O9o6KyGsUIDSBjfJFxQdhyvLT+VKjyfXR4N9YFUd" - }, - "address": "noble1g5pdq9apegw82gp9qpfzkgnjg09cswxtr4w9vt", - "percent": "0.01%", - "airdrop": 20284.62923267356 - }, - { - "total_amount": 405832083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmUnfbA9m6HOb72T4ZvoWpV9/JaTnqai1ojCxD9p0/2Z" - }, - "address": "noble1g5xdzy7yq4k3dkk609axunkmhhqhu8yx48v49a", - "percent": "0.0%", - "airdrop": 7128.741669726355 - }, - { - "total_amount": 238789221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AykivUBcXvRjDXjF8AMrZ5wDhRRPLB2lhImk6+lYUVYn" - }, - "address": "noble1g5f6plraduaapnc555me0garwuqlc0pk5ey35c", - "percent": "0.0%", - "airdrop": 4194.509851071079 - }, - { - "total_amount": 256767593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnA01uzwCV9tMQE3Qhi2otdNl1bB1P7NmbegEZ/Vn4hW" - }, - "address": "noble1g523zmsy4hae37v258t89t0kmzzgxmx3n5mv98", - "percent": "0.0%", - "airdrop": 4510.313295399164 - }, - { - "total_amount": 116486801, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlPfbZcCTuykRmXWFJl63rJfZTvYeImJV21ES6YmyvKF" - }, - "address": "noble1g5tm0nmdqlx4d64k2eaajgp0rpgquyr5w08z0y", - "percent": "0.0%", - "airdrop": 2046.1770940416795 - }, - { - "total_amount": 1650606447, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6pGSkz30KY8Wo+BdQkUrpUf4hTcCa6bs3R31SZQesgi" - }, - "address": "noble1g5wrgeztmwnuak9dkxn5803pq6y8yt3qg4u32f", - "percent": "0.01%", - "airdrop": 28994.12700953923 - }, - { - "total_amount": 1215168985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtbpXHL3t+DL7y+1M51WhFQKmvQDK6e0fbI3YzeJg8dM" - }, - "address": "noble1g55qvjl35t0nky4zu8uqj82q8a36k222pjndc8", - "percent": "0.01%", - "airdrop": 21345.344890163797 - }, - { - "total_amount": 116486681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuIoavTX/+NXWlb+G3I1U3fLDAh1aa4nC/z9brCPiUfd" - }, - "address": "noble1g5urq7wqff2asddv2jwefadhhnsre2sshnqjc5", - "percent": "0.0%", - "airdrop": 2046.1749861526382 - }, - { - "total_amount": 279448874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1NoywlQxs7rC/Qxcw0P4j1uX2wAv/jAZ8V0wouw1QBA" - }, - "address": "noble1g5lmzrrecpfknd2vp6qwzj48ejk6pgeemt2e6k", - "percent": "0.0%", - "airdrop": 4908.7268259220145 - }, - { - "total_amount": 1869835894, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxOeSv+yj/W8YOBIZafsXemN7ND3ua7/9GKNeYd6LleV" - }, - "address": "noble1g48qyddk55ma7ll6v45qrjldf9ql6h2lw0lnhm", - "percent": "0.01%", - "airdrop": 32845.05491673469 - }, - { - "total_amount": 348622306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1zeZ0TofnpKLqjwpWxMwS1sybG2AwPMft7h4neAQflx" - }, - "address": "noble1g4gtaw3s6hhg352563sedrms2vummj5een0maq", - "percent": "0.0%", - "airdrop": 6123.809486442925 - }, - { - "total_amount": 200009063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwiLFM3p+rQt2nx6amWXayCY3O6jlWI8d5PYQfCJzIMi" - }, - "address": "noble1g4gd4cwmaudslsj45n7pd4s93v9mwz3phx60j5", - "percent": "0.0%", - "airdrop": 3513.307600500929 - }, - { - "total_amount": 188564068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjOjnsDPc1HDaWNcfuHs9gWoyYTwZrry+TgtVPd1uCwq" - }, - "address": "noble1g443d7t9rd35gdera0yu87dgux0g50v4rtmnk5", - "percent": "0.0%", - "airdrop": 3312.267771014826 - }, - { - "total_amount": 58513481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyH4ZHN8VmgUY6/OCAGnR9Kk5hYgv5XqR+vnHuHtAUGp" - }, - "address": "noble1gkgwe9mswfpr6kydkgk62a0h83mgf8zxraj75n", - "percent": "0.0%", - "airdrop": 1027.8327114060162 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9S2dv6i9b5xE3RbgmvzbaHg/zno/rh5tOQlODNOyVAD" - }, - "address": "noble1gk20pskfuc04yaw2wpgxv2d7kmq52ktfvhrczg", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 78905541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuaC/R95G0p3FIED403Vdcgw5X/tHhyzfGdCF5od9HH/" - }, - "address": "noble1gku6qzj0vstrz305dfpxaetmdhjr7yc58ghecs", - "percent": "0.0%", - "airdrop": 1386.0343764369202 - }, - { - "total_amount": 3095866875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqwscdpO8w31wSQt9dN5ZKFYKI49H0QF0TdgzkEKJWV2" - }, - "address": "noble1gk7nwg0yxmh6756asuxjdwhz5ucakra92k2amj", - "percent": "0.02%", - "airdrop": 54381.19882635798 - }, - { - "total_amount": 407043518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqleXLHRzP7iTbaE07lpl6AsU0FkJxGcFBgSOf2De3R6" - }, - "address": "noble1ghqgu47hy30tqkszjx9qp0qem45tjn2d9xza0f", - "percent": "0.0%", - "airdrop": 7150.021424399337 - }, - { - "total_amount": 139692894, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9GIat2p0q0mtgDahIgHpps9oNB8ulEU+z4VzgJjyYBT" - }, - "address": "noble1ghp27zdvq4wm5wvx803ekaa39kledud3ctcsuj", - "percent": "0.0%", - "airdrop": 2453.8093367607576 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An+0GHzezjHSVv+eBWBWeMi0CWfo1tNbV1Ap0ZNngmMQ" - }, - "address": "noble1ghcvqmn5j4hwffzl3s68s2afm7cg6m8dpmgcgq", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 59162162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXAWr8eJB63Ms0aW8Y3OaM3yYBIMwd7oXhxYnUYcgZA" - }, - "address": "noble1ghcsfqe38suqw2calujj57t4662gujdzpsavw2", - "percent": "0.0%", - "airdrop": 1039.2272744993923 - }, - { - "total_amount": 763034854, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArakGojfUCDcR8VAZLoNdqCjcaUAei0KA6p6V2O8iP7E" - }, - "address": "noble1gheuudvkycj9qtdxjv0zupr5rqkdzx8nvre32u", - "percent": "0.0%", - "airdrop": 13403.273390692884 - }, - { - "total_amount": 1311342117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag64TmIS6BS0gp5PDvwGmVKNxyu8sS4LDAzNzo4j7Q4e" - }, - "address": "noble1gheart6tsnnljw92nu8uhqm9h6vt7jyf9e5esj", - "percent": "0.01%", - "airdrop": 23034.697315256548 - }, - { - "total_amount": 16943814222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwnRaAGBeId7m/Q8cEZqZjPyol5WkBZxHnYxrzAUVIMZ" - }, - "address": "noble1ghlszu0t5xzcrsesa6gkzzv80q5rgcq5mt42jy", - "percent": "0.1%", - "airdrop": 297630.66930436215 - }, - { - "total_amount": 59386077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As6bIqnRPRdN0q137Lgwg4p2eHtKGh5WhIzkQ+FkkTwU" - }, - "address": "noble1gc9ss8fx02cghltetdkglhsj8rqyftfccv6cq3", - "percent": "0.0%", - "airdrop": 1043.160507621764 - }, - { - "total_amount": 1210962992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3WlzzGa9x2h+8M73dmji6vOwhAPnL+qanGXjxPezhBq" - }, - "address": "noble1gc50sk5wvwadahlvz5h6uvr8cwxmtl2uuz6ggj", - "percent": "0.01%", - "airdrop": 21271.463502226125 - }, - { - "total_amount": 82307439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwdN057ncyxhuJLz4+HUmzj7VNFxsnBoThRO6HyTE8re" - }, - "address": "noble1gc4p7y0uf68jcv9haujueczx0w63g6zzujgj9p", - "percent": "0.0%", - "airdrop": 1445.7912390523352 - }, - { - "total_amount": 113232263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2N0f837Y7GeL07y7iyDrGRL5BujyGn+D1QI9X1K+FJF" - }, - "address": "noble1gcmvl9j5824gnjxf9n8pl77h5dnp99u5aeasfg", - "percent": "0.0%", - "airdrop": 1989.0087191689913 - }, - { - "total_amount": 240941742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvRGYJF/hFWcdrw68ny5TDRPPjr8rLc5bndn7nWEvr9I" - }, - "address": "noble1gcatus0stca3rgchn93s35yt26hpw05yxxmre4", - "percent": "0.0%", - "airdrop": 4232.320479630135 - }, - { - "total_amount": 4366752030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5E7uw0ArPaZCXwxv0qhTIVY0/eRaD1LPxqLcOkK+/os" - }, - "address": "noble1gez2f73wxf78mx9uy7450pj4yy306y64ny6auu", - "percent": "0.03%", - "airdrop": 76705.23958457753 - }, - { - "total_amount": 50059520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkKAX98hb+7kSf38/Ns9RT2fiecU430sl3SJUeUD7afJ" - }, - "address": "noble1ge9a7mxqm50mnqgl0mu7ghd6rlx4sfqlmarvg2", - "percent": "0.0%", - "airdrop": 879.3326135097601 - }, - { - "total_amount": 208709558, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6j2t1WFewW/EgJwS2JknKX6HS67sHyExFopOYU98UNO" - }, - "address": "noble1gefurxa2hquewtzzm8qkcuxq2zpe9j5ktvyl62", - "percent": "0.0%", - "airdrop": 3666.1382510381013 - }, - { - "total_amount": 674737961, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHL6V01S6oAYglGO3gmTqXNP6S4IE4lJ/khTtk7W1/b" - }, - "address": "noble1ge288eaghacw5scv5r2knn589y7qt4s30jtekg", - "percent": "0.0%", - "airdrop": 11852.272947890364 - }, - { - "total_amount": 178777271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3OOPAToyu9co/cCCsbyknKyDapqYC9u6hKpIO81hnF+" - }, - "address": "noble1gejwt7dp0x0fhv7ep3f7sr86qau0dx0xp49m7t", - "percent": "0.0%", - "airdrop": 3140.355419799723 - }, - { - "total_amount": 186461990, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxyVPTtZerUnryM/V4UaShb2RMDy3XBz5Eb42yDT87lb" - }, - "address": "noble1geknpt8huchxux7dw006ew2m75hc920uwzkhx9", - "percent": "0.0%", - "airdrop": 3275.343211180026 - }, - { - "total_amount": 314132345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/1z20oM3baYSQTd2zejFrrVj4fTVudVAI8Aav8X+jj" - }, - "address": "noble1geesymy0xt4kywl5gfct0xz90wq9c5u37zmwvy", - "percent": "0.0%", - "airdrop": 5517.967729550735 - }, - { - "total_amount": 249055603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A879a0DCK9lY0NghEmO2ymMddD45B9fptVGjnCmc/yL+" - }, - "address": "noble1gemss7jcmvpjdnkqkhfp56jgwvfe6t88tnp3h7", - "percent": "0.0%", - "airdrop": 4374.846468668482 - }, - { - "total_amount": 1017864999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkXvujj+pKM7+lp893sHnTM1UfV5YpJMnM+k221CrnAG" - }, - "address": "noble1gele87q76ac3wccw5xdylezyzekv6k8e7k2leu", - "percent": "0.01%", - "airdrop": 17879.553974364502 - }, - { - "total_amount": 6130000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtJZWQXrvCuZlXCWS1iDAs6FtcI5RhxPQyNCo8f0NM1G" - }, - "address": "noble1gel68lwtaatzx4fh6yaufgm2m7x2aprdnz5w0x", - "percent": "0.04%", - "airdrop": 107677.99852685022 - }, - { - "total_amount": 1107819671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjTO8r3okMb1e1/IKFOKF/G8qH43wihgUOWqZ3cVV+fe" - }, - "address": "noble1g695kg3y789klma049kqq5ggdfkqusq42f78az", - "percent": "0.01%", - "airdrop": 19459.674535392118 - }, - { - "total_amount": 4503176467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am1ZJoveXAaDOx5SRcfDLOU8Pl2cZ333AX2eeAn1OUdo" - }, - "address": "noble1g6x9q3k4rk6myt9gdh08ck0hskecgaetzjamnv", - "percent": "0.03%", - "airdrop": 79101.63604890254 - }, - { - "total_amount": 169854870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2FGW6Yl0AOXyXoUhZIFStHtukMpocGGRZ4PCgWtcySa" - }, - "address": "noble1g66yu5xuttqh08vsg5s38fcaqagc507d4s393d", - "percent": "0.0%", - "airdrop": 2983.6268257158786 - }, - { - "total_amount": 1865344071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av8kZ2zgocKKTe1dLiHYzNMp1oFEcGCNcfUQczNcdNeg" - }, - "address": "noble1g66a5sn0fgfw9wskzvlw39rsxgq9lqd6a8gpk2", - "percent": "0.01%", - "airdrop": 32766.15271275804 - }, - { - "total_amount": 56218388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmbnMTlwx/wyiyDV8I8xc8uerbcPJlFku6Btkh4NgsJs" - }, - "address": "noble1gmq8eksznnh40ul583wydng733nzwr6qn6n3gs", - "percent": "0.0%", - "airdrop": 987.5176998769812 - }, - { - "total_amount": 100365849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwS/m+gvE4iAVPVUcyp7lYOSSw6QbOCLJcc+OEPNaM61" - }, - "address": "noble1gmq0zg0jdnqagr3tkmyxc7gl457rdry05zvgvh", - "percent": "0.0%", - "airdrop": 1763.0006102394898 - }, - { - "total_amount": 174989044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6N2PFYuCtLlkzUKAm7eluitxHgqS3GxEaafJgA1ZOEr" - }, - "address": "noble1gmz8ulswu8ezgt5qrylzqzlkre08j7gq5mgez5", - "percent": "0.0%", - "airdrop": 3073.8124016389766 - }, - { - "total_amount": 606461359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyoPHpzyez8as7tXZ4B7lOa+KxKQkdSThCWawHaySewY" - }, - "address": "noble1gmfa375h4rfvwztqngzunptaen7smvdqks08t7", - "percent": "0.0%", - "airdrop": 10652.943771777092 - }, - { - "total_amount": 544657614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auw0XNFk1xVHCtADHNa8ENTiw3YHbM+fOuBLZtEd+1X0" - }, - "address": "noble1gm2y2tru3vxaf7hulgn4uhjvljd2vf6skh6yc7", - "percent": "0.0%", - "airdrop": 9567.315131799307 - }, - { - "total_amount": 174090425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7PRJjHgTy+ez8ijFIxQHi2PRDgjvP8OqcFO8bcBixvY" - }, - "address": "noble1gmsr6gka5l0fxy28sv9wtx8t5et6p2yyrwk94m", - "percent": "0.0%", - "airdrop": 3058.027492118879 - }, - { - "total_amount": 405344375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AihUYKJYRg0UFWhdrMtwlYzWWL1w9/+YOP58qUjz78RT" - }, - "address": "noble1gmslq396vj9jjfyu22lzzkdws0d3wfppvmfltz", - "percent": "0.0%", - "airdrop": 7120.174716821701 - }, - { - "total_amount": 1499806999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGXqwvW+AuuyGYCWGc7RYlQtKm4KDK6wpUcw1UeQA9q" - }, - "address": "noble1gm5drmc3zufv5yayusm0rsr0a5vhp3txk3tvq7", - "percent": "0.01%", - "airdrop": 26345.22281058428 - }, - { - "total_amount": 3222117602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0i3I/n6KjM2vwyd+eJFUcf0b4MUMeQ+jbPkc/OpWCTw" - }, - "address": "noble1gm5nh940vtnvm56usg8ctrmrcmg5vhjrnuc75r", - "percent": "0.02%", - "airdrop": 56598.88652552923 - }, - { - "total_amount": 43899343829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlckRAnRtBH35UpLNfb869Ga6OALBTynDaDn1G7aew0s" - }, - "address": "noble1gm4e8eekjk3m0fzsnnm5g0qhvezqgcc4gemlfs", - "percent": "0.26%", - "airdrop": 771124.5481482468 - }, - { - "total_amount": 332875123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhWLc+hTfD/aSAULp6ug3xbPCJvUr66/KAaCEhhdAzrH" - }, - "address": "noble1gmknatxd4hv9m4c4jxaxw9r64hvt98fwgx26uq", - "percent": "0.0%", - "airdrop": 5847.198532466409 - }, - { - "total_amount": 214996841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlpRAYd5c4c22XYq58w9QJ6IdbWkBjJU4zj/LgAFHSWT" - }, - "address": "noble1guztpm035q9t3ggyk3p6nzd5557lnk4f2dh5wt", - "percent": "0.0%", - "airdrop": 3776.5790421656525 - }, - { - "total_amount": 305402559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/tN2mT/pnpqY2dUYYwtz8HtAemKhmy30N8N3zqJ6/hw" - }, - "address": "noble1guyctvg3frna9z5gn3gkdxkfyrsa82m4hazqm3", - "percent": "0.0%", - "airdrop": 5364.622560864322 - }, - { - "total_amount": 59512826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1DuqgDlyRvT0OcoXgdNN0Y4KJuDiJDQ4nR2kdUASUFn" - }, - "address": "noble1gu9rwy9h4hr293wvazymsk0jv9luf46j560c7e", - "percent": "0.0%", - "airdrop": 1045.3869478559043 - }, - { - "total_amount": 1417186138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6TaoJeavS0v6LiFkzYYNL12pAyyoxaj3Thgxpx1Tbm+" - }, - "address": "noble1guxz0x43vyxha6hv7twfg0v4pkn4m2e6uqj0mc", - "percent": "0.01%", - "airdrop": 24893.926081539405 - }, - { - "total_amount": 50979702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AujTKbZJFXsCg6AGAQxiS9Z8DXFdY6eEYzk2F6D65aBC" - }, - "address": "noble1guf6rcvzpped6t7tkwt939gvq6a0yz75xsrfg4", - "percent": "0.0%", - "airdrop": 895.4962931248391 - }, - { - "total_amount": 526325989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai+C8PeMpL5T6g6zc5xLX5o4t/zUBgemtQn7ATEa7fcG" - }, - "address": "noble1guahn94wwd3ntt79xgvyttkqzwu92swtn3h23q", - "percent": "0.0%", - "airdrop": 9245.306536408643 - }, - { - "total_amount": 847595986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNIHzgY+BLHfSIjnGWG2pCHloSUzd4jeCMpTpUGg9d5" - }, - "address": "noble1gu79h7au7j0vqeyasszc3dg54j4qj68vr2a64u", - "percent": "0.0%", - "airdrop": 14888.652419555003 - }, - { - "total_amount": 603540240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpajFcTI7DuF9arrd0HDcHnUYsJ9U5L9zYhV9FCVitf" - }, - "address": "noble1gap200v5pfv3v3g5p3p85welztfum79dk7lrcq", - "percent": "0.0%", - "airdrop": 10601.632149039939 - }, - { - "total_amount": 1061836373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJaUkufqy6XB9+AdWL7u5zezOGiJWuD69In2alQZ/W0" - }, - "address": "noble1gaxqqll8p5x2lkeygtdrmekgp3a82x77vjjqa3", - "percent": "0.01%", - "airdrop": 18651.94378591354 - }, - { - "total_amount": 39660721672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApxcvYY2kDzIJD3DRq9F3kYDG9Ef0hgWfS/i4vy02TXT" - }, - "address": "noble1gafp846z6mrlduc7dcgjmtmm7mnqvkrvsuza5s", - "percent": "0.22999999999999998%", - "airdrop": 696670.0048566775 - }, - { - "total_amount": 468136660, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5eR1Ygzkptt6HUgs01CFArbGtyaRSdNaXgbZgKHA4N" - }, - "address": "noble1gaw9yhkra063c8gnzujgyfkjjldfkvu62pnyxy", - "percent": "0.0%", - "airdrop": 8223.167795406946 - }, - { - "total_amount": 2540313645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6iO2XoHMauEVIV3lwchuZ2MNzwrDzN8np+n6WziVUtK" - }, - "address": "noble1gajt9246cgjcpruhewcqxy8c8jt62cxsfgqwqt", - "percent": "0.01%", - "airdrop": 44622.49411485277 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Xg9lw5HtyqcEs9/2kkT5QO8tc3R9HnQUo4sW9oNP+A" - }, - "address": "noble1gakrtr8p4jvlgpgwsex5sfuphnmjnw36ml5qqz", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 882000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azpf3fk7NcZU+V5K2B0BqLQU57l58FMVz+vDcZzlc8hg" - }, - "address": "noble1gakrehz73053ddska7l2hpkcn0afypl2jta6nh", - "percent": "0.01%", - "airdrop": 15492.98445361858 - }, - { - "total_amount": 23110625185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akc9BRVYbYRe7c2EHeCLcaBIi0rn8dmDVWvwRs/P3h11" - }, - "address": "noble1gaucd47yfv3z6rna8yklghmuv67ywx6mfnvnlr", - "percent": "0.13999999999999999%", - "airdrop": 405955.27971044334 - }, - { - "total_amount": 130000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai+YKL8swU2NUsXzULz99Jueuws7ZSx37yZ9w4bpYOEZ" - }, - "address": "noble1galg9em5pnycrnk3syykzxptj0j88utntahkxg", - "percent": "0.0%", - "airdrop": 2283.5464614177044 - }, - { - "total_amount": 274262931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxryCstWir0Itj5KXjCY3Hwx4lAJ71iZvDois4A0dnUr" - }, - "address": "noble1g7yz4ezef8wqsg0a6ycrxgxhsf7pxeqhvwl8rq", - "percent": "0.0%", - "airdrop": 4817.631889100754 - }, - { - "total_amount": 1294551066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/y2zovmddgcF4Cten5d8V92EMXSwed7rwzXcBToR4ck" - }, - "address": "noble1g7jscrml9j5lj5uayrqmhm69ltekr4nezjvrr8", - "percent": "0.01%", - "airdrop": 22739.75004529859 - }, - { - "total_amount": 77305605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmpuM2wpiNdnr9ETjHTQlPs8BIXFwRzFwjutHfHSKnZn" - }, - "address": "noble1gl5vn6awhfhs44stx2qx44eccug0w2y7qhjzza", - "percent": "0.0%", - "airdrop": 1357.93031342696 - }, - { - "total_amount": 68751039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am2hAiIa4HN5hzXK5d2bmbRMw42E+mdalLPKVQ6/LV0f" - }, - "address": "noble1gl4vuf5t5h2azj7khrvs8m0gfz0yh49zs280pw", - "percent": "0.0%", - "airdrop": 1207.6630140556967 - }, - { - "total_amount": 14746229177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjI3eeDKbKV4ri9WPXa9MTkAfBxwFXZTvIvydqu3xTdu" - }, - "address": "noble1glkwwjmd75j9a8rg5m6xxk7lzzzdakf0d2rfj3", - "percent": "0.09%", - "airdrop": 259028.45735686817 - }, - { - "total_amount": 221692195779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2M70kwb9o8I/bw7V9YVpvh7BSfx6PK15V18F3xU6iBX" - }, - "address": "noble1gle3m75hd5856995ralz8l4ra7j3kzjrkky07g", - "percent": "1.3%", - "airdrop": 3894187.9168850495 - }, - { - "total_amount": 174282695, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6nb6drLSR/lyiX7ICbDxpLYtdKoVzAtVFXwU5yVzLQv" - }, - "address": "noble1fqqehm5wef04lvnywsdysrguyez5l9tkampamk", - "percent": "0.0%", - "airdrop": 3061.404857335316 - }, - { - "total_amount": 100599143, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1p7LWsNJvTCF+mSEQhxfCB3Op9CNEiBm6JFfmkltvQc" - }, - "address": "noble1fqtqsavhjxws37gq6glej2d5v5pdj92szkvjjz", - "percent": "0.0%", - "airdrop": 1767.098592456182 - }, - { - "total_amount": 63650088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azk3axTKm8VIdwz4meUNZbjxeDVNKjk/aI0hZeXIuja8" - }, - "address": "noble1fqtxa7p9j4wgpwzxzw0wutzlkmmm4pneccu3yl", - "percent": "0.0%", - "airdrop": 1118.061024779427 - }, - { - "total_amount": 743482227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0LIgXHVd7YlJT22iJqIthBwRsbBNQy4hUz75p8t+s5n" - }, - "address": "noble1fqd5mul4y0crnrxt5h7nztwydy4ranx3q4f9lg", - "percent": "0.0%", - "airdrop": 13059.81698917542 - }, - { - "total_amount": 69809985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgY6p8SrOsB2ZNuyUDK6qJxmiGa+ZiA6GaVZGNy5whiu" - }, - "address": "noble1fqj5rd8gmr35tck9cfqg5d395rumk87jmgqrhj", - "percent": "0.0%", - "airdrop": 1226.264186295177 - }, - { - "total_amount": 80651691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8hAfzRCUFRRfd8AnKTi72xE4eOpVt64SFzN6/DgNmre" - }, - "address": "noble1fqjeqdk2g2n6zqn5yr6us22ng9spehs0qadh9j", - "percent": "0.0%", - "airdrop": 1416.7067968492624 - }, - { - "total_amount": 3157603458, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6rTbzv3SbtsrvG25ErIUuLSSGa3IjAZk5CjHad1LcCj" - }, - "address": "noble1fq57dpq4thzcxyp55vjd2ewv8pdf3e94gfrjn6", - "percent": "0.02%", - "airdrop": 55465.64771597083 - }, - { - "total_amount": 150510545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AozEYGYNcysDk3EN2CS71PcKY1snZYRNyJ/EgrcjwEfR" - }, - "address": "noble1fq4jpn4p9hhh5nj20fjjamw9w8408wyqd6p2v0", - "percent": "0.0%", - "airdrop": 2643.829403390771 - }, - { - "total_amount": 74051534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A99JCY4E76dih6We5ysZ3mtpcvPOzz4gJ7qYfTrrxsaX" - }, - "address": "noble1fqm4hn8q6cq5k4w24lqke9cl08t7fl3maplrwd", - "percent": "0.0%", - "airdrop": 1300.770141755791 - }, - { - "total_amount": 1450623244, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+HG6Ml9fZG/Bc/n3uz1+TzI04vXbMq+bdMV0cQT+oGr" - }, - "address": "noble1fprwljg0qkgrxgkcudf4g75t7pm05s5kpgv58f", - "percent": "0.01%", - "airdrop": 25481.273659126702 - }, - { - "total_amount": 3746019104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjTg2ch2nS2xso30ahNLK1ext5lkEn3AemjoGkzqc107" - }, - "address": "noble1fprjpxw2cssmlae7sw3g6jvrthwmlhakwxnspf", - "percent": "0.02%", - "airdrop": 65801.60514878707 - }, - { - "total_amount": 920397757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHs46yRBwT7rtVDA+NoDJGMv9K01Np4u3MXe/CiXKjt" - }, - "address": "noble1fp8xs80ryct6y9wfrpttr0ctwv993ycn45ldpq", - "percent": "0.01%", - "airdrop": 16167.469546878017 - }, - { - "total_amount": 292810340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4JIL5Wn6qPCBlZJn4x1qhp/KImI9X88wJOIDJuLnuOZ" - }, - "address": "noble1fp8g8hrkas65gj48qd3yfw5pay3ajdtmpf87a4", - "percent": "0.0%", - "airdrop": 5143.4308905655 - }, - { - "total_amount": 820017766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFH5Cz+z3N5u2DBm96p8Uj/3SLA2Ct+l5MSNhZnmGWw" - }, - "address": "noble1fp2ph05q34ed4q5tppurenh3as6r6dfkcgzr6y", - "percent": "0.0%", - "airdrop": 14404.22052191501 - }, - { - "total_amount": 51482014, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/nOWnuz7mgcoTlsClh+PI4LuoKa0duQGxKTmu6Cg4T" - }, - "address": "noble1fp2s8vt7pqdaxf3urs04gjxyemlnul7r6sfv2m", - "percent": "0.0%", - "airdrop": 904.319776125821 - }, - { - "total_amount": 151844483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bjTxs2qdOvUITmBNqP1tx3nlq5B1qCpL9Axdsv2YEm" - }, - "address": "noble1fpdz6mphuerl4tlf3nm7f0ry2yqj8s94276hwh", - "percent": "0.0%", - "airdrop": 2667.2610141573136 - }, - { - "total_amount": 69758754, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A18nL07N9sE2hVAwrQmesarwry6Hjv/opke8lRTZBg84" - }, - "address": "noble1fpdmyx9ekfq4hu4s5ysd9e046zhzej0mvp472s", - "percent": "0.0%", - "airdrop": 1225.3642757662167 - }, - { - "total_amount": 11428746375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7T6qIgjjEp8v9WIBuxI4Yn9xldo8W0IfKYjrs4qhC5Z" - }, - "address": "noble1fps308f8z49wga488guv223wljrsjggtrzc78m", - "percent": "0.06999999999999999%", - "airdrop": 200754.4103313205 - }, - { - "total_amount": 4124841196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6w+VlWawcnmm8hohcobPviN8FyNWl3XQGyhECheicZB" - }, - "address": "noble1fpu6987zgdjf65yeyr2uuut82talr59g8qvepr", - "percent": "0.02%", - "airdrop": 72455.89628489056 - }, - { - "total_amount": 25000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoh7/VvmytUEQMNbxYOD++Bh7/qFVfMVzod9Dsi5RUST" - }, - "address": "noble1fz2rflc4fnp9hm9cpavepknyexr83gplqwadw5", - "percent": "0.15%", - "airdrop": 439143.5502726355 - }, - { - "total_amount": 89117374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8xKIYpSS+aDJ2Koz/+FvK6scEykwuqGwNlFpGXEG85F" - }, - "address": "noble1fz3rz6jvya59ty4376lcuwpsprdp5n0ezmtxun", - "percent": "0.0%", - "airdrop": 1565.4128003733704 - }, - { - "total_amount": 1470017165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao3y0CV7C6HACogSzMsEJuM3BYy1x5goF3YgD9PwI+xX" - }, - "address": "noble1fz3n5x4hxf2y35xgxgzq3f76mx0cjv7m3ux968", - "percent": "0.01%", - "airdrop": 25821.942271992582 - }, - { - "total_amount": 250593876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1X/+W7yHwYYrrpOAiGurzMImoCLAFpKwSLXNbhbE7HJ" - }, - "address": "noble1fz5cymj0fu6pxavekwznwmfwe3fqwcjnvu9t4u", - "percent": "0.0%", - "airdrop": 4401.867375328823 - }, - { - "total_amount": 490924414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgyBoMWL7GBfYjlBUCwhyEBJPragGlw2znn6pZR9I//1" - }, - "address": "noble1fz4j8t48cst740fxssja4wx6r2el6nmkvvsmd7", - "percent": "0.0%", - "airdrop": 8623.451603178924 - }, - { - "total_amount": 257239687, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3n+lNW8xHgmy+i7dLgTUQ/XGnjQ9Zh/YtiErJaV+fwS" - }, - "address": "noble1fzlepszxjkm3wrc7ahvpg334m32e23xj85jynh", - "percent": "0.0%", - "airdrop": 4518.60597680806 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az4uDhK+UsLxXa9rvG9HHAYW6IJzhjeAqTCtW4rF8q7G" - }, - "address": "noble1frqfr0m8nfj46w4q5vpf72n86mff3x2smkt3ec", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 253720653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai9lyNTDdJ0/urCksFWiSfEMccYxobN2Zr6Qsmcl+6UD" - }, - "address": "noble1frq4wuaks0ph6dk0lcnzyngvu25ff4p36k7fqv", - "percent": "0.0%", - "airdrop": 4456.791533436456 - }, - { - "total_amount": 86901871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXQM9esY663fVsyJEcJhGy55NsocBwWvcNbS6JqtVwR" - }, - "address": "noble1frx3y76cgzvxg203kwhu39v9ucsa90l6j5hkn6", - "percent": "0.0%", - "airdrop": 1526.4958462509835 - }, - { - "total_amount": 235916667, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0GqBNBk9eK8ZOVbMq4phjE9DUCZPWP/XDteDYy70Y5T" - }, - "address": "noble1fr8f4fl57tdfwd3tsntanmz9gv9wxeafawn5k4", - "percent": "0.0%", - "airdrop": 4144.051308594684 - }, - { - "total_amount": 77225457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyPQlk4cnSiwZbk9GufT1dnVw5kKEBfxWQ7BLsonMcTI" - }, - "address": "noble1frgd6e30uv0358eeem2flwwyjksnvl6g7y66k9", - "percent": "0.0%", - "airdrop": 1356.52245433627 - }, - { - "total_amount": 916268234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak0IYT6tJ/f0B8nHnf6AdJdSO+w+0Cmi/P/k/8b5KPsN" - }, - "address": "noble1fr2ep8whqpwpxnfazt83dxpm3hdk0afw88j5lt", - "percent": "0.01%", - "airdrop": 16094.931411231917 - }, - { - "total_amount": 2765905351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHcMZgW+t+GssIB63557zqRFXLIJ6dbGkc0iIrtUwE8" - }, - "address": "noble1fr5pgxht0cznkkccxuyz8k7wpzv67tdz92u2hs", - "percent": "0.02%", - "airdrop": 48585.1798222488 - }, - { - "total_amount": 84595882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoPyPxtJtoPFcxzCiTTzSGpbBrkCZrn2CamI906YZRaC" - }, - "address": "noble1fyqpmtu4d6zvlzmp396y9cq3zxauzmgr468x03", - "percent": "0.0%", - "airdrop": 1485.9894383969977 - }, - { - "total_amount": 50125552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At5fAGgJW6at1MIXCAq6yZ8rJFSWNT1XE0UBhRh66Ugx" - }, - "address": "noble1fyd2s724dqn0yk9amejkqqyd542f4zfdpr2m0y", - "percent": "0.0%", - "airdrop": 880.4925145862242 - }, - { - "total_amount": 67034092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApCzZf9kM025SqXY2OyMtx2VBzCGdHNFooR8tfgf6USF" - }, - "address": "noble1fysj4cadldlzcpjkfm2apdxex48wlvrg5c20n9", - "percent": "0.0%", - "airdrop": 1177.503566007299 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmlY5Pr1F3QEIwp64xJ7Q44i7W7BX+x/4hW85Rux6gt0" - }, - "address": "noble1fy3tq59uqycc55ywwhpay03yglwfhra9z7mwsf", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 7563865387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2IA7LcfGhjxswRrfVcgU1ORr3HnhVtcLweWkrQUjnJe" - }, - "address": "noble1fyedhevd8qruh54yju0e4s64xn50cesdydm37t", - "percent": "0.04%", - "airdrop": 132864.9079932593 - }, - { - "total_amount": 121880497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjyBDCFSLnMa0PnGEgfBdXACtqqAGft68dHju3wzd2Gj" - }, - "address": "noble1fya67xh7e0ug0mkw0hc4v4heja6f30txxhfpsn", - "percent": "0.0%", - "airdrop": 2140.921366462932 - }, - { - "total_amount": 1965751712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2qTzdXlpy7mG2uCSGxa66ZnWSWOltdNlYKjAS3z6kat" - }, - "address": "noble1fylp55pdwagxq8ma5cs03zfdkuk89v9wyjven8", - "percent": "0.01%", - "airdrop": 34529.88743048765 - }, - { - "total_amount": 91364108, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzvqWrMx6IDQmw6ptpssI2n6aYhGVp/bY+Eu1b0YouXi" - }, - "address": "noble1f9qwat48ldgxrmssvpvpk3tea8l72mks2hwpeq", - "percent": "0.0%", - "airdrop": 1604.8783501844998 - }, - { - "total_amount": 264883599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At8B4se+1V1fpUvunhOoi5/CKp3uPpJW/y7/f+rN/3S4" - }, - "address": "noble1f9z6ytnrk05m08ndkhv2px8m043nlzaeputndg", - "percent": "0.0%", - "airdrop": 4652.876962954125 - }, - { - "total_amount": 50245685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvOYHN/KL4tXqTHkzSIxb8XZRqMvvaHlTy/XSqBL3xc3" - }, - "address": "noble1f9rvrljhgvqndz8up4f50q37cvf8y87ej4k0jd", - "percent": "0.0%", - "airdrop": 882.6027398712203 - }, - { - "total_amount": 56760945, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqAW6XQ+IYgTk7Jb+xX2lLCjuNknVRqgmbdr3dItf4Xa" - }, - "address": "noble1f9x2ecxejcrsl90mgsdqjhmy06p4x6qzm0utfa", - "percent": "0.0%", - "airdrop": 997.0481161651919 - }, - { - "total_amount": 57322111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Bg9i2oCkeru2UVE6CcnTsh11a8XeXeBysNzclRxeyT" - }, - "address": "noble1f97xhgsy4866xf98fcfwnuk0nhwuu0lst989ju", - "percent": "0.0%", - "airdrop": 1006.9054133464837 - }, - { - "total_amount": 1282711102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ptgheR8S1oQZZYsUURc3xGZb3W1GCaA0vgcW+ARXcW" - }, - "address": "noble1fxyaleagw0dtsncmyal9gah02ecd37qjc8x9dm", - "percent": "0.01%", - "airdrop": 22531.772292256188 - }, - { - "total_amount": 7376209506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzItBLZQrjkK8foJI/Y0idCnwseryqusAfc8Mlqgl1q9" - }, - "address": "noble1fxvsha307ajhavkcq9mfzemkh8wlkplr3epquv", - "percent": "0.04%", - "airdrop": 129568.5932007841 - }, - { - "total_amount": 167373009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai8ZRSllAw0y7HPmiWrcVPVBNbzYOrHgeaJsfyQUKZCo" - }, - "address": "noble1fxuvu3ded7wgqdr6s56nwmkzqxgy9lk2wmt5jq", - "percent": "0.0%", - "airdrop": 2940.0310956829508 - }, - { - "total_amount": 7290197183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Czs4/dlbSAWkqoBlwNMGx3rkqNJKVp0nhQZAz3+uOd" - }, - "address": "noble1f8vjjv09x6el6zdgl76cqltaf7u754ytxkdq2r", - "percent": "0.04%", - "airdrop": 128057.72292520745 - }, - { - "total_amount": 65176288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avd5Zj4Hdoa5lUCK45qbRDMmTBaFlXI5A8TJiu+/U65K" - }, - "address": "noble1f80t743lcdg334qj9vypqdtw7l7fczhpgjn4s5", - "percent": "0.0%", - "airdrop": 1144.8698602364707 - }, - { - "total_amount": 83431240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akyqq7DLJu6bUiXewWDKi4bscsIiAFH+J8ODdBUvG+Z9" - }, - "address": "noble1f8hkw55az5h5z4r3krjrl5qml0l8lpc3dvwurk", - "percent": "0.0%", - "airdrop": 1465.5316374899326 - }, - { - "total_amount": 443883797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao5WOwCC7cKGjzlf+e57PUaRaD42+B1iebN/ZhZcdN8U" - }, - "address": "noble1f863jgzxv03ytndt4c4x7cq2xnucj2744xrkcz", - "percent": "0.0%", - "airdrop": 7797.148260923113 - }, - { - "total_amount": 96991326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6uX1L/3KoEj4IpHElBECgYr3UPdgOF6G1Xyycvghcxs" - }, - "address": "noble1f8u3wk2hvql3v6sl8wcljyyjz58nun39n0y4rc", - "percent": "0.0%", - "airdrop": 1703.7246098116232 - }, - { - "total_amount": 62766069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHnh56dCxQck5Ae+zFLfd/P9rP8qqaB2Aq1QmorYtq9" - }, - "address": "noble1fggxxx5d0sweulpvzkrxcdngemqe2eydmmdt35", - "percent": "0.0%", - "airdrop": 1102.5325750926884 - }, - { - "total_amount": 615983681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Q/aA227mejquo/76jdX1fXwTIWl+kWKL/h/BvzDXAa" - }, - "address": "noble1fgt99f0nh8l5qfc300l9434dtquatuv76ja7e6", - "percent": "0.0%", - "airdrop": 10820.210423373863 - }, - { - "total_amount": 137167656, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmGOgmwwRlS3ubLRyLuh7ChZ8nL31lwrI5GWLpBwcJlI" - }, - "address": "noble1fgw7xccw3dzu79925l2udpnhjkzk0rcrfsc2e5", - "percent": "0.0%", - "airdrop": 2409.451657536623 - }, - { - "total_amount": 1682895265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5n+eTjHCXgf1CifCgDOBIkWkyRQxdzZ7d5/cCx/agID" - }, - "address": "noble1fgl62q2zh4e6qtmvgpqxsrpcvxxc9ak8dwkqk0", - "percent": "0.01%", - "airdrop": 29561.304056364308 - }, - { - "total_amount": 285085757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2R4LiGUoKLFyTB9TpaAPEyMv7Hs+qMmtO7HCSACf+UA" - }, - "address": "noble1ffpdl72gvhwm82anjlzg6r0pjuj6y5sneq0ce8", - "percent": "0.0%", - "airdrop": 5007.742858445674 - }, - { - "total_amount": 958368975, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahvuscf/fWoTjN+Gh3ej/i4CEjLfUqEE5liF/nVMfNHS" - }, - "address": "noble1ffxm3ge68rz87upl5vxflf527zegtyzn7eevwx", - "percent": "0.01%", - "airdrop": 16834.462166105866 - }, - { - "total_amount": 186130331554, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3HpNgWdNlQROdebZbW8ddIeZB5FaIi139pf7jvIbNVd" - }, - "address": "noble1ffvsy0vhm75krs7fqqsngjrau4ysq90g40haxp", - "percent": "1.09%", - "airdrop": 3269517.3844818524 - }, - { - "total_amount": 167060884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9GSCeCiV87cWlTORhcJEQyV/FwkuDHCEB1LzSIl8pXh" - }, - "address": "noble1ffnzw8306m089chhxyh3addpawnvtkrlqc6vjm", - "percent": "0.0%", - "airdrop": 2934.548388457797 - }, - { - "total_amount": 477386040, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwgurdlkbCklCzUOX4BztHSuc0qFqutZDg0qI7kys4nD" - }, - "address": "noble1ffhe8dh8fawzgmsc5peldgtrhskazs47c9cxlp", - "percent": "0.0%", - "airdrop": 8385.640018247776 - }, - { - "total_amount": 1500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1SIHalP3ISAN0YUIjquzHhD4IGOl1qRGJUzRtM5BQVR" - }, - "address": "noble1ffh7h848ugnqh0j5r6xj8n82347utv80an26sx", - "percent": "0.01%", - "airdrop": 26348.61301635813 - }, - { - "total_amount": 51732573, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah78LGmLp44wxDfugGrT475T+sP4+N5Sw/Z5W/6bBBr5" - }, - "address": "noble1f2px0lzs46n9mf98ug7lzv6kd6d0zv85uzkz6c", - "percent": "0.0%", - "airdrop": 908.7210308783314 - }, - { - "total_amount": 2214468229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7oxxPLIvHLObEBiDPDbxjgfUDfspZnGbVjp6mInUNih" - }, - "address": "noble1f29g708ez0gw8mxk7zstew7jttcaxte02wgm66", - "percent": "0.01%", - "airdrop": 38898.777601960624 - }, - { - "total_amount": 2318563502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmU+27dadrgiDirUqRniZTH0cYtXsL4g2B8Ch/4FNt01" - }, - "address": "noble1f28hyqjfhldzp0mdt7vss3mt85xn7kd3m89dkr", - "percent": "0.01%", - "airdrop": 40727.288312033386 - }, - { - "total_amount": 205165089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArfNBfSWNtNF2Tsn6WCCPvKxMRybwmTANj59Y2J8oil1" - }, - "address": "noble1f205t3y08u7ew880wt2ywa2syjm50l6ls2vrdl", - "percent": "0.0%", - "airdrop": 3603.8770230184496 - }, - { - "total_amount": 568884778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4BML3sCeA6iY3MRbZxWqG23JhaJY99ExmAm9kK2LBFq" - }, - "address": "noble1f23y0rhchr0anncldt8pp0zwsyajsdue5470n5", - "percent": "0.0%", - "airdrop": 9992.883244279203 - }, - { - "total_amount": 200638679, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Rv+qNE6wA20JZLxbCUz+h6YAyrLcrgiDt4TGTObp0y" - }, - "address": "noble1f2nv6kl7lkprqdt6jzgf2uskc5zvrptwvuc5re", - "percent": "0.0%", - "airdrop": 3524.367272722867 - }, - { - "total_amount": 89317188, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A066ZBA7Ee6pnfhbbI05XIb+b/b4it3ZgnowZ/Zl4H55" - }, - "address": "noble1f2kz7xxcyt82hae93dve6yx504shdpyftxl7xa", - "percent": "0.0%", - "airdrop": 1568.9226815475374 - }, - { - "total_amount": 51338864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnF36QYTOGB+YOVE8gpkimQnGqdacZXj62+R3HM3XVhC" - }, - "address": "noble1f2kgnvz6wvrpurn0yy5tfdst0685nrm8jm76sg", - "percent": "0.0%", - "airdrop": 901.8052401569599 - }, - { - "total_amount": 265833154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aud1KD5jtQgGlEoD/YHuoq9lLMiuwl+XYgCgXlQLZW15" - }, - "address": "noble1f2k3nkeg4aulrtgjjtg5rkuw4686j3rkmkkelm", - "percent": "0.0%", - "airdrop": 4669.55660110929 - }, - { - "total_amount": 662353665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9okk8W6+TD1NLUbddvldZYLLBCgIm1j/9ao8Iyt7jVD" - }, - "address": "noble1ftvd5hya6vvkumklucu40xtny49p0twqkgt4l4", - "percent": "0.0%", - "airdrop": 11634.733599367673 - }, - { - "total_amount": 233235947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArZ+Mz5lNePL6mMufGoxGQYUU+HlgucQzlotROOqVRlp" - }, - "address": "noble1ft5fducxpuk4ma4cmv25txxt99ccr98phnmagf", - "percent": "0.0%", - "airdrop": 4096.96247267121 - }, - { - "total_amount": 1478311732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+YHqIKWHImZwYtYeBam4Jy5ov6v/6DZdWvsaZcCtF3K" - }, - "address": "noble1ftau5pcrr3ph6appnp2m49gmrql0yjnx2jrv79", - "percent": "0.01%", - "airdrop": 25967.642496006752 - }, - { - "total_amount": 1617814130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am3XlWPpmshGXBSUB28jQwhHQFnOrKfbRQpBBs/02iJe" - }, - "address": "noble1fvqk5cluzq4k9fqf3a2ge9wd9xedvpnrq24g5q", - "percent": "0.01%", - "airdrop": 28418.105629177404 - }, - { - "total_amount": 500164640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxiDGeEkfSi05sIK3oJEh4SgkrRNoWO4LqAmvJnpr6QV" - }, - "address": "noble1fvznl3mh0p5dm2keq6qsu0ymzv4f4jqndm3adh", - "percent": "0.0%", - "airdrop": 8785.763029217385 - }, - { - "total_amount": 230596957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As7OXYwHpEIG9rUi3sl5XKYbWmEEPZ6DJBVCntsz2GJw" - }, - "address": "noble1fvxx0xefgjz7my2kjk3ze6mfa7xlc0yl0tuqfl", - "percent": "0.0%", - "airdrop": 4050.6066551618505 - }, - { - "total_amount": 10800000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5K+MJZoG2mZ/t7oaGHvykNPhcsDL2ZxdN3DZLPBDmy3" - }, - "address": "noble1fvd5ch4qwkawkeeury4eh857djrmx30ngaed4k", - "percent": "0.06%", - "airdrop": 189710.01371777852 - }, - { - "total_amount": 143175230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwmT27IbwyQj7ks2oqFfzPXVOrgnMOPKJjkjx2dGIFw2" - }, - "address": "noble1fvwsdhdqkapy6tynkyw5r43tf5rhv846k8ta5u", - "percent": "0.0%", - "airdrop": 2514.9791525320456 - }, - { - "total_amount": 84437332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj4HkRMHLvy3fGyoklBNEKN7mlHmIGdUEgYfWi6toIYi" - }, - "address": "noble1fvs78k4uls67fs8t02k2suk0pdhf93xgvggyy0", - "percent": "0.0%", - "airdrop": 1483.2043900011686 - }, - { - "total_amount": 293942549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atw2agNodU3TDcgtZ29DlLl7vwyR3ExZkArp5LJQ+qo/" - }, - "address": "noble1fdesxprykuvjsracjefmv4m5tqaju8t2u26y8k", - "percent": "0.0%", - "airdrop": 5163.318981761925 - }, - { - "total_amount": 168244112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuqFXDlMRwPqmM2dE82KBYCLlO8HKq1Srabs6EnDjePn" - }, - "address": "noble1fdm6prm6nn9snm7vgj943fz0fgj70xdms966lj", - "percent": "0.0%", - "airdrop": 2955.332666245877 - }, - { - "total_amount": 50513914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9DCN4wYlmqnMhZqPa+wVaqCaJISY4QYrJVdCeusZTA4" - }, - "address": "noble1fdutv6yugztta7hkkq9klypsgpzzk3fa6mza36", - "percent": "0.0%", - "airdrop": 887.3143812850634 - }, - { - "total_amount": 54605133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1nrSQP6FuwNWb3iLpeB2P1zaYE1pKsN28i/eMjYK5iU" - }, - "address": "noble1fdau7p0ueyxzlvs6wxam7vxc7d27ncz94n7u6d", - "percent": "0.0%", - "airdrop": 959.1796787491779 - }, - { - "total_amount": 70862641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhyWF3ehFVLL6KI93Tz3i4wPbrj5iht/znHWZJcWs7vm" - }, - "address": "noble1fd7n9vwp0x5cv4ua0s3elnkxl352wxrgyul325", - "percent": "0.0%", - "airdrop": 1244.7548700174088 - }, - { - "total_amount": 545355902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apvia3yatVonJuAYPt02/eLnEROwOMh0WLE5q/iQXK+x" - }, - "address": "noble1fdlk5dpuqckg60rpt4d707uctjgsz44yxwfqe8", - "percent": "0.0%", - "airdrop": 9579.58107865662 - }, - { - "total_amount": 1305582829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5PRzzC5S/J6tA4ZNG8L21mjvJfsBjoYNdB9Q6SEodPh" - }, - "address": "noble1fwyzhlyngfguxg0pkm34mqd0ycw8ua5fj6jc6c", - "percent": "0.01%", - "airdrop": 22933.53114808205 - }, - { - "total_amount": 420077918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aveiy6NBfzzChYPmyr/o7d/DMqIhsqajmO41ztdUAnjX" - }, - "address": "noble1fws8rk5lkxtsu2dfe2s5kp6m79zcuhgpav3kms", - "percent": "0.0%", - "airdrop": 7378.980332066282 - }, - { - "total_amount": 150926168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1tkArhigPYmetgVyD43GIWCkZIcoVC1sCmEoCt6JzTP" - }, - "address": "noble1f02cm5ytw7j73areqvgjft48xdcfs45jpe7gny", - "percent": "0.0%", - "airdrop": 2651.1301297825694 - }, - { - "total_amount": 83055709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzpwS97WHzljVaeppE5mW5lJJuFeHegGmyj+LYc9x6Dj" - }, - "address": "noble1f0v5af2nhemuarhjjchu3gq0v0vdmcl0eguk9k", - "percent": "0.0%", - "airdrop": 1458.9351568268353 - }, - { - "total_amount": 301667010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8SmvIgMOzPU8w0ZOURtuhIrNKMWu2nStpQXwH2PyYSL" - }, - "address": "noble1f0sf3fnw6jem6w5qfneu8759n3v6wv7vvn99e6", - "percent": "0.0%", - "airdrop": 5299.004870861225 - }, - { - "total_amount": 650000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/LJ4uICqWUlrAc7izL/ErUUT3Yj6i2CrLpU9GqS7+3W" - }, - "address": "noble1f05n44yvhm498n84g6f7gl96wr752jq2vjtul8", - "percent": "0.0%", - "airdrop": 11417.732307088523 - }, - { - "total_amount": 871592982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Artgn455Up71aFfXmNXbtkwRCiNOOTVOfQRM59fxcoWL" - }, - "address": "noble1f04haf8fs3pgagkf2pa5ay5uqrkjstzxdc5qlm", - "percent": "0.01%", - "airdrop": 15310.177460327732 - }, - { - "total_amount": 136023280, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AljnPK4aoR/2QK9F5y48P03Ty8C+SwNR7xD32/Rds2yt" - }, - "address": "noble1f0u98wpsq0ss3fnq4ehwnmt4lfxtp5pmyskdhk", - "percent": "0.0%", - "airdrop": 2389.3498439571513 - }, - { - "total_amount": 1235775856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3fyYJ3OPTu5RiSJOf6S/aXabfdy6HKH+gVgt5DTPfxN" - }, - "address": "noble1fsp5yktz2750sv39v0yyp20c08s5p5rek6d2qy", - "percent": "0.01%", - "airdrop": 21707.31986980181 - }, - { - "total_amount": 3026951102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At9V8aIZusML8ufnChGRgiJZOxFEAVBnaL/GSEk2gteB" - }, - "address": "noble1fsr3gt7fjnc760emps6fw755a0w8yc8f0urxex", - "percent": "0.02%", - "airdrop": 53170.642137357856 - }, - { - "total_amount": 406950231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmnFQTte1ZbnIStRJd99DTXbjfundkx4V8XXtQk84LIx" - }, - "address": "noble1fsr5fka25c99pd2gyr92g9h634wmqcqw24ed2t", - "percent": "0.0%", - "airdrop": 7148.382769024365 - }, - { - "total_amount": 56224938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjfV8oRpZUBeoWG9B+T9/MKhHXYaete985GJM+K2jt0b" - }, - "address": "noble1fsxxtzc7g8srase4w8lsl5sp5r4f2xelefre5z", - "percent": "0.0%", - "airdrop": 987.6327554871526 - }, - { - "total_amount": 2020777903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay96Yr65elOodc81QzgNEiTWsi0V1EIYzyeHRYMlfUbe" - }, - "address": "noble1fs8vsu9hvkr5g8wj76n0799v3jct64ljqwz6vr", - "percent": "0.01%", - "airdrop": 35496.46330543646 - }, - { - "total_amount": 55035442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak2mi5WlnOgzMTeg9M/RqlywMfRC8gi840merSzukzPa" - }, - "address": "noble1fs8er0greualh3juwem3nfn4fzcru94hkmcjh6", - "percent": "0.0%", - "airdrop": 966.7383756281486 - }, - { - "total_amount": 2554602098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A06RL/eZchjkVEH06ksOiYcIcdToLsCgYi00upsQv+aC" - }, - "address": "noble1fsdqz6vhpehzezm7f3ej7csatamsm8xenp0q9d", - "percent": "0.01%", - "airdrop": 44873.48139398573 - }, - { - "total_amount": 121643643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aivvxpb48qp6b/lL4kkfF3w4G95Jau8/NWm1W2p1p9dP" - }, - "address": "noble1fsd0ypqf82s86jxvkmg52aa30mha93tuvelrcy", - "percent": "0.0%", - "airdrop": 2136.760850204681 - }, - { - "total_amount": 162898283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrVGJjBofiPoJkIankjNgpzmktXuf4xTrmOgDDI6UpI" - }, - "address": "noble1fs0hmx3scah3ssdfsmcyhr5nqq5y4ynmznl573", - "percent": "0.0%", - "airdrop": 2861.4292131974603 - }, - { - "total_amount": 86414342996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay66HMjc36ZvKpj7j+pwapq2mmULjGrG8KpM+dwRyNGK" - }, - "address": "noble1fs565ajx60kng356dnwwcs83crla3d52mkwl9u", - "percent": "0.51%", - "airdrop": 1517932.0551096278 - }, - { - "total_amount": 84035100, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBMk3xXQ/ARCi+dwhh369zfwYsjxHSsR6Fos3Sr1UY8" - }, - "address": "noble1fs47xh99vgkxlfhvwz2zh7y8xl4jq23epkchsp", - "percent": "0.0%", - "airdrop": 1476.138886460638 - }, - { - "total_amount": 1585284497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AigXEGmpdbT14SXPcHLk8dGKuWpYzPfpQIu+AwBvecuD" - }, - "address": "noble1fsht69zn08wc225uzk74q7jqm4ymj4hnk5tzx3", - "percent": "0.01%", - "airdrop": 27846.698488189966 - }, - { - "total_amount": 66325602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq36g2TEV/Er/6WJt2odp2jY6V9ihKIIMMvjXtat3Gbs" - }, - "address": "noble1fsepxud2y3y35yhycmttxm0vdjf8rq975znsja", - "percent": "0.0%", - "airdrop": 1165.0584134499925 - }, - { - "total_amount": 1342052302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5z0pb5dt8P6RW0KvhBBFx2yue9CgJSdjDnBjqc3YeIx" - }, - "address": "noble1fse09eghptq4ntwjkakx2x8vpgjfhm0crms40z", - "percent": "0.01%", - "airdrop": 23574.14450207373 - }, - { - "total_amount": 284967856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Bf9wgqYtdoiKLJ4IBRFmbqlEvRViJ8BthtFqSObGIk" - }, - "address": "noble1f3ppemjcrugjygl4tt0pxylge9zvnha6f8zh0q", - "percent": "0.0%", - "airdrop": 5005.671839896846 - }, - { - "total_amount": 212921460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApAhtq4lQ+XWBQ+Z5ejtnve6dxWvBoAPZf/BtHJ5vqVz" - }, - "address": "noble1f3gyfe4p86zy9a0faa2wfcyck6muw674mnnk6x", - "percent": "0.0%", - "airdrop": 3740.1234349453175 - }, - { - "total_amount": 95631035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtjGrxoFk9vwta7UM8gevqoYwQttsmg/7nfj/nHBWP13" - }, - "address": "noble1f3fzm6qfs4zzzn64yx4z36pqw5pepqnj7c2u4q", - "percent": "0.0%", - "airdrop": 1679.8300890458668 - }, - { - "total_amount": 1669081857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgNp6w7Go58XIdGrcfYU1+7s4lMUDrsgvley86jwJvh3" - }, - "address": "noble1f3fyna7x47jksagp0e6jp77wrtntss54vste3r", - "percent": "0.01%", - "airdrop": 29318.66129514493 - }, - { - "total_amount": 4966636790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azo8Xu1Ms+mIcd4l7KeAnuE5yUE99jaWuiD+U1AQjGeF" - }, - "address": "noble1f30gmjqxnxyentfdg40fcnfppn55x5ffc0xhe8", - "percent": "0.03%", - "airdrop": 87242.66051501145 - }, - { - "total_amount": 219736321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyAsCdgFYKJ+sDIG0/iOAfnNSb4rnLC2yqNeH8qMHld6" - }, - "address": "noble1f3cpnfxvesl8djautnd2e4e0v8pqdcer44330n", - "percent": "0.0%", - "airdrop": 3859.8315251114986 - }, - { - "total_amount": 107365364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As6chq7bY0qoBo8+1ko2IaIANwCUxaFvKR4Fp/ogf0mE" - }, - "address": "noble1fj8d32l98legw3l23ag5gl6ulc64akfr23xfy8", - "percent": "0.0%", - "airdrop": 1885.9522849309524 - }, - { - "total_amount": 1051911947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A80XRMzUMMRQqu8M5BaYqAi0AbZsADMslnezAE6CBa5A" - }, - "address": "noble1fj8mfh2kzgyk25u74gfltwhkq0ygapzee47ya8", - "percent": "0.01%", - "airdrop": 18477.613879191213 - }, - { - "total_amount": 554380451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkLWYBbPf5ECZQtFPZUJ+c0hrf7A1q31PICOGoZHpKt2" - }, - "address": "noble1fjfhhvup42tjskz04whtwhqm5p9fgteasvrwn5", - "percent": "0.0%", - "airdrop": 9738.103978155394 - }, - { - "total_amount": 64175768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvoxO08vAJULGdMxllNt78NJft0r2QlHp9ZtCavEumGU" - }, - "address": "noble1fj2ey2pf4n0wx04fa2m3xyvw8k580z334dlzeh", - "percent": "0.0%", - "airdrop": 1127.2949840397198 - }, - { - "total_amount": 300649419, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0eEPtYnuPyoLWNLpmlHo5Jp83bFqGJBgYd4YmTvIK5u" - }, - "address": "noble1fjs9qpuvkljdwmy8w3u0fcycxrjrkdhdsxul5w", - "percent": "0.0%", - "airdrop": 5281.1301298826065 - }, - { - "total_amount": 300939531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6KH3aHA9vHnxJvQoK817a1Eq42OB+B95whJ07GeO9We" - }, - "address": "noble1fjh798fyn9vqldc8ru09c99r89v5mt3czyn28a", - "percent": "0.0%", - "airdrop": 5286.226162428874 - }, - { - "total_amount": 50050255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqPnhtLkSsryZBgV6d3VYzGmSO3kUU1j+/gbJ/fOzKlw" - }, - "address": "noble1fja8hmq67fdmgv9fr5kp0te8zevse429mc2044", - "percent": "0.0%", - "airdrop": 879.1698669100291 - }, - { - "total_amount": 1846975273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/sX4BiklSkuzSF74nIunvCjBi1hFNT6G4kGH+W7lyfu" - }, - "address": "noble1fjam2emvm87zkfa53yycexjpnv3q9a4vtcy6g4", - "percent": "0.01%", - "airdrop": 32443.491146039607 - }, - { - "total_amount": 83549042, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsHghzDVhy/pxjR5A3BxBpPktu0UOQYSKFEdalM4dV+e" - }, - "address": "noble1fnqhc38azlnvkrrndcwdgx7llsz5adsu69muny", - "percent": "0.0%", - "airdrop": 1467.6009170303014 - }, - { - "total_amount": 6235000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au2CszW+lw6JUlN7nPRv1j75p9XWxnIXX1fN/QQtnXC3" - }, - "address": "noble1fn8epf66hlda68dl2g36a4qf0v2a49teetxxtk", - "percent": "0.04%", - "airdrop": 109522.40143799529 - }, - { - "total_amount": 50851886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6rVQ33WEPuhQmREx1s3+NURKTFzTG2pz+2n4h6VP5Ku" - }, - "address": "noble1fndt9p7lqgchzl7v447m6dwedmh3p708y375c9", - "percent": "0.0%", - "airdrop": 893.2511102439731 - }, - { - "total_amount": 1640730384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4TSx4ABe18r01B+18syTW5OSoTNbuQbHfq0iRUX95Su" - }, - "address": "noble1fnsfzc2wmdy6hjqqjd80flcyvwumn6lr6qqgyk", - "percent": "0.01%", - "airdrop": 28820.646634797784 - }, - { - "total_amount": 1798185328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsBbG9qBSj8jznvj0pBqYPPf9M39B2jhqb4VODnGadrR" - }, - "address": "noble1fn6t3t9d7n42evxywj55f8qszxcnarmhagzsc4", - "percent": "0.01%", - "airdrop": 31586.45955944334 - }, - { - "total_amount": 656530054, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXI+BC9Gvrf/I3OQqLVvaN98/dr+4k35myTwyAQ/uT9" - }, - "address": "noble1fnmjack05880mvcjs090vs9gutqvc23jwptpzq", - "percent": "0.0%", - "airdrop": 11532.437550969804 - }, - { - "total_amount": 111213833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Eb589mIT1KeF5NVyt+2Vhk7fYoiO5DOjPxWNBgeRNe" - }, - "address": "noble1fn7fkrd94lyqsa4qaxfhqhu9ehjfxtckafshdm", - "percent": "0.0%", - "airdrop": 1953.5534985219194 - }, - { - "total_amount": 100378864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9jMez1Gp8DC1iJV0V6LdvZy5oLU+Nx03xxC3oyiTNEw" - }, - "address": "noble1f5p0fzfze496m2epgjjlut0f04ah2l76d8p5pt", - "percent": "0.0%", - "airdrop": 1763.2292283717616 - }, - { - "total_amount": 142133477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2OfhbMoB/QiZvLC4CguqkHMdqwlxyns9C8KSaczUtlD" - }, - "address": "noble1f5p07t9ygxzg4ydtqc7r2zadsk7zrg8xqgy63y", - "percent": "0.0%", - "airdrop": 2496.679988094959 - }, - { - "total_amount": 15125809459, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aot++xYGsSvxpQ03cqaz8PmmrSaq0z5if0jcMasf7HY3" - }, - "address": "noble1f5v3t786dqlv8k7hd62jfuly6w8tdeud3xt40f", - "percent": "0.09%", - "airdrop": 265696.0666629069 - }, - { - "total_amount": 56702405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3TnRdcYf+YBUMgxDZlsXHeqvVzTmaLCpToYuyFF4c7k" - }, - "address": "noble1f5juzaw8htqkkl6cymauudwep2cm5g6w4apa7e", - "percent": "0.0%", - "airdrop": 996.0198176278735 - }, - { - "total_amount": 435446846, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjqU7FcLWFRmpj4rrRM6Y1D2R1p9WdOzeGtJCXn3HC+P" - }, - "address": "noble1f5jlr9zzr9cpmfw72ul52ff5a038eptw7sx3x3", - "percent": "0.0%", - "airdrop": 7648.946956298463 - }, - { - "total_amount": 281631120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvljaVlnAMWpKlDHoXrrxSFJG9u6PO0XPEHw6Pmh0fa1" - }, - "address": "noble1f5aa0xaz4jkwun4pdxadkf98sdc4fhk0axj2sq", - "percent": "0.0%", - "airdrop": 4947.059596162346 - }, - { - "total_amount": 58482359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A14swYkdcIIyPQFfFTefY4L1Lsq+2s5VyAUs3wn031b0" - }, - "address": "noble1f4pyghxn647qvaqwcj6adcywetu8tn6z7zdc5n", - "percent": "0.0%", - "airdrop": 1027.2860303831528 - }, - { - "total_amount": 2700000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao5or9wLFO2G7FBHpJh0o+BlEizYIVjBdRc5mww2p2Lb" - }, - "address": "noble1f49xq0rmah39sk58aaxq6gnqcvupee7jkwnu5p", - "percent": "0.02%", - "airdrop": 47427.50342944463 - }, - { - "total_amount": 336983813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2SdYSNP9/hSveFAA/bD6GLuBnEqEKp14859wWO++EM5" - }, - "address": "noble1f4374ggr6aqh40j0cyvpnxffs2ta7kp2zjwcu0", - "percent": "0.0%", - "airdrop": 5919.370721009195 - }, - { - "total_amount": 1058749760, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9c5QLfxxLIDIYVAGDzYFMY+cMbjrhID7oyPmP6qNS/4" - }, - "address": "noble1f4njj5c5uagvgq96j5wxdjvm343705ecmql6qh", - "percent": "0.01%", - "airdrop": 18597.72513826803 - }, - { - "total_amount": 507458494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ZmM2NH39jAWfphaZCQLSlw7jhoQqk1S1aVa1rsja8z" - }, - "address": "noble1f4lra52avyw35wqetv6pemcn70eqh5pm0rgp6t", - "percent": "0.0%", - "airdrop": 8913.884986846597 - }, - { - "total_amount": 810821753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai9BN+95L+wSGBLpdHyG66wYnmsHkd2dFbmkE/Mzw0tb" - }, - "address": "noble1fk9sqv4t8cjty7akmp39n5ewczwle995usjhz9", - "percent": "0.0%", - "airdrop": 14242.685730028079 - }, - { - "total_amount": 3225251745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhiIB3VuHBzi9k1zSvRDBtp4KCZWNQh25Wrru2RKc5wB" - }, - "address": "noble1fkfcmyjx8wwkr07krpqc4h4nawjfq77p29vq2j", - "percent": "0.02%", - "airdrop": 56653.94007289251 - }, - { - "total_amount": 819577829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0sNfW9lpUn6bkAuDoh3bPyzuKklFNHcImXnvrtvWSbq" - }, - "address": "noble1fkds8kxjp5kjue0qtxa4key3zslypje8n2qxhz", - "percent": "0.0%", - "airdrop": 14396.492702071957 - }, - { - "total_amount": 300385304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8AVtpRAKBcSpmrXJ6qHS64iLeMYsITpZVUcOTA9rrOe" - }, - "address": "noble1fk06xeslg7n975g28hvxazj57xj3hgteqpaf2u", - "percent": "0.0%", - "airdrop": 5276.490753931395 - }, - { - "total_amount": 889263727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AszqfrWdTvltdHXm61HUSa3C/SZ9Ia3inJY8V68yxG1m" - }, - "address": "noble1fkstf6kwl0kju2azl6whje49zefzy66fr25qm3", - "percent": "0.01%", - "airdrop": 15620.577208138227 - }, - { - "total_amount": 242438826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsKVGuvTh5a/1uIoMoIvYKU3vablTxZ4QrmHHKxgY4jV" - }, - "address": "noble1fkkzuefq0548xywykkpxv5m6lqhgtly7r7hfg6", - "percent": "0.0%", - "airdrop": 4258.617870942789 - }, - { - "total_amount": 99559737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AggaMVhLSC4hmA7QbzH0AaV/1O9HMiNL8G0mB9/TOKnD" - }, - "address": "noble1fhqd9s7usrk79gp5skuj0j6hlwck7munmk90yd", - "percent": "0.0%", - "airdrop": 1748.8406548155947 - }, - { - "total_amount": 1000598450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6V/io1OqQjnmp6dxfviui0ijvMAGRSY/7uyFj27zk6/" - }, - "address": "noble1fhzzycs04mjmch7wd2au2z4h3z0w779xj0x522", - "percent": "0.01%", - "airdrop": 17576.254229211845 - }, - { - "total_amount": 429025222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2tO00Xnk136JDQV9619bg8YjFEK9/sIGmUxod9qKSL5" - }, - "address": "noble1fhya00nlma79csme2pmwfkk7nqa37n29e565ll", - "percent": "0.0%", - "airdrop": 7536.146365823424 - }, - { - "total_amount": 182711106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axq6N2R0COZDfOdaITyVWL7lIJ41A9iWOZm9xcUR7Bub" - }, - "address": "noble1fh2c6rvmdt5gahaeqyhf7dc2lxxmcu8kpukl4c", - "percent": "0.0%", - "airdrop": 3209.456150523193 - }, - { - "total_amount": 208008969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azo4XDolvlbat/nF+ElcBBKXsp+gKLum42S99POypjCh" - }, - "address": "noble1fhkux73ewdus7y3lek6hwa6rww2c6zn07evcz8", - "percent": "0.0%", - "airdrop": 3653.831885408423 - }, - { - "total_amount": 430755187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aru3xwMZrWYeOxU5+ogwTUd5/jr/vkODc452wtr8sY3y" - }, - "address": "noble1fhc4nj8xhh2jqg9e8jselldh9d59s3vr08wqlf", - "percent": "0.0%", - "airdrop": 7566.534484701319 - }, - { - "total_amount": 671142114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A10CASo+adonwmqfeFFeBRBQRSYY6Z+1EABmQEI9UiNn" - }, - "address": "noble1fh7ulw9nfzqc45rrhts3sj0tendtg9xpc8gpvg", - "percent": "0.0%", - "airdrop": 11789.109227177674 - }, - { - "total_amount": 406319761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqnUerRTwerai1DCJBHDOk1FfmQVIAgZNZ4rADDWhR1p" - }, - "address": "noble1fcf6hd8fxswpvx67wg4ecxdc3n852nnmnhal6a", - "percent": "0.0%", - "airdrop": 7137.308095658749 - }, - { - "total_amount": 61307041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ame6wSqp6/79yiB3aZjmmyLdo9kylG/vrVaUI7LwqjQZ" - }, - "address": "noble1fc2jw3rauq894nls2cw54nsar209r685jdvz9g", - "percent": "0.0%", - "airdrop": 1076.903665658001 - }, - { - "total_amount": 6094288713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az0g2+vVIiHuj5hAK8zPIyLGM2oyyI7TC5ykAPBtRdG3" - }, - "address": "noble1fcdt5aanc2u5gy8hvwnrpqnjysqrngxzczf20n", - "percent": "0.04%", - "airdrop": 107050.70327253082 - }, - { - "total_amount": 110518197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As7OUPsX3G3D6vKRoyhSy4oMSyJh5FhtX+uaGzlNVcy5" - }, - "address": "noble1fc07eff4sw5k4jdsay8qlvzkknp99qgz2y2v8m", - "percent": "0.0%", - "airdrop": 1941.3341360124211 - }, - { - "total_amount": 559589840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apu208YyPqJsvax21306PnwsuEEZsCUjykUumxsItE5z" - }, - "address": "noble1fcsmysjfde8cxj0ddckl76yhk2uzqv4vm2mpd8", - "percent": "0.0%", - "airdrop": 9829.610761363843 - }, - { - "total_amount": 292512592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/8B9MvCpw4A9Y2EKmiUs3dNZC/sFvlMxULaa9GFFb2" - }, - "address": "noble1fc6n2rg49qzunkhq0yrgej4awzrp6fuh3jv802", - "percent": "0.0%", - "airdrop": 5138.200726013237 - }, - { - "total_amount": 920367454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AopvymiFpX+ZbxrEdxcLcnZkXtZlX8S3xSUl6LeY7Or5" - }, - "address": "noble1fcm4h2h6yulx7qe0p9jtxjy83eh6p9tyc97kzw", - "percent": "0.01%", - "airdrop": 16166.937252197862 - }, - { - "total_amount": 1771663928, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2FCJFJpuUjubz1rP2f6QO8E8JN0ZH9xG+cDRp427bn" - }, - "address": "noble1fc75n2ps6k4wwt8n0a2nt0cyqedhsh3wlh9znc", - "percent": "0.01%", - "airdrop": 31120.591489275314 - }, - { - "total_amount": 691379397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aut98bmKkwyGQ17Yv92IFPYKe7RTxGVSbK4G6hu5SG2v" - }, - "address": "noble1fer9yxd3ec9qftvshw8ldsjwgdrsdu0csxlqph", - "percent": "0.0%", - "airdrop": 12144.592119357356 - }, - { - "total_amount": 220657215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnD46Db7PJv0+/ErlroPqwGbznJNX72IFNPENA9+UiVW" - }, - "address": "noble1fercjn86wakfxg2r848dfkpc9l5j53ld8rne7s", - "percent": "0.0%", - "airdrop": 3876.0077115348895 - }, - { - "total_amount": 50085211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UU9a02CEtQhJC7q4McO+1PG0Dlq/mn4DBLDXKMAtPp" - }, - "address": "noble1fegrduzj7xl8hq6w7uv2kvdne47w98jrh3hsm6", - "percent": "0.0%", - "airdrop": 879.7838949877623 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzYjMm4t9M0Ds/2mXVrQBiGWH/kUqH603VYWTFi8ap+" - }, - "address": "noble1fefrdqr9mg8tkpmyjtkph2pyad8xp4y6jcmwqs", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 665598980, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awd2epG/IzQb+gygk/rhM/REpI2wOpJjiMfPB8xDE8Gb" - }, - "address": "noble1fe3hvjj54cw8hgdr9k432r4dv0lxgamrly67vt", - "percent": "0.0%", - "airdrop": 11691.739965401797 - }, - { - "total_amount": 60044625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0a4BuKCGMOdQWTIkGWTvxPf379upu0DP3/riPPeVD2z" - }, - "address": "noble1fecmhzuypwf2kdcf08msmrjwzqh7ym3wtqsm6n", - "percent": "0.0%", - "airdrop": 1054.7283918915618 - }, - { - "total_amount": 1002673187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al7IE0QAmgh8AgT5gS3LHDGKMtSBjZEHegf6eu6iIpgp" - }, - "address": "noble1femr5tz8etyvh6yvkhl7k97fevxl3y5mxe9873", - "percent": "0.01%", - "airdrop": 17612.698524094325 - }, - { - "total_amount": 273989428, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTZeYmDXeOCnUCuczuZTc0zWagGtKAoBXwFsOokem+v" - }, - "address": "noble1f62eh50tavlafntfa7ljv40nml4lcdfsk9wncy", - "percent": "0.0%", - "airdrop": 4812.827605963546 - }, - { - "total_amount": 108108274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahp5ptrKhGN+F5WhuhlU2MClx2wWZsyY1nTOdpYbtilg" - }, - "address": "noble1f6wfkktdwtguxzmdj0nq0xtlcwdt7ttehhu5s7", - "percent": "0.0%", - "airdrop": 1899.002050328274 - }, - { - "total_amount": 103402483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApB1zgFtf/TZIAR+hrKzYyvSmNNwhLEyzX/eSAcEbyVb" - }, - "address": "noble1f6328eu3z42jhmwegqxxshh5znuzrhxyd4ejca", - "percent": "0.0%", - "airdrop": 1816.3413396650333 - }, - { - "total_amount": 1500503524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A402IHZhFX9g7bDzIy+cAcx0a1XliIC4p53e+D5JBZbW" - }, - "address": "noble1f6mff829hpkxyqqr0nas7t9zxjfmv3v69gn360", - "percent": "0.01%", - "airdrop": 26357.45778903843 - }, - { - "total_amount": 272449375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlIh3Il8KsOjsQvoiXoCh0f5ez9PnMtP4m4s+wDmWily" - }, - "address": "noble1fmqelkwgmwrtq3zlm5cv7cxk5cwydxy6kv34qc", - "percent": "0.0%", - "airdrop": 4785.775432282425 - }, - { - "total_amount": 79600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0uUoExk+ZPN0h6sdpXPJwemT6n74AEV54xoQN6Yt+0j" - }, - "address": "noble1fmpx66h337t2zfsjzmrf6rtfl0hepqcqmt76l9", - "percent": "0.0%", - "airdrop": 1398.2330640680714 - }, - { - "total_amount": 293093840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AniFrsiADeVSJ9wOmqDT1MVT7BvbFrDNJ8iwDkMEELE0" - }, - "address": "noble1fm8glv863shrtev33tnmjjg6ysz4esm0vle5ym", - "percent": "0.0%", - "airdrop": 5148.410778425591 - }, - { - "total_amount": 376046782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A69CviVb/L6Q8E3EvNUxo5aLFyKCIE6T1xV4zrbHS21+" - }, - "address": "noble1fmw3wjk4t3x28hjaeh93zd5dgvtl4td7g8wsec", - "percent": "0.0%", - "airdrop": 6605.540756643192 - }, - { - "total_amount": 157194696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kq/wNLtP75fLW6hgovI+90SwB4eHhtJDSBIccvYN4+" - }, - "address": "noble1fm05ux3w4598c98cr9v6pxx4tfzt25numurxe7", - "percent": "0.0%", - "airdrop": 2761.241475418706 - }, - { - "total_amount": 162674372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUmgjoJQFPYrZgDjkR2sMvJLEqFQcOau2lI8TH9drkV" - }, - "address": "noble1fm5pxphrkqwj3c5jlpxa8sysgyyfaj52l8wqy5", - "percent": "0.0%", - "airdrop": 2857.496050338056 - }, - { - "total_amount": 1054865493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6nwz1T00UzLjvbA3o5cvMzvQqdnlMudP1BWgeqgJ0D3" - }, - "address": "noble1fmhngtlpnlpk5cflj2lakmryc7yuhf3n3lcmqn", - "percent": "0.01%", - "airdrop": 18529.495106244554 - }, - { - "total_amount": 130590375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akeh1GvbWcMz7kk3wvcTcmRiR2OdnxohpqVbuvy3iEuX" - }, - "address": "noble1fmc5nw9mtgs8xn42u5jcp50s6y2pvl3rx28n8p", - "percent": "0.0%", - "airdrop": 2293.9168363573926 - }, - { - "total_amount": 96240063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApYe3QrjolKHsM5/LYzLjUepo8kjne5MyAbLGpUmNVx2" - }, - "address": "noble1fm63r4yfjwh6jnyj0s289un4vztrwuggnlmjpw", - "percent": "0.0%", - "airdrop": 1690.5281177712843 - }, - { - "total_amount": 586607436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5dEmOAEFiNzY23gAgEEjbT3j9I3Tlq7151hb9XlFkLK" - }, - "address": "noble1fmahc5r3fk2fxne6q5z8rhdmfhsecar86uz0ft", - "percent": "0.0%", - "airdrop": 10304.19488245471 - }, - { - "total_amount": 315396508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7j016g35Fa3NAgOTL6T04sqbIRdPnCKgjhrmbojtYSp" - }, - "address": "noble1furqe9snfhjj3r5pjmgy328qrevycaaqatkaju", - "percent": "0.0%", - "airdrop": 5540.173690668467 - }, - { - "total_amount": 300568485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A49lLPZpUzeY1mmYTHnQJh7v5ruydlT9EMUGeQxdsivZ" - }, - "address": "noble1furt7dtl3ss9qpa9c0t8e6wkh3q3pehgev45a4", - "percent": "0.0%", - "airdrop": 5279.708464118696 - }, - { - "total_amount": 950746524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An1eqVZxzdmrgZSXU0EHZmFGMweRtKmMS4LnzsJ9AM1V" - }, - "address": "noble1fuv4lxrkzdhmny8ygk0n3sjyq6asrys0xttqvw", - "percent": "0.01%", - "airdrop": 16700.5681583491 - }, - { - "total_amount": 174022307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AotvPf4eGunCkGe+TZl+3h0LjrnLHrTIIY7kVYZmaXQu" - }, - "address": "noble1fu63ntgrve6chlm770dxw0wewjzxrkfr3k257f", - "percent": "0.0%", - "airdrop": 3056.8309489045805 - }, - { - "total_amount": 280739339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+WONIN4l5uZ7XQa7/QzXnpiMuhseRUPP/OLg1yJRkHJ" - }, - "address": "noble1fumeawd98yp2086mlkzsz90hwfchkmdytd3r0e", - "percent": "0.0%", - "airdrop": 4931.3948011861185 - }, - { - "total_amount": 144478242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax91JsDE11WyUWJ3z4oEgPUMsFcsscZWiRBFFUXRtNRI" - }, - "address": "noble1fuujyw2ahw4knzstjre9v2u2026le7rlxq4qpv", - "percent": "0.0%", - "airdrop": 2537.8675251611603 - }, - { - "total_amount": 79786403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhESCCvXA/SZjSWc4bwROWUK8jZh1W8/kolco143vGUZ" - }, - "address": "noble1faqfuwg5cfev205swpr53ewfjqzxn6e2el6zp4", - "percent": "0.0%", - "airdrop": 1401.50737107613 - }, - { - "total_amount": 124145570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqdrOOBTfU+udr8/ByyD8Rygj9DYlITN4m9moGRDURU+" - }, - "address": "noble1fagj78yrkzspc49azwrfg9jhnpfhuwc2k3hscx", - "percent": "0.0%", - "airdrop": 2180.7090544167995 - }, - { - "total_amount": 180078089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvUwjk8oGdZOSiDEwkN35m7GkhPnsfBQwcZi/2oeVj8s" - }, - "address": "noble1faf3zz3nkw0n80t02a03wh5s2uvr5j0dt3cvyp", - "percent": "0.0%", - "airdrop": 3163.2052531908653 - }, - { - "total_amount": 106806697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmzYJUTY5pmazc8KIsblGYakpquzMfZE+RF94SOTeRB" - }, - "address": "noble1fa45h6nptds7w7mnhw4xmvs8r26px4k2eed8m7", - "percent": "0.0%", - "airdrop": 1876.1388845389458 - }, - { - "total_amount": 51144768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvfZA4PYuw7U0/VfMQpHFuV+53sxc2aZIrrkg+PvXqmz" - }, - "address": "noble1f7z7sfh6dem85548t8nf8kvd33z2j5jkzjez2y", - "percent": "0.0%", - "airdrop": 898.3957998956112 - }, - { - "total_amount": 69298523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6QJVTZED1aLyKaBvIgnEuG1gSJOaP0oToWm6wyn9l02" - }, - "address": "noble1f7tayx4wcav8vu22geh57wy9zv5c3ahyxph9y4", - "percent": "0.0%", - "airdrop": 1217.2799767547954 - }, - { - "total_amount": 731038091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AucwQN0lKcwVZztAUdu5D5N7uhRuhn49PKYCVOZ1888r" - }, - "address": "noble1f7sa4nr5nhlt57vy5553tqzs5dlz7x6jwefwk6", - "percent": "0.0%", - "airdrop": 12841.226506650799 - }, - { - "total_amount": 108506850, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9B6JwvfgZIJ0daTKOLF3tmIgw5Ck6BO2FRk/Ax9LVw7" - }, - "address": "noble1f7exfkffqydmme863fyd2nt2w22dkc5ccnzgg3", - "percent": "0.0%", - "airdrop": 1906.0033335160126 - }, - { - "total_amount": 137368604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzhHPj5XP4pclfUfiRPC4hFqvFWvGDPYFtOS8zVHT7az" - }, - "address": "noble1f7llvqkzvv5l34smzwvq62ep83apmkc3q06kng", - "percent": "0.0%", - "airdrop": 2412.9814582622303 - }, - { - "total_amount": 241072221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuhRCBWnh26fieVjOxD142Dq4l1qWdgkw1Jdwy6oXtFk" - }, - "address": "noble1fl28zeyxca2pyph8qd4lgaxyxa8fm8tjtvrsyn", - "percent": "0.0%", - "airdrop": 4234.612440081976 - }, - { - "total_amount": 305628453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3R3h9+yfGsAV0tNKnk26c+3wju11A/jCnw0eA41QtvR" - }, - "address": "noble1flwx2ea7lwy3w6c7ffzr0nunezsxxkgl3tm8xl", - "percent": "0.0%", - "airdrop": 5368.590556590133 - }, - { - "total_amount": 357304331, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ApXqeBnrM5OZ7JmXApmS7VtP6lBRoeP6q3tGIRuiV5" - }, - "address": "noble1fls2m20k483wuyf5dhys70t3qg44l9e6kecdtx", - "percent": "0.0%", - "airdrop": 6276.315697725156 - }, - { - "total_amount": 206602407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/g7VPAmpfiXg1B24Xm3fpy9Tths8RCDIfyxP2iRjG2v" - }, - "address": "noble1fl5lsfsxe0azeg5kud5us423la6fhwm90adh5c", - "percent": "0.0%", - "airdrop": 3629.12458019408 - }, - { - "total_amount": 1878735166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoajoHbS19dg09gWGaU9fV59z5qZpWfe/iR0vynCsVow" - }, - "address": "noble12qp3a58vguzca7p9kulpvpwzgu3wnat00zf423", - "percent": "0.01%", - "airdrop": 33001.37723277156 - }, - { - "total_amount": 687137730, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/j3+yAvomydDe9MxQvehILy9dGerPXwGsdOIj65PBvj" - }, - "address": "noble12qt2tm4eh50yfnq2qlkpgzj2zassldkg6yyc6n", - "percent": "0.0%", - "airdrop": 12070.084091139184 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArbO4JhlUOTuDKLotM62J8ZEmlte/0lfiHwyTz+aZgse" - }, - "address": "noble12q3359j6shmfmfnf4g6dke48qxlgk0zhfvhelh", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 255963456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlhqEKPSEF9LDiJj36UD4S2nBebd4Z2PZRYxkn5LB8ZE" - }, - "address": "noble12q3mr9etkl4e6spzj8e00mx83rpslkejwvdutm", - "percent": "0.0%", - "airdrop": 4496.188032315741 - }, - { - "total_amount": 2613003545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5b1MZSuTOA50lhFkwGp0JBANdBqS24CMLSeN7ncrPKn" - }, - "address": "noble12pqwf5k4hvqwaxx6h7ewzu77m9y3p9t6j0u7va", - "percent": "0.02%", - "airdrop": 45899.34614505129 - }, - { - "total_amount": 73895619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjebRAGiQTIOhJsVRb81TZrm/j0ksDzQS47V4nNkxyDB" - }, - "address": "noble12pz4lp6f29y9p0vqel5kaz5c3xsle5qgvkf0aq", - "percent": "0.0%", - "airdrop": 1298.0313790901607 - }, - { - "total_amount": 1439963527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An9GissX6125O6vGAUNpYNQvMGVTGi9yhMXf0ZJ/+DUX" - }, - "address": "noble12pd6h5xd5gputhctkdxy9zatlpwuej0l79f9x0", - "percent": "0.01%", - "airdrop": 25294.02782039544 - }, - { - "total_amount": 55876133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9vd54jlogjbS1FmLbC6a8GkmRUBMJ9tggKeiicCrE7M" - }, - "address": "noble12pnj32ep55wuyf6thayyc9pfhm9deswtwm3xs9", - "percent": "0.0%", - "airdrop": 981.5057368450387 - }, - { - "total_amount": 414725798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmmfNlkXjYYgDnPbetPtEcpoWaro18g6w85J3UtZQjQ4" - }, - "address": "noble12pn4e7dkwtjd7l5e9e4z9l7e6v6gcyamgylm0j", - "percent": "0.0%", - "airdrop": 7284.966372934875 - }, - { - "total_amount": 123794668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqZRNkmcKmfvRHlAyqUgbnMkD925pgf5/hhv6CG39Ver" - }, - "address": "noble12pek06px76y2mr2fp7ew4wz8asxv3rpwg5t2qj", - "percent": "0.0%", - "airdrop": 2174.5452004136887 - }, - { - "total_amount": 498964249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtKISDqEzkvEmplfuMAYvQWlc/tjPtuZTQmxHRxdzlZY" - }, - "address": "noble12pmucez9s8kvmdrpyrz64jc2naggfqc6j99zdl", - "percent": "0.0%", - "airdrop": 8764.677270599173 - }, - { - "total_amount": 53772196229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao4LqEqkbf22qE2h4Mj5sgNGcHgqVz84OXgca+8UphLr" - }, - "address": "noble12zqv3sxlrnpkad9hvatmp8hq54zrxkkq2np54d", - "percent": "0.31%", - "airdrop": 944548.5263183953 - }, - { - "total_amount": 1942008383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ssAMN0Fd7NQTcA4i05HnrUWFiKdUXPDZ7P7LCA51GQ" - }, - "address": "noble12zy4fjskpe2llc6u32qt9dau7tz24sjafdqrt4", - "percent": "0.01%", - "airdrop": 34112.8182387936 - }, - { - "total_amount": 119354700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay0tKIDxT6bqwvLQIWTq/Anl7SgFXSAwlmuxsQx3fGGL" - }, - "address": "noble12zxfvxvyxkhfnjcfqkf8dxf8xvfcaynvzd5zgm", - "percent": "0.0%", - "airdrop": 2096.5538679890133 - }, - { - "total_amount": 57868274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/XGgQtbZdmg3ZKxRTQEdQ+FTzeCizns4FBuee05xOZm" - }, - "address": "noble12zwq8pcmmgwsl95rueqsf65avfg5zcj003jrhp", - "percent": "0.0%", - "airdrop": 1016.4991717003858 - }, - { - "total_amount": 2302085015, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axu0PRli5Rn0YBwVar6B10u2iD0wV+32BvgFlwG7dK02" - }, - "address": "noble12zwsxe28th39tkq9yrlcytqdy6mdrx24806vhz", - "percent": "0.01%", - "airdrop": 40437.831460661335 - }, - { - "total_amount": 4951587621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlhZt+NugeL5PpAhQ+Ou9t6gJFFetOvHM+7rem/bBtno" - }, - "address": "noble12z4my3l5wzq8tyg64zvvp5vx8capzhk9twqp79", - "percent": "0.03%", - "airdrop": 86978.31069487892 - }, - { - "total_amount": 230956398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqTwsKA+EnG4jTxkV4nqfI2uD5VHuRCXYWipPMzZqcFE" - }, - "address": "noble12z762kemv8un7qv33mjk4pg5n67trk5ll6f9nm", - "percent": "0.0%", - "airdrop": 4056.9205030359926 - }, - { - "total_amount": 525020757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4LERu3IN+YDKgvgNFZZREHhZLlwdqwiW2JJIttIvM66" - }, - "address": "noble12rquchsxk63l4hquflqezmjkjfvwwgrpy95gdf", - "percent": "0.0%", - "airdrop": 9222.379167832265 - }, - { - "total_amount": 120899281, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7daBt/WD5viGUpUIiaXscJsR2A5UYD+S8j2eAnQ0pfe" - }, - "address": "noble12rpy93pqczjvx9ysss8njdvvnlqzvwg2zj9n42", - "percent": "0.0%", - "airdrop": 2123.6855793499594 - }, - { - "total_amount": 255117778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQ1YRzaBdNfUk7lXFqa6S34caEePz6QO6+2JAEtR7IQ" - }, - "address": "noble12rzxq9nys9jv8y3rstws7xwltdk59fpvsqk5tj", - "percent": "0.0%", - "airdrop": 4481.3330707434425 - }, - { - "total_amount": 190754518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avku487U46TI6asApWRqUE6YAGoyRJkzaiJ3VKUkejn5" - }, - "address": "noble12rysvymj2qthvpgeqj9eglrj0pcgyyjmtcu44f", - "percent": "0.0%", - "airdrop": 3350.744650602614 - }, - { - "total_amount": 71020724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A29K2/j8LZ9bQAB4NjaGBLX+xmkdJjBHd2jhn+O/xYEj" - }, - "address": "noble12rg6ur95r3e03gr47q8q93hxf2vszll8vf98hd", - "percent": "0.0%", - "airdrop": 1247.5317152117186 - }, - { - "total_amount": 4546457287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvUchbYn21rezYZFLsrlIW7PN3FkctLS1rWufZ564ECG" - }, - "address": "noble12rnm9pmert3yes4fy8v7xy4nhtwqd95mc5hrkc", - "percent": "0.03%", - "airdrop": 79861.89576704298 - }, - { - "total_amount": 193244050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AokdHa22pHO0PQ27E7TJHIf6xM38fa7//UD+5C4WusQn" - }, - "address": "noble12r64zyv75ez3tpz7z69s3j9jhsdwscnsz85ck0", - "percent": "0.0%", - "airdrop": 3394.4751274425075 - }, - { - "total_amount": 50162051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IOjFtsxFRCzmcIFE561zrxDKsW9f8LLRllnPOiv3TQ" - }, - "address": "noble12rl484wka00e2zlr77vkd33zpsxhqfegwgdfrf", - "percent": "0.0%", - "airdrop": 881.1336466038803 - }, - { - "total_amount": 106850430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AysVyYydbuXOl4I52FyGeM404qhbgqwyGznwT32AT2FX" - }, - "address": "noble12yqjf2332v8pk2sxh5y3ap64pppn8mf7zggk7n", - "percent": "0.0%", - "airdrop": 1876.9070871343088 - }, - { - "total_amount": 304714200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLAXELIpWVfjxbCexz03IjI2DpO6gXj/CFfxvsTDOna" - }, - "address": "noble12y9rcjz937nvfwkyj455q4dymvn34ufsplpzn6", - "percent": "0.0%", - "airdrop": 5352.531024259437 - }, - { - "total_amount": 500143542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Fn7xts7L2BExzJOjGCd5TAoGg+UvAthLlD54xC+psK" - }, - "address": "noble12y9ynga89chw4meuufppsgxxa6f0qqqc6jz5t5", - "percent": "0.0%", - "airdrop": 8785.392427192439 - }, - { - "total_amount": 349958686, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsYeE1COxoHKX+K1iIdGELkJQiFpAsh4XXG2i9/o4So+" - }, - "address": "noble12ygtk3p057zts9f4tgnq7drhxklh93jpp2uy3j", - "percent": "0.0%", - "airdrop": 6147.283992751459 - }, - { - "total_amount": 72970192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8YB8Ao0dKvmCCCw1Hxs70Ih95tP7f8/mklgl4tJQmla" - }, - "address": "noble12y3g973yun5glfqkf5ume6tvfpcqzfena7xrez", - "percent": "0.0%", - "airdrop": 1281.7755671582345 - }, - { - "total_amount": 1779524315, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7V1G1dNf7quy8HvuAonhwsT6ZLOohWG5mYdQDoXIjDL" - }, - "address": "noble12ynmw8q5ujs03znneyfrah3h3yxd82nhrzhanp", - "percent": "0.01%", - "airdrop": 31258.66501942319 - }, - { - "total_amount": 219510200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZIuko4GUqUwiDkZvtb66QeModXPgperbOpaq0JH9pu" - }, - "address": "noble12ycvlups4jjup9fdh5xwpm99m7ajzqzam4zmyd", - "percent": "0.0%", - "airdrop": 3855.859541962251 - }, - { - "total_amount": 252540471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIFCEXFY/8PCxFHhQUsAKS5Db1kfdwKeCJd2OqyapEm" - }, - "address": "noble12yclgn68rh6l599djcerp2n43l8a5h2ekruz9h", - "percent": "0.0%", - "airdrop": 4436.060760898542 - }, - { - "total_amount": 426040241, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar0kS0hviW2xQSfCAGyXEHbAS1LXxZxr5O1UR9RzLPHF" - }, - "address": "noble129rw3gnlk6x9annfw93jk86p55tn7wleetk8em", - "percent": "0.0%", - "airdrop": 7483.71295966997 - }, - { - "total_amount": 1020631318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atrzqlf3iH0FYTDkKlOCWqqwTM35GyY4OaiMBdRW7yUX" - }, - "address": "noble129gl7eqj3630hpks8eqaheg4sky3chtlk5m8nh", - "percent": "0.01%", - "airdrop": 17928.14642023837 - }, - { - "total_amount": 50733624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsG9Kg/eLw02z8K8GIe+KVPpMXifAYwz1Pobmpxhlezz" - }, - "address": "noble129tkpcfcrqetuszzhmfnz289wdxfp9kjmf0rlp", - "percent": "0.0%", - "airdrop": 891.1737504622795 - }, - { - "total_amount": 361648712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjkNlCHhIYbsZA7DEZKmoYT8/OUprDKbh8iJq0QbY/9U" - }, - "address": "noble129cfhg2km65u789gry6twc56n9vt35nkrvp480", - "percent": "0.0%", - "airdrop": 6352.627973568236 - }, - { - "total_amount": 260042993, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1kOZdgJxebNfUS9oPUl325lFGN9/c1JE3sVv7S1lB2B" - }, - "address": "noble129ekzf5pmmtf2ktkutzpkxch0pedkvq240yugp", - "percent": "0.0%", - "airdrop": 4567.848126781684 - }, - { - "total_amount": 2081570227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj+B2vvz4RzL7u9b4luIOhbdJsD7Jx3rdZSklQUtMOhS" - }, - "address": "noble1296d8q7d7wyz8904z6nhgwz9mxela6af2e2h73", - "percent": "0.01%", - "airdrop": 36564.32558506383 - }, - { - "total_amount": 711413043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuKizwKl+IExGLp7O9Ixug5ZZhwQoTn6WO1HzZegW8tL" - }, - "address": "noble129uhlqcsvmehxgzcsdxksnsyz94dvea90xlvsg", - "percent": "0.0%", - "airdrop": 12496.497976531164 - }, - { - "total_amount": 258997887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3WpMCEXh88CkjjFKrncBdJyFyFOzUU4tSDKbNpR4zh1" - }, - "address": "noble129um2y9rwxudpsafh7lsptpyqrp8dgy5ps6awn", - "percent": "0.0%", - "airdrop": 4549.490064411634 - }, - { - "total_amount": 63439926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/2jopLGGudAeZKm9LYBgZJQBIlnhngfl7H923vGOU7Y" - }, - "address": "noble1297usrwucf93v0ulc4q6z7xafm03r3ml4sqwte", - "percent": "0.0%", - "airdrop": 1114.369373306931 - }, - { - "total_amount": 1033393831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyJzRfHXDixm9QY0dhc4rSE91yy89fdoiywxFSdnQ7n9" - }, - "address": "noble12x75vd7vuu5q42v4m2a3llaxnavq4xw9xhmxml", - "percent": "0.01%", - "airdrop": 18152.329431007194 - }, - { - "total_amount": 251610155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw2jg9rJM4aFz6hGEKQ6Y+HS96mTC+9VL5NUB2YdxHwe" - }, - "address": "noble128g908zusk8tdskul5su664drlqz3k8y4lpjd8", - "percent": "0.0%", - "airdrop": 4419.719070053924 - }, - { - "total_amount": 276455252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/TBPpUgSJ48LC3gkfC9yhiLJ+d05VzaKdcwUokWpZh" - }, - "address": "noble128tjay728nxlcyuqvz4yqx2zfmat237uxcw8g0", - "percent": "0.0%", - "airdrop": 4856.141634191845 - }, - { - "total_amount": 475003234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2BExr9jhYsfDxbbJg5w+e3iHs36d836ur/nwWA9BOaA" - }, - "address": "noble128nmmgc437cqylhfyezj4gjzcfsdurltnf4vc8", - "percent": "0.0%", - "airdrop": 8343.784262789737 - }, - { - "total_amount": 505447070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/MoMpdxt9FCftf2PMRx9PU0YBI2PhVEi4YPyBk3Wnvr" - }, - "address": "noble12857a366c5ux8nrs9adyp0tzkny3kq63n9tplz", - "percent": "0.0%", - "airdrop": 8878.552831788053 - }, - { - "total_amount": 103804847, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5rXsig5GSITmLae47Zl8ciaVXaph79dZorb6H5arb5R" - }, - "address": "noble128m4fvds0m6zq9u2msf6zcyxr2t6yceg5n4tvq", - "percent": "0.0%", - "airdrop": 1823.4091618835096 - }, - { - "total_amount": 201956745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhdLhxFNw+mxzrq7I084kwguv6t7ijWd4HFg08M7gFXu" - }, - "address": "noble1287q0q9uj7pafstp3n07x9j9fur7rpx640hxfq", - "percent": "0.0%", - "airdrop": 3547.5200800322127 - }, - { - "total_amount": 353550798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6BL+WJd/SvGe7M3qd/4xzApnMCFMn/t9kUY2Z1chZKf" - }, - "address": "noble12gxazsq7rq7x2auz36zzqzrkecl9l5ju4nrrly", - "percent": "0.0%", - "airdrop": 6210.382105417736 - }, - { - "total_amount": 1085902388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnO4zdYJejjO8bFlFy5He/aph7M9ZecKU0Rf7EXfFGyO" - }, - "address": "noble12g2v4a7ej468c023x9f98zl9knddtwq0txp5hk", - "percent": "0.01%", - "airdrop": 19074.68119663412 - }, - { - "total_amount": 1800668123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjBLcsC32JYAoaS4KQugeMcHQvFPdPrUWKfNYIrwhuYU" - }, - "address": "noble12gkqtu4t8ejmds97xjtz20hwhrrw8ddekq4vgg", - "percent": "0.01%", - "airdrop": 31630.07169587931 - }, - { - "total_amount": 112172948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3L2o+KyB40en/r2OCsPAsHOUsyMEWjjju3xusn+A3q" - }, - "address": "noble12fnalq6lry03wlx9077pcntrv0vv8ht2shqqft", - "percent": "0.0%", - "airdrop": 1970.401065170709 - }, - { - "total_amount": 88484692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4nP8mMEI6r4dmDcnW7S/z3rOpIm05Mnc9qRlaVNFPSD" - }, - "address": "noble122rnejgzx38ukmu6sgeu5qhym0xxzjqxp9f2kh", - "percent": "0.0%", - "airdrop": 1554.2992715864268 - }, - { - "total_amount": 50274824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhxqQZ7Nw9lneFgFyPTd29iEpbz3UgkUqcPceAIdG+ys" - }, - "address": "noble122y9cr4x9g70anal5kkz8pe6u30f4ym3sfkdna", - "percent": "0.0%", - "airdrop": 883.1145880276761 - }, - { - "total_amount": 9249012451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8KB0yrLTt09AM9lMIMz47pX9x08b5bHo1AvA2pQpVCw" - }, - "address": "noble122taa46qrdv22ryk6v9wvs285y24q9z2vwuawm", - "percent": "0.05%", - "airdrop": 162465.766569918 - }, - { - "total_amount": 884459649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4bq9qcARqjF7gXWzjiU6Y7gUo+SpgMdge9kju83mmRc" - }, - "address": "noble122vyse3h79gw8fk0xl22gze7qf93flrwr5ulkt", - "percent": "0.01%", - "airdrop": 15536.190013389962 - }, - { - "total_amount": 5213606645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFAeZVg4bid/HpRwrvRONkoZ3h6r8vSPoWZZcNaLkGy" - }, - "address": "noble122dxl9548w9xwc03se3f5a5xe50z889e5fkurm", - "percent": "0.03%", - "airdrop": 91580.86927241216 - }, - { - "total_amount": 67027337, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoqIh2x5F0KzZaVScmf4f6Mr3y7rWcxbe1dnVtKKfqum" - }, - "address": "noble122j8ap2va22xgy7nzl730mgdlseqpr64flccse", - "percent": "0.0%", - "airdrop": 1177.3849094200152 - }, - { - "total_amount": 2193390251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJKBfz6oPMnNvczczgm/g+pHVPGRMlhtpLv+PVIyPlx" - }, - "address": "noble122537m0dm0s39n8v03h370z3jmmg0neap0ecxe", - "percent": "0.01%", - "airdrop": 38528.52727830109 - }, - { - "total_amount": 50155339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar4sJTBVpsXTIVyecOQ1XLtdoFi7SMKaP0QTlv8YPSnv" - }, - "address": "noble12tptuy4n490lpgxgcctsja3tuda5909fdz9vhl", - "percent": "0.0%", - "airdrop": 881.0157453435031 - }, - { - "total_amount": 221639298, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1i3ljcKEMnvrqfUt5n/EQMQUgrfcmHvsUAJ1h7QBxF7" - }, - "address": "noble12tpl70lppu24tvdh99zyft2qa2shu0ywlnjenj", - "percent": "0.0%", - "airdrop": 3893.2587281461856 - }, - { - "total_amount": 901177189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AniuBXhET9naessSX6bbPDhzbFth7dFY1c+aaKMOAnxr" - }, - "address": "noble12tfhez0dy9gj6e0yrytk3dfpgz24yl282pn2ve", - "percent": "0.01%", - "airdrop": 15829.846008086954 - }, - { - "total_amount": 96259902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApjMgXuZvcTlqNoEZi+8CXCR7HozxqMIsk3pOTs0LrdZ" - }, - "address": "noble12tvsrn3c4m4fs8sux27nnmvcnkjflgw9w49848", - "percent": "0.0%", - "airdrop": 1690.8766045270386 - }, - { - "total_amount": 58769716, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiDBN1PgTrjEcZqeCp/7aNPISQLlef95dDPZE2czHDEa" - }, - "address": "noble12t0jh53ufgw0ept6hkcd5gaqupnpakd49anedx", - "percent": "0.0%", - "airdrop": 1032.3336693101803 - }, - { - "total_amount": 112539523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtHdEYQL4xGq5yBjsmdrGqjMBuigtEhhTpKzxEARHY1H" - }, - "address": "noble12tjzsy939jkwynt3njed3fcc6dlmrftkvzntuh", - "percent": "0.0%", - "airdrop": 1976.8402270483568 - }, - { - "total_amount": 93209860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1xAZ53rDWgxfHGECBjsfUms1auLopOHY6EX00nB9pHT" - }, - "address": "noble12tnj0sft7l4z9vesescc9dsqs03lth4v6d4d3e", - "percent": "0.0%", - "airdrop": 1637.3003536326128 - }, - { - "total_amount": 3229241028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1YpybqUqOVDf+eVnlLPVw5uvXyoV2h80pjtHmQh/oU" - }, - "address": "noble12tnmhezuwvq57cyrhd9xyaau2tswzj0gljv05v", - "percent": "0.02%", - "airdrop": 56724.01478887901 - }, - { - "total_amount": 1321878329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atg4eSDX+A1Xj+A3qAKfbIOQ85ms3sR0OYVUIvDud2Xj" - }, - "address": "noble12vxyfur97jjnqjq3hg8prsa690dngf0tq348rq", - "percent": "0.01%", - "airdrop": 23219.773697020755 - }, - { - "total_amount": 14113632320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPxkmfLPTliAGVsdU3RDoT1ExrNZBJtwulxGdNYjWv6" - }, - "address": "noble12dzrxfndmzrt60yngjrpweh2zk5lagalxgld30", - "percent": "0.08%", - "airdrop": 247916.42416989655 - }, - { - "total_amount": 50086376, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3QnL9nrXknl/yfk3v0W8etuR5+sqLf1/15o7GWpMUc7" - }, - "address": "noble12d9k2zwuzq92v93c6whc0zdueq8qq7d68tc7te", - "percent": "0.0%", - "airdrop": 879.804359077205 - }, - { - "total_amount": 86505329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuIGdbxMMq3ifJ5immWjf/1tm+zcK/cuypsOIP+pfwJt" - }, - "address": "noble12dge2he5599dyn4gyw4j5qqwdygp039ann7sp7", - "percent": "0.0%", - "airdrop": 1519.530291782495 - }, - { - "total_amount": 141779680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "And2Rp1YfWjEAEXCwW6U46IQz3aMRFxNy7tIjn92zTf1" - }, - "address": "noble12dwq9ygspp8ftvyx36ylcqp3ptexvmuklg9pgg", - "percent": "0.0%", - "airdrop": 2490.465281268727 - }, - { - "total_amount": 339016585, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjBH4JwQKV/cuY1CBoG+fJriJ1ySFqyXwqXUmZQ//6kb" - }, - "address": "noble12dsya9fh02csj7nzd3k4z6jcuwgzw8f0xq8970", - "percent": "0.0%", - "airdrop": 5955.077869528189 - }, - { - "total_amount": 879607366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Tho9C4CQZuzr5ULd5vXXwJQEOcETREXHhgeMmW2HXL" - }, - "address": "noble12d43ynxrk22y37fpyn7py69kyhw2ar6e7nzzu7", - "percent": "0.01%", - "airdrop": 15450.956062048059 - }, - { - "total_amount": 744653845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhWfYbByiqdcBJyfeaLtLEulFTpm8skzGvlDjoV2Dz2x" - }, - "address": "noble12dhdxqkmegdfjku0zxkj32yt765jpf0k0htmma", - "percent": "0.0%", - "airdrop": 13080.397328698751 - }, - { - "total_amount": 259083769, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A29v6iEl82uLdNTAGQwoap1Yy+FSihMYOOXdLnWpJHrI" - }, - "address": "noble12dux7zlnj2lwws0qedxetxeude9tyqrpus08ys", - "percent": "0.0%", - "airdrop": 4550.998645467015 - }, - { - "total_amount": 699343266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Pq74p97b8FR1cBbMvhXpGA1XhtIsmWTFWX5GdkM36L" - }, - "address": "noble12wpvrulzw9kp3qrx8xtrw3z739mh4ys8zczpaa", - "percent": "0.0%", - "airdrop": 12284.483387620003 - }, - { - "total_amount": 52749022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApwtYovSuumWjxbFgXaXhXWJei14s/TFpK4MXAiKhGkN" - }, - "address": "noble12w9kf8xqe52uvgavtgvjgegasvmlqueejmr6nf", - "percent": "0.0%", - "airdrop": 926.5757117795742 - }, - { - "total_amount": 931988596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bWsuqRzu08E9diWuY7Omu4S+cTjNTTyzSFeO7lXbVf" - }, - "address": "noble12wgph2uga2hpdzpa30v2srly9eehskznedl0p8", - "percent": "0.01%", - "airdrop": 16371.071234441957 - }, - { - "total_amount": 655318232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsVvVfEFLib0dOHUkJGtwXBX6qIqMxc7NwuU+HlU7VfZ" - }, - "address": "noble12wfjwkltgk43thq0dn7hrdn5vxyv4e0lh890vf", - "percent": "0.0%", - "airdrop": 11511.150998354664 - }, - { - "total_amount": 653458102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cgsmJdiuD+npjSkEWam97KaOQtTHUcXimW/dINa9bA" - }, - "address": "noble12wtm84yh5t0jmmunvscgj6vl2rs73pau78wdtq", - "percent": "0.0%", - "airdrop": 11478.476434667919 - }, - { - "total_amount": 463697574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzE9NX269gpwhHSk+XW4tqZ3plkWFt0UzSClSS2uNFyn" - }, - "address": "noble12wvvr6r9t3g7qqsfx29lwp4lv3ffrvp6svdcw5", - "percent": "0.0%", - "airdrop": 8145.191955966724 - }, - { - "total_amount": 8147497663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoZz8SWJBMLxTCiUOZ3iOewsCXJRIvy+8k6K9+g3TEZC" - }, - "address": "noble12wdjtsdgnyek2jag90fnzmctt3hf2nmfgkjuy7", - "percent": "0.05%", - "airdrop": 143116.84198271282 - }, - { - "total_amount": 339729265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2gZrAK0AwM6yLzWPG5mbZcZEhw+m7Iuks1Z1EDW6Kn4" - }, - "address": "noble12wwj52crmhws7tf453xu6h6u9mk3n6572r9jdh", - "percent": "0.0%", - "airdrop": 5967.59662254452 - }, - { - "total_amount": 366973190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyGDVor357jPvUyk4E7KCBYGlL9Yk6aDjhbQlI8uwie1" - }, - "address": "noble12wj26jng8ttkdruyhmv3dgv5zkfu09c4qjsmkj", - "percent": "0.0%", - "airdrop": 6446.156380458977 - }, - { - "total_amount": 640189514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Q6HXwIwTkubAzPh2q8dW9NImB3HI64jh9riL6aMA20" - }, - "address": "noble12wmptq2zm3s2d8c0xukwj3fkcl0qw66wm7gms6", - "percent": "0.0%", - "airdrop": 11245.403841010922 - }, - { - "total_amount": 181023887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgPOQ3BB8gXs5HZ67WrBbI4PpcHCoqaS7ovmiD8akS9L" - }, - "address": "noble12080gslp2lmkml6msqveu6sjw69sknawf5cfpx", - "percent": "0.0%", - "airdrop": 3179.8188968532954 - }, - { - "total_amount": 87865806, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApfVjn//QTlGRgZO3zBzRvIRtIyiAtYimGKGtXNhb7sv" - }, - "address": "noble1202fn7d5eg32gwuqcugey88fh8gmln84j7cv2p", - "percent": "0.0%", - "airdrop": 1543.4280797762656 - }, - { - "total_amount": 72112130, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0tQt3Icn4OTiXUqYKNYABTDJqD7P2ctbyI3gOmDckHB" - }, - "address": "noble120tu7vkvq7prpyhttuv9d2hsr2mhk8l8d3hmfn", - "percent": "0.0%", - "airdrop": 1266.703071436873 - }, - { - "total_amount": 108332111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au6K1v6GXsl+qCRnI28yQgZx5yLrw/HDcDFX3x1qXqkV" - }, - "address": "noble120swwvcvzdspzf77asld972qsumeuummxt92zt", - "percent": "0.0%", - "airdrop": 1902.933913322769 - }, - { - "total_amount": 51283477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8txQy9y3JW8DW5IOmaCeEb6JCN/9Zv/+anvCFX4JxT7" - }, - "address": "noble1206mghh7a4ha8w2jputtj7xaflrplaag6rw6fl", - "percent": "0.0%", - "airdrop": 900.8323264042019 - }, - { - "total_amount": 384472421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axeu4lMAkZwB1pDToibNtb/mw1AO5BFV6V8Rea2Wp+XP" - }, - "address": "noble12sytrm74ew5fcgm6na439wh37q9fvvjku82sx8", - "percent": "0.0%", - "airdrop": 6753.543357594214 - }, - { - "total_amount": 257878340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+uA33BAgi2KJKUS6Px5RVyU5hMf59FhhyiMCvB4z1uT" - }, - "address": "noble12sgmg98ek47yp0sjmd4vffaw7lsh7pa2w4z6rm", - "percent": "0.0%", - "airdrop": 4529.824390640551 - }, - { - "total_amount": 97480667, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuxNB3ATJSu4AMtu+3Q7k7bZBJd+GzJm7IvDktNYme21" - }, - "address": "noble12sfkp2r99t2azx6x54x2sh6dtjrxdj4xyn7wln", - "percent": "0.0%", - "airdrop": 1712.3202475729815 - }, - { - "total_amount": 71440467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2u1B3tvqLKCQuiHIai4xmYrw4Tv0FQ98p520/PplM9Q" - }, - "address": "noble12shrj3a7sxyaehyzz5h4v076lkvgwdxnjhxa9v", - "percent": "0.0%", - "airdrop": 1254.9048124606022 - }, - { - "total_amount": 137857456, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8mMg65Ye++iLdLW9m/pF62dlOLZeW4IacHKpBY3rv9+" - }, - "address": "noble123rstadykj6lnpd9u7xyavxzs3qnlw67gdt0xt", - "percent": "0.0%", - "airdrop": 2421.5685063757455 - }, - { - "total_amount": 75136161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuXAziQVm5+EVaCAGECieL4w8rUhvEnpKiOApQdNY1UQ" - }, - "address": "noble1239plypv0c0xaxzgx0hlkkyuj03mw77naq2n6r", - "percent": "0.0%", - "airdrop": 1319.8224198158534 - }, - { - "total_amount": 2155079726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq00oWx2Y53Yv5F8KCYh8x1juZa62Q223XyGbwpw71Es" - }, - "address": "noble12389qehnyt8t35svf3s77f6zkquqvtzzl57hpl", - "percent": "0.01%", - "airdrop": 37855.57447984874 - }, - { - "total_amount": 189873063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax0gTrKzUNajD1gz4MLwO23tBHtxbGo/kMUE/U72IcCZ" - }, - "address": "noble1232e5nyzn949qety0v9c0wrgufzyfx7fjarjnw", - "percent": "0.0%", - "airdrop": 3335.2612394783914 - }, - { - "total_amount": 120034431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8G6wTw5t1csI46+WZOlGLVSux4qnMMt9qHvSMVCAb7X" - }, - "address": "noble1236zu7kkduszrp9p3hv7nrjtvcv3xqq5u6ccs8", - "percent": "0.0%", - "airdrop": 2108.493847371828 - }, - { - "total_amount": 919908938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlTBxJTqxISRJwfi8dD2USLa891wODRuVnTFDsubwXaf" - }, - "address": "noble123726qx4d7t59hq0sasy78c74a6umlghgw9g4k", - "percent": "0.01%", - "airdrop": 16158.883078433988 - }, - { - "total_amount": 207882279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3z6DtEwDCbzUpiVxNBIEVW6JUPIYLvfkza+a05ST6Sf" - }, - "address": "noble12jz9a69sr4639ua0ltq05xse5k72ch9cfcp0n8", - "percent": "0.0%", - "airdrop": 3651.6064815530617 - }, - { - "total_amount": 7379792558, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1HOYNBY1/sup+iLJRvWyoX8b2LG5FRor+Tr1y02lCpQ" - }, - "address": "noble12jwfxsk6edlqh4mcwna0qc749w075zr37z6nyj", - "percent": "0.04%", - "airdrop": 129631.53216782778 - }, - { - "total_amount": 250525783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A34LuM11FateNkTaETKJX5XC4nqmqFh3P+crizG1/r6W" - }, - "address": "noble12jcetntdvvy6tl8877upaucm0hdwcrumgg0kxz", - "percent": "0.0%", - "airdrop": 4400.671271258075 - }, - { - "total_amount": 71858223, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgiTiTnHYoOLvL0pB0fGynL/KIeRz9GoJeveucM9Rj5Q" - }, - "address": "noble12j7mze40f5vyssc6nrfdra4jl85t09jcqdhxdu", - "percent": "0.0%", - "airdrop": 1262.24300658011 - }, - { - "total_amount": 200166821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+DzvM9qptyLen+B5z7oLW8vE4F1iEXkRp4x4YkBYvfv" - }, - "address": "noble12nqqccrk3c3zyz73as2gy8krspw8vl7j30r53e", - "percent": "0.0%", - "airdrop": 3516.078736829085 - }, - { - "total_amount": 148918646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+M3eFs6rKkbqN4kfrh/xn6KSY8wjKc7YGZn3QzK3Fyt" - }, - "address": "noble12ndfvm5pmpl0w9gpz7qep5q44exfkz8ulug6mp", - "percent": "0.0%", - "airdrop": 2615.8665162493526 - }, - { - "total_amount": 132142805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq5d8b1s711zKJAgZIQs3b/I/o+Olpuh9JqLFrY2EQtk" - }, - "address": "noble12ncqyj4vvd7v424lmkzahzwxdgnfx8n3traw4d", - "percent": "0.0%", - "airdrop": 2321.1864212273827 - }, - { - "total_amount": 1103797535, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al+XqEf3G5XVCjveX5inahUUupOXhkSKGowtIqOThn0Z" - }, - "address": "noble12nc003c4zswnpphd2shtgu2xpnerw72qh3qqrt", - "percent": "0.01%", - "airdrop": 19389.022732083344 - }, - { - "total_amount": 324088598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1xosu1ccuV4fJl3mS8vMFGKBJB3YUv6iONs8Ke/1GIL" - }, - "address": "noble1254988hlhrpakkxjxd3umsyp85fwufpyydysrf", - "percent": "0.0%", - "airdrop": 5692.856701144038 - }, - { - "total_amount": 39957000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0W5kV0at8KzyWrZVC0RcefB9ujY9LEu6QK+UuhTq+Cj" - }, - "address": "noble125cmmu39whzq5xf6hatvujg9yrfcsntjawv0vc", - "percent": "0.22999999999999998%", - "airdrop": 701874.3535297479 - }, - { - "total_amount": 201752204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az/0uJFGBHuSRomtoPBSXNtwlsmtZLYCts5UIKlVtQA2" - }, - "address": "noble1256tce5vxskxzkty9nt6p98w2y0dw99qjkkskn", - "percent": "0.0%", - "airdrop": 3543.9271655955604 - }, - { - "total_amount": 177244051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuY6vz35vlhZPLnngBQnULUoGie2+n4V9XoZTOrgAIP2" - }, - "address": "noble124qj2eh4lsj2483n69wc747ej86edx0yxd6gck", - "percent": "0.0%", - "airdrop": 3113.423272833763 - }, - { - "total_amount": 65949287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap4TnwYEhHXKieFRssDpxZvHyEJuPYr1an+fniZ1nugD" - }, - "address": "noble12497l8ydp33p0frlmlupv3xgyrcays3tyzrgdq", - "percent": "0.0%", - "airdrop": 1158.4481612451586 - }, - { - "total_amount": 703298315, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgWVlnvzrNJrXlUAjnxe+aGgypHVisVmd4htLByBgqaL" - }, - "address": "noble124frmxtvn2gacgdxepyfefcysrx8d6y72jr8y8", - "percent": "0.0%", - "airdrop": 12353.956757994494 - }, - { - "total_amount": 112666229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/I/ePxATFqB+7z6enBQ3U+EA+NkLplzdjc5dGKOS+6n" - }, - "address": "noble124h76syzr5mjy9qhqqv5w3jeyy98fk6raalvhz", - "percent": "0.0%", - "airdrop": 1979.0659119555905 - }, - { - "total_amount": 16627397234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As20bVA7yupSBO3fEt6dif9U+YN+8SLhWUQrSSq8eIS8" - }, - "address": "noble124a57ly2pgtkdjxwn37pnm39deluawuv88f336", - "percent": "0.1%", - "airdrop": 292072.57012528635 - }, - { - "total_amount": 348962355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au/+RmkKVlcjtJ6cwuwkohWsx/ytlGSRzt2fCe4aE3JR" - }, - "address": "noble12krmgqucwdrev4s8nza6glc46lg3u7dhn9h4wz", - "percent": "0.0%", - "airdrop": 6129.782699447991 - }, - { - "total_amount": 76992102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzcODOt4auHqSCH1NinZbLnhCYQEhJ8HNYwJ0dLYlsJo" - }, - "address": "noble12k9rlmt9x823kkvd5tq0ptqtndhyecfuvnn8qm", - "percent": "0.0%", - "airdrop": 1352.423400609315 - }, - { - "total_amount": 279747669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApmYudrFBVSFAJCmdyMbFCnJUbbiGAZaQdCZVY/J9Y7v" - }, - "address": "noble12kgwvf4l2zrwvhww2zh846txgp8expzq25zvnf", - "percent": "0.0%", - "airdrop": 4913.975381806164 - }, - { - "total_amount": 89545998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5gDzWUxfBPkGsXv+or2oPmRxIrb6JZHtkrSXXI0Oqxl" - }, - "address": "noble12k24dpqqv75jqwu6a6jdt83lz79eqtl2zm6psg", - "percent": "0.0%", - "airdrop": 1572.9418989770527 - }, - { - "total_amount": 1706464727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As5JGE8XE6Sl0B1dvfw10WLlC3MEtn88O90swaojTv1p" - }, - "address": "noble12kwygqlsx0ydr3yyj3shedpxqwne86ae96mwe2", - "percent": "0.01%", - "airdrop": 29975.31914519215 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnVAewnQGdbwZrn0bCwThglKEvTw3HTtmWh6SZ1+MQ97" - }, - "address": "noble12ks357k4ngmd5aarg7h9s056mse06cx5rz04hv", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 17690361020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApP7vWMiU5UlMiKSErNaqZ7oYLMDRzuN3azIIt6f17fv" - }, - "address": "noble12k49d2re6esfhr66cfs2hza6a62x57hxslc9u7", - "percent": "0.1%", - "airdrop": 310744.31775709765 - }, - { - "total_amount": 311710365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/NNCX/kDMqSnjTBN/Hs2MZUZyns+LNy7akxcncbuTHM" - }, - "address": "noble12k4hh2pr7v98ynv83awh94kzva2svjt0dnn4nk", - "percent": "0.0%", - "airdrop": 5475.423853715163 - }, - { - "total_amount": 2807381837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap9TYqOE0Gj3VT4745DwF7SKghmfGN5Et0Dxm6UAJg6S" - }, - "address": "noble12kuvd60w73n6sxtn6sulnhxp0h0u0x7f6m4hvd", - "percent": "0.02%", - "airdrop": 49313.745074843726 - }, - { - "total_amount": 427173919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At1XV96RWVx+Fq58F7AqKfKyhRTPnlUKOKj9LE59W2u8" - }, - "address": "noble12kulln9f2vjc8vzzwg0uxnf3k4w2x30hkg9es7", - "percent": "0.0%", - "airdrop": 7503.626854941409 - }, - { - "total_amount": 100575740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A732qRJiFeiaU5buYlpLgjApo/t7lwT7kHeuw9sJWW0R" - }, - "address": "noble12hzp2clr9339gk4n5szqg6jgyyfvmvsf57fj4c", - "percent": "0.0%", - "airdrop": 1766.6875013959007 - }, - { - "total_amount": 600148190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6o1AjSSXJWZyI1h6584+THUH3fV3jZR0R7bIag2RQx" - }, - "address": "noble12hrhl7jv3jsdpknm2402c9cr0ksfzpexl96ly6", - "percent": "0.0%", - "airdrop": 10542.04827385185 - }, - { - "total_amount": 105122136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkdjeIjhWJjsREr53cTDjyoSjiT0+d8XB0lhdrW7fbZP" - }, - "address": "noble12h90dg4tlev0znp5rk84pygld6lkg7hwusrsxh", - "percent": "0.0%", - "airdrop": 1846.548320611313 - }, - { - "total_amount": 215869216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0+KLxtgUwIgo5j25+rWFHclfmd15WJLzdIPV/IImN0/" - }, - "address": "noble12hw2p946h06y8kwelam0mqhdxr8lwjg3z8ff07", - "percent": "0.0%", - "airdrop": 3791.9029563524164 - }, - { - "total_amount": 414136616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AleCXDhR2nX5VzxOshX0xZyhIR4t5WJD7in9huwZU391" - }, - "address": "noble12her0kas7ksed5hl8vgevssve8xscmjjhtep30", - "percent": "0.0%", - "airdrop": 7274.616953925406 - }, - { - "total_amount": 107227859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7eCTFHtR4wUtRGFCLDW4cRJkDI5Dym914q1VSrZvukw" - }, - "address": "noble12hux8zgrnvp7lslanhuxd88afypg9vlsf5zet0", - "percent": "0.0%", - "airdrop": 1883.5369075757428 - }, - { - "total_amount": 245064374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zvj/OevJmsGvDJeDdaAiawA8x7nw4uvnaj/wQkej71" - }, - "address": "noble12ha9we6j4hfnnlf5faknxz6svyvmvfv586me0z", - "percent": "0.0%", - "airdrop": 4304.7375697480375 - }, - { - "total_amount": 675851045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuMZKKBtnasNgz1yUZiExflNqTaMfYjD/fmMq1Ab/lDB" - }, - "address": "noble12hlacpac7atelkl5lue079rpfh8kf0sl7vta89", - "percent": "0.0%", - "airdrop": 11871.82509427083 - }, - { - "total_amount": 148461800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlLuhJD0He/Pf4DmtK/0C/dVRZtoVuTR/a1zMnYks1Z1" - }, - "address": "noble12c93leeqx7vpgcasmcv6lrljmg36wqtym9458e", - "percent": "0.0%", - "airdrop": 2607.841677274638 - }, - { - "total_amount": 104308897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArAe4AAEfRVgzIcwsxEL1Scw4UeYvQ86mf6r/c0Bfq+N" - }, - "address": "noble12c2mwfzvn2cy462zarr7yg8yj9l8n76mmp7whp", - "percent": "0.0%", - "airdrop": 1832.2631741441064 - }, - { - "total_amount": 524022287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2mR3JdxV7XAjKd3XhqjW+qrzRFF4QSH1ssKKIVxjNG7" - }, - "address": "noble12cvw7mgf6yxywdva3rpa0jsxrsu5g60q9uw9u2", - "percent": "0.0%", - "airdrop": 9204.840301406637 - }, - { - "total_amount": 55811700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IJsk6PgTkr/UwZj7w1YnWnKL45mwcb+dRDCs02YreO" - }, - "address": "noble12cmyflc8gn3cwd5rdjmfjfspplfe8rvjyzyu8d", - "percent": "0.0%", - "airdrop": 980.37392339005 - }, - { - "total_amount": 19302450091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1mMOor23jmAV1PIZBwGvYua3L7KGA16Js7wLxzrFI0U" - }, - "address": "noble12cmfz82mv2nm5m0l8pnxj2gxhkfp5xzxhr55xw", - "percent": "0.11%", - "airdrop": 339061.85847688385 - }, - { - "total_amount": 113062603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxX1rVUqVA+6EOxdBNpFJ9xmGhNx8bQV6rKXqNFHPqKe" - }, - "address": "noble12exmmu65tpupls4hug5mc4un393dzcrj5pur8r", - "percent": "0.0%", - "airdrop": 1986.0285153794212 - }, - { - "total_amount": 152637930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6DAUEGXI0HiMTAJLSlQwTfQwzSlPoDG07CokByIRQj+" - }, - "address": "noble12e38697sehw97sc3fujwefc3qmqq6v4aa96rxc", - "percent": "0.0%", - "airdrop": 2681.1984994586405 - }, - { - "total_amount": 2837281918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9bHVPT+XvQD+Nw8oTtUBKbw22hQ3CpG6Psyx1UmBfpC" - }, - "address": "noble126puktw2qt4ys37zzhrvl9m5tc2c9e9vuldsra", - "percent": "0.02%", - "airdrop": 49838.9621837949 - }, - { - "total_amount": 589117254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kOob88Geybzr5KyJGoU5e3uw42/3txNRqKozvJg0B1" - }, - "address": "noble126z7mvfzamy7yzw6wuvj8g8xfak6mjjhprgq80", - "percent": "0.0%", - "airdrop": 10348.281697937038 - }, - { - "total_amount": 399685709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayp2gOKqpjyvYtHXMP87+Jyq/Arb9Y8undoc+1SP1YjZ" - }, - "address": "noble12697u9nfmka4dd6hkqspmdygt2rj9sanwyh62j", - "percent": "0.0%", - "airdrop": 7020.7760497398185 - }, - { - "total_amount": 662202449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApIB7IxKpQCgQ7N9KpIw8QPB6iv1ZDlKLjaLvAJ9AZPe" - }, - "address": "noble12688lcm9xfkheqspvn9mvgu8gt7jmpe8xqpy26", - "percent": "0.0%", - "airdrop": 11632.077378123755 - }, - { - "total_amount": 540295528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag0aC+M+dBbu75hpDVZ/nTKVHJQNfYeC0LzOfo/J3hGC" - }, - "address": "noble126sgegpjg0qjlxmp45tfzgsx4vylcr8lfg7e6z", - "percent": "0.0%", - "airdrop": 9490.691854493927 - }, - { - "total_amount": 222341245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap4pKeEtCiKu1MCiOSKJpkzW1UcvRZvQOqiGuLEIKc47" - }, - "address": "noble126kv4x70s75mrkvmpvmq5p4prhd9ep6w3fxuqk", - "percent": "0.0%", - "airdrop": 3905.5889480535147 - }, - { - "total_amount": 3195152363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyIxlG+fJsrS4EsMqCSY/Krcgxjx3xsF/Tzfp+B9bHUd" - }, - "address": "noble126cyqewsng03yz5236alnhv0fd6yqrk68wfzya", - "percent": "0.02%", - "airdrop": 56125.22209399282 - }, - { - "total_amount": 58838879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5/XvfoPEf+/+LtpK16evgnNTYFaOm9WIBVTAbZ4kHGg" - }, - "address": "noble126lff8efwcyyssu0cjak30ftmmt77ad8uq3jkc", - "percent": "0.0%", - "airdrop": 1033.5485687248806 - }, - { - "total_amount": 309461117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/MtrIkBJ1Tjp3lmPUplzzFhM0DziHCSScOKB9xRDnk" - }, - "address": "noble12mq8tffx05ajpmura58gc2xuta8gvjnrkv0cuj", - "percent": "0.0%", - "airdrop": 5435.914143628617 - }, - { - "total_amount": 546118663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgN5WLfVdsErQBhrcydiwV3heNJJPfWXXC0jEpJl7x4w" - }, - "address": "noble12mrfpuaee2w5vhlgspdamrwk4amtjvpdxf3t5q", - "percent": "0.0%", - "airdrop": 9592.9795415986 - }, - { - "total_amount": 384057942, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/A/d0z23p9w8KZMjZwYnT6MQE9mpTRhAM7K+MEtATpQ" - }, - "address": "noble12mxq7sn6cjsphxjpjtkqm6hmnz0at8k5ac9ja0", - "percent": "0.0%", - "airdrop": 6746.262726411277 - }, - { - "total_amount": 143439775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A10HvKhPaqcscFKcBICCQp580aUg9Lc8AuDKZO14Cwkk" - }, - "address": "noble12mj3an2dre83vmygzwx364z70ts7hkzfvl03rs", - "percent": "0.0%", - "airdrop": 2519.6260817523207 - }, - { - "total_amount": 97208404, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4dheoPpEnbijmVv8AuyynSyzDdOGEiQYcrs5im++a4w" - }, - "address": "noble12mktse5t5tat7xs9uxc2xaj4qvw8kc66xzx6gc", - "percent": "0.0%", - "airdrop": 1707.5377459558665 - }, - { - "total_amount": 3870883803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoXt7aSnp2rR1qhejEt0v39shZXoSvZzqkibg8kND0gH" - }, - "address": "noble12m668l4zfqyuse552wefhmdqa3qy8pgwy0jv7t", - "percent": "0.02%", - "airdrop": 67994.94623769044 - }, - { - "total_amount": 141402584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsvnINMbKH/9M+jkOiN5+DSQuEjYwydrWkhb+7YGeCMo" - }, - "address": "noble12uxrdelzzk9nec04qhaznuewy23zh6e82nxztz", - "percent": "0.0%", - "airdrop": 2483.8413102193826 - }, - { - "total_amount": 644856162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2+3h5sfs2bKI9zEwGe7Co3wwrtIB6F4+y4SmJgkhr10" - }, - "address": "noble12uxtzycmmkkxhj6mu3pxn38pph9fxxp2ef7f2r", - "percent": "0.0%", - "airdrop": 11327.376975834632 - }, - { - "total_amount": 581036869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+P4xMDZ+0F/L7BFBPKeToasgJup8/0HFV467JxZaedU" - }, - "address": "noble12ughnzs4tfe0sh3wscecvykqz4u5pen0ejltcc", - "percent": "0.0%", - "airdrop": 10206.343739678248 - }, - { - "total_amount": 5692883623, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A24y0nMFS7Uj3BSVLXLAcvmJxfaRa5jbLEfz6I5riN0S" - }, - "address": "noble12u2sw5ymz2hvgu30fkztylgtyen3fa0yyep7ps", - "percent": "0.03%", - "airdrop": 99999.72501972655 - }, - { - "total_amount": 125651652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ebry12BDcF5GoMwgk6ERfLVM28+ilae1/LX3QkIlSc" - }, - "address": "noble12udytvg657mccdm5sf02lnl6uljr94nlmz044y", - "percent": "0.0%", - "airdrop": 2207.164502276068 - }, - { - "total_amount": 1795273319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8sQk6y0/OAmiBoftJolLfH1MYt43wCu7LeL9nP/fJDH" - }, - "address": "noble12usue8q9w5mmvuteh0k40h0zzutlm9k0cfu94k", - "percent": "0.01%", - "airdrop": 31535.307960615908 - }, - { - "total_amount": 1175580112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJBGnrWjKqyk+Msc9l+ja3eArJkO24LdxVgM/44VyeX" - }, - "address": "noble12u3llx4q2xcnhq9h0fr3pgfypl6j8830607sdq", - "percent": "0.01%", - "airdrop": 20649.9369605433 - }, - { - "total_amount": 74175240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4lyKXr72BEPC5ZYgzq60RVWK9wP4g4/tc0SvVKR2mXp" - }, - "address": "noble12ujj8ju5pcwgxsxgk5lmpdu2u5ky99nvkvd3k2", - "percent": "0.0%", - "airdrop": 1302.9431294369922 - }, - { - "total_amount": 225582652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Zg8evCrS+eKGAVj1GtGBVLa8MpRyxOlj+IcvJyKdTG" - }, - "address": "noble12ucns0x28kmn0d6nggqhrhlau2urjk48ulylvf", - "percent": "0.0%", - "airdrop": 3962.526667167858 - }, - { - "total_amount": 111060963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiIgDzGLMDMioxfbUmZdWbxc9byXZEd62kKwmrcKsB27" - }, - "address": "noble12uek54uyz575htcj9ju6ztktylsek7xrrje6xm", - "percent": "0.0%", - "airdrop": 1950.8682235407123 - }, - { - "total_amount": 50092385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkU9CExv/dasjs0ZQlq4VsyNL3XSO6PU69h2c/wuMIyj" - }, - "address": "noble12u677u3z8e2k2tva6k2nz8dmpjz5xw86vx4xz2", - "percent": "0.0%", - "airdrop": 879.9099116209485 - }, - { - "total_amount": 1248780081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/3johnsjAjoDUeXdl9mGBmAKI9xF/Q1wfvswVeRSsp" - }, - "address": "noble12ua64mc0caxxsc5ck3cmj6tvp8wxqk5369ea3z", - "percent": "0.01%", - "airdrop": 21935.748731203574 - }, - { - "total_amount": 328628274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnX14AjGHW3sIMwqURealkdnPF0GreUXAbuPYfMJkGFW" - }, - "address": "noble12u7zl09yegrzmf2drmd808y38m7lxw89hmpccz", - "percent": "0.0%", - "airdrop": 5772.599478573137 - }, - { - "total_amount": 133892934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8JROts1X5IZroMdCayjo4EN+/NB/I2FZIoByeBagBz8" - }, - "address": "noble12u74rzm3r807fvjyjxrfm0ywkhj3749m2xpq52", - "percent": "0.0%", - "airdrop": 2351.9287357271864 - }, - { - "total_amount": 2558199154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A++/c4FA1Iv3zjJ2MESv+jz4b3Jgw2C/S5yZGVNiToZt" - }, - "address": "noble12apem9zn4n0nljtgh4n8e2escayl0cu7fucnct", - "percent": "0.01%", - "airdrop": 44936.6663516805 - }, - { - "total_amount": 98859969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiIoAVjtQRF8QWnJaxMyxyKs71mjYKJzVeSFivOiEvCP" - }, - "address": "noble12a8nm267taj7fsh4zp3lmg6dez2nm3x7r3hh4p", - "percent": "0.0%", - "airdrop": 1736.5487106601076 - }, - { - "total_amount": 146868326609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzprufF3liJlwDU7pEEvPVt+nkcMgehkB40ndPczDKgm" - }, - "address": "noble12afx74mey05dpllkxsaqexhyeljstnuvs96s6c", - "percent": "0.86%", - "airdrop": 2579851.1347870897 - }, - { - "total_amount": 7292381981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUG8Urd4OwKnXHRiAz0B/8+iKyPpjNN8DXBhtuIXFzX" - }, - "address": "noble12akkrls9uk3g25sq4ehf647ah24ca4jee7xn48", - "percent": "0.04%", - "airdrop": 128096.10052322138 - }, - { - "total_amount": 88666855, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhZRVuCK/UQpiByyjCqb5tf8K4Nqe6VIzqhAw31bycbW" - }, - "address": "noble1272le4azshkqvdc2htnskdn97qkyrras0a9ffr", - "percent": "0.0%", - "airdrop": 1557.4990998483593 - }, - { - "total_amount": 287662639, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak3/4tr3C3bXFIWvprJA9pMMCiLdcMGNUopScKIz5glE" - }, - "address": "noble127jzjv07ly09dksp5urythtmqqwhvp72u60xfr", - "percent": "0.0%", - "airdrop": 5053.007702850219 - }, - { - "total_amount": 2021288375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0T7qSlrl9rKKt7LD6p6d2zjUqYOpxNruBu45whsVuVE" - }, - "address": "noble127nn6gfuzgnxpyzjz88g62mrkrnrzu6zqx27zz", - "percent": "0.01%", - "airdrop": 35505.43012489225 - }, - { - "total_amount": 885131577, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84fDvuhZd3N8ObcBPyHi7BCAX/p4QrQIfLjNZxeMFal" - }, - "address": "noble127hsudeesv2nrdurlp63jgwqg0h7k4a2wvuxzd", - "percent": "0.01%", - "airdrop": 15547.992927287865 - }, - { - "total_amount": 1310886153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNH22mMFYn3diO4tIcsMVY1qrY+95LuGV4Hl7FjFXEW" - }, - "address": "noble127c4cespmkzv6rak0uuflfggp4pzrp37kghw0n", - "percent": "0.01%", - "airdrop": 23026.687969266288 - }, - { - "total_amount": 98012323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkwFksoBELS7ORQnDO5zab0t/gqZY2BqS3GLMDtatNIC" - }, - "address": "noble127cluk0cx8kwexw4naazgmvexnxxk7rvxx3f3g", - "percent": "0.0%", - "airdrop": 1721.6591797075314 - }, - { - "total_amount": 1012238155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aig+LvDo/eOIetinY8whf2G/tZpxMuxO23wlSLqHyj9k" - }, - "address": "noble127ejlckj2zwp5c9x6mu52ykhpaec5z6awjhgdx", - "percent": "0.01%", - "airdrop": 17780.71428432489 - }, - { - "total_amount": 412196554, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At9FNsZB1/x9xFdIShIoMUfp4slM4TbYEGKmTZbChRjE" - }, - "address": "noble12lzfr3jh6sqmlsd8lzk7xm89etv9upe392f7wj", - "percent": "0.0%", - "airdrop": 7240.538325348244 - }, - { - "total_amount": 193103799, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6J7ong09tHXZwQZivFf3ZQ5go/bbDGwjUPcVA4C5z6N" - }, - "address": "noble12lf4e7x7nvt8qa38vleaf98ywdmallza5t3l2n", - "percent": "0.0%", - "airdrop": 3392.011514559736 - }, - { - "total_amount": 59496391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Ec2In9JzxH+jsZF+DjHc/F9V78WOIpGE6l8nCfXRvl" - }, - "address": "noble12ls39vndhd55c5dm7ufund4kvzg6hrw53jecjs", - "percent": "0.0%", - "airdrop": 1045.0982548859552 - }, - { - "total_amount": 159999568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7zDogyh2OY4gR1TQN6cGOMdvCNpiPGUYfwjOIJ5pGfd" - }, - "address": "noble12lnd8wzvl6v88vnng7c2smjwvltfxt9ghfpr9a", - "percent": "0.0%", - "airdrop": 2810.5111333443188 - }, - { - "total_amount": 153316114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8l2vglVKEVNOYLiibwkWahtokOP3Wy+fKiIK0Y1On+j" - }, - "address": "noble12l4tuxhfvdtj6v8k6tsrvuse2dmjuanrquqs30", - "percent": "0.0%", - "airdrop": 2693.1113046385644 - }, - { - "total_amount": 863463677, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8MykTBILZdVzBnrm8uaDEM+C8GeLnw5KiVeD915Im5n" - }, - "address": "noble12lkf5ec4sqjnn4w6d0lu0zvklq9nmkgt5ajks0", - "percent": "0.01%", - "airdrop": 15167.380185969767 - }, - { - "total_amount": 106691262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlwMywzVnejiuz283nz5hGlXlkR9Gl+pLoFx3J2wREL" - }, - "address": "noble12lkj24rgr23ldlnxxa2fh7a3rnpwc3np3ss65r", - "percent": "0.0%", - "airdrop": 1874.111183109917 - }, - { - "total_amount": 495635873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Za8R2t9+QwLIhk6MUq7IxRPDw8zkn9rFxdMmS4TwHN" - }, - "address": "noble12lhtrtnafd6gn78mwwx47rg4u2f3pdwl9r7jl4", - "percent": "0.0%", - "airdrop": 8706.211876467883 - }, - { - "total_amount": 217171202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq6Chpfaq7JxROYx8tOHhZbyVntCaqNIzLdLYbh8IEZb" - }, - "address": "noble12l6macw9lf0jr3nqjgu0ur9dpq99ge83ca8qn5", - "percent": "0.0%", - "airdrop": 3814.773306530227 - }, - { - "total_amount": 59803891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4/fLy90onF7JcNCyn2WRyYEhNRQdyKc1OJyCQfkNpN1" - }, - "address": "noble12l7lleceq70uvfkjsgyz74xmg6dzjx26ewapyq", - "percent": "0.0%", - "airdrop": 1050.4997205543086 - }, - { - "total_amount": 50945108, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArTuIJ/BJosIDrwspU74yX2xIGk04tdFAdHkdLEsfSix" - }, - "address": "noble1tqfhv48624r37g2m3j044zdm9j4lxu877k8czx", - "percent": "0.0%", - "airdrop": 894.8886238457138 - }, - { - "total_amount": 250835826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A23B5OJc1aqVXY9IAqT8WGZq5z/5lK481PZLnfHNvYL4" - }, - "address": "noble1tqdvlku97p88z5ndf3jz55vnccmzgs8jl9hx6l", - "percent": "0.0%", - "airdrop": 4406.117406608362 - }, - { - "total_amount": 113489633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1mO7pPmj1TAMpiEuGgaqzw+Xml/0LTMnJiPRItt17Pw" - }, - "address": "noble1tqd7rfnd2zksf3685h3p8advu2twf53rqvhuuh", - "percent": "0.0%", - "airdrop": 1993.5296141903382 - }, - { - "total_amount": 1984401460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArZIxuJHSThv20q1iQuu5VHU/81DjolwyOOUAUxTG5es" - }, - "address": "noble1tq586ggqvu2ph48cnvrfp3t6djrn4amf7skw7l", - "percent": "0.01%", - "airdrop": 34857.48409242405 - }, - { - "total_amount": 78940237160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+e/p0es/cs4nYnkZQ2n8ghLXDpI9MunK+eVL7K5Kv7p" - }, - "address": "noble1tqctx98qz2aa25j5knzuztxaerl3z0ld8cuqsk", - "percent": "0.45999999999999996%", - "airdrop": 1386643.8402322491 - }, - { - "total_amount": 180199388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnbPb7+0nDIstUsTU5iacK35nnZsVKQWGyg1FJucRnSG" - }, - "address": "noble1tq6ut4r7dh29ewn84xt9sa6r0jfcm2n3am944z", - "percent": "0.0%", - "airdrop": 3165.335960131046 - }, - { - "total_amount": 710351251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoetIRZVajPZH75/4f9ybgorBCX6M+xWIonMSn0bPUw1" - }, - "address": "noble1tq7gkpjq2svv098ngwdfyfeptajvq33p2s87dv", - "percent": "0.0%", - "airdrop": 12477.84681218992 - }, - { - "total_amount": 83383415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avgfq9EeBqNPZ7TmzTgsQ1dgfvS13LLK2KzzPbGDB1tF" - }, - "address": "noble1tpzydq348wzs09af7n672y30myg29p704jgqxa", - "percent": "0.0%", - "airdrop": 1464.6915558782612 - }, - { - "total_amount": 236153078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0/Kv7UQg5Yh8if7FgwJpWGZlV/K22KoXklKQl1lwePX" - }, - "address": "noble1tpyd9cvaqj0ypn3a2v9u58euanhz6f86yl97ee", - "percent": "0.0%", - "airdrop": 4148.204043229224 - }, - { - "total_amount": 127946139, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWFnQRhhWhI4lcTn3hUDA2H+q6Oii7hKldt8I9C3ArA" - }, - "address": "noble1tpvhf26kkkkns4r07s9tgcd8w3y3l2kcdka83r", - "percent": "0.0%", - "airdrop": 2247.468868965444 - }, - { - "total_amount": 14692721889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A429LpITfqOIit3fe5lrAvnLfYww3ScmzJI2cA2BDT3p" - }, - "address": "noble1tp0w80fnpunm2j2hskh88y285d8pgcq2hjnjye", - "percent": "0.09%", - "airdrop": 258088.56214015695 - }, - { - "total_amount": 61707175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+cunrVkX5uM23a4qrnm4dclRQcALe1tP2psBvWukYoc" - }, - "address": "noble1tph4w98zcv4k6c9cc6x8qug5kfqjphmzr9lh75", - "percent": "0.0%", - "airdrop": 1083.9323162717926 - }, - { - "total_amount": 1103988377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiu0Bnm1W+NUgZiu8SNrBATUoCGcknrlTo+6Or6X/BFK" - }, - "address": "noble1tp7ps5zzhjz32f0larxntyq36gkqmnugg502zu", - "percent": "0.01%", - "airdrop": 19392.37501342019 - }, - { - "total_amount": 5340654282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0COiH+rQ9m74sCnrGbA4flKE8OkLFHReBvhG8coWWTZ" - }, - "address": "noble1tzrry7x69sxyfrdf0td48psfa986af93m9s9r2", - "percent": "0.03%", - "airdrop": 93812.55528704933 - }, - { - "total_amount": 600074151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPa+LKg5c+0EdPoJPjgpGRkUshCIZVTRWUDieotyJ1X" - }, - "address": "noble1tzwauvxmequ4nnypjfyu5cazf0s9wlt8sp9s56", - "percent": "0.0%", - "airdrop": 10540.747723879102 - }, - { - "total_amount": 564182083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hZV+MbpvkG7YzhBBpIZXLvnu4+tSxqG6H1DKNUX0hl" - }, - "address": "noble1tzen7lhen29fh6u8gx99yc2ljw93cklj5pr38a", - "percent": "0.0%", - "airdrop": 9910.276917153227 - }, - { - "total_amount": 7011571004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avg11k1oScoPPq0Qix5teGsGs7mvZgAuatx/zyFCg51E" - }, - "address": "noble1trt0psa32cgf7fjrstk5aucuzsx3eh6trp72zq", - "percent": "0.04%", - "airdrop": 123163.44734740909 - }, - { - "total_amount": 65489109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwOeK+EZZ0drMyNhmn59VVkEEu+befU0faINcgk+jbnE" - }, - "address": "noble1tr3wm3mdkz0tda6t7vavqnn7fe2g4un0d59kzr", - "percent": "0.0%", - "airdrop": 1150.3647932180643 - }, - { - "total_amount": 113807655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax1ypljxsZiktO87d05EApZb9oPIq7xGKXzjnkMhwm7k" - }, - "address": "noble1trjh0x2tzlz7nek2t43fzd44gk5dxs22asjzp0", - "percent": "0.0%", - "airdrop": 1999.1159065961303 - }, - { - "total_amount": 149383481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AouwVKZ3kDIt0lvKb/UA9uzTk6TXWXuih0AUutK9yep9" - }, - "address": "noble1trhw34pzc2wrkkxasp8hhwkaly9cau8zzn4snl", - "percent": "0.0%", - "airdrop": 2624.0316879369916 - }, - { - "total_amount": 6605366175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyA4XFqoDM6uiO22leIW0KXKJUu+jyWFpGeL1xbLJ3mS" - }, - "address": "noble1tr6najckswy2krca8ju7tqyamelcrmqzvcxfhd", - "percent": "0.04%", - "airdrop": 116028.15811761114 - }, - { - "total_amount": 88895266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A97FeGLt66mW1mGyfY4pYX0b2OFVvZi0FmnU+k1wF3Rh" - }, - "address": "noble1trm0mjpufne93rqrwavxklftdguuxngexush90", - "percent": "0.0%", - "airdrop": 1561.5113085468122 - }, - { - "total_amount": 215066396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcJd0dRKgzH3k2blMqdGmQCb4FEcJ0LetI0LZNO5kFR" - }, - "address": "noble1trm5aeaz3cczv76rykltts5uscjx9skrgpqcl9", - "percent": "0.0%", - "airdrop": 3777.8008273512214 - }, - { - "total_amount": 62357527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9KpBxhRyb7H4hnXsIqe4H9B9zvsmby3CsRmcJ4qbNYf" - }, - "address": "noble1tr759hwjstf6upjpwkkapzcm8m7gmp5nxqw5r4", - "percent": "0.0%", - "airdrop": 1095.356231720069 - }, - { - "total_amount": 113253645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7G8G3Qy7fxzxAzcheDWysy5TvQTl2ZhM3t1MnqpEBwX" - }, - "address": "noble1tyq3v8raeuw2d94klv2uct6nrgr62g5p9kqx6w", - "percent": "0.0%", - "airdrop": 1989.3843098646685 - }, - { - "total_amount": 17699955253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhAOtvBKtKkde3DSC8L472HBfBA3WQegr3p8j+ciA/ln" - }, - "address": "noble1tyrlxw0ew4mdzxkuufw9883nqrcnse2kdaak49", - "percent": "0.1%", - "airdrop": 310912.84757876815 - }, - { - "total_amount": 50009094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An8FtUQO3YUv+ICDPH2w0Kmv/bKgs/C8WnQsI9xkTcAR" - }, - "address": "noble1ty5r4p80cna0hvfml8xfx6sudew3w6z75n0rdz", - "percent": "0.0%", - "airdrop": 878.4468434031181 - }, - { - "total_amount": 75182940228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9IV88qu0HVnAGLYp7q3tmc71XFCHJbtMqmyYp5GChGL" - }, - "address": "noble1tym5h4jvguged726wl6xkek8uv7d7mqppjczyl", - "percent": "0.44%", - "airdrop": 1320644.1316663707 - }, - { - "total_amount": 101667467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Hz5KVss7e8LcKy8Lofo4gDIwuX3uRljCAYB+TebXfm" - }, - "address": "noble1t92x9hydetn4w8p6gaslunfcdpha7v9zymtvts", - "percent": "0.0%", - "airdrop": 1785.8644962242404 - }, - { - "total_amount": 7090898721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A68KlGkChaTbTsSTzjaAZLgjHv8kyY7QqomcKughtVps" - }, - "address": "noble1t9dgdhxuvtdwjld5efzmm054z0mfn3v2rrpwlv", - "percent": "0.04%", - "airdrop": 124556.8975585452 - }, - { - "total_amount": 89799164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqYP2mgj9nN3YeMOl6opBvcqdCkVPlo82HgDvtfnGGWh" - }, - "address": "noble1t9dt80qe6pcdzchf3s59xkhsltvjrgveywuztw", - "percent": "0.0%", - "airdrop": 1577.3889476189854 - }, - { - "total_amount": 58917317370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzWku79EYnUQasiaHZVFcxxb7K1vVfT/dAoDUGWo3RXA" - }, - "address": "noble1t9dwh03pyhe94u6x9d7a3d48dd2kcl63lj6qkr", - "percent": "0.33999999999999997%", - "airdrop": 1034926.3968960567 - }, - { - "total_amount": 5859234184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9qrsguuWbebg30eybgsG6HrXqfn34dB2d1Rtbr5+3Qc" - }, - "address": "noble1t9wjeq8ls3vw56nsgdhppeqvuvt8m42r3mdc70", - "percent": "0.03%", - "airdrop": 102921.79605762193 - }, - { - "total_amount": 86360886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AntiID951XnZ+ioA7KH3daPGJP9FQ5PKFT1zVkIYFqFJ" - }, - "address": "noble1t9khn008l8fj2m5gms80ysgf3zh0sxa76jt3vx", - "percent": "0.0%", - "airdrop": 1516.9930433092138 - }, - { - "total_amount": 1273269595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuEkKPVq9I9hSwzA5a6XsaZbxRcpk93BthPQuc/nHnhd" - }, - "address": "noble1t96ycna3h45sanxy5c6tp80af4f0x4q6lklhs4", - "percent": "0.01%", - "airdrop": 22365.92521610003 - }, - { - "total_amount": 405998326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiwXIWYedcp70BxRDvOmEw43So7lfa3tK/rybUxG8Z6A" - }, - "address": "noble1t9aga7cs663tyscjewed54aqm8hdq5znn3gcq9", - "percent": "0.0%", - "airdrop": 7131.661851375475 - }, - { - "total_amount": 97786833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJ/eqoqycnuScKb+FCsiI0xePMXko9VLGoJnOUw73KS" - }, - "address": "noble1t97nkssxvd77wy9a7qhcvhrzjjh32pt9r8e8kg", - "percent": "0.0%", - "airdrop": 1717.6982805414925 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzV4yRxhM93VUKvlBhk5fx6BHPYEwvW1gp/HLNZIhmQ+" - }, - "address": "noble1txqtxjz9wja62kx7nuf2lwfyq5sv57x66dr5kg", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 165497086, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AprkUOIs3DmyaNhc/cQZYtNeC2pUrcSqhBp5i1YmU5r4" - }, - "address": "noble1txyp0z2xeqreageeu5gx9g2aphu998ryp0f0fw", - "percent": "0.0%", - "airdrop": 2907.0791162326273 - }, - { - "total_amount": 5010798511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtRK4SUWdGREoBTm1dHrhUoq7lnVu/MEm77boeuHd7mL" - }, - "address": "noble1txyey2kqqqdk8zxu456cwuakv04e5ne4h0az49", - "percent": "0.03%", - "airdrop": 88018.39391285503 - }, - { - "total_amount": 6955823796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0SC2fOc2p8olRUrRyXK2Qwvs2Z0jluZ0Vu2SXQD+kul" - }, - "address": "noble1txx03unpu2slhhlyzv9zruj9r63znrptmfse24", - "percent": "0.04%", - "airdrop": 122184.20627385282 - }, - { - "total_amount": 51373149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+GUBtpwjbgEJOfzmpqJJY6QdICNYf/kP3VpYjhMKzJw" - }, - "address": "noble1tx8ap06w5vxa0uljpzjdjwlexh6a2ley8tw6h0", - "percent": "0.0%", - "airdrop": 902.4074816218038 - }, - { - "total_amount": 303263122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+i6uUYOwkeO78CK11O/xd8l4mufaChnZCDKrL7aC5vg" - }, - "address": "noble1txgyctduhfzct0q5nau9pfrm2xeut57wlpajfa", - "percent": "0.0%", - "airdrop": 5327.041762473736 - }, - { - "total_amount": 764094888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJLYZHyOX5a8BLDJktKR4aZTfOA8eXBTmyUvU1IFJ35" - }, - "address": "noble1txgcart46d7npuj3z6t44xy0cddl4svr6dun2r", - "percent": "0.0%", - "airdrop": 13421.89367445967 - }, - { - "total_amount": 58322426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UiFat/04/FWAqcRFpDrI8s8gZ7qnmS2zndiyB0ii88" - }, - "address": "noble1tx5fu2d7vdyjn9jt7ppm9447n5xzj7m07r077n", - "percent": "0.0%", - "airdrop": 1024.4766885661224 - }, - { - "total_amount": 6467720105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2rP2hWk3Dp7jPk9joaNzcecBVp+nHbofigtVqc26BIU" - }, - "address": "noble1t8z4kkq6wegusm0zn8pfde8zv3s54e85jp97nx", - "percent": "0.04%", - "airdrop": 113610.30276317612 - }, - { - "total_amount": 129627802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlKZP1+mpd/OLzRo+q7nYkOWkD8n0LIssilVtw3+EiFa" - }, - "address": "noble1t80cyngstlgalc70kp6gfvw3krn4m3emxgef5p", - "percent": "0.0%", - "airdrop": 2277.0085273727295 - }, - { - "total_amount": 310773252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5OV/BMVdl4+cySzGihZiuLKt1tG4RiV5nZorI8q6Gd+" - }, - "address": "noble1t8nwpjnu72wwxgw8u0s7ut9qt6dqhp6tcr8237", - "percent": "0.0%", - "airdrop": 5458.962768522097 - }, - { - "total_amount": 100888819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnN/8WZEOJG3QZFtbDwsLk/e7dj3PX0Z3FmhXyacQQC8" - }, - "address": "noble1t8nwvnx34zxrjyuzdrt3wvpn5efsewn7mls64x", - "percent": "0.0%", - "airdrop": 1772.1869663389327 - }, - { - "total_amount": 681761320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AitzffwPdvYqt3iZM61K/cvTaI1CW6vOLiHnkvk2H82b" - }, - "address": "noble1t8cgwzfcfcdlzqnxn4us6dhq90l0traddtv6fy", - "percent": "0.0%", - "airdrop": 11975.643460134334 - }, - { - "total_amount": 1826937663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyhT6+2CA316zH8N805M6d9/aTH0oV1fdSJtwWH1efQ9" - }, - "address": "noble1tgrxnrpem5r4wj872pxmep644f6jlugyqh7z6r", - "percent": "0.01%", - "airdrop": 32091.51565826447 - }, - { - "total_amount": 1724096573, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Thon2gMKFE8GaPgzqhJXbrN2vONuHyhoHvnZ8OyR3H" - }, - "address": "noble1tg8wnz9s2gyfrfwqhzlryc028sjspa9y34kh0c", - "percent": "0.01%", - "airdrop": 30285.035603204164 - }, - { - "total_amount": 296951631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4HbNaGRSUUYnF0gTyVdE4voKN/ugQCyWew81272i3Zw" - }, - "address": "noble1tg4z0qzzszvav5jwz50g8ywflsq6avfmxuexkq", - "percent": "0.0%", - "airdrop": 5216.175739863584 - }, - { - "total_amount": 303066377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxQD8GvDD+CFvQFPFPPC9kdcclTFQEYk5/gFAz/siiyo" - }, - "address": "noble1tg4dp58w4k24dhucz3nzrzhhap7ey4z673y7z7", - "percent": "0.0%", - "airdrop": 5323.5857905617995 - }, - { - "total_amount": 1724992149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayucxu89ZW/u7DUdpJaZWfAykA9cn2q+HZrFKY8HKtqe" - }, - "address": "noble1tfze2sxuqwwz5fxj0quasx5curjwlwm9qpruew", - "percent": "0.01%", - "airdrop": 30300.76706017132 - }, - { - "total_amount": 1622870635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IXb2zhYHFDS+YEUYUSHRjQItuhSCxpT/dF4s0cV+YH" - }, - "address": "noble1tfrlgj4ks5vt4n5jvey93hxa5f5hjq549fhx9m", - "percent": "0.01%", - "airdrop": 28506.926891484254 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7HxoSZflMrxPBFkSQe1EukJN6UOu2nuqVA0V/cwUJ1t" - }, - "address": "noble1tf80rkkt7mf3k2rktys0hy0c88sk3c54qlp0d4", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 184692400, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au3I+GvG2VDXPwikmvlHNbPNt2NNvWqXLvo0EhZQ3LYe" - }, - "address": "noble1tff24nnua4hxk93lktq96f86w2jlzjq4vd7uyv", - "percent": "0.0%", - "airdrop": 3244.2590497749484 - }, - { - "total_amount": 541740209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq19pBjv7OR4z93qxPJGCH4ME09Al6iLyL8nvpU1D07p" - }, - "address": "noble1tfsg6mhaaun7579flxynyvye5j2uy5jx0plp4p", - "percent": "0.0%", - "airdrop": 9516.068748227983 - }, - { - "total_amount": 1279242391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arj1iT6Zl2XLHGqzVgswDe2NIjWplb4xqRFpccWmD8c2" - }, - "address": "noble1tfsez7lcgjnu4e9672e8aa0z8gvwhj92g44atp", - "percent": "0.01%", - "airdrop": 22470.841809719797 - }, - { - "total_amount": 131832663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtrKQ53g5K++h/vXPwP9x1FfphQuIT/gRYn/pOGABBOJ" - }, - "address": "noble1tfknxt857r4lm8eh2py5n3yq00t3mq5eqgq245", - "percent": "0.0%", - "airdrop": 2315.7385468686366 - }, - { - "total_amount": 140000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXgRqTucGsitchiCo0uveiWYYoIAUxH4tHciNSx1QWJ" - }, - "address": "noble1tfek0vsfztecu7cdm63v8ylxcav572de5crhjk", - "percent": "0.0%", - "airdrop": 2459.2038815267583 - }, - { - "total_amount": 1066252969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au1JGkGcXEK7QQe2auUsLvvzuGYgMe3DC6c/1QOegkWn" - }, - "address": "noble1t2z4nlx9p3a9q5lwfs06a70qum7lqrgv0gr3mx", - "percent": "0.01%", - "airdrop": 18729.52457181593 - }, - { - "total_amount": 500322475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+lrTbQWuanAAXlApwfJyj/gHBO6eR44F168i88yAWFb" - }, - "address": "noble1t2xzqpyz2zn0cdjg60j9r54rg3dlqkuvfutxlw", - "percent": "0.0%", - "airdrop": 8788.535518107677 - }, - { - "total_amount": 125000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au0bMeS2kyie2/96rczpQ44I8BpXkowMgGP+bO7nwMdT" - }, - "address": "noble1t2t8uc9cktykl9hq39ue40pjhjx99qc4sfwqc9", - "percent": "0.0%", - "airdrop": 2195.7177513631773 - }, - { - "total_amount": 224451727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhYXA/5l7u34iZQeSEiuqrAIabmakaOiUrFShPZYybr6" - }, - "address": "noble1t2vmw4vdy74yfuyx2q83750grwvqvd4d5c2ltc", - "percent": "0.0%", - "airdrop": 3942.661130384174 - }, - { - "total_amount": 175873119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auhxj2753YcAI9a1Vu0rp2hx90Jgkw8sWU2Qqruuy5bi" - }, - "address": "noble1t2jhctp5yzlg6dqr856y9f0jq0c3ut77lck4f3", - "percent": "0.0%", - "airdrop": 3089.3418350072684 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxHPpSC7Ci4Karw07L++1gp3KHmoIHHKxVH6wjBhSBmJ" - }, - "address": "noble1t2nsq5mu2mk0t2x9ad632pjsd9sctq68cepckv", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 109691877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnWKnpdcspilHjwwP5Yj+dO4HuVWftRbzztlOYgj+gG+" - }, - "address": "noble1t2amw6uvscpkrzjsj6yy6gkxttp4zf5y9xmg7t", - "percent": "0.0%", - "airdrop": 1926.81921207397 - }, - { - "total_amount": 52677289, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A38zX64+G7aDZB6h5gpt3XeO8RdB0iiM8oj8rN+91pWE" - }, - "address": "noble1ttx6ypnwft6wxndrcjcdxspjmu9rszryhdm7uu", - "percent": "0.0%", - "airdrop": 925.3156684079058 - }, - { - "total_amount": 113471695, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A615Rpr6TM4FcnS+1w3XxvlpIPtPSxijHeqW9+BhGV3Q" - }, - "address": "noble1ttgg269vh955cphw4hd57ultdsgxzflx5zs9xw", - "percent": "0.0%", - "airdrop": 1993.2145199101465 - }, - { - "total_amount": 5479500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1FnHukab7LKvZ6zeTlawdOFFLBmA6+N5jIkD7wuF+90" - }, - "address": "noble1ttksrf2j4rqdeuvjl6q39wvcedw05y6g25s8c3", - "percent": "0.03%", - "airdrop": 96251.48334875624 - }, - { - "total_amount": 374168170, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AppRr0iV2vh+NouxS3LtQxsATzwrj4mZfZsG2X3tlsZT" - }, - "address": "noble1tvgkgw26sl0u7gw2cm63397pq58nqqv4vcggm3", - "percent": "0.0%", - "airdrop": 6572.5415429126015 - }, - { - "total_amount": 31060122884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZHpIPBE4EC/l+MIlVAc7v08Li2SSVAZWFrB/c8Tk4I" - }, - "address": "noble1tvu6ahf8vtj83f57xze6x2wlxu3f6e8u623u2n", - "percent": "0.18%", - "airdrop": 545594.1054073636 - }, - { - "total_amount": 286422209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkVaywV4WB4xkCTd904xlXSfeXPvWHkYa/gDgj4DV7Bb" - }, - "address": "noble1tvak44ktk0wl9q3y6477qppejarmqhgkcwl8mx", - "percent": "0.0%", - "airdrop": 5031.218629487632 - }, - { - "total_amount": 105425626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlQABafaoRkGRsYHhzbfMI+ihh4KrfrFtncKt5HBApvP" - }, - "address": "noble1td8vpehqf098vjfq4nxurwr02y5wfeu4rwfhpy", - "percent": "0.0%", - "airdrop": 1851.8793476542028 - }, - { - "total_amount": 54951151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkIVc3C4kQozdiEoDxDDn8b6b6oPpCuryjt8zyrm/uMr" - }, - "address": "noble1tdwch7stw293wplxkcjt3udrtp67lawhn20mjf", - "percent": "0.0%", - "airdrop": 965.2577416683074 - }, - { - "total_amount": 322398065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AigLlAeAUzYuB2echyarTzlvLvPLKkwytbT6MAD7fHYf" - }, - "address": "noble1tdnzny8pmvxrzjan636x9tw8yqfys3q07gv6fm", - "percent": "0.0%", - "airdrop": 5663.161234605116 - }, - { - "total_amount": 52779986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azx4XjgOhsUdPKjbCx85XEEmkwGfNRtOkziq/EQCGsf9" - }, - "address": "noble1tdl37jcg560r28tc6d8285x6camryg2r4sevws", - "percent": "0.0%", - "airdrop": 927.1196174151999 - }, - { - "total_amount": 1314831936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/tEvpfXtEpn/VQLIvETQ49S3kNtlMICW5ngsk4ERToS" - }, - "address": "noble1twzy9l3zy7rj2xkdc8w30mqwku0hencx7h4yg9", - "percent": "0.01%", - "airdrop": 23095.998575475303 - }, - { - "total_amount": 81851227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9sLiNchaCs193oZnX4iIF9RecQ3s0KOwxn/nqJVj72y" - }, - "address": "noble1twrk88umj59pn40a98eggcka8z892ygnrfrcce", - "percent": "0.0%", - "airdrop": 1437.7775367580562 - }, - { - "total_amount": 317408013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuyGzhQfjXYmQwD7toGZmBKXce/K+1TB6X6YsLsUp9gM" - }, - "address": "noble1twy34ux9hjdj7l6qk55glmmkhgnsv09vs8n2m0", - "percent": "0.0%", - "airdrop": 5575.507268552114 - }, - { - "total_amount": 502131429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A710Ectx2KPTfc3DFiWvU8ymxrPF0MMjsDzHeFg8eXLD" - }, - "address": "noble1twyhfj2f5mspz946y5aj63mecl8fsfd092cdhe", - "percent": "0.0%", - "airdrop": 8820.311137381272 - }, - { - "total_amount": 149555431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A50KkkxdYGZyyfaBwaN95OtMs3nHeQwdw6jx76WYtSaJ" - }, - "address": "noble1tw8s7t2uevzlx7wfdvtpzmqat5m4q50nfygpgt", - "percent": "0.0%", - "airdrop": 2627.0521172757667 - }, - { - "total_amount": 91632969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgqMD3oPPzZTIc6JXQzIycJXl6ozryKLvQq230cJQge0" - }, - "address": "noble1twtjfyq0plvr5gw7pyghe97vc8kqxqq78par6t", - "percent": "0.0%", - "airdrop": 1609.6010931472938 - }, - { - "total_amount": 6251300876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArKrBXKYRS76b/C1FLVJ6VYAqqZ2DFa8QmqHzoxmdFE6" - }, - "address": "noble1twvjhvr3awwclz6dqxyfqna5h8nqg54wvu2lcz", - "percent": "0.04%", - "airdrop": 109808.73842036306 - }, - { - "total_amount": 95227709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/h6mfXjcK5t1RmcMv6Fu/7bIGe5XJjUuklOERJs3cyX" - }, - "address": "noble1twjpqsa8q6rypq6vdr25wjh3s4hlwu2wrdvlfy", - "percent": "0.0%", - "airdrop": 1672.745368583576 - }, - { - "total_amount": 2844092669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3l9HVZAkJWU9zHutGp44tDCnh9HfB3EdYaTjS8ICyVY" - }, - "address": "noble1twnewsp6l7jyzhwrl9ceegcd5kcekpal59f3h4", - "percent": "0.02%", - "airdrop": 49958.598078761424 - }, - { - "total_amount": 7985438446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArSkyFHSG41XoQatNMPMM3H8V+7ld1Or+ZjgRjycsdRF" - }, - "address": "noble1tweud6hxg6vp4d6n8dpkmzx6ah5uh9s9pc8sfq", - "percent": "0.05%", - "airdrop": 140270.15158640148 - }, - { - "total_amount": 180718333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmE36nHTa5TZuiDudshkb2s0vZRPU7fxyb2IMXG72Xbh" - }, - "address": "noble1tw6sxydh9cuactcagxswgs4msq93y45nttj89q", - "percent": "0.0%", - "airdrop": 3174.451614118895 - }, - { - "total_amount": 266863871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2lPVRVDmgZaJDgHr6SnvzkwUwTqb7IExjvlNofBNTB" - }, - "address": "noble1twm0ktur86488px55acueat3ky3yh7wwxc69pf", - "percent": "0.0%", - "airdrop": 4687.661910017545 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1l1rNBDRXkmyZfJmsc1xxGxG1Lc4a0M7R7QyeI+blLN" - }, - "address": "noble1t02em43ts529vmnyng3y9wz48ct938jn6lx8uc", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 173863099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/8PYh0GRXNslU7SOSANWAPtA4wND4csaQPdT2wa/WKw" - }, - "address": "noble1t0mxq7edxf09y6we3a0qdqrwrf53kftm42c09e", - "percent": "0.0%", - "airdrop": 3054.034342250508 - }, - { - "total_amount": 638555191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApY2Csk727UX5QM6sNdCfAr8b6By+86nIFlpxMp6Yzkq" - }, - "address": "noble1tszn4yfqgkv8q847f895ya35czq96nzeyjg7lw", - "percent": "0.0%", - "airdrop": 11216.695744830435 - }, - { - "total_amount": 815009710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/0T414LYB1h4Gsf6Wd8RiKpvhylRQk39WkqKRLVBCnH" - }, - "address": "noble1ts0dz4q3z57t7qqxmt45nd2dzylx4rdrc8kv46", - "percent": "0.0%", - "airdrop": 14316.250302242843 - }, - { - "total_amount": 390326292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoYbgGJBAxkf0nt+IKLnDvpJg+zz34c5Wg9VlXYN8xnp" - }, - "address": "noble1t3f4juxklect7f8fv9ehzsp22n3v7lyeredyl6", - "percent": "0.0%", - "airdrop": 6856.370945345336 - }, - { - "total_amount": 381590000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwvgOztXIUnlNPlSSPn1CZTIIO4W8LxmKXM9cUOzDfF2" - }, - "address": "noble1t3ttmn3e005k0rje2kj98vwpmnt0zsdxm0gapa", - "percent": "0.0%", - "airdrop": 6702.911493941399 - }, - { - "total_amount": 90574876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anxnh9aXILV/lMDxXHV6cGTvj3S/z2eFnEZGBqF0OHm6" - }, - "address": "noble1t3vke6qjwlh5atkwwhndhgk5uclnku9pz46ljx", - "percent": "0.0%", - "airdrop": 1591.014904485749 - }, - { - "total_amount": 262950233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A38SUevcGo3Fl1jEhpCUp4d4XIqTTt6ew7UtkHyChY5H" - }, - "address": "noble1t3eylsjjqqg3rlt32gw37658xsg6t0m5dm3lf7", - "percent": "0.0%", - "airdrop": 4618.915954585469 - }, - { - "total_amount": 51450108, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4CDNyfa0FDTLr58mxF//oF2sQp0wsR4MNNyDQV2ReMz" - }, - "address": "noble1t3usy5x8xfggzspknnka02ny7u65u6k0eqcnvv", - "percent": "0.0%", - "airdrop": 903.759323561221 - }, - { - "total_amount": 354143554, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzqBvcyuMScUGYI6sH7gfWxSjJbUOUrK6OvO8aL/eOPb" - }, - "address": "noble1tjhfuchkfdz973at5q7xdvux2mcfna6zk4lc7y", - "percent": "0.0%", - "airdrop": 6220.794304389152 - }, - { - "total_amount": 1080101348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMvSiZadit08NTsITb63TrXHc5AiSLIQ+1x0VjdoaI2" - }, - "address": "noble1tj6h9ha9eg4tdnsjqe04ulqa03fcqad2k3gjhp", - "percent": "0.01%", - "airdrop": 18972.781624599174 - }, - { - "total_amount": 553622357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8CpU2xDBfoQNPfkPMJ0vKW2+hcierADaTdmgk/2Kjk8" - }, - "address": "noble1tnmmulfhrmsgksmkvggy2vylrq47qppfvrddly", - "percent": "0.0%", - "airdrop": 9724.787494531378 - }, - { - "total_amount": 86291202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayz7FABmkEb87YR7kZTuYAR9GeoUizz5FZn7rnr8JByt" - }, - "address": "noble1tnuqj73jfn3724lqz34c27tuv80nv336wrfrds", - "percent": "0.0%", - "airdrop": 1515.7689921429258 - }, - { - "total_amount": 2585367689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai1LMoDkhsbh4O5xoUnpzKeX2MiuPdwY7AflFJ1dtHOA" - }, - "address": "noble1tnls6mqv6efye6lw4u9qz6rhkajwxj08k8ucej", - "percent": "0.02%", - "airdrop": 45413.901828304755 - }, - { - "total_amount": 986379198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4nPSut5+lYFV8a/eeoA2skVML5kJ4uRl0vCZG9xssn6" - }, - "address": "noble1t5rtzvp5tcavzjf53zw2kun0eyj8jppfc3s0eu", - "percent": "0.01%", - "airdrop": 17326.482516991793 - }, - { - "total_amount": 54298313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoaBrLwf0+QlltA99X9mI2+ykO0O1eJdVPT337yfpb6l" - }, - "address": "noble1t59ezz2x9svp0qurg483m3e55dckdapz42pswl", - "percent": "0.0%", - "airdrop": 953.7901577853919 - }, - { - "total_amount": 12891460427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A781Yzzng6A9uERGmBexbksyKpycPYVHfnzZm5ZXVA4s" - }, - "address": "noble1t58yw8hs53hkaq6kf9cvha26dy6kc3kqddqgg8", - "percent": "0.08%", - "airdrop": 226448.06800447864 - }, - { - "total_amount": 202177595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzjrroYY8Mo8Z+IQOKEYOFyI4LsOhRUGGTZhhe3iE4Mi" - }, - "address": "noble1t5g8m2xwetptkput9cdtcckt66h3v7475djyq9", - "percent": "0.0%", - "airdrop": 3551.399474155322 - }, - { - "total_amount": 149047241, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4uQN0Jnhc8S9gSuFT8x9Qq82Qv+CzBKj6/HYfmNDpSe" - }, - "address": "noble1t55v93qdndvwk0mqqw3eawwkn3gx23z2cs8ka9", - "percent": "0.0%", - "airdrop": 2618.125382843245 - }, - { - "total_amount": 1391025540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az8Y2otvkzYECQJuGPXwYIiru4dmHFV43yaKCHnUJrS/" - }, - "address": "noble1t5h02kzaxdtv9gayr02z3xkvjp368ha9xygsc3", - "percent": "0.01%", - "airdrop": 24434.395766220397 - }, - { - "total_amount": 127820233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az/1NpZ9Vi8ml3aKf5V+RxoGS1jdryNzDAKBwckcIt8i" - }, - "address": "noble1t56xplx0uz2esv2vectm589037zd0fr6p8qumv", - "percent": "0.0%", - "airdrop": 2245.2572366518193 - }, - { - "total_amount": 572549811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjlKaI/k7l3ETVDkdIH20+doqsmghD9N5W/wFY1dYe4R" - }, - "address": "noble1t42jyp8j00m0paz5ezuu4svx2rycu5n03n2e07", - "percent": "0.0%", - "airdrop": 10057.262268418657 - }, - { - "total_amount": 89222105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AozHtS9OqITY4u8dLRAc/fRTbYCCcSKCwXkfWolLp0xN" - }, - "address": "noble1t42n4a2enlvn8zkju4v5zv30tyzl457np20ldm", - "percent": "0.0%", - "airdrop": 1567.2524780999145 - }, - { - "total_amount": 3651936922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuPFhwjyyDGKTvy9wNDUjErYp0+uM2wb8nPmF9FgE7OE" - }, - "address": "noble1t4du4sg6g94f35ac48ry0n4kaxkev6mmh4j03r", - "percent": "0.02%", - "airdrop": 64148.98181195203 - }, - { - "total_amount": 272418160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArZgmfSqUgFn0jTcQCc/bTvKhL0kxBqGS4DgR7JyC4cN" - }, - "address": "noble1t40r866sz6mp6d9eas5spg754x259k5drv6njm", - "percent": "0.0%", - "airdrop": 4785.227117645554 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ZSti6/HLoX/BM/9+QxK00+oVVsz1711AiPYws/E15R" - }, - "address": "noble1t4jyxa2gs36yt62zyayg3e3n74ygrpqn0ewy7z", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 1994718560, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsrsGYP+IDhWilBHFhTinuaG24e/lCP7BF/WIVqf0b1M" - }, - "address": "noble1t4nzf7dq277w8dhmfkhhjanq73664wy4lnara2", - "percent": "0.01%", - "airdrop": 35038.71160932476 - }, - { - "total_amount": 197804877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arb8J+rjqWgh7sOsHKV1TTnj2Fsep9sN8Np97XpJj5UE" - }, - "address": "noble1t4exethzm5264297lfketfch2vej43kla4qkqa", - "percent": "0.0%", - "airdrop": 3474.589437880879 - }, - { - "total_amount": 50541633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6IezN8blbqAiCRmqQuwkWYXbJk7aope+gEhpgIZd8vc" - }, - "address": "noble1tkgp5nure9d85jf48kmyqwsyfejapdprpw0de4", - "percent": "0.0%", - "airdrop": 887.8012860878637 - }, - { - "total_amount": 7554891496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3AfbU8mTlVh0gWUrIxTcLZ98DY40JFyoNKsRSNDoMSV" - }, - "address": "noble1tk2f7klrtgucs9qn8n59ty863w32vkn5dzhr2f", - "percent": "0.04%", - "airdrop": 132707.2749391193 - }, - { - "total_amount": 1997590443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Vd8J999nPLU8T4P+UOuAIruPfXDrUZX1SBZ3Omwo+l" - }, - "address": "noble1tkvgtvzjur36f650ytra3umjwkcr730hxyf47s", - "percent": "0.01%", - "airdrop": 35089.15836518827 - }, - { - "total_amount": 56267940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zPzOQrVf8hAYaTrSf024ng/JwmXJRj3n2AxqBLASFK" - }, - "address": "noble1tkwztc3e046pp7ayfl2h7a27685agxm94ygf93", - "percent": "0.0%", - "airdrop": 988.3881175251055 - }, - { - "total_amount": 53329826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQquHbxNlxfKXKSF/ueNvkgJWJMO+sOcLkbXWwGDu/l" - }, - "address": "noble1tk0ze07577qyl7738vc3g9nykhz85hea22x0vt", - "percent": "0.0%", - "airdrop": 936.7779650024761 - }, - { - "total_amount": 127860635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYyhGHrKyt0N88eCwDMeXSkt9YFCtdLy4kL85h0k9Pv" - }, - "address": "noble1tknc66k7eycd9tllrsstgrag5cwv3sak2f4h7z", - "percent": "0.0%", - "airdrop": 2245.966927760544 - }, - { - "total_amount": 50155594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2V6v17e0JYDsHfIsX+w0UI/mL0PcLKX78j+jPuOEZSD" - }, - "address": "noble1tk4e0cz9n4cuwvnvu0u8rcg7xv3dsun9a3r43g", - "percent": "0.0%", - "airdrop": 881.0202246077158 - }, - { - "total_amount": 531287885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsenG2h3XmR/SzS5RZDNwuDfwnWhLM+UmyXbPpvOKByi" - }, - "address": "noble1tkex2dk49l8xncsra03x536yhqpa0gja9576jn", - "percent": "0.0%", - "airdrop": 9332.465921429586 - }, - { - "total_amount": 221531700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArjSupdVlTZb74SyVcREZUldf2FDDzOJnXnYfLCNwn+0" - }, - "address": "noble1tk6qcv5x3fx23a46tdf7k85rnphvwss0a6sns3", - "percent": "0.0%", - "airdrop": 3891.368689437296 - }, - { - "total_amount": 163219746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agqz/LoZ8JpGMkdc81hh8oynjKWiGkcXWaAhSlltnVjK" - }, - "address": "noble1tk6taz8kytk0yqglcl2zx9estxw9t8t4rlmqk8", - "percent": "0.0%", - "airdrop": 2867.075949321512 - }, - { - "total_amount": 50001081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajc97STOaJ+5n7p9f23WcBiOaETYTUFqjet3Kwv+wQ3D" - }, - "address": "noble1tk63k9scclut5v73wf93ezf0y6n8daa9jp7vp3", - "percent": "0.0%", - "airdrop": 878.3060891123847 - }, - { - "total_amount": 50034913, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoActdvPmhLb1tXgVHYgBQkz80Ik0ZuulxcR4epxQa62" - }, - "address": "noble1tk7enahu86762uvvpvxyqg8nlnpv9qf0uhd5nj", - "percent": "0.0%", - "airdrop": 878.9003732960978 - }, - { - "total_amount": 86683030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkMX+uO1Hno9LVUgXrg5w10Npc+KdEmftHJVHes0E3dV" - }, - "address": "noble1thyvwczy95vldgv8rcydc0ljkndyxap3djmfnx", - "percent": "0.0%", - "airdrop": 1522.6517417035748 - }, - { - "total_amount": 184481358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPpuKBA/+dUHw4rSKPmJFu4y4nfC5AnQDsh8yamdZR3" - }, - "address": "noble1th97mzr6gh8u3h8hxqcuskwcjd3hys3zylcpea", - "percent": "0.0%", - "airdrop": 3240.5519404494826 - }, - { - "total_amount": 6973276923, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/AM4InmoL9wtfjYPNZrMRxrl5X66wx+MmSr14JZ7wtU" - }, - "address": "noble1thxwe4r4036lezkpuajj9uufvm0f7rja7z2vh5", - "percent": "0.04%", - "airdrop": 122490.78340001838 - }, - { - "total_amount": 1540858612, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32KraJQmeaW6RhH0VPT5O4EBnaw1rfjTHBrAQAKgvcR" - }, - "address": "noble1th8ktg3ulh0pxl5ym7csmemsc00ntnzc5tkwhr", - "percent": "0.01%", - "airdrop": 27066.324853673814 - }, - { - "total_amount": 109029060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApOf++GHSd375mHni0dEn9rYfPnskIao43q6sPYjT6dI" - }, - "address": "noble1thfa5lf0e42r6pd6dzxcjr0kt6zaj539pa75dd", - "percent": "0.0%", - "airdrop": 1915.1763396515275 - }, - { - "total_amount": 2393042181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arw3m0y8+dIa3FjKGwUwhUvNXPad84xoQpw80emf5+MI" - }, - "address": "noble1thdrv6vxnv9ywhyhadurlfyqw8huvzp2t70su4", - "percent": "0.01%", - "airdrop": 42035.56157266043 - }, - { - "total_amount": 500418847, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akc9F97QqgfVkoXcVjkSEY9E18Lhd1/jGxA3WhgRdkcu" - }, - "address": "noble1thsnkcn25x3rgzgaskn6qaa42wgpny2gmt0t8k", - "percent": "0.0%", - "airdrop": 8790.228363796752 - }, - { - "total_amount": 2285116744, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHvl5VbyLhMdkrsF1g1i7plnKzi1BObsaamS47YucVs" - }, - "address": "noble1tcqksrgkxv4e8dak06s2trzcj62tq88gan9fgt", - "percent": "0.01%", - "airdrop": 40139.771189904204 - }, - { - "total_amount": 1080935334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Kqb5QcG4N2mxzOKWHb/7jy1F1UVvhHYghSodpptwR+" - }, - "address": "noble1tcgacu90hvg8wgjruuejme9ljn8z3tqvez0mcs", - "percent": "0.01%", - "airdrop": 18987.43120751588 - }, - { - "total_amount": 621777105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+n8a7kjwM+WVRW3xD5+mlKpanQnmZCE38oJHwU/TV8p" - }, - "address": "noble1tct0xyt4xemdxas4c05ackjk6nenhg6wdjm8h6", - "percent": "0.0%", - "airdrop": 10921.97621471765 - }, - { - "total_amount": 380729949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5oJFsqPKWLl6fRkU38hDAZ4vVMONwMOwCs87+xGTcXS" - }, - "address": "noble1tcs6n354xdp75ms2kxy0emj585w3aavh7d65dg", - "percent": "0.0%", - "airdrop": 6687.804059959178 - }, - { - "total_amount": 1817168435, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+NlP/FADF8xsIkR7ApKCg0/92KjZz4LnACKZJyfEhEc" - }, - "address": "noble1tcnleshp8k5p052q6s72qjfp4vw4alw4lc8yye", - "percent": "0.01%", - "airdrop": 31919.911919570754 - }, - { - "total_amount": 457856897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtlQsblDd8vVfPQ3wWXp29k7CYv9YLmA0AdnSLX9dLcH" - }, - "address": "noble1tcu3cf77jfaknwdh2zvc2pt5uzgy8qacfux3u0", - "percent": "0.0%", - "airdrop": 8042.596130615696 - }, - { - "total_amount": 679212399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A73tWwUQ4qBuNaKCmkBGJsvxp8QaTcqM+mAwHfhDgUOi" - }, - "address": "noble1tc7f8dkyucn2cmvx6npsrfnfqt6dgvp907c4ss", - "percent": "0.0%", - "airdrop": 11930.869771442154 - }, - { - "total_amount": 124608479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ET7tKpx1FcrvaDgC5OMAXRVptE6D1sNHVnMGek7HB3" - }, - "address": "noble1tc76uv0malyrrlm9zna79m90ycfvdfggxpkmw7", - "percent": "0.0%", - "airdrop": 2188.8403944853258 - }, - { - "total_amount": 457553772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgDrwlEyXgkpqTFpXbhSTjePmuyBrzCKKtDvYamD/MrV" - }, - "address": "noble1te4f7geau7hfpymsc92th5w4atq567ylvtcf2t", - "percent": "0.0%", - "airdrop": 8037.271515068641 - }, - { - "total_amount": 294530716, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A18s6XfGYtRuqUXmG88NdxxyO07xcj9u17WF4sPzL28W" - }, - "address": "noble1te4jv05qzhtgcaew0wr2r6psktfv7446e3r7p0", - "percent": "0.0%", - "airdrop": 5173.650571543253 - }, - { - "total_amount": 601582847, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq6q+bo/+WkKZ0AjwON0SklseqW9lVypvPQzKwnM0PzN" - }, - "address": "noble1t6rr3r5gp94cvgmmspq7gx5tjl7tjhq57tlmgl", - "percent": "0.0%", - "airdrop": 10567.249088587987 - }, - { - "total_amount": 50913841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgGkjYc1tdwN2oCzO7WAZloPW/zKwaCdA3aeuAXS32rh" - }, - "address": "noble1t6w2t00nzvt9wgs44jluy7rj43nswt0r2een3k", - "percent": "0.0%", - "airdrop": 894.3393957902588 - }, - { - "total_amount": 81721269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arcc7kCA8wBmezLUGhwzuLNxZVK1mwRbBbgy7WSlb960" - }, - "address": "noble1t6uptc2grgupudp477ry0dxd6fzu5l2d9rfatq", - "percent": "0.0%", - "airdrop": 1435.4947280578026 - }, - { - "total_amount": 10000007185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5LQOPqk14kB1cUcrwh5BXDPX4XRBWqFg0cYuXJRf65V" - }, - "address": "noble1t6aa3ew9uxksrgzcssu2xu2acz24n89nz6c5hy", - "percent": "0.06%", - "airdrop": 175657.54631891055 - }, - { - "total_amount": 1732620784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+o/wXShRyeP63JBkjEkdWV4eSSHxEJL5jf5XoMHWn80" - }, - "address": "noble1tmqfg8easantyfegvcaka208lt5scq4ak2kj02", - "percent": "0.01%", - "airdrop": 30434.769694476687 - }, - { - "total_amount": 68945458, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw1138M316gVw9luZCd5wBnlM6ebfb/ei3QbHH1whVWg" - }, - "address": "noble1tmz350vkf4043wpl43la9qjdmf5us3hv6f6um2", - "percent": "0.0%", - "airdrop": 1211.078128051715 - }, - { - "total_amount": 175823345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj+B+8syepaLeNX7U3KXUhaHUIYLX7tiPiooLKaXRg8a" - }, - "address": "noble1tm3e8hl5ck4505qgjvcv6r6hywr3u0qx8kwkxs", - "percent": "0.0%", - "airdrop": 3088.4675177644176 - }, - { - "total_amount": 302394087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agc+CNBO6Uq5aoDJ4RCoz42cR0Lo6ridwSSW/z9lgSSK" - }, - "address": "noble1tmkekprx8zraurjn4ngd7yecer57ph0vnsn4lj", - "percent": "0.0%", - "airdrop": 5311.776517865289 - }, - { - "total_amount": 386032791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtFy+YWj5l2WSyC+TIz6HgOGkdkqnCpSctj6nTb0/8AL" - }, - "address": "noble1tmetxpc3kxdndehp03kelwr4nfy6fj5w74mt3p", - "percent": "0.0%", - "airdrop": 6780.952414455772 - }, - { - "total_amount": 55500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlMWNhnn7GKYV0fSN6AHqudxP4D/xR8pZROkDAS7Ujp0" - }, - "address": "noble1tmedr78juk64vgjn0kltcg36z86mwsd2uzape4", - "percent": "0.0%", - "airdrop": 974.8986816052508 - }, - { - "total_amount": 1237803654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Zaqq1lKOKiWkoyDECc170FodzNsK51jECtn/HAjiOy" - }, - "address": "noble1tma8t5lh0znus9layugvlh4vg7n0j22l520qj9", - "percent": "0.01%", - "airdrop": 21742.939646320036 - }, - { - "total_amount": 117027998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1PPCPco2leAv/Aq7o8GE2DbjL+vm8QJNibufxj/SsEA" - }, - "address": "noble1tug3p667njqqlgup570uurdk8mvy3tyy2dnayw", - "percent": "0.0%", - "airdrop": 2055.6836209207554 - }, - { - "total_amount": 160603070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlSl3xjCNFQUYUcaT8RXBiYM9JxzYV7MKQHR5sKBR7/n" - }, - "address": "noble1tuwtl5zth5udv4k5kfykkpf28dqkx27gspnrmy", - "percent": "0.0%", - "airdrop": 2821.112093779384 - }, - { - "total_amount": 20897415834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkIOc36pUNB+7v99ikAn4JPnEkeyK2nJP2Q1G52b1Z9Q" - }, - "address": "noble1tuseta8xwqp4n9fscsxp8575lape04xm3p0yq8", - "percent": "0.12%", - "airdrop": 367078.61523465393 - }, - { - "total_amount": 3300249479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArN8k34imZtSh0A1uSQiHmOZX9jeuzgwTrCff7uMbgxJ" - }, - "address": "noble1tuka87eh0z6qgqej9hgeznpzahg2txjuc93scg", - "percent": "0.02%", - "airdrop": 57971.330919739026 - }, - { - "total_amount": 169122926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajt/KSIZ/kttTqx+Ge6kXY+WXsniYKRj+vNVvq1qXoI7" - }, - "address": "noble1tumccz5vmn47taphrz8k3xgx8m2s0nwhuq7lvj", - "percent": "0.0%", - "airdrop": 2970.7696862454486 - }, - { - "total_amount": 108612541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgReMXUxhOXY1Pjvoa/9dt37YVAkSC3Vwbdh4yLpvXh7" - }, - "address": "noble1taqs55wngnr24fdxxj8kr2qyyal02nvywjnmcv", - "percent": "0.0%", - "airdrop": 1907.8598743548876 - }, - { - "total_amount": 3300675476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApXkbQjDVDi+UxO5qgVrr4w5DnwO7LnjNV/EXo5HxgKo" - }, - "address": "noble1tavv4j6r43ulkcvazrsp9d8h733jsvj0hj86gf", - "percent": "0.02%", - "airdrop": 57978.81387313844 - }, - { - "total_amount": 217073573, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AptRIM+sZ5a6bXiWzBnPotRqhrejX1Vwpqu7GvOGgedt" - }, - "address": "noble1tasqvudj5nqfxssnsldf0wt0m8h2c26spawlkd", - "percent": "0.0%", - "airdrop": 3813.0583807034445 - }, - { - "total_amount": 1139129012, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3oN3ebj0H/fO2JGL0IKD2uFruQ7GCh887ureZNeTpRj" - }, - "address": "noble1tas6sa83dm90mtalyy9x5y6t6c6ptecgdfx355", - "percent": "0.01%", - "airdrop": 20009.646341929583 - }, - { - "total_amount": 120138442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjBpj5MgL4HZz3PqLG18zaHQhn+Mtg59C1cSL+BMTbgO" - }, - "address": "noble1ta5n9c9nr25v9hv8232xef0rxs9qw607ld8d38", - "percent": "0.0%", - "airdrop": 2110.3208777641244 - }, - { - "total_amount": 284509869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhXZBHRQug2mym2VtQTwaxebKFi+IW0SWoe8YyMHmL9N" - }, - "address": "noble1tahgktmh546lr7y442z6azu7d7j5wgun9tmghd", - "percent": "0.0%", - "airdrop": 4997.6269584104975 - }, - { - "total_amount": 391901398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/iBliyf7jy7szw0ieyyHUZKgevmE3Z0w8tVCDAwWzk1" - }, - "address": "noble1tackp7pmk7adr5gcu43h5pev8qq4p0k6p2ac38", - "percent": "0.0%", - "airdrop": 6884.038850981165 - }, - { - "total_amount": 78886538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0CgY6gW/zyb06GgFqdOULZ9Fve+7l4C4byDjByoUzMW" - }, - "address": "noble1tamsfl396zxs6em3yhu7u2szfqg9v4j0unja3j", - "percent": "0.0%", - "airdrop": 1385.7005746414868 - }, - { - "total_amount": 684662278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3/gEEd3b5lRXPYk4Flv0aTFmC4jx5fz1H1Q8GDZryUl" - }, - "address": "noble1tallnkgk6kt0dq4xmerx88ayu5dye4vu0yy00n", - "percent": "0.0%", - "airdrop": 12026.600939946806 - }, - { - "total_amount": 194522610, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9XKIS+OgahdXasP6FaG1G9Ozzpox5uBjLOnXF3P7vUl" - }, - "address": "noble1t7ps40sztmg7t3lldppuhff2j6656r7xwrqsn6", - "percent": "0.0%", - "airdrop": 3416.9339825479706 - }, - { - "total_amount": 55785196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1+oAuRQmhLxE7QedUeWiA8ib95jeO+updZneddmAbTH" - }, - "address": "noble1t7p3dp4y94rpavu4l93gtd4khrvvfrvku0mg4z", - "percent": "0.0%", - "airdrop": 979.9083609637929 - }, - { - "total_amount": 172768565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7kQCRr9ifWppQ7Ghlv6tpOob4gSd9ADeEgkzo1K9nlL" - }, - "address": "noble1t7t4ekh4ydmdpj2y9wdzcdzulu6w56hlmvxzx8", - "percent": "0.0%", - "airdrop": 3034.8080403843437 - }, - { - "total_amount": 5912539590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsBuhc0VHvnT1zYbTXQAQEUv04mouOBfvjS1BWL8zP6s" - }, - "address": "noble1t7s4c30l7zu399f5a42duxq67weyzqgae6zrrc", - "percent": "0.03%", - "airdrop": 103858.1450672045 - }, - { - "total_amount": 374695318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axjes8h0cepNQGjfbOdynrIEF+AbbQpphE2O3mtwAgb/" - }, - "address": "noble1t76m89ecxmh5kjqd3jj78z6la8cwtw94r8v83z", - "percent": "0.0%", - "airdrop": 6581.801288682166 - }, - { - "total_amount": 584186739, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ash4q3dYcNysNrzWkNF/WAqPeJRVg0Ak7YiBIgafnOpa" - }, - "address": "noble1tl2p5pz70zjp4s60gr5he0cljwjezpmk8mnfwf", - "percent": "0.0%", - "airdrop": 10261.67354346614 - }, - { - "total_amount": 528698328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjzUCzyMb5B8DjmyAC5+ygQxI1pO76xe/cyRgCW7t2e/" - }, - "address": "noble1tlnkhl7ehz0glre4g8sh894zfe8a25zsteppyc", - "percent": "0.0%", - "airdrop": 9286.978431245054 - }, - { - "total_amount": 108225032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzPWn5DoZ1n/rn2Na6LRGqFXKe1zXU5v0PEK/lQ/5jLQ" - }, - "address": "noble1tl52wegru3pp7tayv647vsqvrsh50l9x3zv40v", - "percent": "0.0%", - "airdrop": 1901.0529912339834 - }, - { - "total_amount": 379297426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/J5HEodnNtMXh0X7j0DaUZ1gTnQdwm2c1ugqKvoLFGk" - }, - "address": "noble1tl6ks32dl0egmavluyjfmhhafc9ltn0zxz788d", - "percent": "0.0%", - "airdrop": 6662.640730516489 - }, - { - "total_amount": 196236231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5lsaeN/Jp7YNkpGYdpZkfOG+zVXW+vmK3owkpUQhsd3" - }, - "address": "noble1vqx436truymdzvsqcepfu5feq54mmmwcs5mk76", - "percent": "0.0%", - "airdrop": 3447.0350069384403 - }, - { - "total_amount": 338797772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3DULmdsGsY4JUQbXcR0p5wycnE9tB6O7wMqbM7b4r7c" - }, - "address": "noble1vqsah2hda5tgnuetynsva46jj85t8vlr4wkfwm", - "percent": "0.0%", - "airdrop": 5951.234256821555 - }, - { - "total_amount": 67459752, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3SaHjs4BTdEXdYwNlr32CKeDXbCJh7jLFxDfww3IdU" - }, - "address": "noble1vq3z3aq9rsh2w4z7dcs5wpmg5e8zcqnujtn0pq", - "percent": "0.0%", - "airdrop": 1184.980599751661 - }, - { - "total_amount": 15224284823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApFvBU+8UfE57IsOxZa+luRRrFYlbBJ7p86SRgNxfhdX" - }, - "address": "noble1vqnhgc6d0jyggtytzqrnsc40r4zez6txtdjjqn", - "percent": "0.09%", - "airdrop": 267425.85950136086 - }, - { - "total_amount": 245221470, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/IP3G4HN4kCyBI+SpQN9t3kuNxHcP+Mqw3MbwFeFXSq" - }, - "address": "noble1vqcrex2ylxt88l0m6l2fakqsk93s4c6n5zv3ga", - "percent": "0.0%", - "airdrop": 4307.497077554984 - }, - { - "total_amount": 86767196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4GA+Lqs1mGeJ3gupenb7qxEyRtyRepuHgzVspqSvS/4" - }, - "address": "noble1vqcudc0fk3l5uzwazj5wa8gvkszlsqtn4tpyzt", - "percent": "0.0%", - "airdrop": 1524.1301799456648 - }, - { - "total_amount": 436090712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyXwZ9kobmpGE9efxvk2Rx5/Rd6UlvTBpE5a8QdU/2th" - }, - "address": "noble1vqe538w5066vtswds98equcccdwa7j0m864083", - "percent": "0.0%", - "airdrop": 7660.256940344057 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9GkpuH9CeAMCnAPWnM+/s/kXao9UIF74mj9VDyAU+jd" - }, - "address": "noble1vqmcvycmg202clnx8ev9rjgz7hwtw2ms48y6sc", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 430676551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjY+QrYfn1yW07LtCdWH9zZKYNwvsBKIBcE+O4ffIA5P" - }, - "address": "noble1vqutkvtz3rz6wqps5enxxfly8dw0tfsdmav5sc", - "percent": "0.0%", - "airdrop": 7565.15318501255 - }, - { - "total_amount": 113500076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xfe3GgVv17D77Xuo9fh1Osp9JKzmgJDqXptteaONEp" - }, - "address": "noble1vp9d9e59awld7tqc5g5nl0agplykckth3fc6kg", - "percent": "0.0%", - "airdrop": 1993.713053234158 - }, - { - "total_amount": 15701126366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A702ghaQeLiNFZdCgtbKNMaV/6XAarFCK5MkmwNrPiBP" - }, - "address": "noble1vp8ej45nlt96j0ykswxg3pyyl9dmxdqyxnyrtz", - "percent": "0.09%", - "airdrop": 275801.9350257809 - }, - { - "total_amount": 1233402273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4K8WmzNUuz70TpIibutAG3H3KLTtWUydeZq6u8+rFkL" - }, - "address": "noble1vpwnq5sfxwgl94tmxvshjvwmgcnl3ykuayqf74", - "percent": "0.01%", - "airdrop": 21665.626123182334 - }, - { - "total_amount": 1360788905, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcdJcCTsPtG8nlyi/qB7T3W36NOp3RnsCCHXIPW9Fm+" - }, - "address": "noble1vzrun2k3p9zmzh6fpzqk0gkx2vm4mdr88utjln", - "percent": "0.01%", - "airdrop": 23903.266836532486 - }, - { - "total_amount": 503667254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyqWzqECJXDp6nYuFE39V2DuWwqI22Ann4SyCQwluoEK" - }, - "address": "noble1vz8h0w0vdx6drzk3v9pkw06fycq4w7u7m359az", - "percent": "0.0%", - "airdrop": 8847.289043105171 - }, - { - "total_amount": 900040561, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyYETlkf7R96o+ct8Ne60SwYGimNKOi0ceNdvIHkK5Pc" - }, - "address": "noble1vzgrlxg99tv4luxhrv8lsvellcl9ksmcr7g4fd", - "percent": "0.01%", - "airdrop": 15809.880293876582 - }, - { - "total_amount": 85904708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aua+qM8WJthjh6009tdq8lkcBzt9VYtl/hwOiZD6hgKb" - }, - "address": "noble1vz0h3r7xvptu2pe3dju3xhqzv60cwj23sle65x", - "percent": "0.0%", - "airdrop": 1508.9799382501628 - }, - { - "total_amount": 556374931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AriA/1IA3XHsjJnAFYs6cOxx8VvhjXpEIkz7LqKYro/U" - }, - "address": "noble1vzh7qfvxaq5mca6ynytnh9r88v3h56sy6gl2rd", - "percent": "0.0%", - "airdrop": 9773.138499281305 - }, - { - "total_amount": 3642726200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AisygaKGK6ECTFg8f/YCwDQvyEAiO+LLKZzDlJ6LRdGL" - }, - "address": "noble1vza5sk2armw5s87ctpvafqqc7j0z8qg6wqmw2z", - "percent": "0.02%", - "airdrop": 63987.18864556585 - }, - { - "total_amount": 120385151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuuLFuZ7Qf3AqiuEV5nRtvboWCUm8g/mm95hEFsRtiy/" - }, - "address": "noble1vz70nrt37mwsj47eqd8nsa8vpcpfagu2jlzk68", - "percent": "0.0%", - "airdrop": 2114.6545044098925 - }, - { - "total_amount": 1260185570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtawDE+yYa01ViQq/4cJgRmoQcEMS4cGS3V3Cc5vrsQA" - }, - "address": "noble1vrr4f494gcjragx7fnqxgf2qzryst8qg7pz0ck", - "percent": "0.01%", - "airdrop": 22136.094608485793 - }, - { - "total_amount": 100115690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+EUwqxT7czERQrUEAfG/EY6dN5/mtFu+loy+VIoaOQ/" - }, - "address": "noble1vrg6g8jncpyjn03f6gqnks27adjd2c2x2fvfrr", - "percent": "0.0%", - "airdrop": 1758.6063817837837 - }, - { - "total_amount": 670765730, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvsDZdus9oJNw4yX1tnzPcXOhFMU85bRwRQ6i+CWczmT" - }, - "address": "noble1vr25vxty9a3njpdpdnqtrk307hvgwk0f6p9z4z", - "percent": "0.0%", - "airdrop": 11782.497762936642 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj5czh7I6LobRStaPIAub2KbRnCKKZb5PO6Hcq4+Z0i1" - }, - "address": "noble1vrjalqsc6vjk6jkv7gx5thmx93nt7xqdjwe7a5", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 51999413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5s6fjhqdpTOgeJwKK/OL3unwLdaxok/hPg7J3HMHD1p" - }, - "address": "noble1vrcjrgv72cyjmdqqupydhy4s3cemn7fj4c8xml", - "percent": "0.0%", - "airdrop": 913.4082734765213 - }, - { - "total_amount": 235695873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/pyvHmvArjv/vbQntV36rK1Znc0Kt3p5xfw1r3Y+XK9" - }, - "address": "noble1vr62v4qvfuxd8l0z0qexahaktnyff63eg9xxkq", - "percent": "0.0%", - "airdrop": 4140.172898153129 - }, - { - "total_amount": 109939803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0FhBvayeP7YjlL64RIdnmTC3VqmerNrKS/vEJjU3gqE" - }, - "address": "noble1vyq8y7jcwjuj3rmr87vx6cw6legu85ymrsv9ra", - "percent": "0.0%", - "airdrop": 1931.1742162277658 - }, - { - "total_amount": 1069415844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJLxIvxFX4oJjjwzq7sjV6OfNi0QiBmeBRLfBOL//Tn" - }, - "address": "noble1vyqtkk6j909gnmeakx7ksv63tnqr69tmrrda6r", - "percent": "0.01%", - "airdrop": 18785.082818078678 - }, - { - "total_amount": 54570509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsLdnZrUroH7PXT3svqjjGtd9OIyke4Ox1bmMbLn4e1+" - }, - "address": "noble1vyqed2kltl68ukkv6s29d3lhhl9pf9teh3wwn2", - "percent": "0.0%", - "airdrop": 958.5714824977923 - }, - { - "total_amount": 119757992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1X1yXl3xa9DevXPAkU3h+VRxEDYP6hHuo+7V5gWLOiT" - }, - "address": "noble1vy9tfxy7dxmslgxln4psen0lsfmnpp0c58s4x3", - "percent": "0.0%", - "airdrop": 2103.637991216075 - }, - { - "total_amount": 24989500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqmEyeg6P+jQBfIxaVxAMjscCkgo8syMfXOxU0cwHJXU" - }, - "address": "noble1vygs2nn8qm7gw7f7puhwqmdxgtrkw5zutpkzu5", - "percent": "0.15%", - "airdrop": 438959.109981521 - }, - { - "total_amount": 325532867, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQvGhpCLqebBawFaXR8ikQHCkrnfCINJVDi+3oQqbQN" - }, - "address": "noble1vyf538h24rwhmxs57x3duj7umh8gp8xrv788xp", - "percent": "0.0%", - "airdrop": 5718.226357792387 - }, - { - "total_amount": 800000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmGaMfN0g42lSffMNpA0iR425JSd4uDDRTVFma6eVf8a" - }, - "address": "noble1vytjusuzs8rftxc69v4uepvjk39j7mh5qtency", - "percent": "0.0%", - "airdrop": 14052.593608724335 - }, - { - "total_amount": 54666185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlTs1myprKoh0WgMM1TZIlPKMFq9I4PJfoFjik0dkmGp" - }, - "address": "noble1vys66e04d6r4rtu7vrkrquzrd5gt23enar04dg", - "percent": "0.0%", - "airdrop": 960.2521024304277 - }, - { - "total_amount": 1200874866, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjscKlcnqZS3sgMayDsYfP/pSndUp44M+d3P0PAXJGnU" - }, - "address": "noble1vyju773vs3aqajhwd8w330vktqh9fje85lyy4l", - "percent": "0.01%", - "airdrop": 21094.258083536613 - }, - { - "total_amount": 76504405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgNoOzDXjMzF3H/oXHI2UtStMk0bUKDILji9czrumX17" - }, - "address": "noble1vy42ufad2mraylfrkhp3remqzqf9zl2dlk9dmq", - "percent": "0.0%", - "airdrop": 1343.8566409278226 - }, - { - "total_amount": 177194171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuxcwJ/woQB4VR0U/rtu8MPI0qrezyPIX2lgZSi3kt2P" - }, - "address": "noble1vy6yv8vkmk0ye45u5uymhg29nrp793nxrfyz4r", - "percent": "0.0%", - "airdrop": 3112.547093622259 - }, - { - "total_amount": 590527166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av+Xfgf4gy04wQCI+Jf6KAq/rWfgXjLQWwpQ4dvCePcS" - }, - "address": "noble1v9rvthn2sajzkd5zascttx3kr8nnh2ntz346tt", - "percent": "0.0%", - "airdrop": 10373.04784838712 - }, - { - "total_amount": 3463355830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3qkKnB+FlL/0iFkLyLB58nOxmQTHTchOpGGETe1WhhL" - }, - "address": "noble1v9x7yt7cd0zwh3gew4fxcdgl734pgqscpg786u", - "percent": "0.02%", - "airdrop": 60836.415001745205 - }, - { - "total_amount": 79802725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asa8UzpvWCjarzDzY5LoPzDgmKNHc0e9On8mlngCXPPJ" - }, - "address": "noble1v95aezt2j0zu7rmpmz5jndtlvehe96qqdt4vcp", - "percent": "0.0%", - "airdrop": 1401.7940791172323 - }, - { - "total_amount": 72598353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kjBbNHD7SA1S/0iP9q21JNId+U0hhCffTjePl+Tm51" - }, - "address": "noble1v94lhjv289qlapafn6lrz5kdhc685krc5sf94c", - "percent": "0.0%", - "airdrop": 1275.2439392146416 - }, - { - "total_amount": 62657344, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6lRWkts/rnJ3jhoamCcFYduyFzozFMH2YBFJJ9aSaKt" - }, - "address": "noble1vxpg8vyhwek6kgfp3l2njtyfz3v6756zr6v7ss", - "percent": "0.0%", - "airdrop": 1100.6227397925527 - }, - { - "total_amount": 1177952383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao8VTqFFvvqytY0lviWDiSoY0h6TTUW6gQkgBIXIC/+i" - }, - "address": "noble1vx8fpz0je0vu2mhg6rz8nf0mpnqdd270dxw97a", - "percent": "0.01%", - "airdrop": 20691.60766090925 - }, - { - "total_amount": 2365646044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AluXyjf9oQMYj/5a0imPNrBNIPzNZvietLkAZn5Gz3c4" - }, - "address": "noble1vxt2ljvquqjw3g34ttnjzl746rqkktfwey3zvv", - "percent": "0.01%", - "airdrop": 41554.32809802301 - }, - { - "total_amount": 50704906, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As0FnqexMByaLRYN7jXhPdCDgQGgSxG6fq6KgCh7gVTH" - }, - "address": "noble1vx4l5c6j6yj0gqq46mzy4dlluqr582dyuwtdlp", - "percent": "0.0%", - "airdrop": 890.6692974832102 - }, - { - "total_amount": 63721550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlBgO92UOaByxd7jlc8NZPSqV3q0MzL/78bZsiUdENly" - }, - "address": "noble1vxkxw3e9gf62mgdkweqs0467kax5g3lmk2nh8a", - "percent": "0.0%", - "airdrop": 1119.31630783501 - }, - { - "total_amount": 32803698336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtWfdpVCh4oMTDm1JvNklIYcseb659zH2+B/3cYHnZIY" - }, - "address": "noble1vxk0fg98l8xk2l0w32vwax4yhtrzwn0tewl74j", - "percent": "0.19%", - "airdrop": 576221.3019737434 - }, - { - "total_amount": 611176992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A04hxLPP3awe2B7ZqefBAQq1gRDMAi3oPkLOxKNx4x/H" - }, - "address": "noble1v8ywhghs8p9aq2rq85thl6s9gceyh6ghnyx0zp", - "percent": "0.0%", - "airdrop": 10735.777364473206 - }, - { - "total_amount": 168173111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoS8KDo5x/zcdSyT8yupsaw324T0WBxCA+kGdFCt94HQ" - }, - "address": "noble1v89yrhz2wzqeh2cvnxhc473elpgtn43k4weg7z", - "percent": "0.0%", - "airdrop": 2954.0854809973603 - }, - { - "total_amount": 506638013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8+hN3FnfwGc9RVbmikZT2mU+W6QE9lBCQuW6OyoJdvt" - }, - "address": "noble1v82dpn8quldsxxn0g7n68nadehgcra56uk8qpq", - "percent": "0.0%", - "airdrop": 8899.472629275746 - }, - { - "total_amount": 51281164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4FZG7s3O7pdAPj8v8BYvH4k/Vah2mOuvxU5PhAM5FDk" - }, - "address": "noble1v8sp780mhumyelmvna2v72s4amsn0w47s35l50", - "percent": "0.0%", - "airdrop": 900.7916968429306 - }, - { - "total_amount": 151444552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVtQhQb0p3IOe4E7VsQBeB8puYztADWdo5CEYSl6w4n" - }, - "address": "noble1v8uf559glanazr52v6z3d2g8svxgu7xurfn63h", - "percent": "0.0%", - "airdrop": 2660.2359293891504 - }, - { - "total_amount": 98907690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1s6KrgwHabYsHps4EqT/R5W2HVVz27EG1y+lVu226oI" - }, - "address": "noble1vg2z5drh4s9c5thjs7yylj570kacy74nz8f6pe", - "percent": "0.0%", - "airdrop": 1737.3869654346097 - }, - { - "total_amount": 201137657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/+djMsydyvK8D7NoQqFmEsq4RTtIcpoLSsRpIi5q3gM" - }, - "address": "noble1vf9kjk9cz7mwzgq8ttul607f0xg5rtv06vgfy9", - "percent": "0.0%", - "airdrop": 3533.132191539985 - }, - { - "total_amount": 1941694748, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoUhhFcQUxGTFCwWh9wsQ/FFhbXDSwtUr97VTU82bF9r" - }, - "address": "noble1vf49phx5m09vftk24rfzla34lq8vs7fp3sz93x", - "percent": "0.01%", - "airdrop": 34107.30900729801 - }, - { - "total_amount": 4742029069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/VYpOYeAPc/MbGkmplWINuyoqxp3Sa/duk3wf/8Slfa" - }, - "address": "noble1vf63can8cza35gnh4dwgwjp5xul3egnlra392u", - "percent": "0.03%", - "airdrop": 83297.25923426801 - }, - { - "total_amount": 430409532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyQrNX9iUqkDf2IeB0EsqCuGk+fmr4XFuiTfhuyBx6qu" - }, - "address": "noble1v2ghstyq7ny83h62u60z9ydzw5vlk2q3h9cewq", - "percent": "0.0%", - "airdrop": 7560.462798146541 - }, - { - "total_amount": 295700408, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9+oBCYtW0TXUmheN+XK8mnIZ5yshK/YMWX32IOBUKRb" - }, - "address": "noble1v2trqhan8k53x75wujn4d4z5v73arj0ktvtl4d", - "percent": "0.0%", - "airdrop": 5194.197079447474 - }, - { - "total_amount": 259053032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ameydy+M56c208VzqpFFCZGcCiR6feCxouWU/IpE30o1" - }, - "address": "noble1v20qda4djtz8nhqu95xq48jvrugu04w8j3lszd", - "percent": "0.0%", - "airdrop": 4550.458727254826 - }, - { - "total_amount": 549135315, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0fMuM5rgsJuokClCxnoj7HyDQAq3vnAoCVLbZIcPM+G" - }, - "address": "noble1v2ksx7qvqswk7dak8shnq99p3x5vwxtp79rfun", - "percent": "0.0%", - "airdrop": 9645.96927236728 - }, - { - "total_amount": 226815933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArEX8+D5+GKDK2a8KADCjlY2kW0utlnKLuoDJMbgWh33" - }, - "address": "noble1v2c9879tva2892y0zym526tywl56dvj86snyma", - "percent": "0.0%", - "airdrop": 3984.190163040809 - }, - { - "total_amount": 599476701, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2jCDJ+Wa12lXSWOqHsTLvjUnaYKwzix52TPLIQkQLqa" - }, - "address": "noble1vtqrx63lyalw4swc0gnexl4ffcl6tefunghpla", - "percent": "0.0%", - "airdrop": 10530.253071314688 - }, - { - "total_amount": 10792672338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9UkP/gTQOzIjF3SVCD67CUHta2Qg+lr/4srifkVCZCc" - }, - "address": "noble1vtx6a98s3e6q7kpctje50pky98exakspphafyw", - "percent": "0.06%", - "airdrop": 189581.2978975434 - }, - { - "total_amount": 265806711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuO2rRSnWiLdn2vvBu4ootvzwsuVA5aftcqR86XWLaO9" - }, - "address": "noble1vtnng6gsupyxxq766gl97u3upsqt0rkdlgu374", - "percent": "0.0%", - "airdrop": 4669.092110193296 - }, - { - "total_amount": 2707249384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgejGOr62zKBB1IBzIiH+r97oLNUHoWpvx/ncdSWvKRx" - }, - "address": "noble1vtkg2dlqfvesfnwkaaww37q8cpsk6pqh7fhr78", - "percent": "0.02%", - "airdrop": 47554.84423852662 - }, - { - "total_amount": 76013256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxSBKkDOroAHeLpg1kkr5T1nUPbgMjCg2LIdSzNz2GtH" - }, - "address": "noble1vt6nz2pvvuhtsnants93yjx9qf6uz8ez4mytd9", - "percent": "0.0%", - "airdrop": 1335.2292443049084 - }, - { - "total_amount": 222368369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgWn9xVU18jSFkA8gj7+w5XNxqkipCRRnSvDwbzJeioQ" - }, - "address": "noble1vt66ey79qguc4xsuwmtffafws6uq9uyruv466r", - "percent": "0.0%", - "airdrop": 3906.0654012398186 - }, - { - "total_amount": 66722252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aygyek66d5ehgb3hgF3qqzhTolq/pSgT4+g5xk9a+1Tm" - }, - "address": "noble1vtlx9rhwgqssspud6wrj8vj8g82q2tspjhtr66", - "percent": "0.0%", - "airdrop": 1172.025865018618 - }, - { - "total_amount": 1812466818, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay5aFphpdNqNfb3LWadtKr0FXRFRRtTyYn+NthamOmxZ" - }, - "address": "noble1vvp3yga4de8satw32wtfkdqkje8denazmp443u", - "percent": "0.01%", - "airdrop": 31837.324528314668 - }, - { - "total_amount": 166425874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyeyBmDqOFPLXDIqX0MXb+JXwPeevUd3aQ99RH56PqZP" - }, - "address": "noble1vvfzlzam9fqak066ge6yvgys2cnkfgdwu02qc7", - "percent": "0.0%", - "airdrop": 2923.393966623452 - }, - { - "total_amount": 782866444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjkJIMSNJu7E+i0hWxJF8F92EfDYrseohppHAZViceK0" - }, - "address": "noble1vvhl3l3pfgw0ckur0akgmdxy8qe45f2cc0y8yk", - "percent": "0.0%", - "airdrop": 13751.629984298936 - }, - { - "total_amount": 85112522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzZFhoYDyh9iUfGcmmZ0fiO1OoHTpr/AAVWwlfa2FZD1" - }, - "address": "noble1vveqm0etjed0xt4wrzl3rfd8uu0kfafdy8fmk3", - "percent": "0.0%", - "airdrop": 1495.0646033495118 - }, - { - "total_amount": 80914233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A83pYRlO+2bCd0w4YYVV620nTUznjzjJuhoZpu4jFzp1" - }, - "address": "noble1vv657n2smg5hpw5zd3w9m3p6mkh0ca7ksy9wet", - "percent": "0.0%", - "airdrop": 1421.3185418882897 - }, - { - "total_amount": 6247232632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avn3xBbmE0+MEyWMuxhmjjiX1GtCUVyv/Mavg8OcRIm4" - }, - "address": "noble1vv6hruquzpty4xpks9znkw8gys5x4nsngdspdc", - "percent": "0.04%", - "airdrop": 109737.27669582164 - }, - { - "total_amount": 63600865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApAo3cqChBtMa2/sjvwNIMbEIw+rXAaRad9CFFpsFdUQ" - }, - "address": "noble1vvl3tv0ynrx4etxenusv38ylglzdaly0yswjfr", - "percent": "0.0%", - "airdrop": 1117.196386260424 - }, - { - "total_amount": 3013377552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At3wf07uzE4kH+X4UcdzwktTaeFnkZm1TFzgFXqbTpoZ" - }, - "address": "noble1vdxvtm26afr95m432m99ywmw9d9gh7ue2ntayh", - "percent": "0.02%", - "airdrop": 52932.212659885736 - }, - { - "total_amount": 88226343, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuGZsCgh/OzbdY2cBZiNO2G9P99AOKxSr3MXPBdX1R0b" - }, - "address": "noble1vdtcstthpxgch9mezvvcth6sx3pyh2cz5ze83v", - "percent": "0.0%", - "airdrop": 1549.7611797036511 - }, - { - "total_amount": 15038619442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7zYJoPyIgGOeCL0CzplwGfVHCn9iYLr5WrpLw1xSzS1" - }, - "address": "noble1vdduurmgvzfvlerg6hcnh6afdc4jqn4g9ws4pk", - "percent": "0.09%", - "airdrop": 264164.50931835844 - }, - { - "total_amount": 500641028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alwy892IAK2IXY+6VNY63gHl/qCYDzyjBun4GcxWcUKM" - }, - "address": "noble1vdj66xc9z3yw84tn38439jtq3x5jelunrljsd3", - "percent": "0.0%", - "airdrop": 8794.131137922477 - }, - { - "total_amount": 83107258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw2zTt5XFBg11BoJ73/GbUatdO2F/elaLeRWF1E6j/ub" - }, - "address": "noble1vdhq6nm4tpgl779w8xuvwmene5rqr48decmgnm", - "percent": "0.0%", - "airdrop": 1459.8406532617555 - }, - { - "total_amount": 101843994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A59thnheYZOVAlbm4ZK289Pr3yaxWyqXgAxDaPTmaZib" - }, - "address": "noble1vdhpc2e8k6u8svkxc0tnfs38j4x2gdsj2d06wp", - "percent": "0.0%", - "airdrop": 1788.9653239641996 - }, - { - "total_amount": 1131228718, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkcqOKfCcs1pwgXe6PDLzBriyalIxTc0hjD3eXlZHvpT" - }, - "address": "noble1vdadfyhk3yum88t82sv9487gr33seur05gpy26", - "percent": "0.01%", - "airdrop": 19870.87181571528 - }, - { - "total_amount": 84405957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj3WESxYkx6m2dujsGRD0ZW6neMAx0ORR3wXkgV/1RQl" - }, - "address": "noble1vwzf5vegsw89lscwcyqhmece9lv3jvlyudavye", - "percent": "0.0%", - "airdrop": 1482.6532648455764 - }, - { - "total_amount": 56243375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhujBF86h8pAJndyMarLAVGDEat174blbwkl53b3v5hv" - }, - "address": "noble1vwrqmm5cvefvjf4nz03hzprcavt9gjyeu3v0z4", - "percent": "0.0%", - "airdrop": 987.9566150726076 - }, - { - "total_amount": 293768694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1JxQ6VV18zF6/9CcKyrGuOjMj371sDu2e5H33YzoX2A" - }, - "address": "noble1vwrruj48vk8q49a7g8z08284wlvm9s6elz7xhw", - "percent": "0.0%", - "airdrop": 5160.265089684619 - }, - { - "total_amount": 65630914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkkgKtpaAzXCj5EjcNEAjitcb9fH7cgL1c4zn46F2iqG" - }, - "address": "noble1vwyr2l278u8l52qysd3l5g878rz9p6e2ej0z5t", - "percent": "0.0%", - "airdrop": 1152.8557032639205 - }, - { - "total_amount": 66529559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkYii5BOmgRbRYTWEAHLc+fFYuNaNm32c5Cm1h6deD4n" - }, - "address": "noble1vw83ga3v0p6nnx4ytrvrhsfk7txgyatgrfmcuv", - "percent": "0.0%", - "airdrop": 1168.6410694933109 - }, - { - "total_amount": 930133249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xgqmcqtUqnmu21pO5ucTSwtCHJpj3LEKHYwLuLcDxd" - }, - "address": "noble1vw2d8lg96es94amygvk3s9v0yyvzl885e8pd3l", - "percent": "0.01%", - "airdrop": 16338.480687699252 - }, - { - "total_amount": 87436542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArG2A1YrrqJtPkMmDzdaphGS7Xbz+Oz0AmP886s/l2ll" - }, - "address": "noble1v0gqg6d9y9rsjwefgqukx4v8jpyf0jwz2dvee7", - "percent": "0.0%", - "airdrop": 1535.887739097696 - }, - { - "total_amount": 105291253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9KTZhFhiWORFlA1hXOC607/RynQDgn8GORsERtrDukE" - }, - "address": "noble1v0f98k9wdqjxytts5maz0vac4qxqwcvp8gkfse", - "percent": "0.0%", - "airdrop": 1849.5189862029715 - }, - { - "total_amount": 80897698, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsnQa8IJOSZu4J33oYFYTC4T8vTMEEZ4PpDvY+LpifgJ" - }, - "address": "noble1v0w4nqwhxcf2sjusrskak3qav6ndjch4dukccg", - "percent": "0.0%", - "airdrop": 1421.0280923441394 - }, - { - "total_amount": 276970011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+h8KfRHlB462lbHbygd/1IKJ6OMoKtmb8pKyDu2PfJo" - }, - "address": "noble1v03rww7al3fd9hfgncnjw44glpn9ezgxyaschj", - "percent": "0.0%", - "airdrop": 4865.1837579836365 - }, - { - "total_amount": 2522330159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2Xrhv0rg7c4XwS+z5w/hFWB0AXDVweZXCq3w35ht0X" - }, - "address": "noble1v05aas8hndgs8r86ekj6hwfz6xesxeumrpkvhy", - "percent": "0.01%", - "airdrop": 44306.600839320046 - }, - { - "total_amount": 161976720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5qdBvgt8r8jAbrWm4YUPBDl6+Wt+94HNmxqC4H+WiKe" - }, - "address": "noble1v0kyel53p7eav8a93pxzj08qm3vz77jx72nyys", - "percent": "0.0%", - "airdrop": 2845.2412752926643 - }, - { - "total_amount": 997227353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhrVto9B4P33EJWdkKKFUDFkGNOBt870Ttu4btjJkivm" - }, - "address": "noble1v0azdrtue2546csc8emenp9dze9ykkd0vjvctg", - "percent": "0.01%", - "airdrop": 17517.03840901611 - }, - { - "total_amount": 7782315085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+H0NmQ9ZafxcrjLy0IB8XNezrjdMBARIL9dalz92UgQ" - }, - "address": "noble1v0lvk497fvvzgpzh3xyd5e2vydmzydjmxcxlfp", - "percent": "0.05%", - "airdrop": 136702.13903068748 - }, - { - "total_amount": 519204224, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/2XYSHOg146QG+8nRTxqS1nT1x9FF4vtfVhaeB4MD9s" - }, - "address": "noble1vsgse6335r9dae85nlh2ps0hu84hlremu9uuzc", - "percent": "0.0%", - "airdrop": 9120.207449756348 - }, - { - "total_amount": 922467049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0GMSyxYurwDyTOCTl3xlE44EyyLfhiPt5r37fGou8F" - }, - "address": "noble1vsv202gkyg924p8mz4l3kzczn7p4s9yn6j4jpr", - "percent": "0.01%", - "airdrop": 16203.81819629525 - }, - { - "total_amount": 10705810418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay+tW4darif8xdSz7JTlOvc7MzDOJ/2uwhw6ab3jxxbJ" - }, - "address": "noble1vsw2wcggqucs52hczwc3pawsuhegc4g6dxj3ql", - "percent": "0.06%", - "airdrop": 188055.50382025153 - }, - { - "total_amount": 282063647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0PpH//5imnDDgIcyknQZmKzEBp2SMpUW4l6zfiXIIbD" - }, - "address": "noble1vs0fueqfcr66j4rhzaaeeega746kznmawkx2ak", - "percent": "0.0%", - "airdrop": 4954.657253857097 - }, - { - "total_amount": 56544937, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AljtVmuQr8rjMC6fbUd1xiD4d4T3KscUryV9kTNQaf9W" - }, - "address": "noble1vs0nt4xk0zhfcqnsw5u9s25evc5k7lnxfz7jmu", - "percent": "0.0%", - "airdrop": 993.2537753649003 - }, - { - "total_amount": 311150098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A79MjJ8xx+jxBVCV2N8RXNsnqmwd+ALxk+0jr9sx4SC3" - }, - "address": "noble1vs0m48g9pmlnx8ezkufqflkl7hjh0wqmmtmrp9", - "percent": "0.0%", - "airdrop": 5465.582348135938 - }, - { - "total_amount": 93520391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxsCc3WZMWThNV28PrzF9JJRjA2fDeshMswqJ2CVAWeq" - }, - "address": "noble1vs3drav5z7aclucz85eta40y9gk6m22s8hm3va", - "percent": "0.0%", - "airdrop": 1642.755061065001 - }, - { - "total_amount": 59412741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9EBYYgyqmeZ46ooOosa5KBfjrZ1Im5BwTA25AubLvBg" - }, - "address": "noble1vseqv9s0mjz6pfxk802khjvjmnmyaj8z6k7hca", - "percent": "0.0%", - "airdrop": 1043.6288805667427 - }, - { - "total_amount": 450673089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjmBt4KWtc/AlBROEoqhOviDFlKhmXqYOFi2q+LetSE/" - }, - "address": "noble1v3zs4mlkk48dm7xpn3hte4kq5xr903gqm4wzax", - "percent": "0.0%", - "airdrop": 7916.407212631817 - }, - { - "total_amount": 50319060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhcBfida/0M/49S7W4Dvt9Vfd33MI8lj8LnV5NgvfQEY" - }, - "address": "noble1v33kv6tzx3jdefrpe08dzy9tg6tfgl3pg962na", - "percent": "0.0%", - "airdrop": 883.8916261912705 - }, - { - "total_amount": 1766003414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmAynHk9hTYpr9CTTg/4Kckm1JjvvZzz0/GS9GkArBQV" - }, - "address": "noble1v3j4u6ttsctcffjlwz5jntqvk48x0uxg8jjv2w", - "percent": "0.01%", - "airdrop": 31021.160360702193 - }, - { - "total_amount": 297000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A43lD2ylldeT+VAc9KcBWlpQVoL8WphBZM98Jjxu0G45" - }, - "address": "noble1v355vhf8ahn0ge9yge35yu8cjg3wqmkz4x7kva", - "percent": "0.0%", - "airdrop": 5217.02537723891 - }, - { - "total_amount": 281203306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVX8VfiDTwN9Y+gGfR4pbcFUizRXqvKbPbyRzOlz8t3" - }, - "address": "noble1v3a2665wmnwjjgnfxdq538sr650ss87mhde8nn", - "percent": "0.0%", - "airdrop": 4939.544725809692 - }, - { - "total_amount": 287047463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azda9vHl5vR3PtFUNwFevlPb3ZA0p0SvvrJoDSu7emFO" - }, - "address": "noble1v3aaemesd089uwzc8ageg8pey74lvcwz33jvy0", - "percent": "0.0%", - "airdrop": 5042.201679942919 - }, - { - "total_amount": 1960077891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+c9nOX6XFk/3EYqv407FqdnmutcNTXMtbLNu9Dj8iD+" - }, - "address": "noble1vjg2epq4cddmd6tn09n8rhxt4k27wkdy4hxvhm", - "percent": "0.01%", - "airdrop": 34430.22255458559 - }, - { - "total_amount": 2001984747, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiq1HyHE7SIRuimCm9Al7PMjwuOW6/sZgyp+j/G8llW5" - }, - "address": "noble1vj2wj08tfax78qvajwhctey3fk76pgxx9wt03q", - "percent": "0.01%", - "airdrop": 35166.34757556976 - }, - { - "total_amount": 136945128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A23Borf08DrCACpFXlYHbYrB2O26FTpT0zZYva8Xl+oH" - }, - "address": "noble1vjjhsz5h3j5pjadvauuecuq38wwxf3dajc0n6u", - "percent": "0.0%", - "airdrop": 2405.5427880984203 - }, - { - "total_amount": 167805254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1SDeKh9v3F3oG8S07VikWBK7Rm/+E2/u5mx5qGVezZt" - }, - "address": "noble1vjmhted85xtne54y26wcnfnzj9cnvm6l0wjwfd", - "percent": "0.0%", - "airdrop": 2947.6237998384545 - }, - { - "total_amount": 183239986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNeM5J5Who0g7hxYU7Lo3meEEoJonbRmjq7MmuVBBQS" - }, - "address": "noble1vjmlnl7zw54tuuacde6udmlptp4nqvflynyd4s", - "percent": "0.0%", - "airdrop": 3218.746320157921 - }, - { - "total_amount": 270132971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayl+30LKDMvK7W55TPd/dl35wbqz1b4vQLO+QD3oHZ5h" - }, - "address": "noble1vn8w7f5hu73eenkzr9t2m9rch9zyn9luzsjx7z", - "percent": "0.0%", - "airdrop": 4745.0860772253955 - }, - { - "total_amount": 212879478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Z9vVFmZfwZow0dH7CcggBTYnT9U48nIZR87U6tnS+7" - }, - "address": "noble1vn00kys4qtghv059p9pxn8vqp428yeflnmjh0c", - "percent": "0.0%", - "airdrop": 3739.385989964216 - }, - { - "total_amount": 79868867, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzVkTg6Q/PrN85vxW8CNl4GvBPvmFFKpPxpHaSfmA3Rw" - }, - "address": "noble1vnscjx3qus46ankjen7nqwv2uahhaz83sf0kg5", - "percent": "0.0%", - "airdrop": 1402.9559124253174 - }, - { - "total_amount": 529484072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akt0Ej5oeyGXm3PVDs5txnrGpGFj8MUUvAJSprzCIg9Y" - }, - "address": "noble1vn36huh8mw7794c0eezwalt5tnf8tcfm9g4a55", - "percent": "0.0%", - "airdrop": 9300.78060763567 - }, - { - "total_amount": 66927238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsonRYTSuAakJcQNWUk71yj0/L/kZzWBnEgytVPDja6U" - }, - "address": "noble1vn6z88wpddv3jr0tkga73rgquc569d0v5xc7g6", - "percent": "0.0%", - "airdrop": 1175.6265962104656 - }, - { - "total_amount": 415974943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao5zt0qQL5RcCP6iJIIbEJn84ATqh8rONLkGWBLccwbV" - }, - "address": "noble1v5q2ma3xf8hrg8w0w7w7tuwqkfngnduysgzep0", - "percent": "0.0%", - "airdrop": 7306.908531739087 - }, - { - "total_amount": 187938970, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fs9BFrkwWrHx+0QtMxJOBB5WEB5Xbr1GLPMkOkKB7t" - }, - "address": "noble1v5yftjf479q5ygza04mje8cz4zhx60qurdml8y", - "percent": "0.0%", - "airdrop": 3301.2874608152933 - }, - { - "total_amount": 335157370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+i34DSw6f/RQstMXNvpmWVWzKtYdc1NPnz63D+By0FY" - }, - "address": "noble1v5y75akkfvqa3h0tpmu0gyk5kjemwpsupyuxcc", - "percent": "0.0%", - "airdrop": 5887.287894473572 - }, - { - "total_amount": 50613473, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax/BSbuqrEGS6ktkPBZkho+uyVDtTFrwUIQG0yam4Kpw" - }, - "address": "noble1v5dl0p465rrdtlau4ufla2q8f6ldzrl2fx38yk", - "percent": "0.0%", - "airdrop": 889.0632089939271 - }, - { - "total_amount": 25080990079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/INJ3U7VopEFDwbNgRMF4k10E/wJ5W/vw7/HlbNTc+z" - }, - "address": "noble1v5wpyxw5njlvjcsvneu4643yc3qzx50ngnt47l", - "percent": "0.15%", - "airdrop": 440566.2011057923 - }, - { - "total_amount": 72915834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arwvi5BPaGlJT/ijuDR+6ZHCtHqtPe+sWDrTU0SZhuiG" - }, - "address": "noble1v53ycsqchmjklgu4w29cpfp0dy3e0xrmerx3nz", - "percent": "0.0%", - "airdrop": 1280.8207285540059 - }, - { - "total_amount": 2911571389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxCHhq7KgEAkGl1bkqzAGk026oMnykDR9yMxD97+pSZv" - }, - "address": "noble1v5h9cu68dxmfk42784hcxtg03xsqnh0s6dhq8f", - "percent": "0.02%", - "airdrop": 51143.91186550755 - }, - { - "total_amount": 20306547170, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsD8vlpOgMiE0v3JqeGHkKLwPlaVS+KtfLQAwcEcDfl9" - }, - "address": "noble1v5h2ta0lxm4xcthd52g543epfgvq2k5h457389", - "percent": "0.12%", - "airdrop": 356699.56872050156 - }, - { - "total_amount": 17392592067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApY4vVapLGRNEjivM22laLdE1k84IojUfUp7GcPGgyUO" - }, - "address": "noble1v5cy9u9xy0p068pg0dr5az2u5k6utfcmtfvcwz", - "percent": "0.1%", - "airdrop": 305513.7851498422 - }, - { - "total_amount": 565019075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avdgn24ldEo77JP+EQwiqOd5IkvOVSe+qH26hgQJ0k1H" - }, - "address": "noble1v5740e4eseyy2ssp0vc44nrr202e7pg6jeyvv4", - "percent": "0.0%", - "airdrop": 9924.97930269042 - }, - { - "total_amount": 1350998791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsQVvF/S9RgVdkxppT3gD4tWuwlyk5xj8mzDTZHn9NRq" - }, - "address": "noble1v4vk0kgzmp68y8wwx7rzpuxpnwg4z6ad4ekh6g", - "percent": "0.01%", - "airdrop": 23731.29621975113 - }, - { - "total_amount": 9380578822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4XU7Ro004uIATMvQSMYxm5Ruvlv07L/H6Mrg+V2b+yI" - }, - "address": "noble1v40yhpqdx6g8ssjxvw6rlwkdv3zjdduwxsle4t", - "percent": "0.05%", - "airdrop": 164776.82750021506 - }, - { - "total_amount": 231753571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Op5fgF5JmXihpqEJUOJ19aZu4yCSHNN2RD3fdWqhIv" - }, - "address": "noble1v402jqu89f8qawazace8ht7j0q4ngvnukghwcx", - "percent": "0.0%", - "airdrop": 4070.923438292052 - }, - { - "total_amount": 64345950, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw32wFwnzDhB/qOexGViKU/omF5aqe/0SseV1n9lkvhv" - }, - "address": "noble1v4cs9tqa8s3k245h5yhfwjzdaunryn77sat2ta", - "percent": "0.0%", - "airdrop": 1130.2843571466196 - }, - { - "total_amount": 961345539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9pDqlQ6ljWlmNvuIuYDRTVcZh5ocvnbtEtoCB7rsyjF" - }, - "address": "noble1v47dvyflzgatgdul52vgxy6fv8rlgmtwm83z0z", - "percent": "0.01%", - "airdrop": 16886.747721408814 - }, - { - "total_amount": 156854518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArQgBex8+MrMxZmR10X1fa2vSz/ASMHCEJRxVrvILErp" - }, - "address": "noble1vkp6h3vc0g9n36hn6e90z8mvy4xpsurt02pwkn", - "percent": "0.0%", - "airdrop": 2755.2659964329205 - }, - { - "total_amount": 1210985615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A75JvSGy31tvuVxH2UgwStVeGBUs2+MrPkiTOfw+mZu6" - }, - "address": "noble1vk958qselu77h8jatf43mvznamsrch8w37mnqf", - "percent": "0.01%", - "airdrop": 21271.860892007637 - }, - { - "total_amount": 212587931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A40dBm1AVZd79K6jGZZGQp9DTcEDnEXLAdbkkr9mu1wl" - }, - "address": "noble1vkwq9n5yhsm0xf2h369vk2t6gn02w9aywtnwwe", - "percent": "0.0%", - "airdrop": 3734.2647505781624 - }, - { - "total_amount": 91659115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uNvKJmbeQAJOPq3HR1VXhhVGypbyCw7zZ5pp60Mm2V" - }, - "address": "noble1vk0zzw662z74tztq5d9hcp3tas9890sdjtk9t0", - "percent": "0.0%", - "airdrop": 1610.060367037911 - }, - { - "total_amount": 312958828, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+XJZdrYsPY8vHBXhmfVhsuX6U9zUrtbzt0e2IprAtJM" - }, - "address": "noble1vk0fllkrdjrc84wl27hqz9l5kjsh6rw7f4ftx5", - "percent": "0.0%", - "airdrop": 5497.354032683324 - }, - { - "total_amount": 357462970, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9osvGDkAfb8FWNCvf7RJx6000w1c2piw6RjtVqj8tGu" - }, - "address": "noble1vkjtazp8x2arv8r23vtlm8zl2w258k8zezd2ky", - "percent": "0.0%", - "airdrop": 6279.102309472023 - }, - { - "total_amount": 354532415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtCMEy4Tf3imSmFl0u/Gao5O1Br04NlrtEYkF+FMmasW" - }, - "address": "noble1vkc4cce249te8j96r89lp32jerf4ymrcxwunef", - "percent": "0.0%", - "airdrop": 6227.624936393255 - }, - { - "total_amount": 3368620666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1bzeCgnDpwM19VrCVZuDSdLMA4qGXQaK7MC0EPIOq/n" - }, - "address": "noble1vkmxajqmf0ryhd8g7k282vuvu3hjns07kup359", - "percent": "0.02%", - "airdrop": 59172.321551560395 - }, - { - "total_amount": 704951717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A93fcfGKykZKmoalpwRLmXpjOLWXPXmTuMJ2tphs7O3M" - }, - "address": "noble1vkmjnmrv3ck7pyf8jj03f3tsacrwvhef5d54t4", - "percent": "0.0%", - "airdrop": 12382.999990966808 - }, - { - "total_amount": 100953013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4RRwD2OPsCznNYS8w+Tn/9jAhniCu9viWWEM14ls1SD" - }, - "address": "noble1vhqkcanxsk2g23gvhw9dsne83xjc0qm2mhuuwq", - "percent": "0.0%", - "airdrop": 1773.314581581581 - }, - { - "total_amount": 204930385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7zQamn896zobE9B8sEzknc9i3D1yXlgum58ExIIVidA" - }, - "address": "noble1vhgawsvx3cctwucgxunjg8n8jtespzkgrgufy6", - "percent": "0.0%", - "airdrop": 3599.7542731055223 - }, - { - "total_amount": 103768961, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3gvlz2VBNT+tz6360jbyjNjfdj6Z1+HGdu8yPzOtwXU" - }, - "address": "noble1vh348f74zva96tnhwlsngyvh3eqsrcpqq0fl30", - "percent": "0.0%", - "airdrop": 1822.7787976657062 - }, - { - "total_amount": 51627606, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A05WQUVBfbGzBG71S0Fzb0LZLVAwJPA2/Pmh86GRb/35" - }, - "address": "noble1vhnn44wxjsnu0wvksy4lxl9qlr5fzth5ce76n6", - "percent": "0.0%", - "airdrop": 906.8772076366727 - }, - { - "total_amount": 5923083466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyAh67Nr3fi6VbQdTbt04BxwoEVghIIsK37Gj9261wcC" - }, - "address": "noble1vhckgkphxmv5vr6cr39p76wx3rxtnemjcecm50", - "percent": "0.03%", - "airdrop": 104043.35607281548 - }, - { - "total_amount": 1300807636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao4ywVBR7BlN888x502Y2SppjVOxSCWUrYqB46z9IAjX" - }, - "address": "noble1vhce2eccd907hurh297226rlzyy96wmy7npv37", - "percent": "0.01%", - "airdrop": 22849.651339791766 - }, - { - "total_amount": 106617206, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Q77mDmkb4XkJA8kmo1+RamG27kIAfi+hl4dlyeIG+f" - }, - "address": "noble1vh74agglmyvhsafusmu05uu7ejtup3mqtl2lgf", - "percent": "0.0%", - "airdrop": 1872.8103345195575 - }, - { - "total_amount": 1111034169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au2G3PUlGMEvdudiaUDkNX3lmpIlsXaaIJ6Csj1KEYmb" - }, - "address": "noble1vcdavx4c4dr9vglmltnctvsj6juzj35llk8v3y", - "percent": "0.01%", - "airdrop": 19516.13957795469 - }, - { - "total_amount": 6280500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqEmNSoYdMOGqiIlU1BECRgNju+HBcQxZDWKc6cilPP8" - }, - "address": "noble1vcnl4cekxym6v8l24qmwr45jhgtuh9fkgvz0vf", - "percent": "0.04%", - "airdrop": 110321.6426994915 - }, - { - "total_amount": 59364053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVcyTNfsA2B0rmONd3WfK96P2LEvssBqU32WhcxcNM+" - }, - "address": "noble1vckgtrcrp6w7hu8wvlxp7mr4ucqmguedlw3gx8", - "percent": "0.0%", - "airdrop": 1042.773639719716 - }, - { - "total_amount": 427998176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axokmzuug0Rqo1Qp12Yl2E/F/TxU+ElO0pdRBADj4rWj" - }, - "address": "noble1vc6skpgzpsnntrt4z5x2qef4s24pzmkvzkdeqq", - "percent": "0.0%", - "airdrop": 7518.105540754092 - }, - { - "total_amount": 539377803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuhR+IQv/cIIfnmDCvJclOsGSzNMk26bbWi8jqi/3ffL" - }, - "address": "noble1vc7fp4xc0luuqmtwyk0ewtv0dma7k6ck2a5jau", - "percent": "0.0%", - "airdrop": 9474.571333906966 - }, - { - "total_amount": 1003475712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqC9tFIt//0KuYhatQPCnJlrGkCbFOyGoFS47HfjCchU" - }, - "address": "noble1vepn5wsy5rcc3jku5kqr0k8vxzzmakucs5hfcv", - "percent": "0.01%", - "airdrop": 17626.79547120163 - }, - { - "total_amount": 599632924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyUIcsqoUqZtVcsudMHnt4gH9Nvngq3NaKRSf7Iv91JH" - }, - "address": "noble1vevfm976vhf70egs92at7j2hpm854hdhyyal6q", - "percent": "0.0%", - "airdrop": 10532.997244228856 - }, - { - "total_amount": 305782202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Mdz6kFx8GD2/fPbvM271P5ibxZhEgrwnCngit3gHf8" - }, - "address": "noble1ve4vnzfa8emdyn33lykc9ynudw9hjrc94jpakx", - "percent": "0.0%", - "airdrop": 5371.291271858568 - }, - { - "total_amount": 1205652200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/ed6W8kkzPdrtsq8568tj2wQ4seYt+L+bZ1nAI0T6u" - }, - "address": "noble1v6r5xx4eug7qanhedzj8r0zma42arckr2gweuv", - "percent": "0.01%", - "airdrop": 21178.175500080542 - }, - { - "total_amount": 459732929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4J3sv9puqbdpqZMmJ2kj3iue1fKNY/2IjidUUiAqNNI" - }, - "address": "noble1v687traxx5qjmc24hxxjkevcnnns6we5xek5y0", - "percent": "0.0%", - "airdrop": 8075.550024731899 - }, - { - "total_amount": 206793772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXQrkWZteJx5Jb1SLqqiU+wI667L7AL1m8g0FVHMg96" - }, - "address": "noble1v6smltjuendvxf89r5qk8f0glyqpj6htrajuh6", - "percent": "0.0%", - "airdrop": 3632.486048413997 - }, - { - "total_amount": 65772770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRfhywstF7TO7BM049TgfVRB1aLJHeHlBLEKXzERwSq" - }, - "address": "noble1v6jqmdjlpl5hkvcs05gpvcqyjyypth8xnurhpl", - "percent": "0.0%", - "airdrop": 1155.3475091626196 - }, - { - "total_amount": 234072633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3tHoDx18bTnzBuXNBCDANQNNmw1oa6T+ib83C6IA3L1" - }, - "address": "noble1v65lvlx9yvscsmuusxdq8akh7a9ukar533a9p4", - "percent": "0.0%", - "airdrop": 4111.659483091346 - }, - { - "total_amount": 14508609748, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3S+I0vPxOu/GgAIOyvEsI/WHZJ7k+6RyeC8In7o1e3j" - }, - "address": "noble1v64ykq09acvka6zj7u663kwggng4l3dpa22r5m", - "percent": "0.08%", - "airdrop": 254854.49577027548 - }, - { - "total_amount": 365841281, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8XJaQ2Vohx7d51fxNrhoTbLdzQWTCrA2M0KqBJh4se/" - }, - "address": "noble1v6ed3d7fw2uq0qxamapesnlpq5rmfgqstnn0l0", - "percent": "0.0%", - "airdrop": 6426.273558985155 - }, - { - "total_amount": 120000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7/2LGWrdAaSiTqSIfXW76pqD3UnWG/gPyp1iYH5C0uT" - }, - "address": "noble1v6u6m7v62fkh6vwnplm2ue9rw67qrug4ff5lca", - "percent": "0.0%", - "airdrop": 2107.8890413086506 - }, - { - "total_amount": 26694679990, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyojDrFQHtNIDAR7pZx3s4Yw3FSTG2s3x2fxRfWkDqOS" - }, - "address": "noble1v67ptq4av879evr2wqz7fc67frmkpmaktuwtmv", - "percent": "0.16%", - "airdrop": 468911.86176801927 - }, - { - "total_amount": 656960129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av83gI/eXrQqsDMRfuJn1JAUqq96SJIOoPZYxWqJTpRs" - }, - "address": "noble1v6lpudgwn25zrc6vczhkrhjargnknwu3kd5kk5", - "percent": "0.0%", - "airdrop": 11539.992137465144 - }, - { - "total_amount": 313213215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrGm8XANnYzTThqA8C3b+5KDX7LEutx8Y+wUa7+BAqA" - }, - "address": "noble1vmzzvtwr5dl2dumh0l65fsvfdf6j2etv843t3p", - "percent": "0.0%", - "airdrop": 5501.822529096252 - }, - { - "total_amount": 55689851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmL6ERloxSkiAljivh/oi6Uqx4qgSOTelK0QYuqmRAW" - }, - "address": "noble1vmyt0jnk9vwmnzt0yq9ywrmyxz336ugmw9r9sf", - "percent": "0.0%", - "airdrop": 978.2335552917632 - }, - { - "total_amount": 5912735076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8SH0cQ9nAcdL+0+GPEpvVMHDwjUWi9H4CzIhDe26LRJ" - }, - "address": "noble1vmv5lc3ru9pdgqvfe2hm4qqsqen7fzk6efppyp", - "percent": "0.03%", - "airdrop": 103861.57892384725 - }, - { - "total_amount": 51377574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1WK0Nx7VBg/ga+eh33JJEm6mLhw1bp1Dq129Y9MBmIr" - }, - "address": "noble1vm33l73qex3wdg8pd0ate0wzaxtwpdgktzdgrd", - "percent": "0.0%", - "airdrop": 902.485210030202 - }, - { - "total_amount": 793629332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A19tkrZdVnsLWII919QyweUPFEhQHKgqQccKx+kLwYfw" - }, - "address": "noble1vmj44d0z4wnl23zze7922my4ek9gn0phhpax4f", - "percent": "0.0%", - "airdrop": 13940.688098199204 - }, - { - "total_amount": 1239080049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4iPNsAFulKWK11J4oDIWgVE+v+JObjbGAkWYZArS1P2" - }, - "address": "noble1vmjmcp77zjv8usfvaqca02vrecgpc68qxlvxhc", - "percent": "0.01%", - "airdrop": 21765.360471594046 - }, - { - "total_amount": 202016382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auw1JuJne0rfsUQ2tGYRdnmKEOxZ2P69fEWvvpiy5YD1" - }, - "address": "noble1vmk6374zsty6d49tm27r6y8ug8hjng6rn3pt3p", - "percent": "0.0%", - "airdrop": 3548.567648188517 - }, - { - "total_amount": 336073101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmQ6x+fnaVpOcluJa/2jnhZsNSvF3Mk/6ogjJ7xhfzu7" - }, - "address": "noble1vmh3mdsgvk5anml7y9y6ctaunpr7g5lhjuacp8", - "percent": "0.0%", - "airdrop": 5903.37338897096 - }, - { - "total_amount": 107843362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0KRpVwpx0sZxR8Fu4L4vZWDbxIfX5eTbRUbOepLcbLp" - }, - "address": "noble1vmct0r3tc80zp26aazghs0cuwkwfvmtnf0xnwv", - "percent": "0.0%", - "airdrop": 1894.348674480681 - }, - { - "total_amount": 554843938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At5KATbRa18QwfEf44WXLy0rB4LJuaNo9fcs3R1ITdVZ" - }, - "address": "noble1vmat43rfupns5svugh5y07e4fn89rchtr3xewl", - "percent": "0.0%", - "airdrop": 9746.245471222803 - }, - { - "total_amount": 91701161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvqF5D6/N+mLQscdYjReJdjc5/LG6gkS25HjRbe5Lj6G" - }, - "address": "noble1vuyhrcstxygg4ss9w257klgv0exkx4z0s76jl2", - "percent": "0.0%", - "airdrop": 1610.7989362265016 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQDbBKVV2EM8IKi1eWsptkLU+gfq0TZgfJC+pf8jpWx" - }, - "address": "noble1vut3drp8gackq59lwjng5md5mj4tyy7nvr0gh9", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 258008267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akc4aN/ZCEQqXWIHiPPsfZNTIeYGSA777C0ruleUJhQk" - }, - "address": "noble1vudtpjyplxrau4822u4uu9kfkavdfxg4qpwcxn", - "percent": "0.0%", - "airdrop": 4532.106654802802 - }, - { - "total_amount": 1113813688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnbplTqNW9vt+75g/q8yWgpnSbV4jBodpB08QA1X3UDW" - }, - "address": "noble1vum4w7alceu2tzx72srnven3e3ugucuv9tr2na", - "percent": "0.01%", - "airdrop": 19564.9638916231 - }, - { - "total_amount": 100824201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am0IeA9ua8VW0Ye+DKUYd3tdEJk31hKEFL33swI3xDXq" - }, - "address": "noble1va9ymg6pn6grd4fhw5c0fgjr2jnrzf38nlctxd", - "percent": "0.0%", - "airdrop": 1771.051903221672 - }, - { - "total_amount": 225000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AofKQDJm9YtpR5MdADz930WZhdTjTaCBhdDoPSddbkoL" - }, - "address": "noble1vaf7c9ms4txvhfszc86nu6qyym63879h6e26vg", - "percent": "0.0%", - "airdrop": 3952.2919524537197 - }, - { - "total_amount": 74969106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXNwpGB7fUVyvJX9whGup3xdgBPM1ABs1M7pt+8MMle" - }, - "address": "noble1vasjwkkwk5sfv7a0gj2n05e7q3q0slvgudwlm3", - "percent": "0.0%", - "airdrop": 1316.8879747842216 - }, - { - "total_amount": 83077508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHl8FfrFG5Wq67CgC7AlqTK6c6ch+394D8jbrNtEKwm" - }, - "address": "noble1vahlpxkkpgjldhlqnjhfzwx5wn6here3gqzedx", - "percent": "0.0%", - "airdrop": 1459.318072436931 - }, - { - "total_amount": 872151628, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av+sJe4tC5vVo3mq2ugltBKWcZNEkFCFCwK4pxr2QdJe" - }, - "address": "noble1vaclfex5jx70lkw8nutuss8alx9gug9w6eja2u", - "percent": "0.01%", - "airdrop": 15319.990491839155 - }, - { - "total_amount": 76500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3BD5PicsRmpzAfydQCli1dZHVWSzx2/UtPBURSWqi2r" - }, - "address": "noble1vaeeuwdc8djvlr50754h05ge0eye6xu7a3qz55", - "percent": "0.0%", - "airdrop": 1343.7792638342646 - }, - { - "total_amount": 34355633385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A65GMKRdcjuSBF1O4A8Nv45HBOWqP0KA0GGh2piYDo3d" - }, - "address": "noble1vamr5r9vuae4ttnsnwjyhpnewdnrfw98hdhmht", - "percent": "0.2%", - "airdrop": 603482.1926621593 - }, - { - "total_amount": 861659199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A84AJjbVccC8RymERjFmkLPzjHekVWEFqZot585oHvOR" - }, - "address": "noble1vam9r35senjk78taaczqz2j2vkgqtrr5gm0nev", - "percent": "0.01%", - "airdrop": 15135.683190957414 - }, - { - "total_amount": 52383385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmmZB5dW6e+ytM8zVwcsGIHcd+ORJgxPzFQGJLkAVB5D" - }, - "address": "noble1valswvc89j7tqxvzqfn8tx03phxjxygrf6xyxp", - "percent": "0.0%", - "airdrop": 920.1530265679328 - }, - { - "total_amount": 100806506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApKpuLHw03wVlrrrwUarTrQgK/10rRKFXBPC3PFWpkzH" - }, - "address": "noble1v7w4fs3eq63vfn5xqqh04pzuesj44u9ecxk0d6", - "percent": "0.0%", - "airdrop": 1770.7410774167893 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AooJ99M2w85FlFAAWIteN8oYzPKIUPjdVxgknO/tlZAb" - }, - "address": "noble1v7ncw2ar6mxzqesdgw3jr6tfnjx0v8k50zlwe0", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 148341837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8SeyZDNBMAHz0cwEwZeDPYIZ2QDettDhF6nXW+N3w6c" - }, - "address": "noble1v77a2rmlf5zx39fqqu23w4xk75hkmk6krxltk9", - "percent": "0.0%", - "airdrop": 2605.734438165784 - }, - { - "total_amount": 50316681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax6cUP/+6ynKc1lgd7nTjMWj0RQLhxR1tI8vOEH95GP6" - }, - "address": "noble1vls4hyu7ha94lpmfssksuc9qsdyfdfep9eaknl", - "percent": "0.0%", - "airdrop": 883.8498372910266 - }, - { - "total_amount": 103000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/VSa3rVbiGGd3l9YDK3Z3WL7M4dxbcCCkPhyWLi7Nz4" - }, - "address": "noble1dqq5zrpe4qc0aygdwz2l42u4cndq0ytmftksz9", - "percent": "0.0%", - "airdrop": 1809.2714271232583 - }, - { - "total_amount": 231449603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhiQJM0AHhn2b2zx9MPh8crDx4UFKfU+hnedvWgLMjra" - }, - "address": "noble1dqqu27yyeygw7nhg930hgxszcxa2c6sazft3u9", - "percent": "0.0%", - "airdrop": 4065.584014824481 - }, - { - "total_amount": 51258738, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxNFX94o0Je/fBjAiobmJfLd6lnrG6EEFXvwQqjNiEm4" - }, - "address": "noble1dqrlx0dnrk4kypvxyrdcj47g7yrwhkm46ay3py", - "percent": "0.0%", - "airdrop": 900.397767512594 - }, - { - "total_amount": 3050746578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxLF1Wl/j5NR9OqA59GAKUVrZ1BMjw4KP+DNEpoeO8Ni" - }, - "address": "noble1dqgzmhzs8jvugfs9tpcsre9xs9ggewk5dvwxr2", - "percent": "0.02%", - "airdrop": 53588.62732980055 - }, - { - "total_amount": 70585252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4WuhbkRi9mp4H4ThyNe9diHstVQbYSzuV1OM0JELmYP" - }, - "address": "noble1dqm5p6l6dp9ynm4hnp4ms3uq64szf2xv7mepez", - "percent": "0.0%", - "airdrop": 1239.8823264067457 - }, - { - "total_amount": 67894529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6m2DvXhKODjwO5tY3WmafWtVt+WaF3e+3WXHuufWFns" - }, - "address": "noble1dqah5vrf046l580um8q4395kg7s20sheqqk8v3", - "percent": "0.0%", - "airdrop": 1192.6177803659364 - }, - { - "total_amount": 53500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Q6IBkr7VJ3fJMiddpQujGJ5Xvuu+mJIed4xjCMdQUM" - }, - "address": "noble1dzzc7luvs5dj4k5t894et2m5qpahlteefq5gyk", - "percent": "0.0%", - "airdrop": 939.7671975834398 - }, - { - "total_amount": 450846055, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah5NRT7AtKoMytXRF5DkN70mD0YthBzBfvmns0AGtGhD" - }, - "address": "noble1dzykceqcnkmuzlqtptanxatmyf9zs77sx898zq", - "percent": "0.0%", - "airdrop": 7919.445488764475 - }, - { - "total_amount": 124590657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak02l1Ezk+fRJA6e+Wa3IcKXy9CdYoRBs6I6Zf4rnd7X" - }, - "address": "noble1dz9sj3eellf6m4v63mz7vn0tc672hat9vyh39g", - "percent": "0.0%", - "airdrop": 2188.5273378312077 - }, - { - "total_amount": 121596095, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkWKGJ+Fwu/HKSFtWK0OwgcyGPnf1iv0qAJ99eoQtDMH" - }, - "address": "noble1dzdk26jdwsz83crzuz5kmhwcxkdw227e9cgl7n", - "percent": "0.0%", - "airdrop": 2135.9256343035463 - }, - { - "total_amount": 85859839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq0Obm9jR7ZW3H7kvjYLBZB1XPYZx+Ll5bgPpV+JO9a0" - }, - "address": "noble1dz0j45r578aj87qj8fzufsuthywysp735tnxma", - "percent": "0.0%", - "airdrop": 1508.1917809718755 - }, - { - "total_amount": 148353063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApHjwzsy0PYtTypH/n+adgopXkWT8or3bPC42FxmPHq4" - }, - "address": "noble1dz5q8cs5qq39ujgsfgfkxmhs2uya469flk9jlx", - "percent": "0.0%", - "airdrop": 2605.9316311855987 - }, - { - "total_amount": 887895006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai/fljYTkckc7PBAgcnpk+J5IeoEgu8VbgB3haj/IIx0" - }, - "address": "noble1dz45gvzh72dfshr9q5uhl6c52ut7xcclaxwgmc", - "percent": "0.01%", - "airdrop": 15596.53460816732 - }, - { - "total_amount": 1343211167, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxmMh9uks2YKP+p61AJf7kTswW644mi7SaA7b08fBRd7" - }, - "address": "noble1dzmfsmlwm0dxws4vy6txnwg5p0m6cc8exlk9n4", - "percent": "0.01%", - "airdrop": 23594.500825689196 - }, - { - "total_amount": 117209942, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AojiHAGm9siaOKZ3gNANOh2ro7ecvlSEfRZf6p6JrwKz" - }, - "address": "noble1dzmfu9nwvj79dlez9r0j6835aad9exc69j6ca2", - "percent": "0.0%", - "airdrop": 2058.8796022851875 - }, - { - "total_amount": 100317539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxFiX1Np+970N6Dfh5/fFaQIH7aAx31sIRmaZ7eLvFnR" - }, - "address": "noble1dzu8jwtp6d45l4adkk7fc504ej8qz5556wntrv", - "percent": "0.0%", - "airdrop": 1762.1520092429428 - }, - { - "total_amount": 3375848323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0w8HyugRvg9P86vRiBXRJaSk7KrEANB5imD+Yu/PMV0" - }, - "address": "noble1dzuf9mqwcp92m4qr2snmlupj6mdxlsuvm0f6w0", - "percent": "0.02%", - "airdrop": 59299.28070976571 - }, - { - "total_amount": 104161926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9mZlANHuzi1L3aGecreTDgqsTP7s37IOacWjZdRmBhc" - }, - "address": "noble1drzvt0fp0cu57cneedgv6xyh0802tzvnv0lxcp", - "percent": "0.0%", - "airdrop": 1829.6815194750216 - }, - { - "total_amount": 1511536066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxKgGMxKSU1yk/ZQAluH9J1rFgcqWtWMQhRp0lPZZv3C" - }, - "address": "noble1dryykk7eyxncr7elnl36dvx7agulxn6wngl7nh", - "percent": "0.01%", - "airdrop": 26551.252575534905 - }, - { - "total_amount": 50522416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqshPJkYHrKEjCjPVjshITPgOi3f2W1B9DeCbtdAzqb9" - }, - "address": "noble1dr9tht8etwr8wyh54k9jkd9jqangn2ruxsef27", - "percent": "0.0%", - "airdrop": 887.4637252236402 - }, - { - "total_amount": 214989843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwIBwa8X3xkA2CkGjmaLYU/kCydsEu4ils1he4N/VG8j" - }, - "address": "noble1drw8jjhdsrsgwvvkccnnva635m84veefxu09lh", - "percent": "0.0%", - "airdrop": 3776.4561171030605 - }, - { - "total_amount": 90978007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An10KSTm7AjyHaBN9HVKuBwntEZFiYu406tWezedbs5H" - }, - "address": "noble1drj5c645j5wucsu675rqknuztzgfnnzr9qskfp", - "percent": "0.0%", - "airdrop": 1598.0961996283472 - }, - { - "total_amount": 1741880525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApM3bkKwdniIquYvBEkDcMWRkr4gWDets2+hpF+4YnlC" - }, - "address": "noble1dre8wssad0hvslgguxt358zwnw0m9hje8j45xy", - "percent": "0.01%", - "airdrop": 30597.42391597049 - }, - { - "total_amount": 430603422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Odn4LUz6kxXb+k2G5N7/oOYGP+Fn8thbn/JGgn4Cby" - }, - "address": "noble1dre8krv98q000hl38gs3zc3ypjvcs74dfe9kg7", - "percent": "0.0%", - "airdrop": 7563.868619865035 - }, - { - "total_amount": 55500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzOaKtqbQ0ECmcNYNPdm0oBiWXA4/EqnGOwzeTUq3bNQ" - }, - "address": "noble1dr6drzqc2fzey3dc2mt5llfstshz8lwfgldqxk", - "percent": "0.0%", - "airdrop": 974.8986816052508 - }, - { - "total_amount": 509829164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9JUiGxhTBkwZAElLTzNndK1sd4WglyxvzlEmN4RbbWQ" - }, - "address": "noble1dypy4d2nr9pfxqwkjuyfl0kfeperc4762yvytf", - "percent": "0.0%", - "airdrop": 8955.527564459588 - }, - { - "total_amount": 61190832, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtbqkchTgBS0QOh1CEJ+Xx3hpIkt5enaxsnSQMIfIknh" - }, - "address": "noble1dyfwl42ju7pr6t4d336lgdjsm8plwh5x0jthfg", - "percent": "0.0%", - "airdrop": 1074.8623683446558 - }, - { - "total_amount": 302548994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4HmgoeSfQfW8s+8CfURANPcEooLXFEKT8QKc/koNf+V" - }, - "address": "noble1dyf5jxsg97nw20t3pl60yx0ln5uaux2pu5zdng", - "percent": "0.0%", - "airdrop": 5314.497574262971 - }, - { - "total_amount": 84638051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuzwEz1tBzWVmYCUzhNUJLOgWwScCZieOhEYxJhj+Y7q" - }, - "address": "noble1dy5aju8zrkc5t5lxrktfyhwh79f485waaw5adr", - "percent": "0.0%", - "airdrop": 1486.7301681718554 - }, - { - "total_amount": 1371524150, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxrYGNE6AUQi70/fmJVzsbcuTA33kzQnpL1lra+Svd/5" - }, - "address": "noble1dyu7qkwxkvs0kry8z0kytujh7p8nnkh379lf67", - "percent": "0.01%", - "airdrop": 24091.83938062635 - }, - { - "total_amount": 90626457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6G+DJWcRww3NRBqV+hNN8s300KxWkPWeHx0sNf1boWK" - }, - "address": "noble1dyatkrjpdmd6w2e0hj84amqply5svjknds994f", - "percent": "0.0%", - "airdrop": 1591.9209630244136 - }, - { - "total_amount": 85426598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmYp8Czki/j6x4Et+MZ0JHvGLTGOG1BqDGLgrUKCtKkV" - }, - "address": "noble1dy7570sqmdu2h0lq8n7fzxt3uw87aes3nm58t2", - "percent": "0.0%", - "airdrop": 1500.581581337329 - }, - { - "total_amount": 88325362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuRlB+mrDJBvuY6jeL37SCiPjLb1fLsBj9QdLqm6RPxs" - }, - "address": "noble1d9p3039d6upp8d8j067ppgy0dhzjmqhwgex7vh", - "percent": "0.0%", - "airdrop": 1551.500521911829 - }, - { - "total_amount": 56881621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A13vN08lImyFn1eXjp4Q4XtSDshluGy/OTDSZuICgx34" - }, - "address": "noble1d9yrg0qwfak7n6p663fc74le24vypu9vwpelp9", - "percent": "0.0%", - "airdrop": 999.1678796481 - }, - { - "total_amount": 50517717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag3Cm/w8q6J7LIk02fI8OUSIZBV82wPlCrNAF0i5bg5I" - }, - "address": "noble1d9d7ead6e9ettg8exj6tmemzzhfvrgva6nwrvc", - "percent": "0.0%", - "airdrop": 887.3811838019309 - }, - { - "total_amount": 126653138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zcah7OlO+qmXQAZHHLdPO6HHZLn9F7jP/whWakmMS4" - }, - "address": "noble1d90w9mzu37hmg35szdfeyn8x8m055drs6mfj4x", - "percent": "0.0%", - "airdrop": 2224.756346979602 - }, - { - "total_amount": 138531600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7895F62mtiuCS8wCDxZZyUZ0A9F1wBLkBE8yzS2Qxm5" - }, - "address": "noble1d947punyqhzuqqgyqc68gyqy0tjuvm909n8496", - "percent": "0.0%", - "airdrop": 2433.4103459579455 - }, - { - "total_amount": 55573097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkETMfDkYE6SzZJZcL/NTce+42AqhiDMFVMKS5i45UAF" - }, - "address": "noble1d9ewgkn4826duzprzpthn8qrupd0m7t7g4v2g8", - "percent": "0.0%", - "airdrop": 976.1826846490219 - }, - { - "total_amount": 118325764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atu2odA95YWC4SI7QS8S009ygPskrcaufGV5PmDosy1V" - }, - "address": "noble1d97f2e7a6ds03pszlz07aw7am66ezh9fctzlyx", - "percent": "0.0%", - "airdrop": 2078.4798436672804 - }, - { - "total_amount": 58718540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkC/Jm3qI4YYGVTY8yfYUEkD8PbwKl1/AT3i67mB7aUt" - }, - "address": "noble1dxzc6s8n8rc3r42uwast7mt3vnqnnjt67r32py", - "percent": "0.0%", - "airdrop": 1031.4347248970303 - }, - { - "total_amount": 22996193569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AriaPqaBh6WYuA0agCLAswQXxGuzV7My/mRyrdjodYUL" - }, - "address": "noble1dxf6fhaxqrfqsurph6w5g09tc6w2gwce3mlunl", - "percent": "0.13%", - "airdrop": 403945.2034658963 - }, - { - "total_amount": 458476868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8CYCpGfgoWeTEoN3ecVZJ1mFOzW9XMlJptZW96q5pHm" - }, - "address": "noble1dxdvgz6jlpq8v2xq8g063xc2fmgsswsnf8a0pw", - "percent": "0.0%", - "airdrop": 8053.486381255939 - }, - { - "total_amount": 449013242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqbbgFR3zN1hb6lITsaEZxSix+66LQDL+NOE8KjwfUMG" - }, - "address": "noble1dx0pkfmjlz6f46k9tmp7nlqegc0al833qwc0ue", - "percent": "0.0%", - "airdrop": 7887.250768452242 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cW5x1x9NNwVQwSgqo2frlGetpy0jc/HoXIOqPc6ODE" - }, - "address": "noble1dxsrpr9rflv4y6faajv8uvfrnf25uv5eams8as", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 97002531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azm70QYX9ckomMPIw9XwAKbUte6dlf4pDZHu+ePlHFTn" - }, - "address": "noble1dxnwkhl2hhcsvn0y2202lhev6v67evv9u97967", - "percent": "0.0%", - "airdrop": 1703.9214339508553 - }, - { - "total_amount": 89536956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6TRSxGup9HFyQkP6iNLinvoxM3MdaOvlfUwf+Hk6QCr" - }, - "address": "noble1dx4pqnalnm02chksgrjgg4wzkpwsgd5gkc8pe3", - "percent": "0.0%", - "airdrop": 1572.7830695377902 - }, - { - "total_amount": 427989410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1akQiRS/wuUN3+rlc4CGUJAWjiw4s37nypKocYSzGiq" - }, - "address": "noble1dxctrkufcdwgefasu3zl0vgtrc5kjatlwz3qlt", - "percent": "0.0%", - "airdrop": 7517.951559459624 - }, - { - "total_amount": 69174689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arnua72J6TSt6qP0QAvLdKS4+30tuBs3qwoSYa6QBxMl" - }, - "address": "noble1dx60kwpclg7qnxhuwt8pl44d269027gnv5gqzh", - "percent": "0.0%", - "airdrop": 1215.104740658617 - }, - { - "total_amount": 50814357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A024hL6kj5oxY8gVvHjse6XL8g5Y0hjhkeGKSnE3avD1" - }, - "address": "noble1dxuwwkl4uzky6x87djdnlncfzvqk45hz7n3kz2", - "percent": "0.0%", - "airdrop": 892.5918855120459 - }, - { - "total_amount": 90000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao4Vymzc8k3m9SRuEztKyKbociKEnssEodQ/Z/6fei8E" - }, - "address": "noble1dxartewm2w93n0d393dajygkwgtvq5qhyp6pvl", - "percent": "0.0%", - "airdrop": 1580.9167809814878 - }, - { - "total_amount": 111101279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqEiHKXCbPISJGTxhxJ5NW1QVRsJIYxyxd0c6uP0VUe" - }, - "address": "noble1dxa3a3j203uae5uuqttxz09c48jxme8s5eengc", - "percent": "0.0%", - "airdrop": 1951.576403995624 - }, - { - "total_amount": 50860778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+E9S+DDxqUN9XxJTDvdTcoWmSsiSZKJhzb9MtBW5jzH" - }, - "address": "noble1dx78xxv6jucxn658zt2dqn449v5k7gdcct5u7l", - "percent": "0.0%", - "airdrop": 893.4073048219342 - }, - { - "total_amount": 3408213745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtE8LgHrCZCp8sAEm1zfpz8WTpscPo8e1vXAlnGeb7yY" - }, - "address": "noble1dx7nmzensudyj8njv4erezag23zy4cltj97xn6", - "percent": "0.02%", - "airdrop": 59867.80336269179 - }, - { - "total_amount": 3231374946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3pNfoTB2LSNEPE/1XjRSq6VxQnp6Bhs9djUmzlazTdg" - }, - "address": "noble1d8ppaaqam2yszhp0zeskvx370fv5zwqns4gyu9", - "percent": "0.02%", - "airdrop": 56761.49864193943 - }, - { - "total_amount": 70673073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wWDsRBUBFJWL/eCkE8avs9G3tK27Ou1mSrad13CJDL" - }, - "address": "noble1d8r5cvtfugwlsqgwhe6qt5jks54wrsjnyy0wvx", - "percent": "0.0%", - "airdrop": 1241.4249674358855 - }, - { - "total_amount": 393940177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBpzkNSFCSTFGLB8rsF2Zc2XMLta5W5CGEmHCKNbzxH" - }, - "address": "noble1d8xtuav36xg7hp6lv6u69gexpd8sunae7gh3s4", - "percent": "0.0%", - "airdrop": 6919.8515169124175 - }, - { - "total_amount": 94717673069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwNrAuikn12bDz8YADWQIwKDzjc8zK1Jb4M/XaBQPmAo" - }, - "address": "noble1d8gfe74t8zkjh727g8u3zhdlh2p305wj80xgxu", - "percent": "0.5499999999999999%", - "airdrop": 1663786.2090033381 - }, - { - "total_amount": 921808462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZibN6egGpUc9TU7uI6XbnXnSA3rItmd5XTf6ZHuksz" - }, - "address": "noble1d8jvfqf64mz2e2etup2td7eqwz976s7vhm6dga", - "percent": "0.01%", - "airdrop": 16192.249626961513 - }, - { - "total_amount": 425118878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AquGigvPBdYPAyDrloKZt/uV4p+nTLvQV4U8AVmy4Sul" - }, - "address": "noble1d857k35ns2fhl4nljdsr048vwmykwrkcly3erq", - "percent": "0.0%", - "airdrop": 7467.528534913577 - }, - { - "total_amount": 621378931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmdWOWLi8mZmdaVKiMkcv57qBMqRMxSjRKGtCAxFCvu7" - }, - "address": "noble1d8epkcpwvg57zmnnm86gatln45j99esuajzh77", - "percent": "0.0%", - "airdrop": 10914.981992958199 - }, - { - "total_amount": 74157902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az84ADJz2dDA8r4LAG5aUomUPrhdqulj3iMH5CXAhcMt" - }, - "address": "noble1d8etkcl43lp9nhdsflmm9y3krl7dutwj2drfdt", - "percent": "0.0%", - "airdrop": 1302.6385746020069 - }, - { - "total_amount": 87454608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiM28UvnVKiWxccilhsgnI5EWCKS2V86zs01PiR3wJb8" - }, - "address": "noble1d86jty0g63c4rpwp4v3a8gcs3cdpwqc4qhymse", - "percent": "0.0%", - "airdrop": 1536.205081792865 - }, - { - "total_amount": 706671489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6PVvVlbLAIPNSKsagM8rBCaH0h982J4fJi1JPZLoD5L" - }, - "address": "noble1dgt4nra3s4lvdxgqws9qn0wfplc8sn8ngc4xvy", - "percent": "0.0%", - "airdrop": 12413.209062236387 - }, - { - "total_amount": 1745756069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2KNiGeuSSvmEyVDt6IPgPec2WCXmS0EOMT9Doz8PSC" - }, - "address": "noble1dgw696msrfjfqlmw8jakz2ax2pwmj4amu0x6uk", - "percent": "0.01%", - "airdrop": 30665.500722026398 - }, - { - "total_amount": 656150255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AocOMkzZFwSaZOJc1msyLNig33sUpOAPkbqxVBy2F7FD" - }, - "address": "noble1dgwu6ac7835p03j4skvhmfwkwdfky7ms5rcp99", - "percent": "0.0%", - "airdrop": 11525.766099719804 - }, - { - "total_amount": 563439996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AogGWihhT7pZp7UtKx9CaBiAGPlU7iRTz9DDpCSJLjtq" - }, - "address": "noble1dgntjpmzwyrjuk8w45rymyqfrx7rduhrcpjl3z", - "percent": "0.0%", - "airdrop": 9897.24160836158 - }, - { - "total_amount": 1063259211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoFaRupFtnOYRK0lvKko//z/82yf6onQVjoO/6Qm5gUd" - }, - "address": "noble1dgazv6caqj2s4eglny0y67dkz83ezc5q0e4ejl", - "percent": "0.01%", - "airdrop": 18676.936991144852 - }, - { - "total_amount": 2586391552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlFR49uK0DFXQMTUOhB1XYCja87TVd4kLGCfP6UU/IIr" - }, - "address": "noble1df935lm3fqltt7fkzwfx03hq6276368qe3nwld", - "percent": "0.02%", - "airdrop": 45431.886741617265 - }, - { - "total_amount": 2607437500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5aOdcEBwaGsYMfTCfjhhCPurdSv5RUaibKOxGmByUtn" - }, - "address": "noble1dfx3smd93xhz5j04sncdkgnrqnawkt9sfueh50", - "percent": "0.02%", - "airdrop": 45801.5744345602 - }, - { - "total_amount": 71813422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6TaFz0KAx8GQYaCsviJ4U5T4Ey9JWBYcRivVMSXjqXz" - }, - "address": "noble1df8g3u7xnvdk0gvye9wevmulgvgd80rng7dgmx", - "percent": "0.0%", - "airdrop": 1261.4560437722794 - }, - { - "total_amount": 144285073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amg/rcPxk59fQ/kKJA0gZHZLtwWRJM0RW0ZET/aFR8U/" - }, - "address": "noble1dfgvlz4d78jsdp8tg6zssqh5n2wxq2hcm89wz8", - "percent": "0.0%", - "airdrop": 2534.474368342655 - }, - { - "total_amount": 167493932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au55lODGjEL9UGvoDJmoc7h6SD5wZb2gTpM9xcicLCW8" - }, - "address": "noble1dftmtv5uq8syel6agce4d0ry3qdcjf2uh3k6h7", - "percent": "0.0%", - "airdrop": 2942.1551979041355 - }, - { - "total_amount": 29838310520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApoKG2SxLp2oeuatgjX9ENz8RAIX0mPAUu9gGGgAK7y8" - }, - "address": "noble1dfv0xvtm3mmvz5l4njfzl704kswr5fe9x0mtcc", - "percent": "0.16999999999999998%", - "airdrop": 524132.06463560514 - }, - { - "total_amount": 2176558771, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uif6zskUdzlYQL+3NnOOqnjpRnZF0OoLN5LgncNvEL" - }, - "address": "noble1dfsx5hha3847g83vkvzdyde4zhu9vh829st9dy", - "percent": "0.01%", - "airdrop": 38232.869842959364 - }, - { - "total_amount": 3343521278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9eBg2Q77Yz5Z7C/S272zP0xWgPYI8bbbR72roAG+2x" - }, - "address": "noble1dfav0gpr8lspu3r094mrqt4v7fq456hvxavkh6", - "percent": "0.02%", - "airdrop": 58731.43217732078 - }, - { - "total_amount": 57507903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2Y0M30iHcZEC77Uvx6CSvlCoVxJLdEVd6nNxUCJDbP" - }, - "address": "noble1dflx5dk4gpm3wzu0r59cmmfn5svrkkaw7fjq4w", - "percent": "0.0%", - "airdrop": 1010.1689876861738 - }, - { - "total_amount": 135653506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apg9c4JZu7CEpoJM/MQHqjIqvPmOv/p2xXfg+UL2tYge" - }, - "address": "noble1dflna6nye0flfhun4s4h5hm50rd8l2t0sczn9z", - "percent": "0.0%", - "airdrop": 2382.8544892708105 - }, - { - "total_amount": 541725300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+fkAWSegNxo0dQTH3DCAmQuglvAgR3XhvhA/nxMpgi1" - }, - "address": "noble1d2re8wkswatl3mc00uuwneu67fkxy9jzrfwy3t", - "percent": "0.0%", - "airdrop": 9515.806860580342 - }, - { - "total_amount": 90803567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLUS+7/kKGjw9FVZlJb3Z8yMJMBRCk3fs+8OerGDguc" - }, - "address": "noble1d223nev4cwuc6a9gfesmucd6dt24n6uasx5pnp", - "percent": "0.0%", - "airdrop": 1595.032031591965 - }, - { - "total_amount": 95101834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2jzR7122y9qknFyBOPtjvLxsaoGYbtgsv7gU7UAzrmR" - }, - "address": "noble1d2kyevhw6hzzzw3ra5m5tg896u6ugvce4np8yy", - "percent": "0.0%", - "airdrop": 1670.5342808079536 - }, - { - "total_amount": 3373580880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0/nOU5xadvqEnF+6Qi4PUlnhOeJ7tEPRqMJQFt++fCs" - }, - "address": "noble1d27vtdxpff0a9fvn36lry2hc9d7wfgpr79pht8", - "percent": "0.02%", - "airdrop": 59259.45139100328 - }, - { - "total_amount": 1247318025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkpkguphmL2cAYtpPEL3P3l0Od1SGoH1RgvElVdR7VLB" - }, - "address": "noble1dttw8n5hlccfg44ec2xw3zld6608nehs9n6avx", - "percent": "0.01%", - "airdrop": 21910.066632702077 - }, - { - "total_amount": 5000789557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6EDN+GX2zpe2KUS8dU+UQPksBqd5PYq+eU7k2nBO8OR" - }, - "address": "noble1dtulm8va64k9pq8e40u96rrxdpgxuy2drger5d", - "percent": "0.03%", - "airdrop": 87842.57920909201 - }, - { - "total_amount": 51983929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBNjvWPxi6ry2q6VBIK6c5wZNk6n4mzls47tIGr6DHO" - }, - "address": "noble1dvslrm9zzkdn6cgn4dyve0vfgent2v5ujthgre", - "percent": "0.0%", - "airdrop": 913.1362855272246 - }, - { - "total_amount": 794275403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtcUK04SBOrI+Vjpn90EuMyUD3utpob/E/KnT83I+nBE" - }, - "address": "noble1dv55nmrfz838c6u6muq3hhs75ajcc570d64kt9", - "percent": "0.0%", - "airdrop": 13952.036814705933 - }, - { - "total_amount": 100466371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlW2XnCjZ4HZKdHlWnUuZhIXZHQFAE+Ub6TAjxXlAOE4" - }, - "address": "noble1dv5ma45jjmzmeweesmztan6mhj0az5lxrclt4h", - "percent": "0.0%", - "airdrop": 1764.7663537579099 - }, - { - "total_amount": 74142584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZCrjuN+3JZsh953C/EMR60ii95RWkXPxN2oCA1p9Ae" - }, - "address": "noble1dvczhjt72vlg083e7w8w7jreet9qxsdhxwwt05", - "percent": "0.0%", - "airdrop": 1302.369502565884 - }, - { - "total_amount": 146353788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJjqEXnCNo5qN1QG+sEjA42+RmyLdFXOvdXEznkkmLJ" - }, - "address": "noble1dv62904dr25e54k32unylyr7d4np3qy3mutzl4", - "percent": "0.0%", - "airdrop": 2570.8128823267457 - }, - { - "total_amount": 7024863025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao73108XWViEpH1Sb/89ZGFQLc3w5o2gkpkEJOzJPuQp" - }, - "address": "noble1dvl8me7dptgu6nnmkk3p9ahddwp8eyzkg3a66p", - "percent": "0.04%", - "airdrop": 123396.93155909864 - }, - { - "total_amount": 585439548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArEXT9HqLqM2OdHvXepQua7gQMu18zG6syE7p2YyQi7F" - }, - "address": "noble1ddp0dhc2c68y80lfxfm52cdmxe8rzvqt2equ3n", - "percent": "0.0%", - "airdrop": 10283.680063149079 - }, - { - "total_amount": 791353394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8YpwNVwC0KeC2SWZNeIqREkg1lch5SvEPDm+8N25k//" - }, - "address": "noble1ddpj3pv4vsvvhsyhaz8jekn5hsftuph8dkftzs", - "percent": "0.0%", - "airdrop": 13900.709558458388 - }, - { - "total_amount": 12898029257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnyxzJGbD+Lifi6dWQ7UdOP8hmEbEH8l5aU6Mq5wv+Xx" - }, - "address": "noble1ddrdyz6lvqdhch7l2n3tczw7f6yrdrrtdvx76h", - "percent": "0.08%", - "airdrop": 226563.4543775721 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay7aJdyY0fvF0Bw40NdRhzGBP8PsRY9sn54tmvsLvA7p" - }, - "address": "noble1ddd02q05hfpe66ade0rvgn2scq94tdvc9czd04", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 1068255385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkvRIhoN1737dNCNfOqD4ygcVY6JdWsJ6/rNcK6UG7DY" - }, - "address": "noble1dd0e565znhaulvf0las86h82lzd4xzaa084dzj", - "percent": "0.01%", - "airdrop": 18764.698494670443 - }, - { - "total_amount": 657406910, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhmaUgub3XSyqDjQdzHqRjlpLFAc9n+dRcl07C70S/Kb" - }, - "address": "noble1dd0akjs8p3pcerqed2w7fq7fxvy7ldjknp5qjz", - "percent": "0.0%", - "airdrop": 11547.840177246519 - }, - { - "total_amount": 51458674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmpYOQW05Gz8WTDrygQfLU6w7Cj2KYkxyJO90x/968Yf" - }, - "address": "noble1ddmmtady24ncs5z8k5tuqyvpcfvxjc6ulmh7kr", - "percent": "0.0%", - "airdrop": 903.9097917072863 - }, - { - "total_amount": 134583619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhuNwyryn9kEwQCfivw6Q09Xs5uXWsY5B7DkskGZUNlH" - }, - "address": "noble1dwpfsnanf8n4fxvlzxxvqjvzk2cgu79y7qken0", - "percent": "0.0%", - "airdrop": 2364.0611302479892 - }, - { - "total_amount": 68748226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/FAaQmDBJJqNXyYX+cO50nM7WlwxBIxAFfigGFi+gq8" - }, - "address": "noble1dw8fmu29am223s6z42vymkfuwsdwacsf3vlxvk", - "percent": "0.0%", - "airdrop": 1207.6136016234204 - }, - { - "total_amount": 234624856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atk/fjgHIM2EPUlfwTRJifpYtGmN1xnZco1lEujYcmMp" - }, - "address": "noble1dwdxytsue7tyjdfxpsf3nqkhqgv08n8t7vgpa9", - "percent": "0.0%", - "airdrop": 4121.359689841835 - }, - { - "total_amount": 246867914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw22sS3yV8UkobzAiBpkcMmG/1XBW6YDG0fip53zVZPL" - }, - "address": "noble1dws2msppztcyeahnv057ffq8km92hvh79dhrnn", - "percent": "0.0%", - "airdrop": 4336.418088094386 - }, - { - "total_amount": 13390897904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hDC/5bZ5B7TdnGz1DQ08a0VUvXWqUtFKBxLRJIk+bX" - }, - "address": "noble1dwjdcja89tkdmxzw6h6d285heunarmlzwyd8zp", - "percent": "0.08%", - "airdrop": 235221.05787603813 - }, - { - "total_amount": 126977135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhPr6Q+6xiRC8BsNkoU3kAP6BR9+KrHj6XdC74qcKZfj" - }, - "address": "noble1dwcnu4n2wm7gwt75qex475tqzugedvz5gjluky", - "percent": "0.0%", - "airdrop": 2230.4475946939087 - }, - { - "total_amount": 1332118095, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmGFtpA0xiBaaQC/9vRAVhBtgv18JC+OdLYqB1OOMAGa" - }, - "address": "noble1d0yflyc5c20975a9442h44xlmqv5xapfjhqag3", - "percent": "0.01%", - "airdrop": 23399.642784828797 - }, - { - "total_amount": 526342498, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/H6fkqUzemWVUyi7SQtpbGawyy+XwNGMubNP6hZ8fqM" - }, - "address": "noble1d00z4v2unkhvqwnm9c38hec6radvcmpj2pr0fs", - "percent": "0.0%", - "airdrop": 9245.596529243503 - }, - { - "total_amount": 614085325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/GlntPt3kyIHSpRb1paHju2bJ6YgaW3hmTimsyeNrzk" - }, - "address": "noble1d03ma50nt3273tunuumrtmjsavn3yqzdkfy9dw", - "percent": "0.0%", - "airdrop": 10786.86439163301 - }, - { - "total_amount": 5712546860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVCfLaUf4rOvIoGso7R5xdLrhLYjriPk6U+c87PMXmT" - }, - "address": "noble1d0mj2k6uhszryh679jlt5398v9797qugm2hcm4", - "percent": "0.03%", - "airdrop": 100345.12436796784 - }, - { - "total_amount": 366491624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3naf/+shSRdRGFHOCpNsVxyjDCXVUdGwJyZ1Gnw4LrK" - }, - "address": "noble1d0uckhjr9rmf0zkrvva53raqngawv9ylxustsm", - "percent": "0.0%", - "airdrop": 6437.697316341753 - }, - { - "total_amount": 203760584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkogJjIUoTsNtPdnOzAb850fAJTtev6Lx6hYE7P2B4oE" - }, - "address": "noble1ds0vush4npnqcglm0rawznm8jsz3ywggftv4d4", - "percent": "0.0%", - "airdrop": 3579.2058505354225 - }, - { - "total_amount": 65450000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkukXvA0kCkhw1jZjza6FBYYG/y9/R5YjrLxZsz+h1kz" - }, - "address": "noble1dsk5ysul4l3yhg653vq2kcqzlkjjewgnmw2mf8", - "percent": "0.0%", - "airdrop": 1149.67781461376 - }, - { - "total_amount": 136204170, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah1ph0b+y/JdvvIJ7p2wHPCugPSlkF/anIWw7XnC1C+X" - }, - "address": "noble1dsc2ps5yezeuua8mffgrfhmrj2cel3gh2q3375", - "percent": "0.0%", - "airdrop": 2392.527311029504 - }, - { - "total_amount": 251795136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axmamd0YV6Cqd9MafMcpKdkkfVAH0Xh40iJW7NV1jM84" - }, - "address": "noble1dsevjs09c96y7uqlquy3j0zl654089cqprxr4f", - "percent": "0.0%", - "airdrop": 4422.968398576843 - }, - { - "total_amount": 405393562940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CSJw2O23Sm8cJsjOVOZXtcuDgLZWKBKtZ9IV0RcEt0" - }, - "address": "noble1d3ttu3zxxzqs406qwtadcmdye35gwkrx5nelq0", - "percent": "2.37%", - "airdrop": 7121038.739485789 - }, - { - "total_amount": 81905214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3e8JhatoZYXH7hV9Pt6Cp/HqhjqRTd4OBKnta8CNVci" - }, - "address": "noble1d3vlz3m6w9d5fsaxp87uy94pwm9cv2gzut6hdu", - "percent": "0.0%", - "airdrop": 1438.725858471999 - }, - { - "total_amount": 1013476464, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoX3XerUw0VTmRWOPhc9jHMVzVvcvh3jTQVKOCpG4BSa" - }, - "address": "noble1d3w9jcqfh2jg3sj339wc8xhgwt06q0l9dq66cc", - "percent": "0.01%", - "airdrop": 17802.466100748676 - }, - { - "total_amount": 67424534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8dyAeK7EDkmdbC9e77AaWkYi4QGBuF8EK3oP7fgtrt9" - }, - "address": "noble1d33578a5r3a65t80qydvzmqe7emfm38a50jmqu", - "percent": "0.0%", - "airdrop": 1184.3619694495208 - }, - { - "total_amount": 397943397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxzfwaZfFQMRW1GkbKkahqbLkKLUj6lRxxvQQFW03jOZ" - }, - "address": "noble1d3j4c90vqtmmemddwg6xn28nj9mq3ns5vun9gg", - "percent": "0.0%", - "airdrop": 6990.171046645314 - }, - { - "total_amount": 200085016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah0NHhGWPo2CieZzNmVMDBz/yN5LDY4PBOqNJv7Wr6P8" - }, - "address": "noble1d3nuvyvggrc20nnr5qhf829hs7jvasrazps4mv", - "percent": "0.0%", - "airdrop": 3514.641771303883 - }, - { - "total_amount": 209252187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxClz1l377F6sWG7g6Xzs66B/Vi824K47dF2aoXV5vGw" - }, - "address": "noble1d3kmnu5658refqe82c3wt8z46zrs7l0nf75yxj", - "percent": "0.0%", - "airdrop": 3675.6699320597368 - }, - { - "total_amount": 52041927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8TlGjgU/na8vKA9+eL28iraGQotG0g12kJatbYYzWDb" - }, - "address": "noble1dj88tnqzqm5hzmvtzm7cz49fk78kwhghnc76dq", - "percent": "0.0%", - "airdrop": 914.155063432373 - }, - { - "total_amount": 50091418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzERiApWifjeSPF20+vQuRGKTM7jt4JC+ef9c60mcWKP" - }, - "address": "noble1djvufz6kscckt22fs7lles573cruwxw20gzkzz", - "percent": "0.0%", - "airdrop": 879.8929255484239 - }, - { - "total_amount": 265340545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgQkzy3DbYxiZirRuIAtogUAtZDY4N538BjarTgOex/4" - }, - "address": "noble1dj3n3pjz89szqe3vd3jqcyh5s2h9p80q9m79uu", - "percent": "0.0%", - "airdrop": 4660.903558503041 - }, - { - "total_amount": 1494347504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ya0/RLftrc7xlH0fXMzaeGXd8OxK2eDMC8GKI0Kx4c" - }, - "address": "noble1dj37pl6da6svn2vglqjrurl97v60gqglpsngh0", - "percent": "0.01%", - "airdrop": 26249.322729904456 - }, - { - "total_amount": 50469620, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArBfKLNEDxNAoOv2JIZDPcTpsBSRd/fL0HULljZ9KlpC" - }, - "address": "noble1djjtkf4lknaem0fdzrwkd7xctrtwteguzeqv7m", - "percent": "0.0%", - "airdrop": 886.5363243084324 - }, - { - "total_amount": 400008054, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9G6vjW0LOqa0oRaA7NP/hwP6f0BOJR0Hp8gx/6StXsC" - }, - "address": "noble1dnx5pk4nr37hcm7dqzr9l8xfq7awh47lffrma8", - "percent": "0.0%", - "airdrop": 7026.438278848324 - }, - { - "total_amount": 54895964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ambu/jZb4nnTiGmvuuNopiqWykicetp/XQVMbRvMTiXd" - }, - "address": "noble1dn3xyyrhtf2mdw7m792wvwc23nu2thj4tfyp8j", - "percent": "0.0%", - "airdrop": 964.2883410639515 - }, - { - "total_amount": 157759295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azmns7Nomog8tiTWC0c5pjuo+0fareKYXHFGbCEWSdVk" - }, - "address": "noble1dnesrhzjjsvxgkkvhyqtrf8c8z9aj6fmngxp5x", - "percent": "0.0%", - "airdrop": 2771.159075792321 - }, - { - "total_amount": 50061015, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A82NeiqR6iiipoSxIvRWYxONKPgrEop+rHw+/mkdzBQo" - }, - "address": "noble1dn6tgkum6y2pgwgwmnwqjzuxzzydly7ygxupnv", - "percent": "0.0%", - "airdrop": 879.3588742940664 - }, - { - "total_amount": 8000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A35Y8q1bGg/JorI3aTCQVTeYP5kep7a2g7ndckxpOnps" - }, - "address": "noble1dnmz4yzv73lr3lmauuaa0wpwn8zm8s2098l637", - "percent": "0.05%", - "airdrop": 140525.93608724335 - }, - { - "total_amount": 1435000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7eXL/z5i3LwwLxg/DILBEUtnogffnm/y9VFJL5n5hZL" - }, - "address": "noble1d5tta9r5vhu5st3jmu4muvudz09qgz6wp5nzcr", - "percent": "0.01%", - "airdrop": 25206.839785649277 - }, - { - "total_amount": 655799330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/jwORS7Ixqw2NjuWDTiKzL35ymeeYjMtMtxPxHiBQGy" - }, - "address": "noble1d50zp5mymt53dkzn9xrslwen2cup25uzkz4d60", - "percent": "0.0%", - "airdrop": 11519.601841704627 - }, - { - "total_amount": 1652729952, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5FrdfMIRYGFB9SSIxYeNCaMNwgwc0Bp179BlFVRUmsB" - }, - "address": "noble1d40zeumx5k4kteplljcpv3sxjudfg0elplxude", - "percent": "0.01%", - "airdrop": 29031.427950528097 - }, - { - "total_amount": 585940522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5NmYNTgLWypLglR2ZMrAxza3ZmnKAxWqQ83cdHK0INk" - }, - "address": "noble1d40sackju44q4fgnu5c36gc7vsvuar2pk0ls2r", - "percent": "0.0%", - "airdrop": 10292.48004318725 - }, - { - "total_amount": 1023765153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A46W2l9qCza1CfssSJOgkRn1VjsjiDXph2K5VlJs8OyD" - }, - "address": "noble1d4skw3gnq6hydyjle42x8e5s9davrlj8vswf72", - "percent": "0.01%", - "airdrop": 17983.194557353116 - }, - { - "total_amount": 102683038, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgQtbDw6raF0aypgTaYt8UMrBnvYhgBnB4PcQXS0SxxD" - }, - "address": "noble1d43k9dekyrug9ew3pk74ka370vu6k4jyn8gezg", - "percent": "0.0%", - "airdrop": 1803.7037544039977 - }, - { - "total_amount": 1302264555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjYU6pcBDDrocY4myXB8jhOQskyq/AVKXz5aNBYsc/aA" - }, - "address": "noble1d4chg7arhfs6etgt52pzdsyyx7s3nswhpwc2rg", - "percent": "0.01%", - "airdrop": 22875.243203076552 - }, - { - "total_amount": 49989500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Alp+pvlplEl+mk2es/uIaaQ45ZgirRXmcU8ZyLBBJS" - }, - "address": "noble1d4a6lf2jf4lsdx9eqt0t7uv9gyud25mf446gqq", - "percent": "0.29%", - "airdrop": 878102.6602541566 - }, - { - "total_amount": 56732283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AukM3jTlLl3S/7f32EE/R/L2IpLQO+MITMbOCJCgF19q" - }, - "address": "noble1dkc3wn7dmnpnstdqdea228fp4t5zqujyyjmnke", - "percent": "0.0%", - "airdrop": 996.5446468676754 - }, - { - "total_amount": 77500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqMnZzwX47FEw55MKHw7TfVuXUe9pGuUxBKbtvpJD+ra" - }, - "address": "noble1dkcujd77p27n3nw59y4y7tsqk92tnry5l03ur0", - "percent": "0.0%", - "airdrop": 1361.34500584517 - }, - { - "total_amount": 2119218290, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZea7fmiySzxJEjeBK+tt47A6wEsRsiA7AKzzNiTr8R" - }, - "address": "noble1dkentjasgp5jgxfh80twtepqkzncarwumq2lp2", - "percent": "0.01%", - "airdrop": 37225.641746932146 - }, - { - "total_amount": 145386929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmL656IHa0CDsG4I4OLCz9xsjl/7lEI9nhA5m72opRiJ" - }, - "address": "noble1dk6xkvps63n20rs37dh0tnr2l3pagfw922dck0", - "percent": "0.0%", - "airdrop": 2553.8292865718236 - }, - { - "total_amount": 60107658, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgsTrZIqS0XCrONIVaBZjNSLXdwPZe2hoilehf1nquTg" - }, - "address": "noble1dk6v9fc5xnlsddp8e98gkpxngsuyerghn7g5uk", - "percent": "0.0%", - "airdrop": 1055.8356133077352 - }, - { - "total_amount": 1688500059, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axxhr+HERFtNYdp6+3OzwmJUBlPrarMqdwEaxy4ES943" - }, - "address": "noble1dhqw5umtuggzet5d9799z42mlwqsaamlcpjtv5", - "percent": "0.01%", - "airdrop": 29659.75642179258 - }, - { - "total_amount": 1753392256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am9yfkIjr+7xp0mNsGp8KjL1a39e1Pq5H+Cr3PuPvckg" - }, - "address": "noble1dhtrkvh2l9gu9jg5yck3zx0639mp58qtstkm9q", - "percent": "0.01%", - "airdrop": 30799.63601281543 - }, - { - "total_amount": 78274816, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9KZLzp7cZci+0QsKRq75yFLfxqiEFoT3TSoqoSEyiD7" - }, - "address": "noble1dhkmvjqj7qjx2w4fxn92r8jzaj9vkdan4h8lvp", - "percent": "0.0%", - "airdrop": 1374.955223807092 - }, - { - "total_amount": 65000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApeJfrMaSnXO2wiQ1UpbOYU0oICqiTKVALOOyeScfWoJ" - }, - "address": "noble1dhlh7xgm902w0cnnpgk607e7ugllp2smk6tzdj", - "percent": "0.0%", - "airdrop": 1141.7732307088522 - }, - { - "total_amount": 295572374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArDc6bJFH1c7dsfT+5OUb4vyr6IwLk0vvZu9a+gkqupW" - }, - "address": "noble1dc2egymyd4nxkwt695syyvyy4dhs7893fl0n08", - "percent": "0.0%", - "airdrop": 5191.948067234848 - }, - { - "total_amount": 232339721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTdF3osgQA+A9lhleWx540HcaddCn7QCjYl1iMSeEBh" - }, - "address": "noble1dcd2rtjh3jwsvsy50lq6s2pgljzwaju4h6rp4a", - "percent": "0.0%", - "airdrop": 4081.219597971744 - }, - { - "total_amount": 1046257144, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqxTKIiRpAJQ7tpSkt9JZws2kLEN8CrUyh8mA1fMwapM" - }, - "address": "noble1dc3ghesevhe389qalxn9ka3fk57zc68cx0gr0k", - "percent": "0.01%", - "airdrop": 18378.283068570723 - }, - { - "total_amount": 73564931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApbgK8sbWq1CoLJRu+BUC8wwgRcgg104aRjRGqprTzW5" - }, - "address": "noble1dckzj57ryx9djwwftfndf4tpzfr7tc7l0lx7sh", - "percent": "0.0%", - "airdrop": 1292.2225989960584 - }, - { - "total_amount": 348603998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayp3TQqnSQpQ/wlKPhsmCOvsDcg1TkpU/P0vfMySuxmL" - }, - "address": "noble1dcm9279h30e9eja3tj02c47hc3vy5sqazvqnru", - "percent": "0.0%", - "airdrop": 6123.487892838189 - }, - { - "total_amount": 1345010603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmFbB/z8FkettSXTHv4IVBaZWmpFiV8C6hmXg9z13Esj" - }, - "address": "noble1dca6l9wqgzrec5ntfzdwnskcqxg26f0nhaerl3", - "percent": "0.01%", - "airdrop": 23626.10925423033 - }, - { - "total_amount": 49439056915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8F1kzdOI6xmnqN5ehWSfcI8U9/RDInoEkLhXBjkNJOD" - }, - "address": "noble1devr6g30chcv7jny8l07c0rd7vyafjc4mejn04", - "percent": "0.29%", - "airdrop": 868433.7190313595 - }, - { - "total_amount": 3461206635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxVPMhOp5mF+QSIaPqad2JZLM4kAYhTIf87GaUzHuJC7" - }, - "address": "noble1de0e2cdxm7hgec0c9h05sgmrlltgpwcskvt2gp", - "percent": "0.02%", - "airdrop": 60798.66279684408 - }, - { - "total_amount": 88250927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A36d/17pEq+RBsMpTEfPu9SiKi+QhcJNsBg0h1K9qjDp" - }, - "address": "noble1dejk7wlq00jj6c6p37nx8ezfg6l0r900ny5fhm", - "percent": "0.0%", - "airdrop": 1550.1930159052474 - }, - { - "total_amount": 7354172777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1yohRcH8w6JIN3fYVTPFklxE4StnZ1v5c6rNKIZVkHf" - }, - "address": "noble1deh580t5rjxm7e66qrfwr4xlwhl79k2a6hthh9", - "percent": "0.04%", - "airdrop": 129181.50170440588 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5J5jMBdrT7XgEFRUujyVF11hNXFiYGEEINoZfbWCI75" - }, - "address": "noble1deasx4890tvw55u5ecfey6y6x4gwamm3j3m7uj", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 106052327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9dpnKSgTSOHzmKWTrqGTmjBUJHm3bpsBfg5QeqkJH5X" - }, - "address": "noble1d6rzj99y3zmkrcrvxnrhh6glu64ymjl8vkte33", - "percent": "0.0%", - "airdrop": 1862.8878157381791 - }, - { - "total_amount": 70100022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgIBFSRkU3/3B9ROSedaHyK45xBT8MjKC16M7QIUQkow" - }, - "address": "noble1d69ku8h9q9zy29psv9jy58956sg9navs5pjd4u", - "percent": "0.0%", - "airdrop": 1231.3589014107943 - }, - { - "total_amount": 599624510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/kp5ecTP1+b+ZfVi7YHR8bcg0L5bRGl3q8/dlWVXlhU" - }, - "address": "noble1d6hqsgd5ka568ytq30f5fcsd0k7q0ms85mhyk8", - "percent": "0.0%", - "airdrop": 10532.849446075577 - }, - { - "total_amount": 841261077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmSm5uiTGtpt3GuTumEEcCJO85mc6fpgWVX6vPWxsRQ3" - }, - "address": "noble1d6u09emqs59su4nwwmk9l3r3srk7jxqp6ah087", - "percent": "0.0%", - "airdrop": 14777.375042398438 - }, - { - "total_amount": 6602157210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1DNnaLqp4Ph8yIC1R2U8WBfTteA9YCuPLBUKhdO6Au3" - }, - "address": "noble1dmrte0knmgpns480m8s44vwe65f6rm4nudql0v", - "percent": "0.04%", - "airdrop": 115971.79026629913 - }, - { - "total_amount": 1532000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6o3GmfPLqVPxTvEfm3PrlYxYGlOgwmq/ILNghKniCe1" - }, - "address": "noble1dm8zrdwed680nkl49ju9cc7mv9494mp42avrxv", - "percent": "0.01%", - "airdrop": 26910.716760707102 - }, - { - "total_amount": 984169379, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1MEDsCycxPjjl7Yf2EYEBLQe3tD6vdZyqxSCLRWylwV" - }, - "address": "noble1dm8zamql2akr0ezxcz8e5ds358r2tjcpstvf9u", - "percent": "0.01%", - "airdrop": 17287.665406546996 - }, - { - "total_amount": 102004136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao6FW9hX2isrHC5htWJ8VQ/fY6vsOBLBDuLXe0twXUHO" - }, - "address": "noble1dmvle9fu8vxz8z8ywkezze6q54la4gqfplqy5k", - "percent": "0.0%", - "airdrop": 1791.77833702131 - }, - { - "total_amount": 66210454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq7/5oRjb9mZ/wQQOt1CeAaRMiEd0pKFZziqwDrmAfe8" - }, - "address": "noble1dm3jjy57q9nlvflumdvwh2ne9ejfrvdz6ramkx", - "percent": "0.0%", - "airdrop": 1163.0357533889207 - }, - { - "total_amount": 954978499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ryAElLx8hL7FaYFArDp1Of6fJA7bwg4hxWi8T1KeNU" - }, - "address": "noble1dm3cyynsxf4v2v274esgdf9a36phdrg2c7g4dh", - "percent": "0.01%", - "airdrop": 16774.9059393957 - }, - { - "total_amount": 81980929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AptvZ0y5YRqXyJOXS0qlqKr/DH2iYXQhbJdghSemcYmo" - }, - "address": "noble1dmj6gqp84chlxk277xv7wtur0am92uzm0p97xh", - "percent": "0.0%", - "airdrop": 1440.0558486283546 - }, - { - "total_amount": 866000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IhKkpIDPzM958yKkKQ6wS/LBavTEVl4rtcWooFTjLm" - }, - "address": "noble1dmez4ddtmpcnsppn5gh2d2ldd9m3x4wxjan67a", - "percent": "0.01%", - "airdrop": 15211.932581444094 - }, - { - "total_amount": 170050357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHl0vStNVy8Q1JElnUCjLNrO3Va0xxV9S37ecb07HGw" - }, - "address": "noble1dme7m0ly4aschfdu9j4lqq2kza8dvl3nj0rcfr", - "percent": "0.0%", - "airdrop": 2987.0606999243646 - }, - { - "total_amount": 168897081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstHDv1KVo0cwqt8e+gcq7TqP/hXeMyqAqbsM5iyebAP" - }, - "address": "noble1duzp9kgs8xxgahcr4ex4e5gghq5jl8ts4rmqyf", - "percent": "0.0%", - "airdrop": 2966.8025512409954 - }, - { - "total_amount": 3903078237, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ny5ttRgm9VsgOzzaNTxf6Xw45ZirPUif/azPvGzNGI" - }, - "address": "noble1duzshqh6pctpvslz6sy7nt0en7yd4h9xe542fr", - "percent": "0.02%", - "airdrop": 68560.46535952156 - }, - { - "total_amount": 50007746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+HZeo62ZJyGzi5W24nAzsr5d2/dpHbhzjV9E9BB+S2x" - }, - "address": "noble1du2t6ap5nzdktz449znrn9pfry54yax4c2z44g", - "percent": "0.0%", - "airdrop": 878.4231647828874 - }, - { - "total_amount": 186378425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7/Yv2sZ87AiUrMHVRERaHXCNWuz6LhqwupS8THoKRJT" - }, - "address": "noble1duwyss9e57mphawwzmxfs47l2mlt6sudpztr85", - "percent": "0.0%", - "airdrop": 3273.8753299488853 - }, - { - "total_amount": 405630442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9aD6nEnHYtbfni2N+CDZmQRBcvbCQBPTdqDqixI077h" - }, - "address": "noble1dun7hhfcxx6wx2vwtcrl5j959ysf656udp5lmd", - "percent": "0.0%", - "airdrop": 7125.199695941534 - }, - { - "total_amount": 58494926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApW2ECIBu+G/sN28eb35nWlcX4tVq5VRkaClWWqVcGwp" - }, - "address": "noble1du5gxt3sewnd8ka3p4rf0q2x54lx5psa45pht8", - "percent": "0.0%", - "airdrop": 1027.5067790630037 - }, - { - "total_amount": 88964391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+dnJ+Kb14vsFB0lYO3w2l5MEw2BnU0H05K98yo6Q0e" - }, - "address": "noble1du4mcs4pzcf8cdmstwvhjrxaf9l4v7754qyzzz", - "percent": "0.0%", - "airdrop": 1562.725540463316 - }, - { - "total_amount": 1155959437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awds2W3b1Xk9ITD0NlKGFIqGlZRomiMmTWMVXluJ3ZeP" - }, - "address": "noble1duekfz4r4g5yykjgx6zea63fr80psqs36ugphr", - "percent": "0.01%", - "airdrop": 20305.285245413477 - }, - { - "total_amount": 174061532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8D6g+pV7wEw4ovLHUb3ksl0BcpJfo80Xw8jobKuKYS3" - }, - "address": "noble1da9mktg8tdxtdlungca2q4zmmgsntsfcqwp7c5", - "percent": "0.0%", - "airdrop": 3057.519965134958 - }, - { - "total_amount": 90711981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9A2bC2fm1vlxBzi1a7vpl5OAkAx3/CDoTJNRZvihS4p" - }, - "address": "noble1dafzk4kveevsqg42x35r0nhf3pes7kcdynca36", - "percent": "0.0%", - "airdrop": 1593.4232555441542 - }, - { - "total_amount": 2154542771, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AynpHSNHET3VUfb+Xho0nwKohbWjBCZkixr465OE9GDs" - }, - "address": "noble1dadg9uvva40anmkd8szec9g5gmrg8qds5cl7jh", - "percent": "0.01%", - "airdrop": 37846.142466847276 - }, - { - "total_amount": 1071801886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApHv+aBXjUct2KA+roVgRpgV3I9kM4wpvxUhP5BhJIH6" - }, - "address": "noble1dajj05jcpxwd58wx50dskh97tsfj8j0kj7nc3p", - "percent": "0.01%", - "airdrop": 18826.99541627786 - }, - { - "total_amount": 1291489583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A44YsQYpIfSyNGfQPdoTC3z22PUafbPDeM/kHDoidwwd" - }, - "address": "noble1daju9cjs42h4rat94t8e4mkupa2u6s2me8rjvg", - "percent": "0.01%", - "airdrop": 22685.972824749824 - }, - { - "total_amount": 12117387466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag+jCzJdKjbpJSojRRugCCWFVfsJmL/twbRLfESVanMY" - }, - "address": "noble1dactzq202nm0vru0njm5eanvu98d8ke9x9zc7t", - "percent": "0.06999999999999999%", - "airdrop": 212850.90207393497 - }, - { - "total_amount": 71266161, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax+M3KEwa8ngGQjj1X2/PHMDOcePk+F7Kn22U5b3nYEr" - }, - "address": "noble1dacak00vyrsa2n4dz64dkcvpy9xnqzm5mlafqk", - "percent": "0.0%", - "airdrop": 1251.8429982336495 - }, - { - "total_amount": 46652685227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQbDIwglng4BoXv0TztrfgKAjal2ZFEKOXe3yTP6iCo" - }, - "address": "noble1da68qsg9l5vuaclcks7af86kvmvvp0gs2g40xm", - "percent": "0.27%", - "airdrop": 819489.0328134606 - }, - { - "total_amount": 22806926620, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A324JQrPhDt5vF+hao25d0uwvHvRx21GaF+oJ0Z7yE7E" - }, - "address": "noble1d7z0epdsgs84vvhmqcddpvmg2csnp6xftp3vxc", - "percent": "0.13%", - "airdrop": 400620.58906857116 - }, - { - "total_amount": 768998650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ND3wwAh553JSe49EEejR010hyNyav8VS/JRNMve24P" - }, - "address": "noble1d782jwfnuejqnm6j2702xevn9gwh5c5x7262xc", - "percent": "0.0%", - "airdrop": 13508.031892634554 - }, - { - "total_amount": 186900044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3y82DK/s3kx4QDmXHED9VSQ5mJTGq9w4WDVAc0/J/fp" - }, - "address": "noble1d7t4ytzyarec08hj29frx5wrdnlkr9cl99cr3v", - "percent": "0.0%", - "airdrop": 3283.0379547308717 - }, - { - "total_amount": 736570039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8HTngmXesqjMv8shDcYkY0Vy5Bf4vwMul7dAPelo4ln" - }, - "address": "noble1d748cnerjfmhpska9elhssha5tpfqag9cqxpc0", - "percent": "0.0%", - "airdrop": 12938.399278036544 - }, - { - "total_amount": 98078963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ake5RgeBCuJ9Hc/eddG2zD77h1knZW+/ipssglwVK9QM" - }, - "address": "noble1d7kwxjpqve30lfy2x7ckgsls35t8evtgeldxla", - "percent": "0.0%", - "airdrop": 1722.8297607551383 - }, - { - "total_amount": 10290545349, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqMlVklqn9RMoZDcZVbXHZ6wHXuuxCRdy+op108pTC5L" - }, - "address": "noble1d76n9fmzkzwvpf6uqy86es009al0acn3prm77x", - "percent": "0.06%", - "airdrop": 180761.06475205667 - }, - { - "total_amount": 65079263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHQGUGhnMsKxadDiqiWHTENimHva/emaNFu59HPeOM9" - }, - "address": "noble1dl2typm4r2cghnknqvywmxk5al9z0jvdzvj6ak", - "percent": "0.0%", - "airdrop": 1143.1655441178627 - }, - { - "total_amount": 87893438, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5lZRUiDWusa378hLJnvpshMF0sqbWUB4MX35rjSUuTr" - }, - "address": "noble1dlt2sq2j0znh42kje6y0wchqkq6um24l6p4vhz", - "percent": "0.0%", - "airdrop": 1543.9134563595107 - }, - { - "total_amount": 50392549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alsg/rjXS1JMWJQxzS0qTfUuWSi7nel6ldYXV/1kB+8J" - }, - "address": "noble1dlvduk8gkcgp0sv7vcrrtfphg8lal0rzumutld", - "percent": "0.0%", - "airdrop": 885.1825150059099 - }, - { - "total_amount": 208373328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+vM8EUJRRsBmx6QIukVce/TOlHB22eLyB22fgFa63Gw" - }, - "address": "noble1dlsccdcxs9h7lxe23r9n7ffzpa0ahvx5n6ey6s", - "percent": "0.0%", - "airdrop": 3660.232121601775 - }, - { - "total_amount": 569644987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6o3tEVzRK2DbHyl4otlUQpPgOLux9cK/5kO/PWNExW9" - }, - "address": "noble1dlnaj5t2nf60vjl9axffp83hfpt6q7vj0w7kax", - "percent": "0.0%", - "airdrop": 10006.236879447571 - }, - { - "total_amount": 198343269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkxQyRI6RPSeRTrHIRv3AodS7U/I668S2q5MRieZoTeF" - }, - "address": "noble1dlhhxuyd4wrjmtsz9u3dp6et040c8ph575j2yu", - "percent": "0.0%", - "airdrop": 3484.046692853615 - }, - { - "total_amount": 851395488, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiLJYeJZAulRUpKP3zLwhnnLWtUzZe+P+77g9VeYXgFQ" - }, - "address": "noble1dl6696pxrzm0nzhjl2909w7edc2uk0yaah4kye", - "percent": "0.0%", - "airdrop": 14955.39349145692 - }, - { - "total_amount": 54524443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8+XpFazQAyWEQp+YRC71h015rcQ+7O2rC7vZL5zZU37" - }, - "address": "noble1wq0jh4r64dsd5x450t83dk3xu03n4676yau8e4", - "percent": "0.0%", - "airdrop": 957.7622990263179 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhQtNL5+S7PP00ao5pA7rBJZhS3STpIstaVQoqjF3JKF" - }, - "address": "noble1wpremt09w5y738lhem0fwvqxhqx3p82mx2phuk", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 300221053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UJPnTaVK9E+/yjYVOhtqvBUsi8a7ue1mbw75s98+bR" - }, - "address": "noble1wpdk6azjcdsftuyrsxdvugwqjj0zv03u0n9c8k", - "percent": "0.0%", - "airdrop": 5273.605563240362 - }, - { - "total_amount": 3894727282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2pHRdjrs5k6NuNDfdlsg1Hq1ntyruuq7OTS5e4qksuB" - }, - "address": "noble1wpwalkstr7rm2plfulmn44el43hwaneuztwnlz", - "percent": "0.02%", - "airdrop": 68413.77463844688 - }, - { - "total_amount": 455605215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4S74l5GZ4owq+YVVYZLN83rccIR06zEdhIZuMrEyDvs" - }, - "address": "noble1wpjuvxdm6x3aly3mdk4d9jwgufdqndcujy2n5d", - "percent": "0.0%", - "airdrop": 8003.043665513096 - }, - { - "total_amount": 51380293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alxss81JTzCDOb4MgmIW+8wUyxbWZrGvRPqROaiVxR5m" - }, - "address": "noble1wzr0ylrvltd78lfg36frn8c05k6kmfmd5jtlyz", - "percent": "0.0%", - "airdrop": 902.5329712827296 - }, - { - "total_amount": 129296236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZsEo/XfMEjOyH+1Mapbzc9KCr8FZAzyk3tKv1eNxE1" - }, - "address": "noble1wz95a2vzthfa8vgflrte3jgcslmu23ames5w38", - "percent": "0.0%", - "airdrop": 2271.1843245571417 - }, - { - "total_amount": 58296041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Q7nk2/G880knIU6WIvrGF2ZXqn4R6bWrOc5HGxhvV6" - }, - "address": "noble1wzgjg9whns6dtt9j6fshjfavarxv4n9h3fq8hq", - "percent": "0.0%", - "airdrop": 1024.0132164631648 - }, - { - "total_amount": 6597862411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axswy9cr8pQwJo81WLLfnQnx0RgF8d7X48OzFyT7ys37" - }, - "address": "noble1wztll868gprnnwykctuwaqf6rrtdc0wuty6h0d", - "percent": "0.04%", - "airdrop": 115896.34893507643 - }, - { - "total_amount": 87713175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuZjqW5cRDy5rYYCBJJ6+w36pv7aB90K2telapEiwxoX" - }, - "address": "noble1wzsx9aey483qgtadjc8nrdwy0f3xpeqvfr6fpr", - "percent": "0.0%", - "airdrop": 1540.747003007399 - }, - { - "total_amount": 204594102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A17bAnHU4fom+eQgkZhEAT82CIqGaKn8e2W+Cc9kEIrU" - }, - "address": "noble1wzk3lj2cf7ew209nx9uwsxerdt0lv43sqzz94e", - "percent": "0.0%", - "airdrop": 3593.8472126848687 - }, - { - "total_amount": 4960717229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A472/0vBtHhl5IQbKatFi2Lhpojf5tAmaenPqcxvXNXg" - }, - "address": "noble1wza5cgx5zahphu3gfd2rqpglhqfdjhj6r5w73v", - "percent": "0.03%", - "airdrop": 87138.67903366762 - }, - { - "total_amount": 1005008689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77gCxFtAvlkYw/7YQMwpdsTD2ob7LQ8sLtjqZ3qgv3n" - }, - "address": "noble1wzl3aj6e0u4mxff69a3ng3lg06g3nj469nhexn", - "percent": "0.01%", - "airdrop": 17653.72334969228 - }, - { - "total_amount": 90992222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhZdvjifPtah2uAqXmn9+gDElThBEsoSuYphcWWMG32M" - }, - "address": "noble1wrffsq9twhu9ecyzla9l433ajpjnasxycgjl06", - "percent": "0.0%", - "airdrop": 1598.3458966510325 - }, - { - "total_amount": 771546403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArbEDBlqU39ZMyk+Nr8Kq+96FAWmJkPOXRphxRU4/8C1" - }, - "address": "noble1wrtz3fwlve36x4ks9mj40wk4paalaapjdlpvtr", - "percent": "0.0%", - "airdrop": 13552.785064540065 - }, - { - "total_amount": 459027049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9y4mBlyttxfeailjWrL8kNGJs8VYH86jOzltErb6mur" - }, - "address": "noble1wr36rcy2jt6hntp2cnmnvc8aalvyw6nmap2mej", - "percent": "0.0%", - "airdrop": 8063.150718761241 - }, - { - "total_amount": 99466722, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/bjL1pT30Hw9SslRjh2R57aFURFu/R9H1mIoQOaSpS4" - }, - "address": "noble1wrk4vlk03unephl72ntttcd80lnf7a2yxght5j", - "percent": "0.0%", - "airdrop": 1747.2067773224503 - }, - { - "total_amount": 466888696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag6QaKcZogExkbHLxVd095uZ73rMzQVgx5MFE3qRV1pl" - }, - "address": "noble1wrmkmpaxw7er0twrx4gsq8nwztw5up20e2etkf", - "percent": "0.0%", - "airdrop": 8201.24638174405 - }, - { - "total_amount": 15568184861, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgkP6gHXpA6jfdOnARtXsbvoB/EgXUhjL87TBZoAncCw" - }, - "address": "noble1wrug3yns7cw923aet62p9ufl46w7yx8rr0vm78", - "percent": "0.09%", - "airdrop": 273466.71884640947 - }, - { - "total_amount": 191922885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AngRYTBVrvMVbL/R2Vv8RwAL4JY9rsCE4n3c14rATIV8" - }, - "address": "noble1wra867la8gvkavqzz99sz229yzkn9sl4w6l4nl", - "percent": "0.0%", - "airdrop": 3371.2678838986694 - }, - { - "total_amount": 309400126, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akpg/NBoZzpy8naRxkCM4XAbmCjBVl7zaLwuhTQTMEgO" - }, - "address": "noble1wraly2grjahun4kfcx8gdhrayvwl6jtnjqg6th", - "percent": "0.0%", - "airdrop": 5434.8427914576305 - }, - { - "total_amount": 1439660777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsbSoPWmHKF6b1P0L2LhTD18eMJytOWyxp0QxwOoyAiF" - }, - "address": "noble1wy4252wx9guljam8lx730xc24vap4jz74wlh3m", - "percent": "0.01%", - "airdrop": 25288.70979200164 - }, - { - "total_amount": 1548949095, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2J7hbwk3Ko6+YlPwoFR8LSYT/2Gqzt3sA16awK97C66" - }, - "address": "noble1wyc98d30vnh27slqq7mgmr892ly4ndepdlth6s", - "percent": "0.01%", - "airdrop": 27208.44019079543 - }, - { - "total_amount": 97436155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+d8FTq8HUjxXxGYeIm9y02iCEf9wAYJscx1/B+1/TNi" - }, - "address": "noble1wyeyrwrphr8f548c3mpjg9cdlv806glsasctyu", - "percent": "0.0%", - "airdrop": 1711.5383612645924 - }, - { - "total_amount": 87101184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnchgmAIqo+OcR8K5pYAq0+yFqsAEjIKacLNRjl8ueiL" - }, - "address": "noble1wyudamz4wwet9jgl8rp6cvpjcz28ahvc32ns94", - "percent": "0.0%", - "airdrop": 1529.996926988403 - }, - { - "total_amount": 221233940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+okX0W/yU6BmMuG3j+PvIHBVgFeQBiyqk5CcrqLJyq9" - }, - "address": "noble1w9pzzpg8syykvrrgwu0e2x8tdmyemjcu9vgm48", - "percent": "0.0%", - "airdrop": 3886.1383140961293 - }, - { - "total_amount": 77616597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjZ+teYzG3GECPyKMKSIDFhzTaLduoCkNNDtHGpmA1Pp" - }, - "address": "noble1w92nkx8s8nraygwlass0gw4ywnme7etj2mey8y", - "percent": "0.0%", - "airdrop": 1363.3931186664156 - }, - { - "total_amount": 659370387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTJ4YxD7kTrKHUDeCFUs7ZmSW4kjYPsdwzg5lQa+e6J" - }, - "address": "noble1w9vfv5wtmj70udlhcgwsehrrylzsdsckm7pal6", - "percent": "0.0%", - "airdrop": 11582.330107672866 - }, - { - "total_amount": 89993413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7r2cdLMfUZIAcPK2u0FET5Ef6Z5AM9rK18e/IHq2uCf" - }, - "address": "noble1w9dtdlr8rnk2ejt7ydj5uvde8pnlz3zzul4rrf", - "percent": "0.0%", - "airdrop": 1580.801075438862 - }, - { - "total_amount": 110987503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyVe8X0bOTuX/9lvCCKbdnOnqTiPG1jAFodfJhX8sT2f" - }, - "address": "noble1w90axmgz99vz9twceexyjspxquhyl0tqrj3ld0", - "percent": "0.0%", - "airdrop": 1949.5778441325913 - }, - { - "total_amount": 54242844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArfQ4YEyELIN7b9KzgZWwywemIkhZkgjmAxMgNYk5ECq" - }, - "address": "noble1w966mrwxed8ml7ty0humn8zal34mukjkes3mf7", - "percent": "0.0%", - "airdrop": 952.815803641789 - }, - { - "total_amount": 106527819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A42MelFUnU2Ap99F6lwb2R6IAJo0vf/LxNpcmn+vi4T+" - }, - "address": "noble1w9u6mh9rkyfwlxkq84j39cpqcrxulxfln0636f", - "percent": "0.0%", - "airdrop": 1871.2401855384285 - }, - { - "total_amount": 1775721436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aib8A/QkC7HBIvuiYnq8aEzgQ6DyyvG8Pw/9xLUbqQcG" - }, - "address": "noble1wxpwaxkcej57477sprg6ue4f5ytwftertjl6dl", - "percent": "0.01%", - "airdrop": 31191.8646280105 - }, - { - "total_amount": 83242962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8P35rnkVfu5S0LZ3ditdCOdLDdxHUaPC/HnslrLsSXQ" - }, - "address": "noble1wxrn9z2ksghuhqtsujdc5nyl2gguwpsm5jawpn", - "percent": "0.0%", - "airdrop": 1462.2243947156035 - }, - { - "total_amount": 297475532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ie/x3zi4f+tXLPLwY65kUxIRV8s1meYpCrehQ1U+6h" - }, - "address": "noble1wxxk4cyqrru2xpvy4dr3tzu9nr6pnas4aku45a", - "percent": "0.0%", - "airdrop": 5225.3784496688395 - }, - { - "total_amount": 140427482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A20ZQXJCRC4v6RkNTlnHRlTq4KyS208N65Tk3JWYqdp0" - }, - "address": "noble1wx3gcudvtxnsrvvhqzgqkuqxylmsqdc7f93k3k", - "percent": "0.0%", - "airdrop": 2466.712920053065 - }, - { - "total_amount": 143494465, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyjkNv59ykkiO89w+GuNl2x0BilntVIM7iYfLp6KoEHv" - }, - "address": "noble1wxczljan67qy4kl5u2cwld6mwpy4hzgfh0uw68", - "percent": "0.0%", - "airdrop": 2520.5867521828973 - }, - { - "total_amount": 99188414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Zk2ZydqqQo+HlaStrlbND3tyq59OJpQW7ipsy1VXS4" - }, - "address": "noble1wxussdfn0kpzx5qa7fv0fvlvguvlnm4ch7pvy2", - "percent": "0.0%", - "airdrop": 1742.3180907948793 - }, - { - "total_amount": 57529871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkHq8aOyHX6x9pZybYMbi9xoT2xc0yiNCY6bx4EYmhaY" - }, - "address": "noble1w8q8g3dc4c3lp6kr5clagnrxylhqy06wjg2npk", - "percent": "0.0%", - "airdrop": 1010.5548719066694 - }, - { - "total_amount": 258356169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1iG59834CS4Dygd8cb8hkVAC2K7kQiEKP9PHpzDeOku" - }, - "address": "noble1w8yg0wwsffcwkz726zssxz4dkazpnl3jw8s9wr", - "percent": "0.0%", - "airdrop": 4538.217811579881 - }, - { - "total_amount": 1540331118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoMKx1zPO25dgSnZT3TeTG17IUYwMhZMgiajwU7SGbkz" - }, - "address": "noble1w8fvjqcaqx2x52er48vrn8p3qtuzlksly6tujq", - "percent": "0.01%", - "airdrop": 27057.059030157514 - }, - { - "total_amount": 62248239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2kj+Ui1EydMuTbn/h2LC9DIWz5A5X1FsUTliNf6840o" - }, - "address": "noble1w8ngvkyqdfje3wdqsa93urvrrdtzdksefq7zw2", - "percent": "0.0%", - "airdrop": 1093.4365069071812 - }, - { - "total_amount": 1069916884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AokicJzxS7dCpRq0o7wyMa3ZF1Sflk6ohNoEuIzzIVVs" - }, - "address": "noble1w8nv8dfp67gsd443sxtsvjuh2lv2vwpsvgh6zl", - "percent": "0.01%", - "airdrop": 18793.883957455822 - }, - { - "total_amount": 91028874, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjiRIFtf32A7M6rr0ZuDdcgRpiKIjg2oS6AaX2upCIZ+" - }, - "address": "noble1w8az00hy6p5gdq873sw9rvvp9whdvd6swspnx0", - "percent": "0.0%", - "airdrop": 1598.9897162272161 - }, - { - "total_amount": 93447190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq86/N9A1xSBg2I79GwSpS3o0dLCZHJ4Etxht9Xvcxus" - }, - "address": "noble1w875kdjh3yxxdurrctu2ze7hjm8mdp9qwnl3a7", - "percent": "0.0%", - "airdrop": 1641.4692311840608 - }, - { - "total_amount": 99531165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApWoOb0hKulQnjQVZK9tZPfbRwrQnDFE9GW7r9rJaVxX" - }, - "address": "noble1wgxsse80c42h0wz7t3vmpnlg9hw4n3cd0fhhxw", - "percent": "0.0%", - "airdrop": 1748.3387664348593 - }, - { - "total_amount": 851152235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApNEas6vhj81YlMNjKTc88J7dbP2XJcL2uPsPZoJwuqt" - }, - "address": "noble1wgcd333ddz70858k9r683q9jnj62k0z80mun9p", - "percent": "0.0%", - "airdrop": 14951.120572015541 - }, - { - "total_amount": 503806010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+dMNMnGdqbVKEIAD7PauXa1pn+ejAb32pMfPmLvkfvz" - }, - "address": "noble1wgec85sy32jgjwmgfrhzna492nqd9qfkqjm9dg", - "percent": "0.0%", - "airdrop": 8849.726395203637 - }, - { - "total_amount": 719365779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5qXOfKn8M0+88f3odtKgnHY3bXHUZO6rYFaiFUtFAag" - }, - "address": "noble1wgeenmx5nahe3wpu6emjxpaszelruyrjjtvtp5", - "percent": "0.0%", - "airdrop": 12636.193685388003 - }, - { - "total_amount": 80227338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoYlHYds43OSx49Zg9301IqEkkeVJepndPbu0ioFQVGC" - }, - "address": "noble1wgalj4s06nszutth3897m39q8x00luv5gvy5ur", - "percent": "0.0%", - "airdrop": 1409.2527215297087 - }, - { - "total_amount": 55555650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az+hGnqA3PlYhSx/SwiImcBJ7z1xKvOG6XWL3gbCrycW" - }, - "address": "noble1wf2tea55epcysfyxtgdau5dcxddech8qcfl94q", - "percent": "0.0%", - "airdrop": 975.8762151481577 - }, - { - "total_amount": 117178075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6BpkJ0HhQ87DPH6/d2E94kF2MBALfakq46J3FWeBKjo" - }, - "address": "noble1wft2ctxzyuqcns3ys574x6v2c5pxv8sy9qawn9", - "percent": "0.0%", - "airdrop": 2058.319834784526 - }, - { - "total_amount": 131820361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvFxFuUUM5qrnxovRZXkcKRSNeSmPHrcp8y7aJ044amg" - }, - "address": "noble1wft4hv4mjdgpl675fe9upd0gmwrs90mhxlj0cu", - "percent": "0.0%", - "airdrop": 2315.5224531104186 - }, - { - "total_amount": 881983242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4O6dAily1yMt6wjh1i2wOiwn6A+bqE95q7AcA8ebrpn" - }, - "address": "noble1wfdsemrxg8c3yuqtx8af3lrenje87705suy9vj", - "percent": "0.01%", - "airdrop": 15492.69008691396 - }, - { - "total_amount": 262384025, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1W1oe46HZbF+2rqNVFkhUi5PfOOVSjScI6kdyB3XENl" - }, - "address": "noble1wf56s93y0mda6stm6rrg6w9ec2ng2phmlfphsx", - "percent": "0.0%", - "airdrop": 4608.970090932958 - }, - { - "total_amount": 87498763, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwO0u3bgoV/MMzJ++NK5xkVWXkeC/4UtMPpm3r66s+jY" - }, - "address": "noble1wfa66ps5qk06vpw45456wwhp8m4tqr327l3lhy", - "percent": "0.0%", - "airdrop": 1536.9806971313567 - }, - { - "total_amount": 685000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjSOCQx/MnRMubS0fbchalPuVjITiwxPykZ+p7jnL6En" - }, - "address": "noble1wf72qyjmvrqlcgpx34txgkwv3tvx4ulfuprfyn", - "percent": "0.0%", - "airdrop": 12032.533277470213 - }, - { - "total_amount": 71662646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7liWc8xXcSm1edLyqcfYKf71x8fB6Bf5YRUU6b0F97H" - }, - "address": "noble1w2xtjv6ws7jj8zq5s5c9such8chw40l2uyr5zp", - "percent": "0.0%", - "airdrop": 1258.8075514548432 - }, - { - "total_amount": 2906574774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar0VdtqJYTtpKeU33GajfqpUpRPAF4GItBLJwLXxAzXs" - }, - "address": "noble1w22vfg2v9dgw7umfuajtxg4a8pl4jz2xscz8vj", - "percent": "0.02%", - "airdrop": 51056.14261548973 - }, - { - "total_amount": 169508095, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ziUsLR8Qbk2KiM+8CZ367JT+f7RS+a/zjMuoinPbgj" - }, - "address": "noble1w226zruh3g70e8e6sfug4g6wx9alya9mz38smj", - "percent": "0.0%", - "airdrop": 2977.535465530047 - }, - { - "total_amount": 98358133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IQBCH9UZo6zF3+YNn8IGSY2Xkvrqw7ra9A6DxtDZ1z" - }, - "address": "noble1w23uws54wjcp047za7y8jmlcgd06756wcw0ffm", - "percent": "0.0%", - "airdrop": 1727.7335889523226 - }, - { - "total_amount": 949878514, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AinnknrPVkuNdXzP+V8KWLT2CifZufZrOeuVkFK2aN1a" - }, - "address": "noble1w250xpa64a87lxh6xdq5vfsshk95zjnkx7xh9q", - "percent": "0.01%", - "airdrop": 16685.320918626214 - }, - { - "total_amount": 702020335, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnkLf27p9u6q7T7Ag2i5QkSL0Nzqsr34oo7fhxTG4Rqk" - }, - "address": "noble1w24hydk9tamrwgxuvqr8lpfsgpvf5ycf5tcsxw", - "percent": "0.0%", - "airdrop": 12331.508091019397 - }, - { - "total_amount": 176944685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ath6+qrbLTs6u7LXWT7111xvmxZahfgXX8ezKXtnqnNn" - }, - "address": "noble1w2eude7tm8p5t7v4nrz4fuf2nunpsf3ekzz3ve", - "percent": "0.0%", - "airdrop": 3108.1646869109263 - }, - { - "total_amount": 2429787644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHaVo9TvUwnifGjdz/rrJHdnwpb9kwbJQvSheXYDiTh" - }, - "address": "noble1w2m4dnrwwmn83v9uyp5006r90erhydtrmc48h4", - "percent": "0.01%", - "airdrop": 42681.0228957897 - }, - { - "total_amount": 75082440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2+C1/pQBFpDZiErmZJF729yc24wdw1qvnkeJWhjpCs" - }, - "address": "noble1w2ml6yc9m8txcttpcpd4yq9nwt3hejflw8z2gm", - "percent": "0.0%", - "airdrop": 1318.8787705892855 - }, - { - "total_amount": 5016146948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A39cdsrm00bTeQ3RVZVqjkH8MvIViO9o99c8iLiNO35h" - }, - "address": "noble1w27q3jmv3lyx6t2ttedxdcfmxuk9ve4gtrze34", - "percent": "0.03%", - "airdrop": 88112.3431773586 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApN0LTZJu9WO1u4A0KUP3wnSidlMxsbXYUppG9h+3QJb" - }, - "address": "noble1wt2fcamjmdype8p2jv66a06f200hae4p3akx7z", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhF7TMEn9eM43z1/EM/A2E2nGT9u4Iqg8gNe3YGONESg" - }, - "address": "noble1wttn3w404th4vnc3glfpt2jsn9t7y96j6qk5p2", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 163886631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwO+DeXqiyAAvp1fpEtStPjdHouri56FPOBYYS8AwDj5" - }, - "address": "noble1wtvfpwc92f40zgassfq2svxtpy7w3ley3dzdnf", - "percent": "0.0%", - "airdrop": 2878.7902791824545 - }, - { - "total_amount": 3808454437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArpK74dyV0UKxIOQLq523+pkzkEArzqJFweIMky588Qq" - }, - "address": "noble1wt0x3jl2yu04ttgjdpd942sv8h8v6t2d6438n5", - "percent": "0.02%", - "airdrop": 66898.32810063005 - }, - { - "total_amount": 939002402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuRhWWg7Lo5Sd/S73+cD1Oa7VcMm4kf7aG3Saq3tCDL5" - }, - "address": "noble1wtu2dqhh0aeslwfj8eqp5msawlq96hhlqtve8m", - "percent": "0.01%", - "airdrop": 16494.2739411525 - }, - { - "total_amount": 78160385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1VgXiE50rMG7beIkiIVLASbhngsCPdd/DRWEgIJP5it" - }, - "address": "noble1wtac4n9fvmw3hx7ke56wctprgxu4n69dt8vh87", - "percent": "0.0%", - "airdrop": 1372.9451583830419 - }, - { - "total_amount": 1996603031, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A551jatiB8pnLNF7BmIGFoF0PNSHPvykk4vJoWvD4tmp" - }, - "address": "noble1wvpqyj0fjhj0sqc4lcnadkp8uuyhct9menne4h", - "percent": "0.01%", - "airdrop": 35071.813740737794 - }, - { - "total_amount": 422204850, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/MOPiRKbNkPrU/RZvkiuKhPPtMbeSs66rgfVZ3V+4Y" - }, - "address": "noble1wvzqztv276n5spgn7ft5sgfpqt09efcgqz5d3z", - "percent": "0.0%", - "airdrop": 7416.341470853021 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A99r9rWqTUKm/XlmmGZa/MkqSJ2mSr6sVOop+TaJ45cg" - }, - "address": "noble1wvvmjg54sn0a3nuw7rh0g9k2z3s3fdhh99tsf0", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 377466601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzQenrGEfEjw2jL3Tcs5mx/s0eRd+WGKcpQ5QB+NPa3V" - }, - "address": "noble1wvwv6n724yq5xs9z2lk03mspwruyxjyqsv5gv6", - "percent": "0.0%", - "airdrop": 6630.480930899374 - }, - { - "total_amount": 78747362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpbTDJ+29r+48F+T7ALhNalSdpmVqi9s4bW+ooUzK7X" - }, - "address": "noble1wvc7lhsr0wjk20jhh2fcjla0hqgu45k4pdn3au", - "percent": "0.0%", - "airdrop": 1383.2558449313772 - }, - { - "total_amount": 50130351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsYzkdPRKmnbTPQAjnITRovSI059dE9IXcsOH+P/nUAM" - }, - "address": "noble1wverg07nuzv7x9j65ns5uctatyr6kvuj03dh29", - "percent": "0.0%", - "airdrop": 880.5768125821346 - }, - { - "total_amount": 307601899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AybpIk6lJvMEie06XJuoq3wnQ3tIUIaIMsAJXm8oRoa6" - }, - "address": "noble1wvmj7f0anx4wfcu2lxn08r3uhw0kz7akhjedmr", - "percent": "0.0%", - "airdrop": 5403.255599898585 - }, - { - "total_amount": 1953474829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQLVV3ezTfxbFPYq8dLKkZoFJ1D28GClMMQt92SDKWQ" - }, - "address": "noble1wd35rvdgpkllw23vezs6mjhwlghsz8y3gajv98", - "percent": "0.01%", - "airdrop": 34314.23487101158 - }, - { - "total_amount": 495872011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLYB7K4hobt5Jg/M9e594M1YdNNjIKRUqrFMw4BA2Q5" - }, - "address": "noble1wd4wc8t8ctan5zeq4nxdntnxaq6cspyj520d9e", - "percent": "0.0%", - "airdrop": 8710.359815654854 - }, - { - "total_amount": 98960138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AllGVrUh84Sylfr4DOJWdnhLV+Qkd1/JaRMHkmotlPMV" - }, - "address": "noble1wd4sx5z36letuyj0zd50v0kjspvzf8t62uap72", - "percent": "0.0%", - "airdrop": 1738.308253471598 - }, - { - "total_amount": 53162716, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxrusurPR4hyXyMtJPzQ/VjVyot4LB/hRDMuEtEFWo/y" - }, - "address": "noble1wwgrl05jkk3a3m9gm0wwmvq3r0fd93p84ggqx2", - "percent": "0.0%", - "airdrop": 933.8425538550337 - }, - { - "total_amount": 69412608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLXAOwOan+UIfxMjYZ9oEyyltnSuuPzDNVacEy32djt" - }, - "address": "noble1wwvel4pufslyw8c0gyhqqeg85gxkdy87lhy92s", - "percent": "0.0%", - "airdrop": 1219.2839644321095 - }, - { - "total_amount": 2035690120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2cRHWeM8kfj8IBlayiDzdvrKhyLYOeL2bPBrd/Mz4r7" - }, - "address": "noble1wwdne95vley2ak7ntwuwug3gpwwqqzzexwcwrh", - "percent": "0.01%", - "airdrop": 35758.407462069095 - }, - { - "total_amount": 1351458924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AraHrb8yfkwh6G1evLqTZWzM1FgyFRNVV4TlwB1ReBZd" - }, - "address": "noble1wwwna2rcwh7guyc39zng5cszt67hjm88rre6af", - "percent": "0.01%", - "airdrop": 23739.378797319838 - }, - { - "total_amount": 1778160412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bvClXbYLbCLOoR1giGnbg5kT8ys7QggKIjQ5OSlP41" - }, - "address": "noble1wwj9ld5dzngq6vxukyx45eruht75cy9shn8crp", - "percent": "0.01%", - "airdrop": 31234.70705119729 - }, - { - "total_amount": 88618238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArKROKAdku+A3NDT5pB0qm2Aoz1O1MmiIsH5sFk7J4Hn" - }, - "address": "noble1ww62y8pf7alm888h5gp9kaadlue6ge26dxyp3e", - "percent": "0.0%", - "airdrop": 1556.645106169015 - }, - { - "total_amount": 51597718, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Ohz2oPfuTW6/0KxqnKd4wQVq0MZBCoDcgXClK+tMvV" - }, - "address": "noble1w0r949f0xsqtmpe4u47cjrrpxyp7ejlmwjk3w9", - "percent": "0.0%", - "airdrop": 906.3522027394508 - }, - { - "total_amount": 50003868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHjCVsVLtFJmVSJb3fRwNudJlgGRZzZbi5LHl2umxPI" - }, - "address": "noble1w02ckej86acnn907v0zyvqvzlnc98wql2n7xdq", - "percent": "0.0%", - "airdrop": 878.3550448353691 - }, - { - "total_amount": 10063020056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjEfGeE9OagOrnU6EiZyTyaKS19QPrrNkqmsM5s5IFgG" - }, - "address": "noble1w0kvchpswphwql3mzpl5kcfu36jfvq62fgf2ue", - "percent": "0.06%", - "airdrop": 176764.414154263 - }, - { - "total_amount": 12077735965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+jGSEj4zsoRYosFlzCnQvwBdLpXgf48Pjnvf5wD7+Vw" - }, - "address": "noble1w0kd4uptsqcerchzweegpfy6qhdcl0k2pt78f0", - "percent": "0.06999999999999999%", - "airdrop": 212154.3940370238 - }, - { - "total_amount": 50041776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6V3JLjwZT+ok97iv8AgoeMm5qmJYMj6smR3EpGoeoY7" - }, - "address": "noble1w0c5tcj74hwfxxk3pxrg25edr6lpncfqss3ts5", - "percent": "0.0%", - "airdrop": 879.0209269835186 - }, - { - "total_amount": 112640441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7f3d6X2JWOfITKBJkvYFpC/JV+3e13GraSGmXKMX0Rf" - }, - "address": "noble1ws8rhht4ds3e68ktdehqwnxstg2cmu05faqp89", - "percent": "0.0%", - "airdrop": 1978.6129266006133 - }, - { - "total_amount": 428900135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwKiMYUWF1S6XHKoJ2GkyqAk4J6w4Gz7AoxAJ8uq5iWj" - }, - "address": "noble1ws8hku49v90nqtxearup68rmrp97vjjm8dp547", - "percent": "0.0%", - "airdrop": 7533.949119852506 - }, - { - "total_amount": 244129766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxO0p9DweRJsFrgopoNKDnjJu+XFS7oVUKHfrMbkqMN1" - }, - "address": "noble1wsf4t7gfk8chtavz6qmt7z46vu6ruqgk8yuh5z", - "percent": "0.0%", - "airdrop": 4288.320486738709 - }, - { - "total_amount": 178966496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0rSXIUGSXw8wM2KyVL2pf0kgK27svd1KGiu6uNx+g6y" - }, - "address": "noble1w3xmwma34grp8nrkw5j4c9hwpc5gcempjlgkgu", - "percent": "0.0%", - "airdrop": 3143.6792973317365 - }, - { - "total_amount": 219540831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak96gXRL66LIHa/C/Ftc5sbcPR1cJMC+BcbHOjA3MYEC" - }, - "address": "noble1w3t6kvkvhudyrcvveu9yzyh3sv7ykpst2d9qma", - "percent": "0.0%", - "airdrop": 3856.397598205787 - }, - { - "total_amount": 411699662, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxlDcVDbDfLrm0gtHbMzb1KYKAxckbFYgLqfH1yLdcBV" - }, - "address": "noble1w3dgg0tsunvjmgcd2zfzwhhl5nv60h8zdp5u7g", - "percent": "0.0%", - "airdrop": 7231.810048668962 - }, - { - "total_amount": 308032901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkTWbU8N90rgHWA/nF4AVVE3YpAMf2nGslZvXW2heMTr" - }, - "address": "noble1w3dga00mrawp5nw2ums9m9kgjpc8jfnaks3x57", - "percent": "0.0%", - "airdrop": 5410.82646983677 - }, - { - "total_amount": 182834742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7U8IcCOAclAqoDBg52wAO+OwEv9fwdVe6arvppJyYS8" - }, - "address": "noble1w3wgjl3pw264z4cwgz6qd8vtq3p5wln6c6pkdd", - "percent": "0.0%", - "airdrop": 3211.6279086024538 - }, - { - "total_amount": 96900127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjVKMkrKnghCfNd18GXFPwKMTizzSBos8WZeZmrGOIHp" - }, - "address": "noble1w305wck292ctx043ewlc76z94tam6ax22e3rgl", - "percent": "0.0%", - "airdrop": 1702.1226317059707 - }, - { - "total_amount": 222071053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am71ox37/VYoVXj13hEjIaM1EcqHsmkHXi6dMRUFgW+4" - }, - "address": "noble1w3745nkgg8ywxvldazq4qyllsj774ardzef704", - "percent": "0.0%", - "airdrop": 3900.8428250881043 - }, - { - "total_amount": 251877402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoYasHF1f+Xb2ml/SoEZg89ps6g/VUdMvYrinzyS3sU8" - }, - "address": "noble1wj2n82u8hwmtqgumspfku0zuhy0vnmuu8y3amf", - "percent": "0.0%", - "airdrop": 4424.413461909113 - }, - { - "total_amount": 220507224, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At6HqaEzBdltk2dlVcMD69YB9ZsVXQnfreqvWK71jH3J" - }, - "address": "noble1wjvrprmk7hj63gz3j23fjjrxdvcvur92dy7984", - "percent": "0.0%", - "airdrop": 3873.373008324932 - }, - { - "total_amount": 52822705, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AixPh1zYWMucoLtcImdnG3k1L5E7f3OBKIvyC1BOXDsE" - }, - "address": "noble1wj6yqxa45x8e5ja68x8sj0yw596x4mmgkwqfms", - "percent": "0.0%", - "airdrop": 927.8700083481638 - }, - { - "total_amount": 115646274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AySGnucTjj0csCKDeYClsfhyZyXJIV8wO77FzKPEdiE3" - }, - "address": "noble1wjmzzjg2g7vv3s8q9gehwmgzrm7680uxufly7x", - "percent": "0.0%", - "airdrop": 2031.4126136064792 - }, - { - "total_amount": 721635948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1tLIy2EV719KjJCExpbEMZCnMj/gfr5DZoIsSdNIpHI" - }, - "address": "noble1wn8mqk4xhhkzj66h8tlp7rmutuemawyd094tes", - "percent": "0.0%", - "airdrop": 12676.07088836316 - }, - { - "total_amount": 131222410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnhZ1+mqNyZNpRf3jviMjeUGpAhu7eqc1pvsOiwP1+Xx" - }, - "address": "noble1wn5wna3y94rhp4sll8la57ms8lahfvx2cvjavu", - "percent": "0.0%", - "airdrop": 2305.0190001092556 - }, - { - "total_amount": 532328051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZgTs/d4qIqBSMOLFemgZqjV3iK9Ms8KjrLK6rfjfkZ" - }, - "address": "noble1wn4rg4attaazm72206m6mglnscfw8pcy5sflg3", - "percent": "0.0%", - "airdrop": 9350.737209034101 - }, - { - "total_amount": 64431820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9z//X3wjDmcarrOvKafFxk2Bv6wUBWbKKWgyh1OybNH" - }, - "address": "noble1wnkdzrm6gg5pan95zm87ex27ldzmuj929m2kme", - "percent": "0.0%", - "airdrop": 1131.792727413096 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApqMz17IJVtUOpag9c+XgnKG5LnH1zIeuMha57506Q+s" - }, - "address": "noble1wnkhx976gd8usts5qqqe7ept0ne8g5zmhtm673", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 78175347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhMp76tWnGra9y8qTDguUFoHe7GhhlsP5Z2WgxBJ3/Wc" - }, - "address": "noble1wnh76q2lg7uh8n06kc5dy8kjajn70s5zs09wk3", - "percent": "0.0%", - "airdrop": 1373.207977015009 - }, - { - "total_amount": 75879657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoH4/dRtAlntOJQz5EwfD/Uaz6fHFQGid8aBgDHbLHPh" - }, - "address": "noble1w5r2h69hqe32uqf0rm6zk3ljxagwjxfk2sjvzk", - "percent": "0.0%", - "airdrop": 1332.8824787379936 - }, - { - "total_amount": 422720834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgaV+MlLPNCTitNtRl7O2ThHlEcG4GO9c5CduH3YTNXt" - }, - "address": "noble1w583a8yqamdvzl2qhneyaz3sdpkl9ufns4lh5a", - "percent": "0.0%", - "airdrop": 7425.405112678776 - }, - { - "total_amount": 94320907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxpPQVqw1Zd9W/UI6fRm0CJmSjKbuHsIgV5utta8RNWm" - }, - "address": "noble1w5d7nc55ytzzrxv5tuz6nhh96a4cmrtjtrhgnz", - "percent": "0.0%", - "airdrop": 1656.816718596603 - }, - { - "total_amount": 822184701, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlbrD3JOma8GkPIde6Jp65dwaYNZ/mek+rq13QH34jRZ" - }, - "address": "noble1w5nmf0hjxumew3w09s9gxutaxmrcm3n0zwge3z", - "percent": "0.0%", - "airdrop": 14442.284343079411 - }, - { - "total_amount": 68330635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgVRZF4+fSHZzg5CYn4YpdWdGc0su9b7kn6+sshBFtmU" - }, - "address": "noble1w5cw0w7hrm5jnz3avdwv43h3aa767ukk2slczm", - "percent": "0.0%", - "airdrop": 1200.2783058513442 - }, - { - "total_amount": 605048863, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApC7B3yvkzWHhH02Vg8fe+pL1cQgL6NoX/rS3EQ3Wjq7" - }, - "address": "noble1w56pgj76ynzur9xklwy3ge9f8cwl6y6gfl9nrh", - "percent": "0.0%", - "airdrop": 10628.132231449657 - }, - { - "total_amount": 69334278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9QPhHk8ERZ2DEVnWKpPoTsviQc0ownP2t828+ItvRcE" - }, - "address": "noble1w5utzyjtn6a66g4d57gzrueqtn7lt63pghtepl", - "percent": "0.0%", - "airdrop": 1217.9080398603953 - }, - { - "total_amount": 192727454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlDH2X5Fe4raFbSYsCTgIhkD8UBgR2XMWmZRg3viNE3Z" - }, - "address": "noble1w57nyznv9sk0vzh5ewz9fkxvckjkrgsghzjzcv", - "percent": "0.0%", - "airdrop": 3385.400735382642 - }, - { - "total_amount": 189474998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiM446JhfLLyy7+gLF65motGywIgwYugw+NsEzyvQlcp" - }, - "address": "noble1w4pe2acjnd67u28m9qhu96zgd88cpf7pm2g5w4", - "percent": "0.0%", - "airdrop": 3328.2689323848203 - }, - { - "total_amount": 605449597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AggWRvf8AhKYWqE8edBO1y8C/J1XEEH8C30ZOr6ML/BV" - }, - "address": "noble1w4zk4grznalhsfqy9hfhw75txn2mmmcz8njzn2", - "percent": "0.0%", - "airdrop": 10635.171421508656 - }, - { - "total_amount": 482868202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uAJyIasn6yzH9O2W9qU2TVAJQdjVnadjGKB9rYDjMA" - }, - "address": "noble1w4gx4kf6qcvksvg72pv3xql3c9upq07s0hkj7v", - "percent": "0.0%", - "airdrop": 8481.938261601765 - }, - { - "total_amount": 1585314427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsT9hBzoSzJZkRdqlU1Nv5RNLBQfnddSf04KYYYMkeUz" - }, - "address": "noble1w4f04xqmg4sdc3c8a80lq9fcgrlfs953g6hctt", - "percent": "0.01%", - "airdrop": 27847.224230848355 - }, - { - "total_amount": 148608765, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/uPVqviu/Mo9kL9RGTs5O2Cr47cDYk97cqvuhBTY/WI" - }, - "address": "noble1w4vk3ny7mx9xs42snahsyr64vly6gvapaam28p", - "percent": "0.0%", - "airdrop": 2610.423226549271 - }, - { - "total_amount": 46357287520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As5o1PjgGukTdglfgXgeHBpknprYJjdbvOJGNy7sqQ8H" - }, - "address": "noble1w4wve93ede8w5jq2sc2p9j4swyqhem4m4mc35f", - "percent": "0.27%", - "airdrop": 814300.1529016854 - }, - { - "total_amount": 102096938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtczYr0hgacCwgARfIKB+ALQRXkaWNc6M3/5OO/QL0Rp" - }, - "address": "noble1w4w0tqj2yfs7nuap5m66v2gtyxpunqhxwywnej", - "percent": "0.0%", - "airdrop": 1793.408473011406 - }, - { - "total_amount": 354103466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwAqAvGzVoq/9Ccl9nsBIw5ZDE+WpLe/G5zrBgK37ybL" - }, - "address": "noble1w4nljgd4vuv9fedztfspchtz66xha45lqv4dtd", - "percent": "0.0%", - "airdrop": 6220.090128923419 - }, - { - "total_amount": 89057551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApeYnCG72taTl5GV/qcNY8pM4fy6fpPqCFKB+Hja5Fhf" - }, - "address": "noble1w4459hvuq5e8ggyrxxst3wggndzgppn0nkex72", - "percent": "0.0%", - "airdrop": 1564.361964989052 - }, - { - "total_amount": 377908460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag4eOOcNVvDODjgqx3lwLpn3yGiT/LXqOqLCK05MWPD/" - }, - "address": "noble1w4cjautlrggjfqq72ca4edsmr0m2d9wefcal3y", - "percent": "0.0%", - "airdrop": 6638.242512098571 - }, - { - "total_amount": 450181336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjNNuRQf9qk56Hu1NeYA/bbx4WXzrmCZnQrHrf8eY3cH" - }, - "address": "noble1w4egzgdvy7u4ehvr8w6q3as6e4hpqp2uckwm7l", - "percent": "0.0%", - "airdrop": 7907.769206300728 - }, - { - "total_amount": 977229667, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArpBoq5nCPdT7CKv058vmpd2qzabm4eocvJU4TV6n2zC" - }, - "address": "noble1w46pw2nf2z68u6lzkfyqqrxnn302mmg6rfytg9", - "percent": "0.01%", - "airdrop": 17165.764215925014 - }, - { - "total_amount": 50032475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au8f8fgI7P061Dq/I9kWoYBpbF6mfoMi/JkjTXSUxPE2" - }, - "address": "noble1w4awt5h97659p7vrfms5t5rxz5q4zxrtsywm7f", - "percent": "0.0%", - "airdrop": 878.8575480170751 - }, - { - "total_amount": 1127747292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6y9RG9/kHlO+zg4Mm4W6t5VprEs+URV0wqEDz9yZLMq" - }, - "address": "noble1wkqnklym7seehpfca2cddxjzan8avg4ulmjvwl", - "percent": "0.01%", - "airdrop": 19809.717984769224 - }, - { - "total_amount": 188723114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajesv/SU9GJoFYVyLf3Pl69vD4UyBrjzBlKFnkCyynNk" - }, - "address": "noble1wkpqr4uv7x6amhze92jwp0zcy8ls5f9ujclgph", - "percent": "0.0%", - "airdrop": 3315.0615320186926 - }, - { - "total_amount": 1595238392, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoz7QoR+/7BmlG4/entCG8Oj2IZ/zRCJL6e0+c46IsZQ" - }, - "address": "noble1wkrpsjxd850ts68a2pjt4qd8gjaw87yvz6t95u", - "percent": "0.01%", - "airdrop": 28021.54603976361 - }, - { - "total_amount": 145946300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnHXJ+P7EEPHRgtJ1/aOh1sZvJMCl0MQzdOHUFSNBUhP" - }, - "address": "noble1wkyy4tvgervdfnvd39ksx0r8h6798c4uqujhq8", - "percent": "0.0%", - "airdrop": 2563.655053246206 - }, - { - "total_amount": 811298420, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au82JeLKcf1/4CGEEp3HFkS6u/yrb9cuoSBIVeHHofjQ" - }, - "address": "noble1wk98g8cjtj6dvmhlrhjg4jy5cwv3vg83qcwujj", - "percent": "0.0%", - "airdrop": 14251.05873957519 - }, - { - "total_amount": 76838079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsCNAX0iN30jNLCDRp1YRdYhwBIbp3sS0/2RpWpR/B7m" - }, - "address": "noble1wktwze3pug2zz69y25a5gngsrrddmcgmpwatt8", - "percent": "0.0%", - "airdrop": 1349.7178723275695 - }, - { - "total_amount": 77228252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYbq5hMwxGJx4rOLbckqrsiUO7XaH5RSAou8i5y9Efb" - }, - "address": "noble1wkd55je3veu65urjcvutzdgrgyw9jkhedrxycc", - "percent": "0.0%", - "airdrop": 1356.5715505851904 - }, - { - "total_amount": 142968703, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7CKa8HWEXCXgLQ6lNLi2Xbdk6ZkkYNh1CYvJWi/Wsxr" - }, - "address": "noble1wkngkjsuk89lkvr5mywscfy5tdx2tkz0uw30qt", - "percent": "0.0%", - "airdrop": 2511.3513525317594 - }, - { - "total_amount": 206480815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7aXREi1FixyVHd/Mrbnk12eOhbszKdjMXXp1ztQLoJG" - }, - "address": "noble1wk6ah5kpjgyhgqqyxykssarg60jrdlv8dhmlda", - "percent": "0.0%", - "airdrop": 3626.98872649149 - }, - { - "total_amount": 2593634888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At+MqZSHWfSuAJcnGVkha7EwlnmUvPBiw5gX3x9s18B+" - }, - "address": "noble1whxhupurzmyxh86v6zmg6tzf2vca9xvgpflkwg", - "percent": "0.02%", - "airdrop": 45559.12131309157 - }, - { - "total_amount": 120948737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A908z6v7na4BdmSdwXTXCUpVtFCP9dR6gwBaxozAZ+nE" - }, - "address": "noble1wh89uchnpvdsfpa2khlg7y7fw43rnzu0efkmv7", - "percent": "0.0%", - "airdrop": 2124.554310686851 - }, - { - "total_amount": 435499666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At2f3YzzHPSbaIxvYszG4tj/0di6XjAKqvDodAqiW6Gj" - }, - "address": "noble1wh0sdupcn9r4vs5e2lu8sqg0ru7uq4024zkgzk", - "percent": "0.0%", - "airdrop": 7649.874778791479 - }, - { - "total_amount": 660000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auh+yH9oAeRgoCnG2MW7eSI5jyHOAXYLW7J8EzASWdGM" - }, - "address": "noble1whjay3z7ww5zzhydxpt8xffu587jh990u2t658", - "percent": "0.0%", - "airdrop": 11593.389727197577 - }, - { - "total_amount": 200012839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8TitYGrcdAaboErahBWBDBonAHp8HtkEXZQdCLFU+aq" - }, - "address": "noble1wh5e70faqqcwcgk2dm3lvay94lu4h6shdfhkrq", - "percent": "0.0%", - "airdrop": 3513.3739287427616 - }, - { - "total_amount": 114928733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Rq8sD1QgcBdayodhJagyN0FFO19eEgs13gvsZYUmsr" - }, - "address": "noble1wh44dywkzrmdxysxs83l4lzagd2rq9w69hpjwc", - "percent": "0.0%", - "airdrop": 2018.8084735182322 - }, - { - "total_amount": 85379985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiG5ohODou6FjSg2MK0t6cUqwEvk9BNSi77dVy/DTJlE" - }, - "address": "noble1wcqyp3stddyn77var3ajl4mgf3j6yhxcxqw690", - "percent": "0.0%", - "airdrop": 1499.7627894049745 - }, - { - "total_amount": 138376750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah+uNxNw0Bi7cjlw38X6AChKeihGyFqiYb9aeZqN/MkM" - }, - "address": "noble1wcp2n5yp40ww58g39855ngffghudlmtjjlaq78", - "percent": "0.0%", - "airdrop": 2430.6902908075567 - }, - { - "total_amount": 128031307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Vktk6MkzVHWaBU5O8/LauvoCQ2enj+gEfVm7A0kiMr" - }, - "address": "noble1wcphh4p50n8jzzc8d2047whrqk4kks9nwyv2uw", - "percent": "0.0%", - "airdrop": 2248.964908081029 - }, - { - "total_amount": 916477595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15CmOW0/DndLlSlaFHUy8XgwqiKJGauBKsQ8gW3sree" - }, - "address": "noble1wc0cdc9xjzjzuzeq0h6t2v7atp9yg304w6k98t", - "percent": "0.01%", - "airdrop": 16098.608992545063 - }, - { - "total_amount": 272124737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/31XSdbvxGhtHQNCeB5Nzd3KsbyJqWIUvgxXxSKOOk" - }, - "address": "noble1wchfwk9hwesa0zj78pyjqv6h22z5ksf057pq9u", - "percent": "0.0%", - "airdrop": 4780.072924927488 - }, - { - "total_amount": 582149046, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+diJ1oQOhqy1qCsB28B7Jz/MPFgiHO32yd2OhTsdxaF" - }, - "address": "noble1wcmjcl6lp4d8fajlcctec5rhg754t02hw0xcpn", - "percent": "0.0%", - "airdrop": 10225.879953930711 - }, - { - "total_amount": 453454262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ancost46RkcuGcJU6h7zaqd2Vnswi5Wlbq12z5r/5vnl" - }, - "address": "noble1wcay5mjcpawfz4amg8pjlfpet3h2lc53v3eeyt", - "percent": "0.0%", - "airdrop": 7965.260580037513 - }, - { - "total_amount": 2427819696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlN0nq3t3DfDFBp7/KILW7xNiVimwlMQ/RvxrcPWoo1A" - }, - "address": "noble1weqtquht7xlejm3vrtglx8fhmke5flfzl6ys8h", - "percent": "0.01%", - "airdrop": 42646.454428930825 - }, - { - "total_amount": 58216409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvuuwUUw2rv5jMyhUCnCg63uWNmgARxmfp2e/5hshTWw" - }, - "address": "noble1weq67zq0hdga5vex49jf4g4q24nmg55w9e3qlw", - "percent": "0.0%", - "airdrop": 1022.6144212953524 - }, - { - "total_amount": 3340792368, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak4IWofbH2StcOK5zwQHHIDab3+tYe2t8P4BJS7TPRuq" - }, - "address": "noble1we9tr4j7y7fprmdl78vz42l65m6tna8nyw0eul", - "percent": "0.02%", - "airdrop": 58683.4968482898 - }, - { - "total_amount": 11587856443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxA2Ce3vPaySmZ9X+pamq0I4MssAIEVDgilSVwq0x3wz" - }, - "address": "noble1we88n8hac25ljvg72aavdp4h9jkqd8aspqgr26", - "percent": "0.06999999999999999%", - "airdrop": 203549.29673714616 - }, - { - "total_amount": 57066327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlGGHNgw+EtEUHtAyjGiEZlckpv0GwTXTm6oSFpOCfwe" - }, - "address": "noble1we8523rxx7mrny956sgrs20ypnd6xqs2q6drjk", - "percent": "0.0%", - "airdrop": 1002.4123775919662 - }, - { - "total_amount": 221394389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar74NA0Ct81NICOZeW9h9A+uxcc5ktWuCOxxk7h6Js7D" - }, - "address": "noble1wevavncll5hnvr5k65qg675gm9zact2mpuua9v", - "percent": "0.0%", - "airdrop": 3888.9567198360364 - }, - { - "total_amount": 996814833, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmcbZp4AV5JW8rpdHCMudq69WyLAKO1HTPtKmM/ortDo" - }, - "address": "noble1we32che8sqcq2v7h3yvg27f8vguzr2hxpe6nxx", - "percent": "0.01%", - "airdrop": 17509.79218912177 - }, - { - "total_amount": 51956737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agl4cC247sos8VKIRQHNmWROFlVgRuU6mrP9SX9CX9TJ" - }, - "address": "noble1wekk8w32jz0yqjdsv30xuz4czft92gtxzxjsz0", - "percent": "0.0%", - "airdrop": 912.6586378704641 - }, - { - "total_amount": 3210502783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1egQWZQbBFd8PeOf0wsjPZKsrpIdZUuHWwmdX+lSadL" - }, - "address": "noble1weaulg329wgpzn34gyx5rkv0f22xx4jpxwqnzx", - "percent": "0.02%", - "airdrop": 56394.86361147187 - }, - { - "total_amount": 687318345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A33DXn+UjTlZCrL50bRDPCKA+gnau6ChB2IIZiy8BgEG" - }, - "address": "noble1w6dpa2l2fc3v2rc9dpuhqg4lt6ykvlqggvr0j0", - "percent": "0.0%", - "airdrop": 12073.256727632484 - }, - { - "total_amount": 3833778419, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTNUz+0X/MGCuHRFttgUxxEb55BvFBFKtV7mfh5VGSv" - }, - "address": "noble1w636h2ccm9r9nptpu68y8d6yayf479qm92us7e", - "percent": "0.02%", - "airdrop": 67343.16263513087 - }, - { - "total_amount": 52990000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4C2XtetAnbyeCbuCv1jNSgtd2a2HQpz09qyO9Gy7xZM" - }, - "address": "noble1w6kch3hwvsqfkre2zykt0agk9uephe7mtpm6lh", - "percent": "0.0%", - "airdrop": 930.8086691578782 - }, - { - "total_amount": 7169000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+de1mixiG4fpLBXgK52+y1GAaw5ZoqpavJz9xsLfcs2" - }, - "address": "noble1w6m9a97fvpaspr37hcsk75wfpc6knxk3qdm96v", - "percent": "0.04%", - "airdrop": 125928.80447618096 - }, - { - "total_amount": 492468044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+C8T0UB/F09NuK2yIA8KZKEpVKWNjClxbFd2lis2scQ" - }, - "address": "noble1w6a4u6nq5f5ev9tumlvs2mzd32a72zc6yp6gpa", - "percent": "0.0%", - "airdrop": 8650.56660951922 - }, - { - "total_amount": 202605166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AshORp1TDsLm1NACq+VbQg+CztlcPVV/5i1Wr0FPbODJ" - }, - "address": "noble1w6769p4tskuw0hw906lwwvtvwnujd2v6jecq36", - "percent": "0.0%", - "airdrop": 3558.910076032666 - }, - { - "total_amount": 50110000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzGLgzuTKghNfqEPsiT7rkyeWkcUjKCo2y9kxJGAKr7C" - }, - "address": "noble1wmrglawkg9wa9m0uk0yt4d2xm0lg03trqu040r", - "percent": "0.0%", - "airdrop": 880.2193321664706 - }, - { - "total_amount": 488177708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgPQ2NoTBaz9JD79Va9R0hNNedIz5vNFRKX97KtIRWHy" - }, - "address": "noble1wmrj0e2up0evxrjhrf0ctsmlyln6nx520gm67w", - "percent": "0.0%", - "airdrop": 8575.20367420312 - }, - { - "total_amount": 78544480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArLnH41yFzo4H/10rEZwd4Nl66vB+lRYtURaET9rX6IN" - }, - "address": "noble1wm2njft8xs26zuqsgd6c2fqyh9uz27l624qk0u", - "percent": "0.0%", - "airdrop": 1379.6920720607204 - }, - { - "total_amount": 295705152, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgiPKYQXvJq80pja6IaQnw6hzH2UgL8kli7Sub1uArlX" - }, - "address": "noble1wm0uus6fgef9dpf65xhpzqkua3j9qgw2xfxv2c", - "percent": "0.0%", - "airdrop": 5194.280411327573 - }, - { - "total_amount": 749134131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YCLlN5+8BlHDpGXWg/Tfkp/fxkPsEszbmzXwS8EQoy" - }, - "address": "noble1wm0ljkruzjs0rs9degag6xaclesl744w8jzkdk", - "percent": "0.0%", - "airdrop": 13159.096876709826 - }, - { - "total_amount": 66840872, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9U5Zy9hwiIZlDvlDje3n1j7rvJAduzxaQFyPqsQp5Kp" - }, - "address": "noble1wmukyaaavmpvv9fnwrzch43myqn28ud64hrqat", - "percent": "0.0%", - "airdrop": 1174.1095133359518 - }, - { - "total_amount": 124026853, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4DZSIvR1KZCmaqQWXJnXG4DInrXuF3hmeYXMN6fPA7D" - }, - "address": "noble1wml444fjs32mc90pdc5sclszkyh40yvexvgfjt", - "percent": "0.0%", - "airdrop": 2178.623702222491 - }, - { - "total_amount": 4750000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3g9F3aQNydm+P/kCgJOZ3Kvq9PmMosXhbxuoegMLGSQ" - }, - "address": "noble1wuqp2yfewnr4dd9lr6c8tpukg9re6mqw78jgt2", - "percent": "0.03%", - "airdrop": 83437.27455180074 - }, - { - "total_amount": 58546668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyW4LJ6Muv3bTPnI3hjbvLCbZy0T0+CpPfF3j5wFRkk9" - }, - "address": "noble1wurhtuyy76vcxdrfnek0f2q2xuxvprs5z6s0q7", - "percent": "0.0%", - "airdrop": 1028.4156656861321 - }, - { - "total_amount": 54441219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvGRyEyqYo9qVSXS+i0F4lJQBPNTFXfoEdIJ9G/X1qq8" - }, - "address": "noble1wufhjgfzmx89ers596np88hu3nzgypqyglft2l", - "percent": "0.0%", - "airdrop": 956.3004077132024 - }, - { - "total_amount": 55036594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrAo7jSVjQYqi9fzUL96U8oHiW+9fUStB9IGqRvOqgG" - }, - "address": "noble1wud5yy6zay95awex5jkxm2t23hmzenl2nw8dwv", - "percent": "0.0%", - "airdrop": 966.7586113629452 - }, - { - "total_amount": 8682352327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7kq9HDBptJGETXQYoD6hFpiE8z31rdrLMgO8j9oFqbM" - }, - "address": "noble1wuw9hwdxyn4m58ha0fv5mpj6lpzjcjj35xru36", - "percent": "0.05%", - "airdrop": 152511.96102386634 - }, - { - "total_amount": 126913652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap0DADsOarXrZDLbnRuH3fXPrU693tTDMJEN31RXf/aK" - }, - "address": "noble1wuw8w9lcns4xc5hharcvtmrv5a8jggd288ky0m", - "percent": "0.0%", - "airdrop": 2229.332468693831 - }, - { - "total_amount": 252535618, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A01z5MMyyIeZHh/Ors7/GfGKcaDrExDnejSO4sFuU5ev" - }, - "address": "noble1wuwmdznsxnk44dfhkyue6ysw3lqxflqvcj3hn8", - "percent": "0.0%", - "airdrop": 4435.975514352563 - }, - { - "total_amount": 3785572011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrEtasqss3ej8vAWZsGx+OxCp7UDPpgxNZkJZo/iPeF" - }, - "address": "noble1wu4lfpu559tzvv6awy679h32ja5mkz9j4xxs83", - "percent": "0.02%", - "airdrop": 66496.38130893042 - }, - { - "total_amount": 750343277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvDAAOHokQWgAQDVdPy3J6SGnMhFZL2c5cTDoqsBxVo5" - }, - "address": "noble1wucy7j6mc6r7k3m79kax06cv8w8yv02rmqvhc6", - "percent": "0.0%", - "airdrop": 13180.336423399342 - }, - { - "total_amount": 21505825930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akgd6leNi/msK1r89wHLDygYZWDnY4mgXKjrWHL4iz3R" - }, - "address": "noble1wumn6v8zhvrtgsuynwupr6889p4ww8repcecw7", - "percent": "0.13%", - "airdrop": 377765.7900178201 - }, - { - "total_amount": 67873455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A23d5efpnYPuAuhK4MOb6izLPf/vv+7R3/Gp/MLM51QX" - }, - "address": "noble1wuul88k5v320v9wwlpm6tjx3e7xc5dvputnacp", - "percent": "0.0%", - "airdrop": 1192.2475999187986 - }, - { - "total_amount": 357132884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MfUD+TlSDhaSCpmp3KbMrYEZkmARh7K+64YIAYfGZx" - }, - "address": "noble1wazjmjvc9wm6dj409um3vsh7uexypfcmyp9g75", - "percent": "0.0%", - "airdrop": 6273.304103954612 - }, - { - "total_amount": 350717104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+aD3O206OCJcbIMAIffVJAY81iZjXlwAbf2pGUcHELj" - }, - "address": "noble1wav9pnjeeq2e0fjgddlqv7pz2qctnge9uewwmf", - "percent": "0.0%", - "airdrop": 6160.606167675885 - }, - { - "total_amount": 956942476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agi+jz53cu4F+PyCliQ1MyNSwhxuWixEc7OwMILy01Nj" - }, - "address": "noble1wad5l002k8wsdwtc6jzvd3q0xf3y6vsksgv04d", - "percent": "0.01%", - "airdrop": 16809.40465269305 - }, - { - "total_amount": 7615060536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgGB6qYbW5aCWwjobjSNsVaSPkyT05dwrf/QiwWC7XJJ" - }, - "address": "noble1wast5wlvhjz4a5xx8xqvp7kkg935dv62jlz8rf", - "percent": "0.04%", - "airdrop": 133764.18877280314 - }, - { - "total_amount": 375000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YVGavaj7bv72c9d9aGqCX2umj3EvBRKnqQqXW8nQis" - }, - "address": "noble1wa346265qq6k6apuy87sw64ghxdnkrvp5nsxdk", - "percent": "0.0%", - "airdrop": 6587.153254089532 - }, - { - "total_amount": 505247470, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ym7UEFkLDmtAUapa0FK9TKUpQLLeBsXJrYBraPUE1Q" - }, - "address": "noble1wa540vt9w05n4zshcw0jnlffa3vvp2mhmq2u4s", - "percent": "0.0%", - "airdrop": 8875.046709682676 - }, - { - "total_amount": 50161614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhG93m7zhcHmSCSh+YCEMl5VFEb7FRsjk9bl8uSSkP+z" - }, - "address": "noble1wac3ung8tsn79lswes2p3h6kl9jkyyfr3pj8ez", - "percent": "0.0%", - "airdrop": 881.1259703746215 - }, - { - "total_amount": 329800609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsnLTeIAX2HpOCtjJhpakp9XgziwPluoxiqi6RwZnS7R" - }, - "address": "noble1w7qun3qx2he8rgyt6f2d98nnrck3q48zaq0q4a", - "percent": "0.0%", - "airdrop": 5793.192412733492 - }, - { - "total_amount": 55390224226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2qoFkYuAob8vbbXAN0VdsPl2Ac4Y8G4MxqTJA62bknL" - }, - "address": "noble1w720g4xqtvx902tgzt0p95m6rcplpw9hl637qd", - "percent": "0.32%", - "airdrop": 972970.3886801194 - }, - { - "total_amount": 625000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai5yYRHM4ZbO/NQqN/MXcINmGUMl6MHPP2rPZybexXAZ" - }, - "address": "noble1w7vw2ezwa52cmgnvum92j0u0xc9mw3945swe0r", - "percent": "0.0%", - "airdrop": 10978.588756815887 - }, - { - "total_amount": 13710845439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzGuwVHmNjt+QGRipjDiM+GYU6drh9nfb1kNBuq4yQna" - }, - "address": "noble1w7s0x3f93z8lk0eh9zuxgvds8y4r3fhy4qspzp", - "percent": "0.08%", - "airdrop": 240841.17373287326 - }, - { - "total_amount": 291428066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4cAoxEOuPN/lBUetAuGNTtXFp0dJdrWSLMKZLeX4cUl" - }, - "address": "noble1w73cr39f48k2a3rfzvkm30dy62ahus68w3dpaz", - "percent": "0.0%", - "airdrop": 5119.150222093118 - }, - { - "total_amount": 580508817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjTl7xhZKCr+O/d2rhhkGmuNcQCs0B9wLora6ep+jeha" - }, - "address": "noble1w73ly86wcluwls3z8pe2whmpxvq9tq682fsepm", - "percent": "0.0%", - "airdrop": 10197.068114477906 - }, - { - "total_amount": 50100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IIu0kBgnYsfZ1P91cykko9KIDuGD00iXQhXyuL2Whe" - }, - "address": "noble1w748mgsngu4vs80dh2cvfttj7gu9qdqc4emrgj", - "percent": "0.0%", - "airdrop": 880.0436747463615 - }, - { - "total_amount": 5715268458, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJO+YajFt9khPUUR7kM31yrXonGO09FvUAX4kogoo5Y" - }, - "address": "noble1w7ay609tjkep5n8qfcqjx6rwdgh0rg670g63la", - "percent": "0.03%", - "airdrop": 100392.93125629323 - }, - { - "total_amount": 51580504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQupXuQdkrBpNppwaV59Xjv45OOykQGR24wpWJmxsAc" - }, - "address": "noble1w7a0pu8du7jmg8xvycqejl4jv8qj4uzksy969v", - "percent": "0.0%", - "airdrop": 906.049826056475 - }, - { - "total_amount": 81403888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj2kT4h1rpH/LSx5hUzz2A8kdGvUwd8NL4dWoEIux5cE" - }, - "address": "noble1w7ac5aujwzcqgh5l2ffjzvun4na9axju73q7pw", - "percent": "0.0%", - "airdrop": 1429.9196952926397 - }, - { - "total_amount": 492343441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/WxHlsbOCr4HXsoisyzpMuW7J+Wg+FkMwXPmPyX3s7e" - }, - "address": "noble1wlzj7tu5zx5guk22vwc2rq38c8k03rj0d69x0d", - "percent": "0.0%", - "airdrop": 8648.377865367434 - }, - { - "total_amount": 3337299383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqDbj83kteCOa1UP3+JTK3yZE6CjIfI1BPUdpBy1KIk8" - }, - "address": "noble1wl5seputz73khsyqnxy8qr5rjv7uef25werv3a", - "percent": "0.02%", - "airdrop": 58622.13997493184 - }, - { - "total_amount": 1195620382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+W0E/+gyMBCFxwK44tiGXfmYzCZ+gDcQSv9oko/ckhN" - }, - "address": "noble10qg8wcmd7v2zpg0yrmcu7pg2rtn5n7ncn6wwf2", - "percent": "0.01%", - "airdrop": 21001.959173192186 - }, - { - "total_amount": 128488682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsY+qmiYm9a1fkEIi0uYKPYM48CvDd1Tq3HvoYraXmkH" - }, - "address": "noble10qdu8vr9vwxqueh2tsvnt2nmzu85lq6y8vaqwu", - "percent": "0.0%", - "airdrop": 2256.999039333267 - }, - { - "total_amount": 1045482835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26O07VOmi5YvaP1AT7AxIjLd+OjbC/c4xCYtN0ri9iq" - }, - "address": "noble10qchstu6d50wr828tk2c9mdjww6zy9ywc6pn4s", - "percent": "0.01%", - "airdrop": 18364.681756439997 - }, - { - "total_amount": 361821346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah9U/FBFcDoo46tgZ7/cCEuwc1qRlZznSKpUio1PMODF" - }, - "address": "noble10qmjf6kxhzugwrzmsua0wr80lhqxjvadwj502a", - "percent": "0.0%", - "airdrop": 6355.6604178745465 - }, - { - "total_amount": 9253475377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9szyWd9YrEG69V20nENCy7Y67UVzTGig43SzbYuvNH9" - }, - "address": "noble10pzkutnu8m2rguzn0hp6j5gncrc7rkx8qkvl0w", - "percent": "0.05%", - "airdrop": 162544.16117664776 - }, - { - "total_amount": 60206019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKIntAz+vYJoGeencEClCsYVeMHXluiFEywErDYfje1" - }, - "address": "noble10p9em0g53eddvjnmclqt5mef9dk2rp7l068kns", - "percent": "0.0%", - "airdrop": 1057.56339725767 - }, - { - "total_amount": 260555446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0OBjj2ZJc2z8Nu5gifSsZBGa4dnKLTJweon9yZLXSzw" - }, - "address": "noble10pxrg99qpf6mtdacacq4wn6s39xy6gamqcdj34", - "percent": "0.0%", - "airdrop": 4576.849743972399 - }, - { - "total_amount": 443946314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Yf2dkYxLrlfeE7q9Du4T5EJD95yIS5jUd2efttqvId" - }, - "address": "noble10pj7eg95trl8rup0c95qshnda7qvetrtg3c2rt", - "percent": "0.0%", - "airdrop": 7798.246418416408 - }, - { - "total_amount": 51949225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvYKCAvmxQrJFIK9V/uSpOFO8uIT6Cw0Wl7NzmWVYo8o" - }, - "address": "noble10p5pe0zeccemsnp9czl8vetuzftc946yanvxxp", - "percent": "0.0%", - "airdrop": 912.5266840164782 - }, - { - "total_amount": 52160600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A94EUcPt32zTDVZXoIXZ97yYcm/tHTrnOuesZ5EQLz37" - }, - "address": "noble10zxkmuhf8tr6t3j04vht69wmgecpnfk3syrmdm", - "percent": "0.0%", - "airdrop": 916.2396427340332 - }, - { - "total_amount": 209205427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4KnAYRP/5oErnEM4FitNV5b0uPlW4vEjm+D5VuSB/hY" - }, - "address": "noble10z8vx793e94jtuukalx8tuk2j4nedlsk3vreak", - "percent": "0.0%", - "airdrop": 3674.848557963307 - }, - { - "total_amount": 137935121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmhBXkM2bXv0GoMwObyo70Q0+SzvTk62VuITlmr3RyeA" - }, - "address": "noble10zfr2e5dvxmmklnkwltsqrkftf945n2fjh07ty", - "percent": "0.0%", - "airdrop": 2422.9327497290224 - }, - { - "total_amount": 287731575, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8tVQhrxU/PQir/7zeqfmygZDe5bnjLA8uANBczLREDS" - }, - "address": "noble10zf9nuwfz4yepf8f55sjyyftg9gxlh8e223wcs", - "percent": "0.0%", - "airdrop": 5054.218614841484 - }, - { - "total_amount": 53459776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyeQyS5qvFRH5pz3fsijLBrYRhN3e4cU+2evXrrUYbwk" - }, - "address": "noble10zjw4h3pfddkyz4tm0xtcrnzju2wunezucj6hm", - "percent": "0.0%", - "airdrop": 939.0606331767932 - }, - { - "total_amount": 1182190696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8EDO0qTwTEDMvy3MHqAsrXC6Ud4/AS97r9FLkuNXMv0" - }, - "address": "noble10znch2e0dr2gqwef6v9kp4cljc6v8qxm7edf77", - "percent": "0.01%", - "airdrop": 20766.05677362872 - }, - { - "total_amount": 950000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7bQA4qyAB72v/Ruskh/Bp3M1nPYDEPyvswMlsal2u4G" - }, - "address": "noble10rgy8flnm3zu2k9y76wcfxdtd3acqesxyx93gc", - "percent": "0.01%", - "airdrop": 16687.45491036015 - }, - { - "total_amount": 18250298196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtBwt3Y1t05HHmXhQ9iXJq36I7d2PgyCrOC+0/CLCb55" - }, - "address": "noble10rskm0hu0fy5lp2rxq38nj2j5frx524agvh96p", - "percent": "0.11%", - "airdrop": 320580.0297330286 - }, - { - "total_amount": 753650666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApW93WeOI06jkRkctzeAiMVRRShdb+Idxmxa+3rXAlek" - }, - "address": "noble10r39fueph9fq7a6lgswu4zdsg8t3gxlqy0ev5a", - "percent": "0.0%", - "airdrop": 13238.433165303048 - }, - { - "total_amount": 19989500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AptP5QLy3+GpUO0gv+tmKgbi9NVklXFE8IbQv8k5840q" - }, - "address": "noble10r47ldzrc2nj6p85cg9hfy3q7d6ce587gqxy7h", - "percent": "0.12%", - "airdrop": 351130.3999269939 - }, - { - "total_amount": 855043746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2DLpgziKDM7YGWpnb+oXaaFGe9QUDBjDprt52OkQ+zN" - }, - "address": "noble10rcapsh3wyazgtlzqaje64afznkrcjuc2runsa", - "percent": "0.01%", - "airdrop": 15019.477850274143 - }, - { - "total_amount": 166347339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Bv3iVNwXCEz1uv9M3Yhl3cL+zyNcPCnsHP7dkT6cjs" - }, - "address": "noble10rapntmejseumtwq8qlgg24teg4hky8vwaaq69", - "percent": "0.0%", - "airdrop": 2922.0144410746257 - }, - { - "total_amount": 119822053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNAC3d1XDb0E9VtzXWprXKKQ7jJQFAPDwygOy2xGUMz" - }, - "address": "noble10y8k60vj7y3pce4h7xlr23fw73zpr2nfn9c5gf", - "percent": "0.0%", - "airdrop": 2104.763270215036 - }, - { - "total_amount": 135147947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnhYmkCR2hO0PAPRK6bssLuTA9uYuPDH1/0PYRTUO7Vb" - }, - "address": "noble10yfsh9kg3avewlv7c8j2n2mratfrwg6hum7la4", - "percent": "0.0%", - "airdrop": 2373.9739703055193 - }, - { - "total_amount": 124145891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3GvhYfGoQew8cybBLnqkG/YRQIgiZOOU2HdTOb3Zj9T" - }, - "address": "noble10y554654ezg39jnxl37h2fc3xdg4205wqmfcl4", - "percent": "0.0%", - "airdrop": 2180.714693019985 - }, - { - "total_amount": 106227611, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9wzD2/BRthUptjN1HPgy4DS9mspGDxzA21C71/aY9a2" - }, - "address": "noble109prs0vt8atz26yw4u9f2m8nls936udsup744r", - "percent": "0.0%", - "airdrop": 1865.9668092608188 - }, - { - "total_amount": 8220855508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap0SjEFla4zfbiz2sUfl22arbf2fWBzRXp2iUnEnUucr" - }, - "address": "noble109xe63pprquaa9trm92pmyxnq4a4uw8e7s6k32", - "percent": "0.05%", - "airdrop": 144405.42696245882 - }, - { - "total_amount": 86166827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvgJBIN43bksPCoHgeqmqjObXeK+SFhaSIH728UUkRde" - }, - "address": "noble109gl6hulq97pecxqxpf5p7wwjgha3ev2955r6y", - "percent": "0.0%", - "airdrop": 1513.5842529803194 - }, - { - "total_amount": 69322127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Npn7CkhwlOnQETnuoNiMF7gc+1utJ6DCcUfDcQHB79" - }, - "address": "noble1092ueccvmzf8ue3khvdfem8mdncq4zs52gx932", - "percent": "0.0%", - "airdrop": 1217.694598529221 - }, - { - "total_amount": 170215951, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A601l2o0U/NlqcPEiHlBdeZJdRGQzRUV88eCrl61v7E7" - }, - "address": "noble109sg7lmraht5ksuugq58wa8dtll8ckqd6ge2t4", - "percent": "0.0%", - "airdrop": 2989.9694814069185 - }, - { - "total_amount": 316822633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvxYYfNZRgn01xlCwA+WET8DyhxpVresfaPIA5HnaMBi" - }, - "address": "noble109j7wm86rx9m0w7lw8nle3ktu33sg87qlagylv", - "percent": "0.0%", - "airdrop": 5565.22463449377 - }, - { - "total_amount": 164682474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNhO+CgfUnr7lZcW5gU+Sah3LCkOya3miGziZ2AwPkE" - }, - "address": "noble109ntkpvwlqcl5e2vfm0674jydfvyk2amke6ga3", - "percent": "0.0%", - "airdrop": 2892.7698520016393 - }, - { - "total_amount": 1879981089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9x1wYEqT1ZfjmqFm1+q3+tldzJQdW3ajup7IVSs8mfF" - }, - "address": "noble109as32auw8xdurf72gclyk26ulml297kmhvnkc", - "percent": "0.01%", - "airdrop": 33023.26279475502 - }, - { - "total_amount": 3613000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSbzwCzr3K4Eg+u/UBiHwYdv6OsNnfNwUdx78F1VAIJ" - }, - "address": "noble109l6sq9aqewaz3lnky6xvyw2zkvpfseas2yvjx", - "percent": "0.02%", - "airdrop": 63465.02588540128 - }, - { - "total_amount": 50784239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5tjs4o4Sw9bSsf5/lumaQN7u2JUoZBnbE1L4Mfd9/T8" - }, - "address": "noble10xqatnnrrqs45nldtxj4zdvn9rp5eaw0u5frtf", - "percent": "0.0%", - "airdrop": 892.0628404941615 - }, - { - "total_amount": 95997085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj3svqr/vHrI1i1U3J9QfAsZ/GAFgjLsI6Wep8Q5bUqF" - }, - "address": "noble10xv5dkcgdxu4wt8np2hufuv4wc7u7qhhf0fwch", - "percent": "0.0%", - "airdrop": 1686.2600289089585 - }, - { - "total_amount": 801384358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5lm5MfRGWvtWr18G0ArzcE2+/5p3Oopog0Qq+4Gin8S" - }, - "address": "noble10xwyz42da2zah8l0g4n8u7667mutqr4ej2y80h", - "percent": "0.0%", - "airdrop": 14076.91088420307 - }, - { - "total_amount": 2866244115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aii/TpIOkxdaq9l5mcvN6HRuPyM25Uuf9LlRhfVWr/rm" - }, - "address": "noble10x09pdysah36a4juzfllqpxscrv3u0yxwg54j0", - "percent": "0.02%", - "airdrop": 50347.70466436593 - }, - { - "total_amount": 7568212429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A48Gp7LIfLKgjf7ni2jxV/M3CRYyFXjf6rghJqd4tzML" - }, - "address": "noble10xsq098erm9g0zz9ntf420gpjkgpuc0txlnmp6", - "percent": "0.04%", - "airdrop": 132941.26701154187 - }, - { - "total_amount": 92678358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApGEExYIJPAPT04RJoNx9+JvZKFap/AqZlElHrGUH5Nz" - }, - "address": "noble10xsefr4xnpsx3upv2mvg2fmxr5zz2lru2saqg9", - "percent": "0.0%", - "airdrop": 1627.9641266223325 - }, - { - "total_amount": 176650530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4LdaB+YpYwlygtaQI5wO87Yvn4k3Mdjz4w5j4cD1F7M" - }, - "address": "noble10xjkduehh7stgar9rfynrnwqc5xmd697057f8z", - "percent": "0.0%", - "airdrop": 3102.9976360697083 - }, - { - "total_amount": 165098684, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApSazw03zNeUPFaed4/aU1AMzStYWs1f/pEUmce3jiJV" - }, - "address": "noble10xk5j2dmu3rs5lpq9fnd3vhxksek4zlqzlwduv", - "percent": "0.0%", - "airdrop": 2900.0808894839984 - }, - { - "total_amount": 50062851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj7SpQvNbkgPIMgKQ3D4zFuByf8LoABvM8cF+2zmNNpU" - }, - "address": "noble10xccjvhj4e2460gt49pzt49na9wyc9t8a2rrh2", - "percent": "0.0%", - "airdrop": 879.3911249963984 - }, - { - "total_amount": 423196283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBRhRvLe8idSKeftoDSQM2oUQGUfZGtPtJIvKze1ncd" - }, - "address": "noble10xa6c28hgqmcl3ztr2x9t6gj8njekt0nrt8uk8", - "percent": "0.0%", - "airdrop": 7433.756727152119 - }, - { - "total_amount": 1083256198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2DvoFfZ4sFlOnIc66nqy22NZn2iIIzxAlnkLeS8E1Bn" - }, - "address": "noble10xlj6qk4g70ee4dslrs52lw6wu7gqwlxwgqp43", - "percent": "0.01%", - "airdrop": 19028.19890578228 - }, - { - "total_amount": 76797216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1O+rqUoBj2xjDrTDVk/gm+0uf5fT4N859/FvRAIazJr" - }, - "address": "noble108rqwjaffph0lvdyd7fc7tpnrx4n8h4rel2pqk", - "percent": "0.0%", - "airdrop": 1349.000083411778 - }, - { - "total_amount": 3722137417, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ampzg2zKJUhrYGFF+L3+vTyQvt2bRi9yAJbXzZtcDmLZ" - }, - "address": "noble108259y8hufglvvdycj57wj7hge6rr24j7mxxn8", - "percent": "0.02%", - "airdrop": 65382.10559615988 - }, - { - "total_amount": 114167757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7HeGyBjzxtbENPHEyV5waKpWFVNJH5RlmH3AthQ3WhF" - }, - "address": "noble108d2mac4uuse6r4gqaxx0aqpgtgddt7s36ngp4", - "percent": "0.0%", - "airdrop": 2005.4413654257412 - }, - { - "total_amount": 303676359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5xHOk7u62Z6CsQyM86OjRBNOlFpXRsBtj258J9sISiz" - }, - "address": "noble108dtj0fd95ss7tavhsakh2shyecwsjv5sh3kdp", - "percent": "0.0%", - "airdrop": 5334.300577005097 - }, - { - "total_amount": 191899432, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am5oQBgOmwM+RgRXevwP4eFqkoBLYzUvkNkyjQR8Eb7w" - }, - "address": "noble108syepla3s5dlnfmw6f85jl24xf99cqu5y7yv0", - "percent": "0.0%", - "airdrop": 3370.8559145512877 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At0wejm0ZkEL093xzln5+dDUrXMhULaU5HLYuCkjgMrx" - }, - "address": "noble108ss9dsdya700yjzvvz9ad5zaf4c9tpaq7zfam", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 219901449, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7AhXFCkKR9P2k6LPgOUcAXdduRGTLFu+f4kzXMBIinB" - }, - "address": "noble1083la8vqvknjgv57dxj03x3x87qvlees5uvq3y", - "percent": "0.0%", - "airdrop": 3862.7321209582756 - }, - { - "total_amount": 164003282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/bo5YWx6+PbfGyLfb1jVHnFBWcw4+JsoTJJ1E2BO/H" - }, - "address": "noble1084tlcxdev5d54ccy3f6j8a26hgzh2actxkkuc", - "percent": "0.0%", - "airdrop": 2880.8393405537686 - }, - { - "total_amount": 5000598756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsBW4X6GYwFqApKJEAPvPvHoEtk3ZNWL/rvGQ/Ejr9qD" - }, - "address": "noble108mr79hla3lxmqyqkuuw6felnlvg9m6yzd390s", - "percent": "0.03%", - "airdrop": 87839.22764795058 - }, - { - "total_amount": 135936188, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atp9zQ5D/GpYynhW5uQghCp+f/Z45ziauuCaQ4ff/9Qp" - }, - "address": "noble10gwvcflwgmyjenuyd3g9e4m8fg6wqvfrjkjjvd", - "percent": "0.0%", - "airdrop": 2387.8200083539373 - }, - { - "total_amount": 660401064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao0DA0/Gx5s2PzXb9ALqXtWS2IiCJy9Y63FzE1pVqu/S" - }, - "address": "noble10gwlkyuz3fy0u2qx0g6hulerucr5p996x8d05h", - "percent": "0.0%", - "airdrop": 11600.43471395144 - }, - { - "total_amount": 415005127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A49fdqYzCKAFleSWxoD5YpkDr8DjmnjbTUHETtvtK7pC" - }, - "address": "noble10g5utq8mq49t0d65wsw9h02ksx0jgmh40ysu8t", - "percent": "0.0%", - "airdrop": 7289.872994085039 - }, - { - "total_amount": 57902782883, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9m9js2KJ088SRj4UE9wA4zer1Bm6BlDtoYl73axqQx" - }, - "address": "noble10g69v2meq377dpzhrx70e28nf8ptc9lfmwtjv2", - "percent": "0.33999999999999997%", - "airdrop": 1017105.3458362484 - }, - { - "total_amount": 143095323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsKUypNvyv4D8BqTsuGERCHyLFf6FjMS5YhVOE8JS2lw" - }, - "address": "noble10g6ffxvz4kt8778umglz9f346dg7lalkf9hapd", - "percent": "0.0%", - "airdrop": 2513.5755267851805 - }, - { - "total_amount": 30286906112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atdt5IX8NffKRmhLwek+C1GH+swnb921OJFNmZMF07Vq" - }, - "address": "noble10f9tj5sh4km2x6edu0xzd3tc6n02rvja4wqta0", - "percent": "0.18%", - "airdrop": 532011.9790719065 - }, - { - "total_amount": 461235280, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj41FqUOUH+6Cwbe/+0f6VagJybNuhOsbxl4/+OJvgTt" - }, - "address": "noble10fjqqwk6pwcdk49n72ahwtejexj4ze58xmjdqf", - "percent": "0.0%", - "airdrop": 8101.939934807724 - }, - { - "total_amount": 161139113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtmsmpWCNIKeyqJ1cdwGVpEVjOILpyoDqn+E9OizJs52" - }, - "address": "noble10fany9428zm9v3wuq2mdxuahqr28naxsgjh05c", - "percent": "0.0%", - "airdrop": 2830.5280868241357 - }, - { - "total_amount": 23684797647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au/OBCAPm9XV1lgKEg2ci0VkC8/AKr17UKu6jdCEUvix" - }, - "address": "noble1028hx7ugrhqyzwegjt79ms4m779ulgudfx9ycl", - "percent": "0.13999999999999999%", - "airdrop": 416041.04504770174 - }, - { - "total_amount": 1340303299, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiTWOBWuvrUpsGPYEWp5gHly60OMhiDwsqFLGZTgV8Qx" - }, - "address": "noble1024ycyavhv2uvu6vu0qrp8vzpzugchaag6xr3s", - "percent": "0.01%", - "airdrop": 23543.421966599428 - }, - { - "total_amount": 928645647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmBCrQVfFSL157NOGW9yx49PPupjyploRx8Wa9OeCoiH" - }, - "address": "noble102h7sxmeyz8xrq69kflfumy0shug9vt3z4m9ym", - "percent": "0.01%", - "airdrop": 16312.349854752345 - }, - { - "total_amount": 788398642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsKv6gyagFaJrkm+R5QScxkhak0yucySusyd45bBGQLg" - }, - "address": "noble102eky7upn4qs0ka97fc968q2tks8pz6v6qmwlr", - "percent": "0.0%", - "airdrop": 13848.807147120182 - }, - { - "total_amount": 1695382835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArHltnsoJG/PCoXSuU66x+uXeT7uXkZVjBCeEKwe7QDF" - }, - "address": "noble10265n3crntw4mn48zs5rfy5fsyar62u3qj9qv6", - "percent": "0.01%", - "airdrop": 29780.65748932743 - }, - { - "total_amount": 160223631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Acy1Pz4Xh0yzA6SOusFG6ZCPNTsErHbhHAEAm7qGd+" - }, - "address": "noble102lgdrz7ud2rwgekfh9crzx70en3ttdfnzwnql", - "percent": "0.0%", - "airdrop": 2814.446966196508 - }, - { - "total_amount": 147823892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2/pGeohBv8D9+gnamtRaWgoHWMVpNlzUFMzhimdgOv" - }, - "address": "noble10t8lusgdjqfnn9z2ea085mah9u65h839a8xwv8", - "percent": "0.0%", - "airdrop": 2596.6363499199456 - }, - { - "total_amount": 282299235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AotBGplDqkHd1z2qio8PbN3l4sSYa7jyEaNz4+MLCsVE" - }, - "address": "noble10tgsx0xza7v4kaaw23cyglcpr27c86qry7w9l7", - "percent": "0.0%", - "airdrop": 4958.795531885961 - }, - { - "total_amount": 249028751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0BnuQZ6egQ6EV1Tu9VLZaXr03B2dyORy0/g4/vp9YRD" - }, - "address": "noble10tw2wdmdfzffssl6l9c4nmc98wqmumgeh7wy7s", - "percent": "0.0%", - "airdrop": 4374.374793364005 - }, - { - "total_amount": 50473646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alt8gr4qVBuoDrVJ571qDJsQmQ8ogIF8pB0hmAPxkjzh" - }, - "address": "noble10t7z47k8gg2tc7xmmt0jssgr0jng8yyd86tuw5", - "percent": "0.0%", - "airdrop": 886.6070439857683 - }, - { - "total_amount": 132671927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al8OG6HiBjMgYxgCa8nsG+OrbzONmXgbSCXRUK9iISat" - }, - "address": "noble10vqnmgx6t4d7hnjwa5rnjqfxx0pqkmp5cqtpsh", - "percent": "0.0%", - "airdrop": 2330.4808417716768 - }, - { - "total_amount": 308272291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmsYeDxxujHK+BReaZ42/MMVJT4QE2QZBVKXMGKXmTxJ" - }, - "address": "noble10vzm3z6qyd8eg3lslg6mvp8hxhpx9t5w8wy7dn", - "percent": "0.0%", - "airdrop": 5415.031532816761 - }, - { - "total_amount": 63000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Q0JVEmkABQMOvFJs1MkDs5Nxysp0Zs2nb0DRHsxJnp" - }, - "address": "noble10vyrh4yuz4w8qaf2aqczhtgepzelkl2u580cva", - "percent": "0.0%", - "airdrop": 1106.6417466870414 - }, - { - "total_amount": 387973238, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjMm3ntBf2m+n5KHLStk6nJ5Bnt3KSUjcOiUhBnihsI6" - }, - "address": "noble10v0mm37fqkv22qkcmr2a6unwqywsm3z43kmlgl", - "percent": "0.0%", - "airdrop": 6815.037805843607 - }, - { - "total_amount": 100932228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoOfnbMpzh8KdybDtoPMC9un9POwND0/IpT1Y3xrd+/z" - }, - "address": "noble10vsmr6qt2qc798qs7hc4y28fpw0d2nwwfq9ehj", - "percent": "0.0%", - "airdrop": 1772.9494776338843 - }, - { - "total_amount": 224856536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgDQOjus+3WT3/mZBM1r24YnwHkbQFkicZpqmcieRZET" - }, - "address": "noble10vjx7dpqwykh4ehxeck8kfcsd4kqzkvtjp4330", - "percent": "0.0%", - "airdrop": 3949.771900841867 - }, - { - "total_amount": 1116327043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wl533P1JhKdXt0mJt3x15MASiSuwcX+OqMI7zUAdFQ" - }, - "address": "noble10vhehv5f7kly4vm47nuwz66pxrav9jxz9hneu5", - "percent": "0.01%", - "airdrop": 19609.112837134922 - }, - { - "total_amount": 1483439187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqdKJ95tgpMIc/fyZPZvw/PC8pQPFI67KIbLOnRmbts5" - }, - "address": "noble10v78k9wtypueltalkhm9wz6usk0uaxms0235v0", - "percent": "0.01%", - "airdrop": 26057.71004770928 - }, - { - "total_amount": 269742430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av8nBSxmxrM5Jb1hljzg/jQvz90scZYI4NVqcO3bREy8" - }, - "address": "noble10dqg2pzkmgsj5dl06kvn3zswgkf7pkhy4rfvq7", - "percent": "0.0%", - "airdrop": 4738.225934774714 - }, - { - "total_amount": 1044493266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKWebPTJcqaI/Jkdo5bB0ANAUVS2EJiUxhHJ2mglTjq" - }, - "address": "noble10dpk5y373ttzaus2qecdt4ltpfc2jh02543svk", - "percent": "0.01%", - "airdrop": 18347.29924268401 - }, - { - "total_amount": 62468768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyFOOoXziOWW+k7vRwTyawluDYi6cGI7ZkzuKw5Eu0O2" - }, - "address": "noble10dzw6m5ypzpfcr8lsc6hfgfzeyua56y7y6qqrv", - "percent": "0.0%", - "airdrop": 1097.3102624271041 - }, - { - "total_amount": 950699436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApNAzIeMiQoKjHouGqztGWo0R9MxwVH0tnSz5orMcijm" - }, - "address": "noble10dfxaj4acssjf7dnsyal3jsckqs5jydgqy5c26", - "percent": "0.01%", - "airdrop": 16699.741022689286 - }, - { - "total_amount": 146875331, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3hDyNP9eZsWEA4znE4XKrmhZ5s0voMuF+ap2/maKgai" - }, - "address": "noble10dfg8l9c3y52zrvpxl6q4r2qqj08qnr8lzfzdn", - "percent": "0.0%", - "airdrop": 2579.9741721123396 - }, - { - "total_amount": 138072444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am6Kj6NVwGRt3mNx/20l1wJOlD30BdpHqs9ujW8ixXT+" - }, - "address": "noble10d267rm68m4gu443glcqmf9lwy8g689ayrv9jx", - "percent": "0.0%", - "airdrop": 2425.344930119186 - }, - { - "total_amount": 1325921663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AicA5Zskw+eBXFD6Qd4QE+YzSEW1xcozsp1jkOugnT+u" - }, - "address": "noble10d3ggfrktv62n79y4gdhayvy5lws8x8z54xatk", - "percent": "0.01%", - "airdrop": 23290.79785892868 - }, - { - "total_amount": 71413996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8KMQqiP+v1w7sQiqUUrOYVDhPrpN8oVCi9GET25SPh0" - }, - "address": "noble10d33rf50wvu3nl0y2vyuzjqq2ca87j9d8wp6sp", - "percent": "0.0%", - "airdrop": 1254.4398297038317 - }, - { - "total_amount": 5777965537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3hGchp7vR8R/noq210zA6Z03/mjjdZLmNMfWlWaRFYw" - }, - "address": "noble10wxn2lv29yqnw2uf4jf439kwy5ef00qdcnfa6g", - "percent": "0.03%", - "airdrop": 101494.2519708446 - }, - { - "total_amount": 143123896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An2296xodL9TCKmN99YRKEUA3crvCdG2H3CoJYQeeb4w" - }, - "address": "noble10wsx6cuh8wzxt353sv5lwakwt99w7psccyjuf9", - "percent": "0.0%", - "airdrop": 2514.0774327316585 - }, - { - "total_amount": 150410647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsnO+9bYvANDK/CfBUVcEFjktaspwqx6Shh/2HEEVnvG" - }, - "address": "noble10ws4487f7z8qua5cuhye958ts57u88fa50cjd8", - "percent": "0.0%", - "airdrop": 2642.074620895365 - }, - { - "total_amount": 10460653519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai0XhX5MMNBEmP9NVUCgvkjBXlQw5/Sb/SnWylkdrjS5" - }, - "address": "noble10w3aft222ffk5ryy0ku965qt3v5fgvmxstwtxu", - "percent": "0.06%", - "airdrop": 183749.14098022392 - }, - { - "total_amount": 596323702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPnuBRExtpDyFOK4ZGNM+JSMkVPXKWjB+d+XfzzYzjV" - }, - "address": "noble10w6vwq9n88xpgqg3euzmlzcvg6m9j5fmegekrf", - "percent": "0.0%", - "airdrop": 10474.868304320044 - }, - { - "total_amount": 101779263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkRFOelG0+WnZjweuY7mReH2HTkJrWE6qL5S3RDGOgER" - }, - "address": "noble100zwm02gjguqxy2dll4802h52yd7m27wru2p4s", - "percent": "0.0%", - "airdrop": 1787.8282759180915 - }, - { - "total_amount": 8428225454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+kfXjObsoxTPNiY7IV8XJYKDiKNaBVII4JAC1zMvihm" - }, - "address": "noble100yme594288lmkssymxtk2u47fc36texenz3xu", - "percent": "0.05%", - "airdrop": 148048.0339347102 - }, - { - "total_amount": 2123120621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwoixVEHj62QDMedlYZr2S5YFSOKQjtxOlsYldvZPGfM" - }, - "address": "noble100tjtxyu3pxyca8hcdhegw0ljxvljz9zlnwz2f", - "percent": "0.01%", - "airdrop": 37294.189086519305 - }, - { - "total_amount": 316951333234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxbzWyewQw5QRGXWCozE8fYRJZ/YJgz5aHAbHaMyzJ53" - }, - "address": "noble100t6w896d0tawapz6p9q2yx7rnur3t7dh44mq3", - "percent": "1.8599999999999999%", - "airdrop": 5567485.349600957 - }, - { - "total_amount": 50163377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgVRl4LyniFvdKA22Ptk6Gq5dETUgXsEl+FLbXmr+Z1i" - }, - "address": "noble1007ycme00q0lmm0ra4hw0ygcd2gvatcg49kgd6", - "percent": "0.0%", - "airdrop": 881.1569387777866 - }, - { - "total_amount": 166088302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Z6hQi0VBm5qlDZs0KKmpCjPUrz1grPwRfxeCvf458d" - }, - "address": "noble10spqmd8av0t54nmlu2zqjqw2kl7aue9ye3szv5", - "percent": "0.0%", - "airdrop": 2917.4642639613467 - }, - { - "total_amount": 36278282189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak024Pq4iw86x6fIMEHsXURHg123SnkrptcAjfHr8Jea" - }, - "address": "noble10sxqmyc800x8f6qzy7jkudgwre6kq6jwmry5qm", - "percent": "0.21%", - "airdrop": 637254.9455307992 - }, - { - "total_amount": 1001195621, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax1pquPlOhQUcn5totqhMfufTk0+JRdsz+xejDqmC/Aq" - }, - "address": "noble10s2978v798agv6hquke2d44lnhrhdrmqpmgcdp", - "percent": "0.01%", - "airdrop": 17586.74398093424 - }, - { - "total_amount": 498931431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6hHklh+Ijk6W7odpiVnEXLKcemsMzZgR+urP+cFbayU" - }, - "address": "noble10s2uu9264ehlql5fpyrh9undnl5nlaw606mug9", - "percent": "0.0%", - "airdrop": 8764.10079807786 - }, - { - "total_amount": 98334612, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZ7mZeG5RuJnV4FZjDQBSGPUIlnVsdvDWU3+NTzGzzZ" - }, - "address": "noble10sc907shh4kahg8mawka68ateear0xeuw8xtwy", - "percent": "0.0%", - "airdrop": 1727.3204251344841 - }, - { - "total_amount": 1790144764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuA1cON2/cfgnXi+gdQdaUYT37ZbMU9FFVey164gaCMi" - }, - "address": "noble10sc6nxu0uc4ss5m4cxdzhwcahc9zte9ag7sh7a", - "percent": "0.01%", - "airdrop": 31445.22108659717 - }, - { - "total_amount": 50438466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4PsHOz2RKVCewzHfAxRgNOjrarBRczM9S0I4ja3uZB4" - }, - "address": "noble10sagaxsgpsjw8ljnrl2drl3pqlshejqfv986qm", - "percent": "0.0%", - "airdrop": 885.9890811818246 - }, - { - "total_amount": 54414000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A09raVrkJj3KPicvmE2RrUkMVqF/f0vyIZeByHHHQivZ" - }, - "address": "noble10s7eynmgd2mz5kqn52es7hk8xtl6f9j6zuvkml", - "percent": "0.32%", - "airdrop": 955822.2857814075 - }, - { - "total_amount": 1031087104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiiXdZGFnxoznWiQimbZwcKi7UsRvHyMW2NAd1WbVHsl" - }, - "address": "noble103z2m9arhmr3294uvv9a0vy9ce7yl0xlwlvd2z", - "percent": "0.01%", - "airdrop": 18111.810059635605 - }, - { - "total_amount": 2788997090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvBxRp9VUfclk3P4cFXRaEw3EwyrBqWEqh0XvuWTb3JN" - }, - "address": "noble103r87hyrstwqq3fdfwehuuxgpflaap2krp86nw", - "percent": "0.02%", - "airdrop": 48990.80335210597 - }, - { - "total_amount": 471881050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xTALDGcUJwQ/6u0I0/o95bYPWgal9ZchIugEk6I85m" - }, - "address": "noble103y7r72qjwz6wnf9azteg7w0l93ncawry80nt6", - "percent": "0.0%", - "airdrop": 8288.94078413516 - }, - { - "total_amount": 50934948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjBHe6n//EizM3051dujZiAU4NpHmBM/cZUlhJ9vDdNM" - }, - "address": "noble103ftmyvh4j49cqx7qd6epxgjvlg8paep42dhn9", - "percent": "0.0%", - "airdrop": 894.710155906883 - }, - { - "total_amount": 121011545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwfY1xA8eFYDZb/jpA2w2WCe9IGXcTHZ8c6AsinliVF/" - }, - "address": "noble1032uw0gdparakzwzwp2ntfv2v7ht6n6g006w7h", - "percent": "0.0%", - "airdrop": 2125.6575798110716 - }, - { - "total_amount": 574257398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjRB63PUEp9bTWPw/c3YKj1uGlZwC9sNE4OJYhs3pRw0" - }, - "address": "noble103dn0zugfjjygrnleszjjeuz8rztxfx9wqk90e", - "percent": "0.0%", - "airdrop": 10087.257301121834 - }, - { - "total_amount": 669063436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3wsd7fKnnvoN9StRQgVNAZDS/eUodDy+RGLv8SOUZvv" - }, - "address": "noble103s624w5483d060a6m8zkagg4svgpj8g87s9nj", - "percent": "0.0%", - "airdrop": 11752.595705705931 - }, - { - "total_amount": 121120625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2eknj7sa7+sMtPQBoF2WNNQl/gYUlIruyz2PuZ9and+" - }, - "address": "noble103j9kd2xnpt30m6wtpcldlpvy3ge8watpyqz2w", - "percent": "0.0%", - "airdrop": 2127.5736509496214 - }, - { - "total_amount": 76995829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq+eV5/YPZm7c2h7kpQZmFO5YqUMD2wwbRM2I5pfuk7S" - }, - "address": "noble103jdml8095w5xjhkgd0d2zr0tmrm6vpqwlj9kl", - "percent": "0.0%", - "airdrop": 1352.48886812979 - }, - { - "total_amount": 9564078249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+yDUXsRziQt3NMXKEClRnebmvLx0vxCsrbnUmwEjyNx" - }, - "address": "noble103h3z4pxwk7787pr8k638gs5nlmyt6z37wf8ac", - "percent": "0.06%", - "airdrop": 168000.13109404605 - }, - { - "total_amount": 87346996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Ym7+0ZSNGY7uP4AcbIF3xgWPbIzrksQ8tavHJh5Exq" - }, - "address": "noble103asq6g48nk0l59ltj3lgk9w6c0pph7c2arjqd", - "percent": "0.0%", - "airdrop": 1534.3147971635876 - }, - { - "total_amount": 61718441650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpZxXBrSbys79TOs0GwOB8hLQKIPf4FNzJVMzp7311D" - }, - "address": "noble103lt0k0pkfsntjuf74xwsz2258her5sm0jexll", - "percent": "0.36%", - "airdrop": 1084130.2233390198 - }, - { - "total_amount": 214232421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApUJfzLCAAetVB49/Tk+/HzNwbzQsdepS8K6ZY6sig+W" - }, - "address": "noble10j9s80w3spge3rkhyk7x5yznt83t2auzml7fzw", - "percent": "0.0%", - "airdrop": 3763.151437657676 - }, - { - "total_amount": 83312110, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtRicYBJG4aD5TPS8wtksL6IG3q2nr4Z6YXb1jcKHLxV" - }, - "address": "noble10jv3pa7s6x0wu4fvxgcx2p7nztex0tn89hdycs", - "percent": "0.0%", - "airdrop": 1463.4390306441735 - }, - { - "total_amount": 73027078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av0QeQlj7S544aQPnWtl5ujRZ8E6OXfITHxySB+R3GU+" - }, - "address": "noble10j3ycaas4n0thntz5svxjd9ugpe4x484rgj2x0", - "percent": "0.0%", - "airdrop": 1282.774811958267 - }, - { - "total_amount": 1350000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlP87HoxWDm4s8pEydHF94oJWw+nh4YcYpdHJl9pLxa8" - }, - "address": "noble10j4ycg02f3z04gp8qynwx3pvr3sje48n25gt8n", - "percent": "0.01%", - "airdrop": 23713.751714722315 - }, - { - "total_amount": 299586483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4W65j4tkrEF+YbZsyBCAVF5JbLBgbQn/sfV9XmUFstO" - }, - "address": "noble10j66n0yj6yjcqxqnhugxrkqt0h8rgunc34r2q6", - "percent": "0.0%", - "airdrop": 5262.458870332503 - }, - { - "total_amount": 229208362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxGSofKcN9wBKGh2gbZV4q/x6/GtDk+2ONg4VR8NJZVB" - }, - "address": "noble10ju3upmjqru8j52n9azfh5gyhdyvqqy8lyfzqs", - "percent": "0.0%", - "airdrop": 4026.2149536342176 - }, - { - "total_amount": 996846592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aji7wzZf/1A8Z/07ZPp8byH7GLxqkYOi36L6w0tFjsUp" - }, - "address": "noble10jawjvv3ds4h83e4zp7mlj8kr4s3spnu87r62p", - "percent": "0.01%", - "airdrop": 17510.350059522294 - }, - { - "total_amount": 3424237005, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av5VzYa5UI3XR8S3mnkI9lVnmo3spis8fVBx19XhNRs9" - }, - "address": "noble10ja6penk4r72qgh0lhhx6827qm4l9u0rhyctf3", - "percent": "0.02%", - "airdrop": 60149.26381402546 - }, - { - "total_amount": 242179105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/gcKj0pW2IkrIK2p5RYA8DcDDraqrfGmcncmH62o8l7" - }, - "address": "noble10ngx7gfhw48wyypaac9dmv3xt6mwuvlta378ga", - "percent": "0.0%", - "airdrop": 4254.055678861974 - }, - { - "total_amount": 438141855, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwsmOlvzTVG2jQoMXnUpv020fSQ7rfjd7sxlf3H18TlK" - }, - "address": "noble10n3l2gvx5ayl5lmjtdcwmugmx72ve7e36s0d8a", - "percent": "0.0%", - "airdrop": 7696.286789109531 - }, - { - "total_amount": 108841997570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/P83ECox1ol1jPCfyFo+NvrjYQUZwYBng0xfn+T1NWk" - }, - "address": "noble10n3lcr0hx0x4d3lsvxzdg2fr0uglppd2x6na7x", - "percent": "0.64%", - "airdrop": 1911890.4492662146 - }, - { - "total_amount": 325726393, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoaqj/f+dh24ZB/TgcojJKpaTH4EGjI0ClfSC7rNxrib" - }, - "address": "noble10njskfe93gszekjwzuf0wx8u2mvmxa4y3ps00h", - "percent": "0.0%", - "airdrop": 5721.625785580789 - }, - { - "total_amount": 16506272890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuCAHiBDMUMhgUzkghFO9WIuhOIHuRi7+YYxVrd+K7zD" - }, - "address": "noble10njj6903njuyut3rxp2mkse8tvcx8yd5wuwjm6", - "percent": "0.1%", - "airdrop": 289944.9311473422 - }, - { - "total_amount": 192549250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8yLurJ3//gFZgMolkcV3oDien0h3mxjgWkMjLt/yLf" - }, - "address": "noble10nkkyzc3qn9hqfugg3qs8msrl09h76uyuvryv0", - "percent": "0.0%", - "airdrop": 3382.2704498933304 - }, - { - "total_amount": 1000798735, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+D0LxU5TbIVo0zqQuUc3OLCaKH66FtG6+IKUip1BIKf" - }, - "address": "noble105qeucljvgkgf4vqc0nsksaflg3y7n3d07km7n", - "percent": "0.01%", - "airdrop": 17579.7723838505 - }, - { - "total_amount": 406495641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyoZgg1Tk3HjZwyjOlb6ntuxHS2CSyJu/0qJF9YKnDsd" - }, - "address": "noble105flv8af32c903v2leszsvx890445y5vsxchdw", - "percent": "0.0%", - "airdrop": 7140.397558363628 - }, - { - "total_amount": 50495565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOHIVOYtwSx777q2RX2amzRlDtUKy5Tqe2eTB9rjR3L" - }, - "address": "noble105v38cuhcj783d284qu2w8k6m0ddzg25neeqc0", - "percent": "0.0%", - "airdrop": 886.9920674849053 - }, - { - "total_amount": 166088675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az8DyHSeFmSeytE7lNlHf7B6GFn/iev1HUO2eAcMIWyl" - }, - "address": "noble105363q3lf7ut63frthtnj6ugume3jjgeuy4qnj", - "percent": "0.0%", - "airdrop": 2917.4708159831166 - }, - { - "total_amount": 171722711, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7/sirCYFE+OEZP+Ntuw8YbCSjoVuI8ECl/9mLixylox" - }, - "address": "noble105ututh9ny5juc5ap4h9dqlsettjway637utfs", - "percent": "0.0%", - "airdrop": 3016.4368388392704 - }, - { - "total_amount": 50163340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ait6qJ2BCScl7GUsYsrrAnJrGwT03tbspZnTCLC0NOM+" - }, - "address": "noble1057xrjpae5pk8xqjywjjr20z8r6f8a8semcs9v", - "percent": "0.0%", - "airdrop": 881.1562888453323 - }, - { - "total_amount": 900884896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ATbCScOwDCKO6hzGOg5rApMVb40URRo3gjdKlO3zcB" - }, - "address": "noble1049cly2sqclnj6c3a68mnxhpnv2dtdrkq6r5er", - "percent": "0.01%", - "airdrop": 15824.71166465736 - }, - { - "total_amount": 13864467809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvUWGO4rA3wakaVHsAciaqNGCPY9A8cBAsU5+Fke1VXD" - }, - "address": "noble1042nyh9u0dqdwmz4z6trseq7hlhaft28jvlplx", - "percent": "0.08%", - "airdrop": 243539.66465139712 - }, - { - "total_amount": 2485000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlgZkd/dLnSbsz7zl8c1BAvH7xvBDtAS0H2vyxJcZJYD" - }, - "address": "noble104ncmhtm4ggj5q8dw3n8s2ec3434x93cw0szk8", - "percent": "0.01%", - "airdrop": 43650.86889709997 - }, - { - "total_amount": 130008024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am7fVGCALZzcv+F/48pvLijFJXPCzzJJBu89wGbhg/za" - }, - "address": "noble104h8x484ps9nj2467mzwmqspkwf0u7wfcj50y7", - "percent": "0.0%", - "airdrop": 2283.6874089316 - }, - { - "total_amount": 367233865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQdUco2/AufzWDD4AqGQUXoPLz+HWWIffyoiKxCnmgY" - }, - "address": "noble104cdc5c26c8kzxuhv7u88a042u2dy6c27cmy55", - "percent": "0.0%", - "airdrop": 6450.735330257669 - }, - { - "total_amount": 62423777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A27Pzej8Gq5kcqUqFl6DujFGXL0YhJWNeLwiIzzScjxO" - }, - "address": "noble1046qu0r6zcwxyfql6zwecvmkwr95f4udcly65u", - "percent": "0.0%", - "airdrop": 1096.5199621282916 - }, - { - "total_amount": 449464082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArJ9ANzzP+u5CUgqNchKwTvBm8Ab4o83/Fv+NQy15XN4" - }, - "address": "noble104algnpncvwvsrm24ds2v2uk34gepg07q2h2c0", - "percent": "0.0%", - "airdrop": 7895.1701075804385 - }, - { - "total_amount": 50154501, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5LxiCblClRWHsAXq65yFa7Dz4EVk5X8PiUW7Ykyof6C" - }, - "address": "noble10kpgpktu5djeclvxv6c95hzxnzyjyfuj9mduuc", - "percent": "0.0%", - "airdrop": 881.0010252516979 - }, - { - "total_amount": 70699303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ztO3hul0Pc1lEEZ/7LhpFWaF+fyF3ZjSUmfMfMUuxV" - }, - "address": "noble10kzg7v3gp5qasfyyu3fgmal5xu4ssdkv0h5wnn", - "percent": "0.0%", - "airdrop": 1241.8857168488314 - }, - { - "total_amount": 108690583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AviWyHAnl3SLzWm4OKLR3+e4SCgkFfISLvo+UPD0Cz8w" - }, - "address": "noble10krrx3l8zm990yes3uf790qwa0wu6g355lkngv", - "percent": "0.0%", - "airdrop": 1909.2307399929025 - }, - { - "total_amount": 646692326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnhoOIwamKmktLQeFPqjkUrfGDZq/cNangoBab8us0fv" - }, - "address": "noble10ky5zt4wwkpzlfn2ep5jq0yjxfsswc47u7mmxa", - "percent": "0.0%", - "airdrop": 11359.630558948344 - }, - { - "total_amount": 6057681189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmgfuyzHqtGiws6niC3FD1Q9CRuheDHwHQPtGh419XNM" - }, - "address": "noble10k8l7fale3ygdtxsz6g9v4832uuyq7wf0k0ctv", - "percent": "0.04%", - "airdrop": 106407.66495028879 - }, - { - "total_amount": 75009355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7mO65Epo5CMcadnO7up7P1lj7P7H8htkve5HX0CW5no" - }, - "address": "noble10kg976p96zfuuy3wzln6vyxgemeunrkvgwey9t", - "percent": "0.0%", - "airdrop": 1317.5949783344186 - }, - { - "total_amount": 109530292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atn/LT88ovCy+YmiZF1p9XAeFsTyRYfH8SZE9UigAyBj" - }, - "address": "noble10kdww5vxgtj4leppefl6lxjfmd7tz590qum4lh", - "percent": "0.0%", - "airdrop": 1923.980851651138 - }, - { - "total_amount": 196391302, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag8p1gm1E5ku3S5CH3mKrj+awQY0XqSH33x/vVbZXHXd" - }, - "address": "noble10k3t068njxnzave7l27qa07pnmh4zqhklrz475", - "percent": "0.0%", - "airdrop": 3449.758944117814 - }, - { - "total_amount": 234094076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyH5Yol/A4DIFLpFx+DhO6YAtr628ZMQZS1XoTJiKa05" - }, - "address": "noble10k556vhgqr5029prpz6p8x0tugwrhhpdxyc4xp", - "percent": "0.0%", - "airdrop": 4112.036145297286 - }, - { - "total_amount": 64268427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApotyDM1/wwgY6SbJiK4Nh/VFywETS56cXYB+mTtbkSr" - }, - "address": "noble10k4pqw3jvdnj28dv89uhx0tjcrd3hk95vv4xlh", - "percent": "0.0%", - "airdrop": 1128.9226081287081 - }, - { - "total_amount": 687042362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Xof9Unb90zwh6nSvW8SSAmMwix51AloMwatuzJ5CX3" - }, - "address": "noble10kettz0j007k5x95xhjfw09a6d94cw3lr8kyu8", - "percent": "0.0%", - "airdrop": 12068.408881455089 - }, - { - "total_amount": 1398524540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqrWrc5qqCjrjm7fSDpjOOJE3Tw4YRdDRN0CDQ3sqzsK" - }, - "address": "noble10kanzuarw9xxa4rjwcskn5f6lgy38ut2p28wjs", - "percent": "0.01%", - "airdrop": 24566.121265560178 - }, - { - "total_amount": 2175582312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1DEHvZ7t+XJdiiOAL06w6doOi9Clz5Mstb7en26odJ3" - }, - "address": "noble10hr5azvwpzt5z4wuml4jm7vt3npr98skjcldwd", - "percent": "0.01%", - "airdrop": 38215.71761608114 - }, - { - "total_amount": 550685946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2MwznpFlRwLNgH4OxWwu/fkhMjlUIL7sk/UX1a41Vsj" - }, - "address": "noble10hy0x88mecgnqe0zzr6uqny8pe0te9fcsaveru", - "percent": "0.0%", - "airdrop": 9673.207256467393 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apq3eN7dNJJkpe2HrEHV++ePrklMFA0Mco5L0YI/88mK" - }, - "address": "noble10h9663c0ty5mjrt86ppevnm2r8x47tw4kyrpsf", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 1075202455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AusGW2o8opUjAa8fhRDAl2hlsEaCEwneh5xZ6H/oaF3N" - }, - "address": "noble10hd7q4klgdcqvfsju0a0qxv8msj9sk59wz84rd", - "percent": "0.01%", - "airdrop": 18886.728934022147 - }, - { - "total_amount": 482664355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8DLRctqcNUWPGG/k/m5NOdeJNhhHMIQLNe8aO2hzBLr" - }, - "address": "noble10hncce2cs2hlv7l4djw4syhx0sevdz92gpf9yt", - "percent": "0.0%", - "airdrop": 8478.357537790067 - }, - { - "total_amount": 298802603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+CN9Qot/U67XaoPY1IzflF7PPA24bKf+m4LrZDEoLB" - }, - "address": "noble10h4m7ju6lckyxv84dghqz4h6nfcxmtf8vz7zmc", - "percent": "0.0%", - "airdrop": 5248.689436484993 - }, - { - "total_amount": 644342811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjG9hRwWppvNs02fnMr3g/vEsHt6OCU4D/uhf/o9pvTW" - }, - "address": "noble10cptayrxc7xdn0pq872kmd63y45ms8stdmtdy9", - "percent": "0.0%", - "airdrop": 11318.359584607591 - }, - { - "total_amount": 650978174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxGM1ejmt9a+wYvv6EbDsBinYeT3Q4/ikeupw6D3m7tX" - }, - "address": "noble10ct58aql6pwdpg6avuvh78h72emyy3a9smjwar", - "percent": "0.0%", - "airdrop": 11434.914659214299 - }, - { - "total_amount": 59872953, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap138YR45o0fk8uKbLgsEt2rSkLg26Sn28VgJYdMG90T" - }, - "address": "noble10ct45skkk9zw29nxyq52z3gkkgq78qdlyzu4wy", - "percent": "0.0%", - "airdrop": 1051.7128458290658 - }, - { - "total_amount": 3797703049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+gic4ExXMDcTzR4qaGdku3EVo5IVI5rWpfSzKUN+fNC" - }, - "address": "noble10ctm3pasf07cy9ws8ldz33xgnzxq58rjmkl4fz", - "percent": "0.02%", - "airdrop": 66709.4719927629 - }, - { - "total_amount": 55186527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoRp6By0EvcJcdaZ2vAoK7O0KML14yif8jZJmzarIp9G" - }, - "address": "noble10c0qv0qghgx2vjqh9rshyaew2las205gt550zt", - "percent": "0.0%", - "airdrop": 969.3922957598663 - }, - { - "total_amount": 551361219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5RjEmBy+BZYfcP1oLYg8Jn8s93HsfGhJxE0m/km9Lg/" - }, - "address": "noble10cnr6cx77k0ftc89afccwyjvu3f0yfxekw7qhy", - "percent": "0.0%", - "airdrop": 9685.068927772323 - }, - { - "total_amount": 288175333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar++qF41S5z+l8vm/+MtAPTE7FGnJPcfgJsEJTnLLuOI" - }, - "address": "noble10c4kq2997yqh2dfp7h7wjzmrr3mrx96awatqs0", - "percent": "0.0%", - "airdrop": 5062.01355338476 - }, - { - "total_amount": 764949797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvuoHB/5ERwDp+n181DCTs6ZO+mI/iFK2VJecZCmE8mu" - }, - "address": "noble10ckqgve8a6apezcp95sjqt3ch6kl9n3y0sc6tg", - "percent": "0.0%", - "airdrop": 13436.910785396472 - }, - { - "total_amount": 50860031, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqsjIsMSvC0g4tcbnqXwenrR8PZ1tISMRUJXfne+QQMD" - }, - "address": "noble10e0r3kdf9309tfqjapvrhvtxhrymxtrv3wdxsp", - "percent": "0.0%", - "airdrop": 893.3941832126519 - }, - { - "total_amount": 144379370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ilg6L3iNM3fJFRvdhTv4TGgpTm9dioo/FXZOyOupT1" - }, - "address": "noble10esg2aggjta76c4cdjawjeusu9ty6a4fph8ep6", - "percent": "0.0%", - "airdrop": 2536.1307651170578 - }, - { - "total_amount": 645798948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AldQ9p5MYXfXlxvzrDHOvsGtDF4vfvJ0oJuGjdPb/x68" - }, - "address": "noble106re5klg7sz6uflp5u7q8ds62z6ye0lja956ld", - "percent": "0.0%", - "airdrop": 11343.937711482124 - }, - { - "total_amount": 1961890216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amt8p94b/J/vwf0Ox73Z/T3m6u9hZsgd3SOV6tirY7JG" - }, - "address": "noble106ymhxaq5xkc0hv5txmg0rx8tnx9xy7rqfr8km", - "percent": "0.01%", - "airdrop": 34462.05738797551 - }, - { - "total_amount": 276274588, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am/EHI/aNgXFmLWe0qHLzN7KTqdBHPUDmrfQO3ZoPMRe" - }, - "address": "noble106wwq9stee9vwu3ptq3vxj9crlh2cfaxlvnwr8", - "percent": "0.0%", - "airdrop": 4852.968136977186 - }, - { - "total_amount": 1122208963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArGoLlEJexPiJemv0OQg90RWQ9vqQpHGiWPzalok4g6H" - }, - "address": "noble106cj2kqe9ypm8tfxqhas5ne49zszxycumk2a44", - "percent": "0.01%", - "airdrop": 19712.433126383705 - }, - { - "total_amount": 89985000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmS2S8/XDgN400UxdJJnTgW43DW1Ow+djQDRC5GcXRS" - }, - "address": "noble106mqnmypwadwrwn9armp04xdguep5ktjhuzgkr", - "percent": "0.53%", - "airdrop": 1580653.2948513243 - }, - { - "total_amount": 647217043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/aoMnSUNq4WA2oP+EuWH24qaPQB6lEt2WyZdLH43CgO" - }, - "address": "noble106u9f60jm6vjv472xwt3k6jar56kvzx89xtyz7", - "percent": "0.0%", - "airdrop": 11368.847602399079 - }, - { - "total_amount": 1564860000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av13yFZfl5TB2PabwM6DQmPC1gFQ7abQ2ap5LR2VupBA" - }, - "address": "noble10mkcqm9s9ndta3r7ljmpn9cd6mxed4kk38flyw", - "percent": "0.01%", - "airdrop": 27487.927043185453 - }, - { - "total_amount": 173590909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiamMIfq+x2XQYooVMU34cMwVd+Sum4geW9OGGgz6B8w" - }, - "address": "noble10mhvv0tljhwp7nxt4dcedmfjapg4ygyml7khmr", - "percent": "0.0%", - "airdrop": 3049.25312293256 - }, - { - "total_amount": 331768794, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azed+aubRS0IN42KYGoYtDvI7vEs0cpGkGf3lBRx5hsK" - }, - "address": "noble10m7tpelsmartlv7lszlu46lnkfff65zujamvl9", - "percent": "0.0%", - "airdrop": 5827.765042673226 - }, - { - "total_amount": 1504476706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Ng62NKkVywwMkqQAF5Kq8v7JNBem+qAcvIfIdHC7bV" - }, - "address": "noble10ml7mpjs4t8lxxuf086yyzecxzyz8qv4x855ql", - "percent": "0.01%", - "airdrop": 26427.249679012803 - }, - { - "total_amount": 222734213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYuBvX5V9RlXw9HIrXcGiLRxbktYo45SpamhVoa6azu" - }, - "address": "noble10uyx3mjp7wptjjerp27cckd6rvdqvksc4u8usy", - "percent": "0.0%", - "airdrop": 3912.491722560056 - }, - { - "total_amount": 52148446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4b4teC+s+yD6uV/dVu8oXRJDoC4R/fLZK29AXn37VQ4" - }, - "address": "noble10u2xp3v4fyqdhv2w70sdhf75evkp5w24d3g4le", - "percent": "0.0%", - "airdrop": 916.0261487056326 - }, - { - "total_amount": 63491839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9N/SYmJ8V8dRHk3l+7ji/gwCzEjeNCM8PTc8Yr3O4HV" - }, - "address": "noble10u24rwqfxl48rshaasextp5a25gejuzav7xt2p", - "percent": "0.0%", - "airdrop": 1115.2812636719432 - }, - { - "total_amount": 119908052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvwREr0zUPmGLIUAy0SgLtUNfBse0+8OSL60biSD3slQ" - }, - "address": "noble10uwtuauym88gw0dd7e935c3zqn9f6rs5fld3kx", - "percent": "0.0%", - "airdrop": 2106.2739064622315 - }, - { - "total_amount": 414691559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aub74FrcqlVgKmzRLy4VYY5UDY8Pjv+byvQD3wzyk91e" - }, - "address": "noble10u0uulq7xzncunpxzjjxzsfpg86kye3cwknkmw", - "percent": "0.0%", - "airdrop": 7284.364939494164 - }, - { - "total_amount": 729541257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au/v2c6ecQyzVpw93uJIln9Bw2X31pxZWoroC6B0nfbt" - }, - "address": "noble10unxcr8nmx8zlk63gcy5w5ytrnf54v3pgwlaky", - "percent": "0.0%", - "airdrop": 12814.933506773648 - }, - { - "total_amount": 167083968, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3G7a0iF1BT57fdSaRLlhNfTYhbSZ2cSuJRNm7kZd44K" - }, - "address": "noble10umhslsaayvuf5nux2zuk574fkyz3qw00wrxav", - "percent": "0.0%", - "airdrop": 2934.9538760463765 - }, - { - "total_amount": 101846373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YuL/U7o1rdzY8cUxD4JIZmxyc4GsZrAQB0aRi2hVYw" - }, - "address": "noble10ulrtrzrezwdck9kg42k6qxms7v44phdfa9m4w", - "percent": "0.0%", - "airdrop": 1789.0071128644436 - }, - { - "total_amount": 29565758779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhvJxxveF2E+M34vXKKzOfh3206ONn/M28ZZ5GGj8W52" - }, - "address": "noble10uljkej3a4vgy942q57879hfg8th6xd9fmr394", - "percent": "0.16999999999999998%", - "airdrop": 519344.491068576 - }, - { - "total_amount": 1261600431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AprVJv6Na9H9RoZg5myQPel2qdYhVW0HnbTmQ6KsQ5E+" - }, - "address": "noble10aqduuvwuhc4affjyyk3van7lwjxc6xyerqysd", - "percent": "0.01%", - "airdrop": 22160.947691793084 - }, - { - "total_amount": 105312764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhaUZ13gBRr3gIog48OfYNLZXtWPL4n/bKZgOZrvUqBh" - }, - "address": "noble10aq6twjknmh6epq2sr8xefddcdc4j7me98sa57", - "percent": "0.0%", - "airdrop": 1849.896842879368 - }, - { - "total_amount": 103277478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyxNQKb9b/BVGMmbbVCuuNg8D1jb7+hDCaO06ESNtDqq" - }, - "address": "noble10ap8tzctj487qgvwdzjqfu96zrtwuujzkxadpa", - "percent": "0.0%", - "airdrop": 1814.1455340849602 - }, - { - "total_amount": 60552698, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3SvQrsmhv7zxmfNBQ6tg3dLyRlbHFIRt3aBTZg6CasQ" - }, - "address": "noble10a8kjztfrcnpjyavy7r9x34z0lekedvn7pqazg", - "percent": "0.0%", - "airdrop": 1063.6530711322687 - }, - { - "total_amount": 476997650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlvjiAWhwCZBwgWh+IqV95VGu3EYKs8kMwVC28+d5ECv" - }, - "address": "noble10a4640ewr9txw5n88rgk9w4c06lxchpfdnvjf5", - "percent": "0.0%", - "airdrop": 8378.81765970816 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axg9LLl4cEdf9uXvwXq4rA3Dj/48hXfuTyGM/6sp+39r" - }, - "address": "noble10akqfz257ngg84pf9adn03tm3dj3ekfykrjdws", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 89230430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjoxjEfRBS2Rxb4TlyT2GaZedVPWS7+qs4+BvQzWVNTF" - }, - "address": "noble10acjsgtz3tfwkvvdwvc7hnch8u69jlgn6nqcjp", - "percent": "0.0%", - "airdrop": 1567.3987129021552 - }, - { - "total_amount": 113024083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2OdvO6SGhpVK/xrYBEBH/NUQ6jKhHjYyHKrfyIGLr0V" - }, - "address": "noble10aaafhnfjcn9x8dddmutcd6npxq5tuj4rxutcu", - "percent": "0.0%", - "airdrop": 1985.351882997161 - }, - { - "total_amount": 132814788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0JEK6Tr4W3gejZh2QXVf7ENPuSPJTunKi5yBDgPixLu" - }, - "address": "noble107tcy3hrjedrrnfenf365e3attf0gpgk8smmeq", - "percent": "0.0%", - "airdrop": 2332.9903012410973 - }, - { - "total_amount": 28726618181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag5zM5DiwfH5D969dQYxSrMmfBs70dRJ3DXkIPZC4cRw" - }, - "address": "noble107wdqfgfa5v4kykahc2kg9syxe9ypraynxs9ks", - "percent": "0.16999999999999998%", - "airdrop": 504604.3638132311 - }, - { - "total_amount": 278609623, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amg2rzR+iWi2C41MfrNtcmO80y5KM83DD/rx5GoJnl+t" - }, - "address": "noble107erxa5akfnj6056yl7dz3grzczjq8uvgsfk9f", - "percent": "0.0%", - "airdrop": 4893.984759373621 - }, - { - "total_amount": 233290084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6AWJVRViICIHSqQrZdFD+VRzbOvGyMzYIK3kPhkge92" - }, - "address": "noble10ly5yuvq2w5ajeqa34txxqwvtwqepstksvhwt8", - "percent": "0.0%", - "airdrop": 4097.913429246454 - }, - { - "total_amount": 62672963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqFs+6kvdO3uV221hIdrsALKmwnEsv351Bbthn2NNdMs" - }, - "address": "noble10lwz3r3ghkpw8ktt76wmt9nfcrjr3jx6g4jqp0", - "percent": "0.0%", - "airdrop": 1100.897099117021 - }, - { - "total_amount": 150346228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au0Drv4WmZuhYIiMdO+QZKcfr3/yDlZMhnPcJjAzZwd0" - }, - "address": "noble10l0c939n3ru9z06yul8w2tcxc42l9g6pfj4vpw", - "percent": "0.0%", - "airdrop": 2640.9430533607647 - }, - { - "total_amount": 2985380712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar8ORZ6EcwUAtfQKiSSI4DLBsz8Lm6tjdn4VEJdqjMYc" - }, - "address": "noble10le30ms6h4zrremzn3dwycf7esx83s3h0vvq62", - "percent": "0.02%", - "airdrop": 52440.42739132514 - }, - { - "total_amount": 46072053029, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axg2EBDEYFTCV0u1H29RuPRZOy+ufCtRn0HwWRO0AUc8" - }, - "address": "noble10lmps0mhxa329ny0367hy284x5j8vw5tf4x250", - "percent": "0.27%", - "airdrop": 809289.7974201676 - }, - { - "total_amount": 1430461022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/p9TH6SV7Q1kP5R/tjH2+6IJaOYlbxAG0ysMWoKIdQP" - }, - "address": "noble1sqradt3zmf0rmfpa3470flk5smhfscderfjy8s", - "percent": "0.01%", - "airdrop": 25127.109269108103 - }, - { - "total_amount": 85558099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7j2p1xwKt1844nEhsqQqTWGgpans6j/4YqrG30UQsL/" - }, - "address": "noble1sqft0yvh0fw67azpv009qx7pyw0jnr7l5qxysp", - "percent": "0.0%", - "airdrop": 1502.891493977505 - }, - { - "total_amount": 65659548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0EJyU7dOwAY7lcb+l37qt7eyGcphSp4kBQ4d2CM0a3r" - }, - "address": "noble1sqvpzwylx8hv7l76jfl97844wca6nfsfv0k3zz", - "percent": "0.0%", - "airdrop": 1153.358680720661 - }, - { - "total_amount": 297701704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8YBmCcRzvyukc+E4MXuLtvWy8Iejylx3Lm3BhxNV/EO" - }, - "address": "noble1sqdvuhgkzlve4p0yvsau9unrygqy2uchregwv0", - "percent": "0.0%", - "airdrop": 5229.351328670929 - }, - { - "total_amount": 29846945841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At4C8bUGMKXTfB0snSnff+wE+D2z6UXO44FVaWdU9ljL" - }, - "address": "noble1spp53kfn80qppsj65zremjeu55x5ea208hf2dy", - "percent": "0.16999999999999998%", - "airdrop": 524283.7504564725 - }, - { - "total_amount": 118090577, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AojvU4j6y7BTk+esYwmVapqKuBnLmNyDEuQ0g1TDH0RY" - }, - "address": "noble1sp9lhefgwkq43ae5uzhkzydav7w9rtwy66xvpr", - "percent": "0.0%", - "airdrop": 2074.348609500961 - }, - { - "total_amount": 112184859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0eoCs9PfBwLTnXckzNZhtkyZfRmc0VnJoePRFumO9TV" - }, - "address": "noble1spfyxk7ncnrhkv22twrp0ju54xufp80ygpq4j6", - "percent": "0.0%", - "airdrop": 1970.610290723801 - }, - { - "total_amount": 484054618, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqaZWk7QKC1aJSSACG0fMZrcwKNySTIXRI4NoW9aQ4hf" - }, - "address": "noble1spfaf67lc09n7qcwv4eny0ynf37u8qrt8fxlhf", - "percent": "0.0%", - "airdrop": 8502.778538975375 - }, - { - "total_amount": 8455199145, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZxySJj7r+2v7SKQxIHq6IDGuhPqbST0za5q2MGrUvN" - }, - "address": "noble1sp0qwk53g4ymhjxxn4aqzgudkef9e7392gm7dc", - "percent": "0.05%", - "airdrop": 148521.8468318981 - }, - { - "total_amount": 210894374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnRDGs6DUc977sqOIyY7bF/X6ZmI5GDUz5XDnY122MgH" - }, - "address": "noble1sp406kln5l5mdqlvxmhvzj8yk6pmejlt6m7hcf", - "percent": "0.0%", - "airdrop": 3704.5161652354 - }, - { - "total_amount": 76687038, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoS4Out9MmaGTNWNzKY4EabjwzLubj9AXTbKiuFGNnV2" - }, - "address": "noble1spe42m04gq93j7hj793lq7avlmehydm0mm8mjv", - "percent": "0.0%", - "airdrop": 1347.0647250885002 - }, - { - "total_amount": 502922656, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0tISPWcEI5YJzq1N72/5sHOopx8LkQG0DQ5+VSnApMc" - }, - "address": "noble1sp73fkg4nncgckml2ka4p8jqm9ufdd0zn93m6j", - "percent": "0.0%", - "airdrop": 8834.209626735335 - }, - { - "total_amount": 1506017332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6oQdgdm+zcsr4Z/J+qbgs3/ntPDTR2GTP7PsPFKPERD" - }, - "address": "noble1spl3xfy9dy2vqf5tpcrtvp28ej2qpxj79vvr9a", - "percent": "0.01%", - "airdrop": 26454.311917864095 - }, - { - "total_amount": 54817115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkygQQoNFF61XOanSfPi1Y86f+c/Z8FqYDfdwf61qc43" - }, - "address": "noble1szzvhd73ysrwcwuf92rmcngj7le3wp7hwz6570", - "percent": "0.0%", - "airdrop": 962.9032998721336 - }, - { - "total_amount": 907274831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au0iNC9IlYqieaZ79CV6va0yS1eil+LHCW6Aj9W8XVK+" - }, - "address": "noble1szrz4387x8ljvtehplxc76qp0da8v24lj3cdz0", - "percent": "0.01%", - "airdrop": 15936.955614333814 - }, - { - "total_amount": 95642430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At06ZHtp0UOlOqFoeJWTd5d1WPp/ELFjD29KYqAyfyaI" - }, - "address": "noble1szxpew370gh7h5kqe5umjvl0cdhef5h2y9vr8v", - "percent": "0.0%", - "airdrop": 1680.0302506760809 - }, - { - "total_amount": 2082170527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuNSr0Qi2xuJonhmPXHwNtuAcgY2uHvAhn4qaxETjKyI" - }, - "address": "noble1szn8vfhrjz6qj8fyptpx3jkpkkakwpay5ju007", - "percent": "0.01%", - "airdrop": 36574.870299992974 - }, - { - "total_amount": 492804219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPChuFPVPLfLr2zB7L0ub1AtkuYChgSeAINy4fS4OGQ" - }, - "address": "noble1szna87qkhdldvwcxgw5zxeprfyavejxx42nqnu", - "percent": "0.0%", - "airdrop": 8656.471772839734 - }, - { - "total_amount": 230000017, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9kyCAJ0aq6dep6tJ0k+iTHC3YbnUHdomzcgo1gnxjqE" - }, - "address": "noble1szmy04w2hkdwrya2mmdeff7rkcatgf3j0cr0nq", - "percent": "0.0%", - "airdrop": 4040.120961125861 - }, - { - "total_amount": 66904472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuGpBXffquhvpCUmreDx1f+O1CTA2fB60ZCjARd4yILc" - }, - "address": "noble1srvnvqjvk9rc33t2at4f6ahqemu6mdpxpddz3f", - "percent": "0.0%", - "airdrop": 1175.2266945278452 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArP6+0RXdsUiYhDCGRH2i0cua3MLf1/vqbwSmtrkjGG6" - }, - "address": "noble1srnsn3hpjkmxq0ralgh4avzqhd0jyd5llg5gue", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 88625717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IldWf4zCKFk6yD6p0XRKKZ4zenMo0Yp+7Wgq8ezHlW" - }, - "address": "noble1src8r0pw4m5rpq2fvhx9lue8gwpn4vy3wuguj5", - "percent": "0.0%", - "airdrop": 1556.7764803535147 - }, - { - "total_amount": 445895523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A85+UtgK1vb2uK5xWxx6kRNtRbIxS5DGpgFnsFfqQu+U" - }, - "address": "noble1sragr7zqm2vkyvg35p9n5sly0k48q4k3eeyhfs", - "percent": "0.0%", - "airdrop": 7832.485720835744 - }, - { - "total_amount": 227730531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ynvrqDZQ+y0pqAu34OyYvcggoJiSFY/dNNamEUuM58" - }, - "address": "noble1sr7p3esz5xjsezzwrk6ec5hz2675jr69kyq80q", - "percent": "0.0%", - "airdrop": 4000.255755552499 - }, - { - "total_amount": 249271988, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuXLb1yB/ixYZmvD6SAB4LPEhNztxxVLQmQLd9b+kr4H" - }, - "address": "noble1sr7dr6pq8qaue7jctqyhwd8dyspaf0gmsvt43g", - "percent": "0.0%", - "airdrop": 4378.647431753511 - }, - { - "total_amount": 65592865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao6tQnQhREsg6H+Dhp0rPzfki7Pvj80Z7fIu9lfvFqln" - }, - "address": "noble1syr68ewrc984cnjwnk9zugtl56ayayvmxt7f9q", - "percent": "0.0%", - "airdrop": 1152.1873443461477 - }, - { - "total_amount": 153301292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvBjrXBh1s9Iz/sPhiDlFHwsc8iNFI3Y+xOdaoNpqQIo" - }, - "address": "noble1sy5xufwt2gmxwxkwlvcckjjhl7ylyhk5zuyyvy", - "percent": "0.0%", - "airdrop": 2692.850945210479 - }, - { - "total_amount": 52019363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9fvstjqoInWOYZZaQ9KF9hzwsBzE0p+zgsx1fEAIP8m" - }, - "address": "noble1sy4kmmrmza08ewjnd3yyycz5h7xdhxcwpsrzqp", - "percent": "0.0%", - "airdrop": 913.758710029639 - }, - { - "total_amount": 385703461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjU/jLdk8i7KNkkhsXuYQ/JXNx3WsxAJmPmdrXrvOVeJ" - }, - "address": "noble1syk509stjkvfn3qwhuuzjse03cr4xwrfswf5et", - "percent": "0.0%", - "airdrop": 6775.16748863932 - }, - { - "total_amount": 54823191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiXBO+4J7RBq/6UU7ufekN22RRKIJHb853yOG1iJZBus" - }, - "address": "noble1symhw7sagafllhhz8acggvc8yhzy3f5dhjxx7d", - "percent": "0.0%", - "airdrop": 963.0100293205919 - }, - { - "total_amount": 4068019614, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiAm0uapCxN5wvc/RmVMVCURhz1QuO9fgKEVjNMQc1+/" - }, - "address": "noble1s99f3s2pwu5sc6ev27f37wz92uaezmddejujn3", - "percent": "0.02%", - "airdrop": 71457.78303482705 - }, - { - "total_amount": 5213257373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyVXOdNNuAJuoHJtJbBKbViRJQFJHZZkVRalWG4/rEqZ" - }, - "address": "noble1s99kpxavmcwmj0mpy0nvvpcjr7mr390ehxsd03", - "percent": "0.03%", - "airdrop": 91574.73405056851 - }, - { - "total_amount": 112412441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A23DwmxRsEIAhw83jwX9nNKluKeDqfL4uMuk2SFf+yNH" - }, - "address": "noble1s92087v5w2cc3dajf6a5nmjenplwnlp2dmtk2j", - "percent": "0.0%", - "airdrop": 1974.6079374221267 - }, - { - "total_amount": 66069682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtWd/YxFpZm59zfdL2U8qyf2D44V5T4b/urc4Y9UfgN0" - }, - "address": "noble1s9t9jkqvwcwh66c4nya5vxnsntew3wrc4ucdzp", - "percent": "0.0%", - "airdrop": 1160.5629887545615 - }, - { - "total_amount": 72464319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnNLwfJJbS+i+HioGej1s9KmBWil3T2HKJHgKlfU9CuT" - }, - "address": "noble1sxq0natmx2rsq783aex7y3kavyznqa3vhdqhzd", - "percent": "0.0%", - "airdrop": 1272.8895325499518 - }, - { - "total_amount": 56113568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AizgLsYJY6fR6gxDMLSRRQqYUNxTEqIvOPWHR1sOEEZy" - }, - "address": "noble1sx95ultetf8va9wq5xmjxsksckezxt3zxt29uz", - "percent": "0.0%", - "airdrop": 985.676458799398 - }, - { - "total_amount": 20481919488, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A874FW2YoONx6zbQemNXwaJSqtQ6Wb9BRg0HRLWvtp2o" - }, - "address": "noble1sxx9mszve0gaedz5ld7qdkjkfv8z992atdytm6", - "percent": "0.12%", - "airdrop": 359780.11361434404 - }, - { - "total_amount": 230079348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qc5LLwIgPdwK77eWtm94QuP6YRSxk6N1Xe40As4RwO" - }, - "address": "noble1sx8xwe7wh48n0xj4kdkm5w45zm79ddhmwt5we9", - "percent": "0.0%", - "airdrop": 4041.514469005328 - }, - { - "total_amount": 289304898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5NYEANhWAOFMhV3BbRGR2Xj2cVR6RGjyuYQ0baSLg7V" - }, - "address": "noble1sxsz9yw8p8ycevq0d2vadt08qxwc6rn2rqugdq", - "percent": "0.0%", - "airdrop": 5081.855200759307 - }, - { - "total_amount": 2977348010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiq2ckXZQB1E7OEVYAkkcnb1gbjKd6ExpqoPnovkY1Ii" - }, - "address": "noble1sx4p4904yutc2plgdws7jqvat934mtty2ufqf3", - "percent": "0.02%", - "airdrop": 52299.327020342644 - }, - { - "total_amount": 92886260, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+pE4/E9t2Lq+Jo21SxEJwqGWZ/eFSwfuxEEfhcF7ZhP" - }, - "address": "noble1sxe4ahua972hdvvd06qncjj504avg683asxra7", - "percent": "0.0%", - "airdrop": 1631.6160795178835 - }, - { - "total_amount": 133791549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArA5TPnGD9xmLZErBQlVaP8w4++ytjqvfbvt7mQIfrkG" - }, - "address": "noble1sxu9etxa6gmlxq59dqddkjtkp6qh4dv8wn3xnx", - "percent": "0.0%", - "airdrop": 2350.147832973411 - }, - { - "total_amount": 157401151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9MFbabq2kW9Um9bWnVQ1tvYHUyVkwqwJaHtyfNulAkJ" - }, - "address": "noble1sxuc7jt7zf36v8mxz2m4894yxmjwe8lzcjjuz5", - "percent": "0.0%", - "airdrop": 2764.8680106855677 - }, - { - "total_amount": 8293259137, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmUbuRozjAGK3v/D74TqVpObp5/+QMumMZU+yd9J/YZH" - }, - "address": "noble1s8chvp489y7nfdp8cfk9z7kwfdxsnx3tlzl2ss", - "percent": "0.05%", - "airdrop": 145677.25043012612 - }, - { - "total_amount": 3005337891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0NIifTPGkfDRfT1ImIIWLqto4lrekoz526bxTSqhe5K" - }, - "address": "noble1sgzazgtwumwaaqw63ust7a2sj2uhnlzsct7f7d", - "percent": "0.02%", - "airdrop": 52790.9900489046 - }, - { - "total_amount": 9672872577, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9hr9Akpf2z8Jfi/tUI8ogpNcvIplMOeY36aZj/bSguT" - }, - "address": "noble1sgrhw077tvh5sv0dgxpxkyz6rfvvvnsps8yd4r", - "percent": "0.06%", - "airdrop": 169911.18419194387 - }, - { - "total_amount": 868463712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnXjRXm/l/JvdhDg795AgVKtYsdrljVQ+Jv/kkZnt75p" - }, - "address": "noble1sgyx4ezelqrdht6g8nryq4dda6ystdnrrr3t9u", - "percent": "0.01%", - "airdrop": 15255.209510825265 - }, - { - "total_amount": 55967041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3tRAxwzayKmys6UVqkHP2Zxkwbs5aVyw7xWthH0o/LD" - }, - "address": "noble1sgylt82xqnldqej7y6dd6t0xh7nfqr74wz6e5z", - "percent": "0.0%", - "airdrop": 983.1026033197661 - }, - { - "total_amount": 66264943, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkfxzjaZNUZhsOMjQpmt2YnIwbarqgj1CGItvg47Syqx" - }, - "address": "noble1sg9k84gcy33y2flle9vngqrcv8a0kl6zxr3yut", - "percent": "0.0%", - "airdrop": 1163.992893105353 - }, - { - "total_amount": 417653377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AitVrRZ1+ERDZ1ZwSrz2ISwhpDBvFAGNO6k8sn2CT16f" - }, - "address": "noble1sgtkl53fvgjnscahnpknaf6dxxe6cutvgpad58", - "percent": "0.0%", - "airdrop": 7336.391470365419 - }, - { - "total_amount": 132657782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apmx+x7HaKVwSt/SxelMXTEZLW5QK+qWMgCttaFJpDHT" - }, - "address": "noble1sfj87ta5jrp7wacs2nl2rfgfea3hneapnqa47s", - "percent": "0.0%", - "airdrop": 2330.232374350933 - }, - { - "total_amount": 428935680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15dg2kWxzo0kwa4Sdrn5RcVJbZ/b0HoDuda7hyYXHfN" - }, - "address": "noble1sfj6e2375ezu4zq94qhh6nectfpk7j3kjye2s6", - "percent": "0.0%", - "airdrop": 7534.573494152284 - }, - { - "total_amount": 1229684968, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzApkQJ7B+cgcyH4ohVI4uUx41Ng1+/aaQwd3sdc1jK3" - }, - "address": "noble1sfn87zjnrl2329xur4px765mygq5v09w73k3d9", - "percent": "0.01%", - "airdrop": 21600.32890257649 - }, - { - "total_amount": 6343648307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwEZVy1fUjq2/117xhCH8pBTe63aehWe+8vpBp0Hhzrs" - }, - "address": "noble1sfk9etyv0uk4z850fruw9ux37vz8jv9jjcgll6", - "percent": "0.04%", - "airdrop": 111430.88956867893 - }, - { - "total_amount": 391774331, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnuX7DyrQ8wG/Iu09BQ48DkOLg699qlDwXjmxgJqD3x0" - }, - "address": "noble1sfhqsn290ew9xs5y3u4f5sx3nmyjlp2mkte9hx", - "percent": "0.0%", - "airdrop": 6881.8068248410655 - }, - { - "total_amount": 206957694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A09Caw7koh44IOG+7vMeRoUaXRobIi0x2WgP47J0o61L" - }, - "address": "noble1sfc397dpj5k7ka45v5f7eec4yfplumhwu5xrnx", - "percent": "0.0%", - "airdrop": 3635.3654599759084 - }, - { - "total_amount": 2065945363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+MzGIHCPC1JKPStUnCDjyvVMlVAkGHAyh5g2UKA5eLo" - }, - "address": "noble1sfc34ujkys84eeqmegm7lle955y3edytghtq4w", - "percent": "0.01%", - "airdrop": 36289.86325508435 - }, - { - "total_amount": 113520347594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlpyKD+Zdezl+XDTfLyDhZzO8muW6YoYp98VZzEJOAmd" - }, - "address": "noble1s2xyk83gun3kaksjta69q3cwsaueqmysvvazn2", - "percent": "0.66%", - "airdrop": 1994069.1388245118 - }, - { - "total_amount": 73857726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/QUxhbvksJ+AY5ejt1OyR410BDfFdz9JffdY438yOxc" - }, - "address": "noble1s2jm7qkcjtv0geyrvafg2txghwvpaufcnkfuan", - "percent": "0.0%", - "airdrop": 1297.3657604281414 - }, - { - "total_amount": 412069603, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A10z47L2pWeMOE25xzmw7Cu66I6H49Wj+3SN0wv7iaFW" - }, - "address": "noble1s27zyjjlye0cdvctxr0qzkfyfpawn2jjqvks3k", - "percent": "0.0%", - "airdrop": 7238.308336834218 - }, - { - "total_amount": 655090660, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJe/0unfrKQe47oZ0Oy+mh4UaHonegCneJJ8FGp7eyE" - }, - "address": "noble1stpv2u74klncaqs4he46ncg035jlke6p3g7wpx", - "percent": "0.0%", - "airdrop": 11507.153527313758 - }, - { - "total_amount": 163513820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5GJJ9fgHa+PpZIIzBJYEV/m5SMdNG+fv03VuNw+qVGi" - }, - "address": "noble1st3sel4cf3sm5l8xejlxy60fyvcz5c5wrau0g7", - "percent": "0.0%", - "airdrop": 2872.241577337627 - }, - { - "total_amount": 254000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhbEitZfeRTR/4DwhIztYAE400k5f5uVotKKF16Nb8AH" - }, - "address": "noble1sth54fwpxfgqmssk9mwwsesqjjggkwqt58tp6n", - "percent": "0.0%", - "airdrop": 4461.698470769977 - }, - { - "total_amount": 264186007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjCUrWv84azHE8cI2K/9+FEHX63BxGROKvg5OKBcwmyK" - }, - "address": "noble1st6hfaek7qth68qa23ep933sf5tkku4rzt83t6", - "percent": "0.0%", - "airdrop": 4640.623241853253 - }, - { - "total_amount": 63215397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/QV8ndLz30J7WCg5fL5OJ/myt7V7NOARjEaroOticVa" - }, - "address": "noble1stauvku3ffytnpaed5gwgq4epww9d0e5czsg29", - "percent": "0.0%", - "airdrop": 1110.4253548189645 - }, - { - "total_amount": 124312296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgsICvztp/bQGUmseCb/+W/s0s5Tlvs3tmeihc3R74qq" - }, - "address": "noble1svrffprv53dpaqvuhh6xwd8af6ln00c0fyz822", - "percent": "0.0%", - "airdrop": 2183.6377203193097 - }, - { - "total_amount": 157009605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1gTZzCSDR4wslHDNidDHTqdHJVuBi62SkAhAq1YSAsI" - }, - "address": "noble1svyu3gvcgwdx7zf78drfvtvthk5uttf4n8nfvq", - "percent": "0.0%", - "airdrop": 2757.9902146641657 - }, - { - "total_amount": 7218087693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AznmLeNRCRe6vG7/QTe0jbhpHj4vJIQRwhzVwyLlTTWt" - }, - "address": "noble1svxh6ak23l08qd5mhw6kg0py4l8h8umgqt3nsh", - "percent": "0.04%", - "airdrop": 126791.06622732949 - }, - { - "total_amount": 619929429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arr+eCfeZXn13k4A9mqEWNUWSD8iCD5R4hX+Oz4Ne1Ak" - }, - "address": "noble1svgajsw2sedkp984mnfwpcq04pvs7dts88ah6m", - "percent": "0.0%", - "airdrop": 10889.520414781908 - }, - { - "total_amount": 92877349, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At8t/z72sUWTX3rP4zPofqdZdixpyJlUL4xFYDu5+h3p" - }, - "address": "noble1svkqr469yy6x7ryxc5zc2h7g34fxj94yttuc2d", - "percent": "0.0%", - "airdrop": 1631.4595511908244 - }, - { - "total_amount": 116755071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajjne/cyFx0JJrAyqama5N2fxr0ZKfsaSP4zQLdlT8sc" - }, - "address": "noble1sdfp6cvsedtv2q933m9pq5ffj2zcmwwu4lr48h", - "percent": "0.0%", - "airdrop": 2050.889455650945 - }, - { - "total_amount": 64538957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwIkjG4DSdhPueKs4O9E6lF03YDsEItikuqVrqQmxub3" - }, - "address": "noble1sdwv9uwl8yshcahe07k86zj85u2k559w0c6uza", - "percent": "0.0%", - "airdrop": 1133.6746683149183 - }, - { - "total_amount": 1547472507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiyADdRsTtkfyYj9K/G+aa1swPmUiwj1LniPFePeh+c+" - }, - "address": "noble1sdjrt7jtgdqt0vfu7wgeec33cmlzr6y7nze2vm", - "percent": "0.01%", - "airdrop": 27182.50282693103 - }, - { - "total_amount": 257804892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiHW0zdHNj6AC69x+O5eAOTIzN10WMGIDvdCpSSTwQiC" - }, - "address": "noble1sd4mtlktjs6e95pkj6fyval2rmncacrrhmdd7t", - "percent": "0.0%", - "airdrop": 4528.534222021334 - }, - { - "total_amount": 11068624826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As8uguvNTRAUEhwGl+Fc+WjG+jh/0wgPyI9aeTltk4kF" - }, - "address": "noble1sdhal4ddnqnnqp8d5ymz3nzh9utsw2el24lzzs", - "percent": "0.06%", - "airdrop": 194428.6081090189 - }, - { - "total_amount": 5256773424, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqoOxJiuIl2L+rv/VDPdlsyhkH+qu66xqGqxfNCVNJfk" - }, - "address": "noble1sdl5hghj6yxaqmywlcxwe9lsnvra0lwpgllwfn", - "percent": "0.03%", - "airdrop": 92339.12577576793 - }, - { - "total_amount": 2247592768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2P7yKYGPuBdBEyqRxYwACs8bws+BhMRMnDRYNXXYgft" - }, - "address": "noble1swqg39ncz8ag0zwr0v3m5fscc4t94klry7c56h", - "percent": "0.01%", - "airdrop": 39480.6347082648 - }, - { - "total_amount": 2864479978, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auy8cJCuxjLSpEAyRNbCDOjbJ2BVcgFQU4ecKCS/pNzR" - }, - "address": "noble1swp59yfz4lmj796gjvl53n337x43aa0eqrt6q3", - "percent": "0.02%", - "airdrop": 50316.716288952026 - }, - { - "total_amount": 59194539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar1CNArjmzCsA43dfK2Fb7P8XdkiDyoSuN0+V9SbKzeX" - }, - "address": "noble1swxrvqjycece2zg6475rhaz3k4mr3smfkhvnql", - "percent": "0.0%", - "airdrop": 1039.7960005284792 - }, - { - "total_amount": 200851753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6diGkmTAtoZuJOkuRSIZ9l6BkUsiN5XhsRoB/nk7rvC" - }, - "address": "noble1swfqrfmwzkwd8val487m0zcl6s8edxtmsrxvq5", - "percent": "0.0%", - "airdrop": 3528.110075636099 - }, - { - "total_amount": 107125663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AorfIzqueZOmqHfLpn9gXYyWaJAztSbPheVtqL/xcIjC" - }, - "address": "noble1sw239ufet6hczxygckp4eqyr2d552708jwdqp4", - "percent": "0.0%", - "airdrop": 1881.7417590051962 - }, - { - "total_amount": 105821853, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayt/6Ta4B7HK2XZyLNjllfjZWf+erLFsBSRsdVKH3xzH" - }, - "address": "noble1sw5707000ndjjewnfkkcsfu8dj0xe2de2fzs6t", - "percent": "0.0%", - "airdrop": 1858.8393689139577 - }, - { - "total_amount": 599990177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApxG+0VSxbSKCS+PHRjyVukuuRarbpMgD/kWy1phq0yH" - }, - "address": "noble1sw60txwqynetvxf6j30n3lhgu5ufktvs84w4s9", - "percent": "0.0%", - "airdrop": 10539.272658259479 - }, - { - "total_amount": 1239532539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlRRvYFyUSUy8N+IqrfVy6FpC/V6qpUCFR3O8mOL+XQ5" - }, - "address": "noble1s09mgs3e577yzxtfcm0ytn0hwz44k9m40xv5mu", - "percent": "0.01%", - "airdrop": 21773.308794196564 - }, - { - "total_amount": 377256323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArDCVKKDpNMgkNx3NDllGh5JuwtucMN4polboQq8hPbC" - }, - "address": "noble1s02pdl7vy3amyseeuecgdw2s2j7lam94jy53s7", - "percent": "0.0%", - "airdrop": 6626.787241800805 - }, - { - "total_amount": 123610142, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5QYamjIYC2fGfnl2zX8IATcStT7ImLR9UlGsVoig6Vz" - }, - "address": "noble1s0w3sg7sk6ggx2x4uz8pgk6k83pfp7z76djdvk", - "percent": "0.0%", - "airdrop": 2171.303864303384 - }, - { - "total_amount": 1641144256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ZJPuIokpFhBWiiWg6vcKKysY7ZoRcxJ6E/VkIkGM5W" - }, - "address": "noble1s00m66uy5w7vm6atj763shxu599yytc37c34yj", - "percent": "0.01%", - "airdrop": 28827.91660357532 - }, - { - "total_amount": 52329336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2C8QFPYIt/wOV9GNHtZ3THADbLRBl9cHS4nikmZDRPx" - }, - "address": "noble1s0nfl9hz747ju45rell4dlu62m97jkwnc74ff0", - "percent": "0.0%", - "airdrop": 919.2036157779854 - }, - { - "total_amount": 9731469626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0fbCtmi8GIbo987EOLmhpS9dklKDVJedJdQemqoIEt7" - }, - "address": "noble1s05ffjyhnpjymaa2kk2l7rpsg5wfek29mjm6pk", - "percent": "0.06%", - "airdrop": 170940.48483727826 - }, - { - "total_amount": 92840255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AspI973FMrHNDK6mvj2w8H2nK/z3vQFV5mV+n1ZEjZ+U" - }, - "address": "noble1s0aa9567ggjfydwgrz5cam5y07hdxfczqu3kg6", - "percent": "0.0%", - "airdrop": 1630.8079675566719 - }, - { - "total_amount": 250000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3beVgIqq0m2at7sDUoMklta4CMjRkqR69M0LpS0l/Hf" - }, - "address": "noble1s0lankh33kprer2l22nank5rvsuh9ksaks7v7p", - "percent": "0.0%", - "airdrop": 4391.435502726355 - }, - { - "total_amount": 1934870489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzcnIjP0z483mw5F+ZsZJwhv1c+emygPHhGl0Mks1LEM" - }, - "address": "noble1ssgz49n7a6uc0xvxwmx59t60mgktnk238rju8n", - "percent": "0.01%", - "airdrop": 33987.435834288415 - }, - { - "total_amount": 130487885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AifXKTK7LIAjWYHSCwf8eq+2Exwmfj7MziQtUAjvh0y/" - }, - "address": "noble1sstsuv5q656ka80shvnfqc9ak3ywac86d4w4tu", - "percent": "0.0%", - "airdrop": 2292.116523458695 - }, - { - "total_amount": 4800000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al9LzeKB6DmlKUMJFSGEt5qpbuE1eBBOlK/dxcIx3t3C" - }, - "address": "noble1s3xeax9grfmxk9478yju30lcue77lfxj6sva9j", - "percent": "0.03%", - "airdrop": 84315.561652346 - }, - { - "total_amount": 57619377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5yXgwz9IytT5h8+WNjaGz59gnzNRPgexsItXqh1hSCC" - }, - "address": "noble1s3fvdsdmpwf4hsf25f3wmsdh5582cpnl74ywk4", - "percent": "0.0%", - "airdrop": 1012.1271112110975 - }, - { - "total_amount": 202000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahswq6vSWButlk7Xh2Dw7SsBV3r0D6Px3jg7OTD3E39z" - }, - "address": "noble1s35h4na6rn6c28flur76k92vztvx04ndtdjlse", - "percent": "0.0%", - "airdrop": 3548.279886202895 - }, - { - "total_amount": 1885539526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1+U8H/xOPL16zfZ3Qbyga9d4iKoRmlEMzsnSCm00yVb" - }, - "address": "noble1s3hxpx5fmc8ds3sjt2gp0g7ekcj8ug7t80xajh", - "percent": "0.01%", - "airdrop": 33120.90086508089 - }, - { - "total_amount": 88594385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A49LOORXllRtnwxPTI6jGDwT3BzS34SwjAXHdrl0ghM2" - }, - "address": "noble1s3ayyx2n3vmmythcgrvc399wxhtukhcysqft0m", - "percent": "0.0%", - "airdrop": 1556.226110524829 - }, - { - "total_amount": 52500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai9VdGJDDazdZkxwtHupdKq/DfxxcsbajRFrGXLtBvK1" - }, - "address": "noble1s37nmt90rt8gpeuq58eae27tkde9g3mwm0mxla", - "percent": "0.0%", - "airdrop": 922.2014555725345 - }, - { - "total_amount": 238000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyC1tMi7qsXVSIMI18lXOXviSZRmNTwNqGhP2BfLPixJ" - }, - "address": "noble1sj2wrtal643cmcsdf28uazf8pt5gvacrr624hn", - "percent": "0.0%", - "airdrop": 4180.64659859549 - }, - { - "total_amount": 66751444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyCVmoxB0oFfb5ySo5FxZPX2Pb3NISA0REIZfqWl2deq" - }, - "address": "noble1sjdf536xeuum3zry74yf3glv9n57srdn2g2rrh", - "percent": "0.0%", - "airdrop": 1172.5386441594005 - }, - { - "total_amount": 111000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvlmgTm8ahX6Ou67wo9t0dupgxChSamiqRp5j0KJVZFH" - }, - "address": "noble1sj06h0zxym60w88y708vv4twfecl5n57uxuf49", - "percent": "0.0%", - "airdrop": 1949.7973632105015 - }, - { - "total_amount": 320219004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A48OeV3eEHpUYyobUG1QfrOYuLlsyuXNt1RvP7XlACTt" - }, - "address": "noble1sjcfm32dlk4dpdlqjjm6atsddwlfy3p0ryv9he", - "percent": "0.0%", - "airdrop": 5624.884411253091 - }, - { - "total_amount": 73300835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkPfFMzMDrZpVUsga096xFNzoiPYOCt8vs4vwmYMeHLH" - }, - "address": "noble1sj654k6r8s2crp3na2svjdlk9wmsfuf2gx0u9e", - "percent": "0.0%", - "airdrop": 1287.5835567939464 - }, - { - "total_amount": 78923208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5l1YZZgTuMAY54rf8bUqE0FRf53QPljb0WWmbzGeMY+" - }, - "address": "noble1sjup8hfag4xjyj6uz6cl7qam7cqgcxmmswy6l0", - "percent": "0.0%", - "airdrop": 1386.3447104010268 - }, - { - "total_amount": 781977675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A41Lo0g+f47haMLA3T4PBJ0KiR+oPueB4hTRkfybvtE7" - }, - "address": "noble1sj749djxe6gdxmg7m6ca7at67a9fj370pnd7gx", - "percent": "0.0%", - "airdrop": 13736.018097337645 - }, - { - "total_amount": 129310204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3L9bgAu6MPCEJF4H5vZoIWF9wDEmmnlf9RH0Qpw8Bcf" - }, - "address": "noble1snp4sxak6zctwl3q8uy2xmje870e7p0w7d5x5c", - "percent": "0.0%", - "airdrop": 2271.42968284155 - }, - { - "total_amount": 253474708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37bzaCfqYQlJj0kL9d1LTXa/DwRorxhxZZyakhu3aOO" - }, - "address": "noble1snfuvwd0t6le8vq3gugtl4fmg07t75c3qtcsxd", - "percent": "0.0%", - "airdrop": 4452.471327017584 - }, - { - "total_amount": 308794364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvU6pd2jSJQVpf0u8RoGszQVnmdWi46+T4YZ91rTUCiP" - }, - "address": "noble1snv95n2875q4dmv0x5xjgvwa9s063yl2zatcqt", - "percent": "0.0%", - "airdrop": 5424.20213244562 - }, - { - "total_amount": 86117830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6wzmAS/xBZMrIWKo2HBn+qNx/vu9h4BzSIVo5JXRnjh" - }, - "address": "noble1sn09u5nqdtpe600lluvhh4qavvpcxypfjtuaw4", - "percent": "0.0%", - "airdrop": 1512.723584319011 - }, - { - "total_amount": 60237919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9N2RBtmzy1eiRHTJNsiZV4WcO92Lzg56XK5ByFHQDzH" - }, - "address": "noble1sncy9dju8r3xzqj2rmeks0l9wuujvwqcgt9542", - "percent": "0.0%", - "airdrop": 1058.1237444278177 - }, - { - "total_amount": 1614211616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkS6IkTTx1OqV4KT4OG2onJvUIXh4UMDzucs7Nn8diCd" - }, - "address": "noble1snmwm4t8c4nxukz06ntcealg8rjarqkr9um4nn", - "percent": "0.01%", - "airdrop": 28354.824797662728 - }, - { - "total_amount": 198479309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AowrHlju7i/besLNj7nsju3XGOs7AnmO3tIOpTrfU3ou" - }, - "address": "noble1s5ysh0syvsl7d4sjs5ngpez4mfepc5vp0qw0qs", - "percent": "0.0%", - "airdrop": 3486.436336396778 - }, - { - "total_amount": 88175035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzEfG4KGT7EPKVB9TusKbWqu8Bh7LrNX+cS8J8yYK9Yp" - }, - "address": "noble1s5fgt49ffrud88h7kqdll637fn0et2attatky7", - "percent": "0.0%", - "airdrop": 1548.8599166125557 - }, - { - "total_amount": 356590086, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmqLgzPluK9X3f+qTca0DI4LHsftkv37Lxuc/DuvQVOi" - }, - "address": "noble1s520hua0qlektxrrq0ftdrjavdty496uqnw27l", - "percent": "0.0%", - "airdrop": 6263.769454322576 - }, - { - "total_amount": 67280267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5dAl738kAGe15Vbl8O54nGciau/R8l/g8YrdTOEoMkc" - }, - "address": "noble1s5s207t2l9xmc990cslhqacwddjuedc7nfyszr", - "percent": "0.0%", - "airdrop": 1181.8278125468337 - }, - { - "total_amount": 126232239, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhHEU6p1hc3iYaozKBtL2EnY+Cn1D2ZF1UaMmzufigyb" - }, - "address": "noble1s5s65923rmvxj7g74kws7zstu7hz5waznkrck6", - "percent": "0.0%", - "airdrop": 2217.3629437329537 - }, - { - "total_amount": 97625291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjSCURs/E/Gg+ExJjhSzfYXuqVuZycVDB2BUEt/Ia7Kj" - }, - "address": "noble1s5nzfszh6uqrnxar389f7wy300xjf8hd96mnl8", - "percent": "0.0%", - "airdrop": 1714.8606754455666 - }, - { - "total_amount": 159566231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoKtoxKxXJ6Peuko/HYA7twI9oTwgEXmkm2ZLg6P59tP" - }, - "address": "noble1s4qz3yz8dq46gsjws0zmfz62zdddpy9078jyg0", - "percent": "0.0%", - "airdrop": 2802.899247398539 - }, - { - "total_amount": 10303960633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3B5NJOFZi1qp5djSwViJX1ZhzuzNYQ45Im9a5XpXX9" - }, - "address": "noble1s4raf3rt4kt795h5hr2hphxwelyun2q4fqup0m", - "percent": "0.06%", - "airdrop": 180996.7141698037 - }, - { - "total_amount": 221600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1WoY2Bchr2CdGV9sSjp17mngbd2/JpevPXllSODk5k" - }, - "address": "noble1s43l7s99hx627scn2ldd3ey50qpj9frv0xh7uz", - "percent": "0.0%", - "airdrop": 3892.568429616641 - }, - { - "total_amount": 890420970, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqkG0p/h5E/xJkmIQ5OTuguzVde68bUUSPo5uu+oBUhf" - }, - "address": "noble1s4n04py2n93zaznm9ven3nshp3xdqjk8keaj63", - "percent": "0.01%", - "airdrop": 15640.905040120153 - }, - { - "total_amount": 1601635405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6OClAGNm2Sgfgp0bFHa0rMqfV/2P1X+zk6MdrvD9o0N" - }, - "address": "noble1s4lnayntuxvfqljxnhx8yjz3celjerkftqaxxg", - "percent": "0.01%", - "airdrop": 28133.914319762018 - }, - { - "total_amount": 422568613, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1L17Iv1Nr7QiL9rhHl8sapln5g5qI76a/eVrZ+y0BDW" - }, - "address": "noble1sky6k0qx29r68rsdkzxkzsydjrz3pej97ys66a", - "percent": "0.0%", - "airdrop": 7422.7312378641345 - }, - { - "total_amount": 192306881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuatbKOxEtLDodNV3pQ3NqIKh69HpnnaJVY48D6hVQRr" - }, - "address": "noble1skvwfwcq96l8506vqf6c2duyqatcawr4vmjhm8", - "percent": "0.0%", - "airdrop": 3378.0130585678894 - }, - { - "total_amount": 248594480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6OvuwTd9XQyjqaOYvs+pRZgoGSAw8IWEjj/eDPUKZ4x" - }, - "address": "noble1skshs0tkhe6xkdy45qduyjykey4ty8dkjwc6sz", - "percent": "0.0%", - "airdrop": 4366.746501015187 - }, - { - "total_amount": 697497650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AscBxwRZ7WOCiNvkaGnTKj8Cpmvk9ZuZHr81t+DNhwTB" - }, - "address": "noble1skj7gwu73s598h7ye6x735zxvuz987yl2da0jx", - "percent": "0.0%", - "airdrop": 12252.063773112804 - }, - { - "total_amount": 166560564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArSjpMTxANaSS6+hvkxWQkffdqIuZgz0LI859NSk3R/l" - }, - "address": "noble1sku360c5def6r3mjpfkt98j4er4wv4gwvke2gs", - "percent": "0.0%", - "airdrop": 2925.759896414901 - }, - { - "total_amount": 1277320627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At+rdMxZt7WylfeJKnha/QwlZI3T7o9P9arQzswYgYS+" - }, - "address": "noble1shwvcj3f9pch53xpw2nqpj7gwskkfy5ys3xnnc", - "percent": "0.01%", - "airdrop": 22437.08459908995 - }, - { - "total_amount": 1105433681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkVeYk/UfPsQuxvSTaM/JvyeQQffd9cmyZ5Z3TyRBcdg" - }, - "address": "noble1sh0az5yzpqe0dr38nn7qe858qaz9l92nhhhyyg", - "percent": "0.01%", - "airdrop": 19417.76285061152 - }, - { - "total_amount": 188926173, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwjhlXL6hoKopg6IeU79fdRMqJfa2+MzDw8yXwnw2Wy+" - }, - "address": "noble1shkaz3fn0c0f8ntk5rd9qh2850v5s2n2e639wp", - "percent": "0.0%", - "airdrop": 3318.6284140256853 - }, - { - "total_amount": 606197117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8cr/SkG0SOsg3VuIWdXG+Pc9HpqkcburB7iDgZzJ4RU" - }, - "address": "noble1she3mpp43kq8jy9e938etvpr9tkndvhvjc4w67", - "percent": "0.0%", - "airdrop": 10648.302164976649 - }, - { - "total_amount": 59825427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AscDj53NTndPR9OEeSYaGGDn1xMgTtznax1koURKeFp5" - }, - "address": "noble1shujje02dg5vsct4rdep4krcvkk8lzd6ms6hur", - "percent": "0.0%", - "airdrop": 1050.8780163742554 - }, - { - "total_amount": 1524998214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuFiD2nA54Lp3gcrz75sstIb49KBomy9oxWADRixQUUr" - }, - "address": "noble1sh7l8rg0l83umpken4ej93dfp4stfs0dgekknv", - "percent": "0.01%", - "airdrop": 26787.725194215534 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asnlp8jgulGXHCL357TMX3oGCt7VsIYKbtYAN/tuwrKD" - }, - "address": "noble1shltn29kg0at8lwgncv2zpe67xngkuhpftdslc", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 50669024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77ey12xxhhlzcO8i9S/FtC7qG9wED3hEhQxdcydDoWL" - }, - "address": "noble1scp0nx5rj29qsxpt0js0hyaqmetwmjtjlk5wep", - "percent": "0.0%", - "airdrop": 890.0390035283749 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRQKE2IcBR0aqRxCMx2PAbbGxk46V8DvkVnSWjVNsv3" - }, - "address": "noble1scxup6gfgelp6tcwsre7h7lhsuq9req4r0hhc9", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 289104291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/rgMFekUwE8XCftAswT9wW6vfXpl5+brdkIp3UN1LR5" - }, - "address": "noble1sc27vrxunrfy40qpxq76c6k38xkdevc9tfer6v", - "percent": "0.0%", - "airdrop": 5078.331389951726 - }, - { - "total_amount": 842794557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxBGubcADpqaXSoO7icCbNO6Ve7iWIzsuU6Ws1Wc7bfY" - }, - "address": "noble1scdmerp7mh6t8kgqm70zmrjdzrv6elwc3teq0f", - "percent": "0.0%", - "airdrop": 14804.311756457322 - }, - { - "total_amount": 94224438, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AijBVTjoQlzmBsEYJrqSWF6xQ5fy+dHmgD2KkjsgmjpT" - }, - "address": "noble1sc3x6qw0ettcz26a9nvaeftvgcm97qspmplkfs", - "percent": "0.0%", - "airdrop": 1655.1221690305529 - }, - { - "total_amount": 653942922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AviVSGSATf4MeBCF1szdeT6DMN33+QCUVmNyTCndlhdH" - }, - "address": "noble1scjh633hmx5tvnc6wdf9uxqcvsxkqzxze00eg6", - "percent": "0.0%", - "airdrop": 11486.992657709647 - }, - { - "total_amount": 345572574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrQittV06+yEM/4vnjHq2bqg91rVt4jEi/tUAABir+K" - }, - "address": "noble1scexfeq7ph09mam395astpeacky2fmhnwwl4xf", - "percent": "0.0%", - "airdrop": 6070.238680928523 - }, - { - "total_amount": 1317427094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqUM+JNo9QFnPb1EEjT9M12tkEwgtjnrWV9UyFPUlJO+" - }, - "address": "noble1sca0vnr8t6n88nl9d60gvreuz6re9q2u8jlj3u", - "percent": "0.01%", - "airdrop": 23141.584451380844 - }, - { - "total_amount": 452759602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7a6nZE/vgdwAscR+v8go6KGB49akHLeNQLHjDeIQit" - }, - "address": "noble1seq244de4ex72pezm3wzaejee2ywzvz9nnewxz", - "percent": "0.0%", - "airdrop": 7953.058361692217 - }, - { - "total_amount": 1048527388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az7AAedNnU0dTaQuJWcP2D29z9xXwwMfiOKbvoq4brYT" - }, - "address": "noble1sep4d3yvwzt83dcmh6hvwswa43upgk8lp0znhp", - "percent": "0.01%", - "airdrop": 18418.161588976527 - }, - { - "total_amount": 6477286571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8yjx8g3+4kJaByYjZudffqw6FcDb/yfohsHm+FXipVi" - }, - "address": "noble1seyj527ddzvvyeqh4lqwft26cmas34wqqeyq7n", - "percent": "0.04%", - "airdrop": 113778.34483688822 - }, - { - "total_amount": 1103738801, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYOfrYpRduySdaNqfOtGt6Lamn30WkoqR/nyNNMtDla" - }, - "address": "noble1sexg35ajngt6hzc7fep8slj5nmsdqz6884603g", - "percent": "0.01%", - "airdrop": 19387.991025792075 - }, - { - "total_amount": 182298103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqwHZN7pk7xqUSdIIdBvLlmEUGGSaDVJN3fBxKazDHBU" - }, - "address": "noble1sedg2jj6j4z79dlurpmu0wwjmvph6v4vzgpyac", - "percent": "0.0%", - "airdrop": 3202.2014463754635 - }, - { - "total_amount": 58197932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ioWy1RrLEZ94I1Lfpa/xHgwoz+jf9/B67UgW6xUusI" - }, - "address": "noble1sedjmclruwet2rllgcyy2eq05eya06esanne0g", - "percent": "0.0%", - "airdrop": 1022.289859080217 - }, - { - "total_amount": 101911901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8wJ0bUJLaDmxr3bHbWXilU+V1lGbYu49OmT429DyByv" - }, - "address": "noble1sentnafjma2vgstn22gvk332uyzd9q6v7rj505", - "percent": "0.0%", - "airdrop": 1790.158160806934 - }, - { - "total_amount": 1083978076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aih/fb57A+6RC0Zh/4z0No+IcDncd7t2xucRIExri8hY" - }, - "address": "noble1se4m4fn7xnamjc37ph7989g8zdtcls0fhe6sx5", - "percent": "0.01%", - "airdrop": 19040.879228493628 - }, - { - "total_amount": 289569779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8deBveyhRHf/6OALXxBaENFi7A2KobPXgzFlW5S41Lk" - }, - "address": "noble1s68h8erkt8v30z6rcj30f5qc0zrc2khcppr5gd", - "percent": "0.0%", - "airdrop": 5086.5080320688985 - }, - { - "total_amount": 270594532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aret8zeYpyCcVDB3s6z9ra1Q25Yo3WnGBXacg/fFcegl" - }, - "address": "noble1s6tmt77mwapvyjtwzrhhwj06rt48e4jqcmjf05", - "percent": "0.0%", - "airdrop": 4753.193738673692 - }, - { - "total_amount": 1075609523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An/MY5IO9pKlPp/vfo2ZSNi6WgyaJILFYxq9mr+uHzUe" - }, - "address": "noble1s6wga4zxauz2zvz0vzfzjaaue9ty2h0u632upz", - "percent": "0.01%", - "airdrop": 18893.87938549104 - }, - { - "total_amount": 117651141, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AthHkxFEknTQoc1jHbK/je5yOWxy2uronv5UsUmbRtjG" - }, - "address": "noble1s6w6v8hsz2xxcep9yyzv75pv0y4au4x3qeh9qw", - "percent": "0.0%", - "airdrop": 2066.629590094657 - }, - { - "total_amount": 168141991, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/A+Ui7L1AsIXJQSY1/NOPBoxnLggVOpn9K2aE+0KDhM" - }, - "address": "noble1s6shmzm5wzp54xks5gtxjyvz8yn57urd6caphk", - "percent": "0.0%", - "airdrop": 2953.538835105981 - }, - { - "total_amount": 50047383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuXCVf5J5Iu6FQCSWbprZRm5orY8HZte/3nSzrZf9vOK" - }, - "address": "noble1s64u3stdr4dkcxfgtal03v0j65m3lp5qpanreq", - "percent": "0.0%", - "airdrop": 879.1194180989737 - }, - { - "total_amount": 904566308, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9HhZYPoTclsf0wuGCDXBCm+Vqb5g1b9I3EL3IK4lXKC" - }, - "address": "noble1s6h4m6g8t8na4lyy4tvzhvrjt955mzzchxl6q2", - "percent": "0.01%", - "airdrop": 15889.378398085211 - }, - { - "total_amount": 8316349181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvYvWyGqrjj3IAIb199s7y+Zk4iGDz7keJ/XjHDvjrbS" - }, - "address": "noble1s6m55tr7x93agty33v9vrh8tlmwedy23grwhu3", - "percent": "0.05%", - "airdrop": 146082.84418605058 - }, - { - "total_amount": 200721334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1aLuKHgEIsyh7O5zAVEkBtC9y0+Lb7IVTUFY9uzgPPt" - }, - "address": "noble1smzvfp2j88wgz0sxrhh429dmh4mztsh34d4a4f", - "percent": "0.0%", - "airdrop": 3525.8191691287784 - }, - { - "total_amount": 2621491254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9nORUAVIp2kDqHMihWqgqhivmGupzaYlOmoPTmDmkNR" - }, - "address": "noble1smg82dfsvp0zpp59nk5upu7uj7x0h2p92hg4px", - "percent": "0.02%", - "airdrop": 46048.439051608926 - }, - { - "total_amount": 2977286953, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiSJpeA+TQUSwAO5Hlszb2FLmcc0NRc9KGm9uijT/kZ7" - }, - "address": "noble1smfzt25ax563c0s2wgmcmt3g67d09t4maprceg", - "percent": "0.02%", - "airdrop": 52298.25450883269 - }, - { - "total_amount": 143591627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiaDkdDyXFGGVEnndA5AOSORbr7hhTxpNe0U1MD2RbOt" - }, - "address": "noble1smug06cvr78ydqsdweszkjm8sky4lu3xavxsle", - "percent": "0.0%", - "airdrop": 2522.293474808161 - }, - { - "total_amount": 1014210881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1lMvDNMLk5uQcWQtLyyMtluSm2p9Zl/9/JErVquAex" - }, - "address": "noble1supmur5uknw6nklpvucynf5dq89pjzmefpecy9", - "percent": "0.01%", - "airdrop": 17815.3666802991 - }, - { - "total_amount": 1194746897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwpD1t3nInBVcPcZSDZM5l4kEHrONxbfMjQFo4DT6rJ3" - }, - "address": "noble1su86paqlcwu42lpk6h5426wpjmg6xdgndwdahk", - "percent": "0.01%", - "airdrop": 20986.615761031793 - }, - { - "total_amount": 137507839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9d3GWhUIryb7DYWD2wG7B9PDLy8XWPAbYs70q+F1eGY" - }, - "address": "noble1suhrh3lpt4glf5gz3pnsluv5kwc88q2y03j4ta", - "percent": "0.0%", - "airdrop": 2415.4272243511186 - }, - { - "total_amount": 116754998, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AySeZ/pbb6/LUepGchyNtddS2RqWGb/dE5Tcpk7S1/eQ" - }, - "address": "noble1su6rwdylvl7j8phq2fs8er6wz8yzccayyv72s2", - "percent": "0.0%", - "airdrop": 2050.8881733517783 - }, - { - "total_amount": 191283845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agnd6JGFDsVTpkE6pqFR0rU+nJvNIOYAushDwB+FRiRn" - }, - "address": "noble1suazs2vjdhv3d5rpf0d3eru5gythfgqwthz92h", - "percent": "0.0%", - "airdrop": 3360.0426721240206 - }, - { - "total_amount": 2356529562, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj3GUWUXvKS9DqZkEJUXMk9czo3HQi03ylvEMrnEGn/P" - }, - "address": "noble1su7dt8g9u0p0wt0nj2j3ry4umvhnnp6xnc0n8k", - "percent": "0.01%", - "airdrop": 41394.19032716395 - }, - { - "total_amount": 2569780865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7YTbaj2xYGMm9SSwBMpQwDNS6Zm+ZKlBRH7iNp7vaPW" - }, - "address": "noble1saypn24c7y5tnt9rgtm5uh662hlmtwtsjmvuvg", - "percent": "0.02%", - "airdrop": 45140.10769915136 - }, - { - "total_amount": 175053375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+EkXuP8d1sgMc69X8QE64G3oeb2HOoH+ZOd8FOyxcPY" - }, - "address": "noble1sa9ku2sznw4zwkkpjs7d8q4kmz969u2dlteya0", - "percent": "0.0%", - "airdrop": 3074.9424233882805 - }, - { - "total_amount": 10528104572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxEX5cQRJGeeEzZa1cbf3VZ4eJsmUloNbFXtb6PBTS9R" - }, - "address": "noble1sa8c0ce3r0e658f0hlup57cw8caldnevwd8rs3", - "percent": "0.06%", - "airdrop": 184933.96877558582 - }, - { - "total_amount": 64121039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/9oa5emmQu6KwCutjarGRxuDdhXhHrAk9wLT+sst+0s" - }, - "address": "noble1sa2m4yka68hvk42u0dmsvfj5uckfjuxaawmfj4", - "percent": "0.0%", - "airdrop": 1126.3336285452049 - }, - { - "total_amount": 125671094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjGSgrpOehhVyJW2MVgpjXAQmDSi1WBKtWnq7g0NmkFJ" - }, - "address": "noble1sau8782zq2nwc25ukezwe255cnzcy7npwq4fcs", - "percent": "0.0%", - "airdrop": 2207.506015432244 - }, - { - "total_amount": 530320057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiDvfbr9vHxTl3iM4ZvNM2g/VgFhZwTQt+3h367K7ao7" - }, - "address": "noble1sauexxatt8qjkesuht4tl0wtt0kvlqazcnylqc", - "percent": "0.0%", - "airdrop": 9315.465304470656 - }, - { - "total_amount": 4816303902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+uZUsQrJeQi9fzDvWQhDypSMvsRyOo/vmopHx6sDaU" - }, - "address": "noble1s7q2qpmfjgvgykktd7ku3rye0ur6v2l59tdfxj", - "percent": "0.03%", - "airdrop": 84601.9517886491 - }, - { - "total_amount": 122536820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoRORlPoBxx2GP2Cxy1nZG7OpVZIWLnmPjcP6rt/5bzP" - }, - "address": "noble1s7qtxdkhh4h6cawdqypmr2vc4yph35w5zx5ne9", - "percent": "0.0%", - "airdrop": 2152.4501669567553 - }, - { - "total_amount": 51500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6mLEbuH0PwR0HzGz8tBEG1+//YhGG4lr0JXfmxVw/Wb" - }, - "address": "noble1s7rcff49uz7gcukpurens9lr02j7wfpn0mg970", - "percent": "0.0%", - "airdrop": 904.6357135616291 - }, - { - "total_amount": 225469551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A53Ma6+7aM+vnxbYbOzr7q22CAAETalEDRi7RXUMRJpp" - }, - "address": "noble1s70udvjtp9jrqpavfcqsdqd45qtr7cmp966yqh", - "percent": "0.0%", - "airdrop": 3960.539964180682 - }, - { - "total_amount": 160229296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An5fvovNUdDnCGy6nJE7r0k7IonhPv3eV05P0kEWRIQ7" - }, - "address": "noble1s73f5hgp0x5a7dc9cwpca8m3cur6hsrmrz90vl", - "percent": "0.0%", - "airdrop": 2814.546476125 - }, - { - "total_amount": 106638774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7DV9FPd89fHNInPZ7SxywkOBTeSqxlyvJizevTQmids" - }, - "address": "noble1s7jpxj8ea4zfgpsrlra0h7hk8rdvxus9l6awq6", - "percent": "0.0%", - "airdrop": 1873.1891924432487 - }, - { - "total_amount": 838409114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7YvDk1QeNJO/FHw/9UO7GIxfUl/o51HkUN+Yfg1dZB4" - }, - "address": "noble1s7apdz39m3l9hzv488sx4nmexs8740cqeyef4y", - "percent": "0.0%", - "airdrop": 14727.278196115793 - }, - { - "total_amount": 2629689503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvOJ5IYVF3c096Y119SaijtJxumya8HOqPNs9bXZjORz" - }, - "address": "noble1s773xpgqk70ujvxgtmgcmezyw7t5jwdtsulk6p", - "percent": "0.02%", - "airdrop": 46192.447378484096 - }, - { - "total_amount": 432101728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7u+3fsHRZjr8/81tTlTGSJh8Y1HP25LnKIznch4QKkO" - }, - "address": "noble1slzqeapjg6x3zq66p7dqkmzrnvvvfjnu0npjwu", - "percent": "0.0%", - "airdrop": 7590.187476514427 - }, - { - "total_amount": 172099570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2u9nSNwXfv/955JxZUBtPESOO2qW7oKY+X4s93AIQIO" - }, - "address": "noble1slrh7unrpgtr82v4gu9wx8p0egx3lucx7vf7rs", - "percent": "0.0%", - "airdrop": 3023.056646807758 - }, - { - "total_amount": 78710811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyrrWdSWRYanbwiKZNacHhnuOEiqrk4uy4g9giY7Frxg" - }, - "address": "noble1sl5n058y6cjf23j7yqwexa47sq4j099fpvplcz", - "percent": "0.0%", - "airdrop": 1382.6137994951364 - }, - { - "total_amount": 54209647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyxCGtXLeN005nrCpkwBAhLKLJGNyjzwKeEbd7z24o+g" - }, - "address": "noble1sl5uc5pfzsuxuqp9s0exv40ztggz36d5845ggz", - "percent": "0.0%", - "airdrop": 952.232673704253 - }, - { - "total_amount": 68620956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnT+dELo4oB9rzUqzRz++q1sMWHWtd/nWqeYQuUkUT+/" - }, - "address": "noble1slhnk0gg0evt7rckduj38v6alalxvmlwktdg3d", - "percent": "0.0%", - "airdrop": 1205.3780096376925 - }, - { - "total_amount": 655644277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzFE6sqQ8M3/f89/OeQLjpQTcQ6NhErvOlcDN5Gf/ZhP" - }, - "address": "noble1slmvggtxqzhqftrdkrnvrwqc8pg238kcatn9f4", - "percent": "0.0%", - "airdrop": 11516.87822070861 - }, - { - "total_amount": 66087529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0j7JrOImXvrsC072AAFeavLUqEuwKZeLxp8D3D3rHqt" - }, - "address": "noble1slaf6gwxtfuahq409nud82kgy5r4wgf6mpedre", - "percent": "0.0%", - "airdrop": 1160.8764845522303 - }, - { - "total_amount": 4224253783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlL9MNr+G/f0pQvytPC1b4+4LILsjvyxcDCyUW51xxPm" - }, - "address": "noble13qv4kpt97zl69eythzkmkvdqakvmr3j0f4vcmt", - "percent": "0.02%", - "airdrop": 74202.15214076925 - }, - { - "total_amount": 94033197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajtbiht7mmQTId9O5FdHgCUV4bGE0QRJD+caApCQuNIO" - }, - "address": "noble13q0auyujvgfrcexaz8hd6cdtrjh2359e6wf5h7", - "percent": "0.0%", - "airdrop": 1651.7628789626456 - }, - { - "total_amount": 69796921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/gguWroczpT92uQoAHiCBeQMxvPrnoe/rTk0AKWaO0/" - }, - "address": "noble13qnzzt3j8f8qlw424vwenzw8mcrv5ez2vput80", - "percent": "0.0%", - "airdrop": 1226.0347074415467 - }, - { - "total_amount": 905995831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/y8RP34DOeduiixBENNOYZzBJc+ZLkrXOzkMyRrMWId" - }, - "address": "noble13qnk6enxksq9msvfa8yx3ew9n3wzk37emm8tjh", - "percent": "0.01%", - "airdrop": 15914.489030301866 - }, - { - "total_amount": 115051697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0d3m2UeDQaKYuaXe8JCuiZnzwFX8SJywKJOs10J+c9E" - }, - "address": "noble13q5caupp27n59fy4q2mar7vp0uqv5jqjg9qds3", - "percent": "0.0%", - "airdrop": 2020.968427418861 - }, - { - "total_amount": 107934448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5l5cb0XDd4vnh2wUEpPjKMe1tEGprViNAgY0HtYCC4m" - }, - "address": "noble13qhqeytsl8zjcm53ucntksuyfrse2g7vya49nf", - "percent": "0.0%", - "airdrop": 1895.9486676574866 - }, - { - "total_amount": 190443574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGN/GyuO7MMwLY93MgvaZX9HaP8ArJLyoS9F3jHIAg8" - }, - "address": "noble13q6v8xwmwl2r73u8wspky097qdehf5vqj5hzy9", - "percent": "0.0%", - "airdrop": 3345.282688518775 - }, - { - "total_amount": 55465565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyCj5PCT9+Bp1JF5A55Hm/3889M2k06qycthI6nVHmYI" - }, - "address": "noble13qlm87sjeayxm2f70ekytyhdjfwszkqkpmurhd", - "percent": "0.0%", - "airdrop": 974.2938052791053 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkfKWvW2UPF913zedtGKAEyXZEMVtGgVnUfynMSosFig" - }, - "address": "noble13p8f6g75pcv9f0dlh2ds782295mv2ln4695rh4", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 788376962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayw3XmONqJptjOtK+VR0tMuufi9EQtaROg/rRgZVp/ac" - }, - "address": "noble13p235kp9d5lx6vjev7tg98ezj46zamm8k0hc4g", - "percent": "0.0%", - "airdrop": 13848.426321833385 - }, - { - "total_amount": 706920626, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsNadBehs1sXElJczbw3QbPFtrKy7Wdk9zweyz5Xm9NA" - }, - "address": "noble13p2l26yad8yxnwmwxrwhddtjc8lupnq9tusvkt", - "percent": "0.0%", - "airdrop": 12417.585338503757 - }, - { - "total_amount": 780819572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap3RwBzqLdLn4E9E3Qf8j/quckhIhfNK8+lKlNVWpgeS" - }, - "address": "noble13p0sn8mzddfpcnf804ga6uud2r0x33dureggtq", - "percent": "0.0%", - "airdrop": 13715.675158817588 - }, - { - "total_amount": 26934816469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Zb26zU8hc9fYS49NFcZRMobgG7Poxoi4j8+tw9ADlh" - }, - "address": "noble13pap7zxd294lywtaxdftr0lhg7fjfd3exk6zjq", - "percent": "0.16%", - "airdrop": 473130.0372055405 - }, - { - "total_amount": 2046804948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+pcnY7xvI6nP3NFPa3C5DmOV8oJq4XV1x6FVcvMmJO9" - }, - "address": "noble13zgvlec8zz9vmh9pe93deg3d4r97wu6ylay3yg", - "percent": "0.01%", - "airdrop": 35953.64766321269 - }, - { - "total_amount": 80902544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6cY3CwlOWBtpHUSXS5Qc23+1rIGGsPNI/ygFsyCO9wZ" - }, - "address": "noble13zf4v5yup34lk8qxx99y085cj6x4nrw2evqd8m", - "percent": "0.0%", - "airdrop": 1421.1132159299243 - }, - { - "total_amount": 336382774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arg7daK3psNC9UZlbkxKJfnDbfe9YNvDxCSeLEO36Skn" - }, - "address": "noble13z5xk9l8f2383gqwm523qt36d6neh2w6jgcy76", - "percent": "0.0%", - "airdrop": 5908.813024996703 - }, - { - "total_amount": 100885588, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyMP903JaQyVqbiLbuJG0lMnjaL3Zu7PVcK2ZdrHDt5Y" - }, - "address": "noble13zhtw85693xktl23rnl2qzs8flkskd8xzwsdll", - "percent": "0.0%", - "airdrop": 1772.1302114264956 - }, - { - "total_amount": 442978403, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgWx0DCNYSYsbP9eZJLAxpJvr1Ie0Y20jw/uzDBRj4sY" - }, - "address": "noble13zehmdd965whc72hlt9ndav0nmpwceh572madp", - "percent": "0.0%", - "airdrop": 7781.244343500892 - }, - { - "total_amount": 283984346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwmgnCase2lkzs4en0Sr7FLf/9yJ9nyo+REqmLzytKfX" - }, - "address": "noble13rrnr97c66wn5wc6m726ya7p9j0vdnfc944y78", - "percent": "0.0%", - "airdrop": 4988.3957569717 - }, - { - "total_amount": 185264105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtuJEXxIG8xunij/PxdA11uvC/83yGFGOfABnV3xUaph" - }, - "address": "noble13rxu5nm8vkks802dmcnl9jmvp707t3r5e7fgm2", - "percent": "0.0%", - "airdrop": 3254.301472311293 - }, - { - "total_amount": 150162627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anx8VGkHT2vcAE7R+A/q5PxQ2ToOHtPE7Ws4kLbJhQgd" - }, - "address": "noble13rfuft69m3swst4ay7rugdy6pqg2un3tpq9gvn", - "percent": "0.0%", - "airdrop": 2637.71796556182 - }, - { - "total_amount": 63788586, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6G0OfkjT2qjN+A219TM5B5RM3xo6O42UybA31tt9egS" - }, - "address": "noble13rd0cxc8gya98xjv9sutezv32s2ra3dx3e7aw6", - "percent": "0.0%", - "airdrop": 1120.4938449164533 - }, - { - "total_amount": 67553128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPbxPRougEqSEX0tUzEvmQ0S/R9sQM6F86Jj9BBkPL8" - }, - "address": "noble13rkhpdlnv3wf2vdht97v0m52gug4n5jpzax0jy", - "percent": "0.0%", - "airdrop": 1186.6208184776713 - }, - { - "total_amount": 89539615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhU0hNruIsv9GdAr4ZnkrxyAax8SLk4nYp7D+jb3BXzV" - }, - "address": "noble13rhmnpmvvg6f92jm4rr5kew9sd786drsv3sdux", - "percent": "0.0%", - "airdrop": 1572.8297768457971 - }, - { - "total_amount": 858515889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An+FfqkMyFyfR7OZP9TpVei0QKCG701MsSrRunNFZRbG" - }, - "address": "noble13yg8ymuuqe9egz9wlyz709g3gg2xpalqrup9uj", - "percent": "0.01%", - "airdrop": 15080.468618437115 - }, - { - "total_amount": 223329425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cofTobc43+xKxU1vzbaNj2R24PfWNe27x2aX67rClD" - }, - "address": "noble13yfhjmkxvwcfhtvxs4n6udcegdlgpyuzt63ajn", - "percent": "0.0%", - "airdrop": 3922.947062993851 - }, - { - "total_amount": 267292909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxnDwjaOjBysCLLKFrj1MGCYIeYzwiKAPgohw4NcIJl8" - }, - "address": "noble13y20tlnk2yjh6v8crz0gjn5qygv8nzzukm5v95", - "percent": "0.0%", - "airdrop": 4695.198280838419 - }, - { - "total_amount": 594501097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aog40tDVL9w3P81Jgx4b+Gdt4MDZtYGYEkC5eo0sZnKG" - }, - "address": "noble13yt39e8zvpg33lg7kfj9vdxk4ng0me6u7hjh3z", - "percent": "0.0%", - "airdrop": 10442.852895102258 - }, - { - "total_amount": 2000707376, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRSGuZoSrlvYtM4io3L56biVmwHpr5zc3FImessqmG3" - }, - "address": "noble139z5hlgq0lzkmpcstgv9cwhe9xe87layyh0twc", - "percent": "0.01%", - "airdrop": 35143.90960613154 - }, - { - "total_amount": 158226867, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6s144Obj+o2CZ2h9iBvT2JEFem3cLKyRJVqVn6sPDIL" - }, - "address": "noble139yyhgmdax653kyqdwcdkslhj3rxxph3v2s028", - "percent": "0.0%", - "airdrop": 2779.3723249158447 - }, - { - "total_amount": 168306175, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoLrq1V6u7F5Z/mcZeYYtf+JHzKtW5+pSNPOQr9qJOBv" - }, - "address": "noble139xh3pdj275jemhaxy7r3j7nkp6pdeuveklwfw", - "percent": "0.0%", - "airdrop": 2956.4228488922995 - }, - { - "total_amount": 126062630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmOJiexC9fvL/Zs46lNGn4jhwniwi7lKG8vHQkPsMgSC" - }, - "address": "noble139fafdgtswhzw2fqza0wrdy30uw3j7ev9cwr6z", - "percent": "0.0%", - "airdrop": 2214.383635796226 - }, - { - "total_amount": 4046516254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkGb2X9lFDw56iKsCXTcRZ7w2wlwL846NLDAbD+X3nwo" - }, - "address": "noble139jj8fkzyaawd6hrqvz95htc329gpgxsaq2ckx", - "percent": "0.02%", - "airdrop": 71080.06056069942 - }, - { - "total_amount": 857730198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aku3motiI2BFCVdjDG9u6iRbAZnUh23RM/8MyVykuTV9" - }, - "address": "noble139608e46tv0yyls06zwj86j35mfa9ue3l49ggk", - "percent": "0.01%", - "airdrop": 15066.667373030825 - }, - { - "total_amount": 93969640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2dyLaPEcL8s86PCx81T51B4sC4Wd4AFiTWxzExvwHp" - }, - "address": "noble13xzp9nsfyy0a3fu0pxqruz8egg84vfs9dhufwl", - "percent": "0.0%", - "airdrop": 1650.6464530976584 - }, - { - "total_amount": 50058066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/rWzIBEW+SM5D+tiO6Nrqo3d+uDYqkdiwNzNLuvhAY" - }, - "address": "noble13xyyvm275ucmypuugwsr6y37au2lu6amcacaks", - "percent": "0.0%", - "airdrop": 879.3070729208763 - }, - { - "total_amount": 68201358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A04ssVuAiKGPuJKd3uzmgYAURbzBad7V94+2OgDxA+hD" - }, - "address": "noble13x98480w3em726ee7snhguuvd9zulzv6ezexgy", - "percent": "0.0%", - "airdrop": 1198.0074594214004 - }, - { - "total_amount": 677897830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRFKMieUrCclf6/ReV5YNZpeO58f2kaHFtvvGvM2uWR" - }, - "address": "noble13xg37955fj6rfh2820frklvydhd66fv4kyvkmn", - "percent": "0.0%", - "airdrop": 11907.77839153262 - }, - { - "total_amount": 1180602716, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AizQwVEGkxefNXaDLkYhovX0GPV6BUtWn/seTN3BKNEZ" - }, - "address": "noble13xc6huy6k3z9msxt8essv6j0egfzvuscff6dhc", - "percent": "0.01%", - "airdrop": 20738.16272663024 - }, - { - "total_amount": 50170152, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+XAqbTYU4BtW29PGNIgXetrPy1Yc6L0VZ2nQF3JfMCz" - }, - "address": "noble138z9mlx3fjhak6e8x3v256r5udrykhgke3sg3w", - "percent": "0.0%", - "airdrop": 881.2759466799106 - }, - { - "total_amount": 52904750, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzhWj2DW9m1l+AFqpUxjAtveU9LabVggwtobj5umr6hM" - }, - "address": "noble138y7gytlf4ykl9vqyekv0v8fnfh7v5f6hj63gz", - "percent": "0.0%", - "airdrop": 929.3111896514486 - }, - { - "total_amount": 71057820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/x573cCSIQDnDkNB46yHXCwyiT0f0jcC52LG2gt1QkO" - }, - "address": "noble138x8mw8qyppae24jjln69jqt5yeqkxa40fqsvn", - "percent": "0.0%", - "airdrop": 1248.1833339773552 - }, - { - "total_amount": 14955000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AviVBZQlcbcfD/3iOksLwb4YSHWmDNxT5OzPmAtOhcqr" - }, - "address": "noble138897rghcgukk8vumm9u2z7q950mwksad8vdmp", - "percent": "0.09%", - "airdrop": 262695.67177309055 - }, - { - "total_amount": 1601996044, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axgb+LLUQN3YMImrLgF+VTGZeIct6221gqmn5HnaqrmQ" - }, - "address": "noble138gxzhxt9npp4le5txhc6cx9cg2ftvgrw0mp8u", - "percent": "0.01%", - "airdrop": 28140.249211395087 - }, - { - "total_amount": 1533066079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmBKuNUJa2FfPfa4PaGzto4dY0daHxMsv2SERLzG0CrJ" - }, - "address": "noble1385urlyxxf2u7gf57qm80ezf4lxsfmkgvdwzgj", - "percent": "0.01%", - "airdrop": 26929.44322938435 - }, - { - "total_amount": 54000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AueD3MAGg8S+gNF9irEF31nEv+6pFZgOLYp8ljTfQit8" - }, - "address": "noble1386smh039u7f34g8j6t359n5ma82q6k47r95nl", - "percent": "0.0%", - "airdrop": 948.5500685888927 - }, - { - "total_amount": 73985268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzUyUKYFYid8bknGzro+af1N9Che0m1bGPyOP30er72Z" - }, - "address": "noble13gpyyj3p0ztdc0ffs7w2zraz3ejnmcx6ectxv0", - "percent": "0.0%", - "airdrop": 1299.6061302956964 - }, - { - "total_amount": 52750000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2DcxdDAALrOu2U1whCfCau2UJdK+rFtzdMp60CMsxjL" - }, - "address": "noble13g9vmj7hu5s3kpj3e6un394rzfdglfn53ja58a", - "percent": "0.0%", - "airdrop": 926.5928910752609 - }, - { - "total_amount": 318602273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjYIWFspcAEsuClvzNZXgRL7kM6c8oiYZRfOIosy49da" - }, - "address": "noble13g4zwvzce7ep32upxa6zzfl9n80jmp0qn3hm3y", - "percent": "0.0%", - "airdrop": 5596.485331606057 - }, - { - "total_amount": 172610524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjbimXm+HenxxqN5lfQGdkiIUMCc0SysQlr8JtzXBuuK" - }, - "address": "noble13gkh5lypeh34fu5g7yk54cjrcmz7s3lkzyeap7", - "percent": "0.0%", - "airdrop": 3032.0319329511985 - }, - { - "total_amount": 93412919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+TvFb6b/YYdXR662zFXRi1595ENE2mMw0cX9qB3LyDW" - }, - "address": "noble13ghq9p7js4wuu8t2qn7ldp8lygj3evyv5zg6cq", - "percent": "0.0%", - "airdrop": 1640.8672356396053 - }, - { - "total_amount": 1505273873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar2K05IZmTdRAq4uEOswgZzLElavg/zBR5O9Jgph2DqR" - }, - "address": "noble13gcewaejaskanggc3yq6q324vwlu929rlecypf", - "percent": "0.01%", - "airdrop": 26441.252508874408 - }, - { - "total_amount": 56183036, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvGUq0dbkF1WcGZDdhDHSjRO8xE6fqi/0Mb0BUcbYW8S" - }, - "address": "noble13fq7e69punt6ju05f5wwr39udcmlvrlqkcl3hw", - "percent": "0.0%", - "airdrop": 986.8967157654116 - }, - { - "total_amount": 34282500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtkXTWTErtYVPRD5rT9QL165lJZIVtlh2te8KHYTpi9m" - }, - "address": "noble13fql27q7ekc072j9jcnwrfnhflgqke0rtf0kaw", - "percent": "0.2%", - "airdrop": 602197.550488865 - }, - { - "total_amount": 511364785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzTAeMFRKBo5uRZ7G0grhw/LODYqIEimXVALi2YVZ/jO" - }, - "address": "noble13fp3704v8v6ddanenzf4rmrf66lsj6gn3eqnlg", - "percent": "0.0%", - "airdrop": 8982.501886772117 - }, - { - "total_amount": 167566119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiybqJySQtaAEqGHvIGeWL1Yu3w1yr9b1SXwMGviZELL" - }, - "address": "noble13fxw0q78d6aqj5fkdkuxy8q4myxd8d9xsxj9pk", - "percent": "0.0%", - "airdrop": 2943.423216122677 - }, - { - "total_amount": 2040292537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxMF9x1gkKCDITFisWYQwE4+VWKX7T53Etue5E3eb/zW" - }, - "address": "noble13fsvmwwm5g6ldrmvhj3t6pav5qalw0c2dhzn6g", - "percent": "0.01%", - "airdrop": 35839.252331717704 - }, - { - "total_amount": 7124785502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al4e5LeImOf/m2Vt1kZyyeUvBBHiwRKcmJ+zssfLVnYt" - }, - "address": "noble13f3curzm7tcp5pqrkpl8sxwapwy2keyx2s7jvq", - "percent": "0.04%", - "airdrop": 125152.14401117127 - }, - { - "total_amount": 552331995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MYNVDIu5ZHGzRjNE8d0wjrjA+ytCXADf6J3X7kBWNA" - }, - "address": "noble13fnstezrwv85e8h63xq79s0emykutnhsr0r8rq", - "percent": "0.0%", - "airdrop": 9702.121328538704 - }, - { - "total_amount": 51596779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YNfJrZmRV+PgjWPwPARRMG3QH33rrzxXAE5DHnyl0H" - }, - "address": "noble13fe2vuy0e383q64usww4v5vxkmz6gcnfx0p5xz", - "percent": "0.0%", - "airdrop": 906.3357085077025 - }, - { - "total_amount": 243051547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6QgN6LtAi67zJqHzjpNUdl5FW002YeKnSccfmZgypdR" - }, - "address": "noble13f6jt70dhd7c4mxudhmpz5hj2ewszj97vj5tqz", - "percent": "0.0%", - "airdrop": 4269.380769953454 - }, - { - "total_amount": 1021609551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax3vmGyniOCXvhKL4VcZ/TAd1tQbkn1f4jaJn3ERSbcv" - }, - "address": "noble13f6jmfj3j0emugva09wt0e707999g56jw07dq3", - "percent": "0.01%", - "airdrop": 17945.329808742925 - }, - { - "total_amount": 228902858, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8XSjb+LTyJsryQpU08BRVH1BH6vC/Sdt9TD5Zzj1DO5" - }, - "address": "noble13fl8rft83anlsvqkl6ylu28sr9ptj23a9c8fjp", - "percent": "0.0%", - "airdrop": 4020.848549186918 - }, - { - "total_amount": 2239145118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7AV98jubmG5hJfpEPTDMzTq4+2m0oU2hn3BCzn9rYyO" - }, - "address": "noble132gqufrnhgxlsrd87d9al9e59f872m4xs4qqq0", - "percent": "0.01%", - "airdrop": 39332.24546776637 - }, - { - "total_amount": 142376592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwCVjiNLAblTPbwNRrlayx0HfwhlmxNC81RU7QED/nGk" - }, - "address": "noble13242wlzgstafld0eejdnzv6verg49q96smzw00", - "percent": "0.0%", - "airdrop": 2500.9504834639406 - }, - { - "total_amount": 520948925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/JYGwHnIMxstFkqexFOtpqPra98p3nQ4J/4K3ApEpit" - }, - "address": "noble13tzaf6qjx8706plajxvt5zcxc2z09an8dsnsn4", - "percent": "0.0%", - "airdrop": 9150.854417408516 - }, - { - "total_amount": 138494271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4EOSdOqqwrZlfNBp0sfTDMm9bIw1nDWC56U8Y5CRnuW" - }, - "address": "noble13t87p6j5kx0n8lkhzew4jgngkm3p7m3gmnyyld", - "percent": "0.0%", - "airdrop": 2432.75463437442 - }, - { - "total_amount": 162668105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/FpVHwbERe6YVcw9tBcTwbFM+B6uiSnYXV7aL9DK18d" - }, - "address": "noble13tkzz0l2sne8np9ajffxclthtlzndh6qz5cfh8", - "percent": "0.0%", - "airdrop": 2857.385965832874 - }, - { - "total_amount": 3310791261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/n41hn/wwwIGXQaTzJg9MPtcuoxroGcR4d9x4zgaws0" - }, - "address": "noble13vrkelxvuaw862xmwxxds8e3vrs7rm3q5dxq56", - "percent": "0.02%", - "airdrop": 58156.505142686234 - }, - { - "total_amount": 132203176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApgKBwbbU+HJAdrqkIiBOAN0HYKq++vsYSW3fDWnkdZF" - }, - "address": "noble13v9d5qh8c7q948y5wdr6y70ntrrtkfh2s9wfht", - "percent": "0.0%", - "airdrop": 2322.2468826383233 - }, - { - "total_amount": 86269680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsK6R98FQEYE0Ywms8ahrNlRXvOnhAuVQWDoMjAmxQut" - }, - "address": "noble13vgrshq8jdprus3f442l6qnlul9zyh90zsjeel", - "percent": "0.0%", - "airdrop": 1515.3909422433671 - }, - { - "total_amount": 94506321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0cObt8cWxeEKr+Rxxk2YBtyabt/H23ieH5IcyOheIXh" - }, - "address": "noble13vgmupurvdhha4sa5ka7zjcmr8903eeamtnrhw", - "percent": "0.0%", - "airdrop": 1660.073653085813 - }, - { - "total_amount": 484349556, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al2C0XvmmQ7/P3xKbHCbzGilhzvI2b5fOy+3qgejQfv2" - }, - "address": "noble13vnz3snexkhuf4k5xryrcyhxtsyrj5hrmf0w0n", - "percent": "0.0%", - "airdrop": 8507.959343792587 - }, - { - "total_amount": 1500257277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apj6PZ2FY4+o0w6Gfr3gapB/Gh2Zbpoq4wzGDxt8DFds" - }, - "address": "noble13vn7ja2rtlyjc3raddecgfauwpsq9tplqzejhl", - "percent": "0.01%", - "airdrop": 26353.132277765468 - }, - { - "total_amount": 253668355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkpCNmFHFuusAQ3ZBt06CPPBMvhSqabtwQ0L4Y0anaPn" - }, - "address": "noble13vllpdv9awypen5tmvtye9hw33vjfwx23uwvcn", - "percent": "0.0%", - "airdrop": 4455.87288026077 - }, - { - "total_amount": 600602198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An5cV5MByFQ4gQ7qRVaqKeNrOR/ce5jGoMnT7/mWsi86" - }, - "address": "noble13drpvnuw7kg9mg490pq9xr077xluwn0v32pemh", - "percent": "0.0%", - "airdrop": 10550.023261250735 - }, - { - "total_amount": 53093432, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7lf4w4FbriJRGVGnMqcfRPHw9Tzxp/oGi1Dx8sWJfEn" - }, - "address": "noble13dyezaxs8zwjldqedjnu7peldxvqwkzmq6twl3", - "percent": "0.0%", - "airdrop": 932.6255289855501 - }, - { - "total_amount": 338823911, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZPOhgzFwl6zi9zdFWQlSNmC3QJivhKwfz746Ln9Ej+" - }, - "address": "noble13d9dzn5ycdcrde8wjptzjrmg0pcwp025ww4qqx", - "percent": "0.0%", - "airdrop": 5951.693407751979 - }, - { - "total_amount": 261511317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyxF2Iv1nFqHsvl+fF5AxE1VP7XxsaIfOiAu5LV03Vts" - }, - "address": "noble13d89hmcqwqwlgz86qd7dwnzffec8gss6grqyfp", - "percent": "0.0%", - "airdrop": 4593.6403273541055 - }, - { - "total_amount": 6636977149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhHCMHtN5X7eleuMK/Ji0ae1JU+pKRnpked6Se6/GyHZ" - }, - "address": "noble13dvdmdvjljtdzjc23gdf06hl4cf4pvdmmyq6s5", - "percent": "0.04%", - "airdrop": 116583.42833160858 - }, - { - "total_amount": 1256857461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4VBzEWm2nDC3aULQRdznOd6ZLG3cdTpF8PknUIXR8ZN" - }, - "address": "noble13ddhtncp4ktwngyylnfxtf0095gtxrjy3wn269", - "percent": "0.01%", - "airdrop": 22077.63390440762 - }, - { - "total_amount": 384464503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2NDefmaaF7xwzLM8vx2yNC9+sHaWXuwbXcnxrj1l+gE" - }, - "address": "noble13d3sz3d0p3q8wzc6d4t5hk3zcvxndneaxkjr6t", - "percent": "0.0%", - "airdrop": 6753.404272048973 - }, - { - "total_amount": 54579794, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aglr1kAF4yItZsMrPb6jQbkTYXtuT7ilLz8GTSDSY1Kn" - }, - "address": "noble13dkyfx8l4p39ty435q3m054c4j33g43vnpqjmh", - "percent": "0.0%", - "airdrop": 958.7345804123636 - }, - { - "total_amount": 144389699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiUnPH5Xo8Rx4sFqBDdpRyn90jk9/7gI8m7ZdSjDUsSD" - }, - "address": "noble13dhgn5k369wx2mf825x77t7n5gvku90dneuhfn", - "percent": "0.0%", - "airdrop": 2536.3122016662883 - }, - { - "total_amount": 221645864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Wnc9j5O2giqAKx/7t29VOX+d+iS8eG2Gz8BYNeNh41" - }, - "address": "noble13wph4e9c06sh9ual6a8a05jhnqt7c3gep3ednp", - "percent": "0.0%", - "airdrop": 3893.374064808229 - }, - { - "total_amount": 15495495792, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ryMBO5tiTIGdyLnLFjVElYB7+Ncr2Rk1atwt8vf1+l" - }, - "address": "noble13wzpkjufpdt2s2y7td2ax372wtnsxs6epw9nz6", - "percent": "0.09%", - "airdrop": 272189.88141334255 - }, - { - "total_amount": 75187430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzeYVlLY/3DC1oifii4ge/iU54UwrIUr+yyrBblQejA+" - }, - "address": "noble13wy3vug385446lawckp820u84r6qd84x2pg4v0", - "percent": "0.0%", - "airdrop": 1320.7229978430105 - }, - { - "total_amount": 6601174649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AomSnwM5UCHKpIyAuY7zdZCU+2qefNUEU75wXHqG94y6" - }, - "address": "noble13wf4hryadxk32vvdccc2gxe6sm89hxcxhu4rns", - "percent": "0.04%", - "airdrop": 115954.53085326313 - }, - { - "total_amount": 122707322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnTHpnt21HjP9tsyOkZL5PWOJg6gXVgn7+K6m5dorXQA" - }, - "address": "noble13w622psclveyzn0zfk4l2ypvkfmyt20w3f40yn", - "percent": "0.0%", - "airdrop": 2155.4451611010986 - }, - { - "total_amount": 253839094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjAKlQtjuO5cXeP+ze1HZut9UmuEn6Uszsxp+lbTIIoV" - }, - "address": "noble13wuh7qqka4ej0a9d2zhmtnvut0jmz6nqcf7r7u", - "percent": "0.0%", - "airdrop": 4458.8720374859695 - }, - { - "total_amount": 693944537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag1SlkFgTsNTvOCBnriEZSWyrf7VGRTgydda7yq3mEGb" - }, - "address": "noble13wlp0p6d4m6h7aynf83ef8p6xka6rhz9cggg7a", - "percent": "0.0%", - "airdrop": 12189.65070681921 - }, - { - "total_amount": 181875084, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApbuaW6a1kIeCa0pe/hrvn+JebHCuQvdU8X7qjY7e++X" - }, - "address": "noble1304sxhrt07lrfjtsls8xte6f4t6ty0w6ttyvng", - "percent": "0.0%", - "airdrop": 3194.7708037557522 - }, - { - "total_amount": 50082076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArkZgbcOaymxRXlCJAB/uzzyicgRO5gkhb/aqJMSm4Am" - }, - "address": "noble130cscdavnrf300wegcdqrv039pvda7e4ud8dp8", - "percent": "0.0%", - "airdrop": 879.7288263865581 - }, - { - "total_amount": 702310986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al1FjTSFEHRwLskWEDfUqTCXUgPXhuK88PpDJSrFsYAx" - }, - "address": "noble130mcpgr0qjkxhfjw9zanxqnjslj30zdvwjahk6", - "percent": "0.0%", - "airdrop": 12336.613591500609 - }, - { - "total_amount": 5918587133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjB+AXbgKOkXrlonVa/oHv3p1BOcj4jXMjqM4hiACXAS" - }, - "address": "noble13srq6rutwgwvhcn9lwpvg377zn4xsyqyfjdlv5", - "percent": "0.03%", - "airdrop": 103964.37464734237 - }, - { - "total_amount": 101935543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao/hY+lJKASDofyLG2k1BiwFT5l0mW3qcmqJdTQbYDHI" - }, - "address": "noble13s9szshycu4su2758snwm0u6xk7jl253synnew", - "percent": "0.0%", - "airdrop": 1790.5734500795559 - }, - { - "total_amount": 163016077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhcFzSE5smkI6cVsLManorWzwCjDVRlCPBDSeOZ1+u/U" - }, - "address": "noble13s8snh8rc0aek0yanxm2pqpa06l3qmyvmj27f7", - "percent": "0.0%", - "airdrop": 2863.498352211893 - }, - { - "total_amount": 394146590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsQkg3d29yi54PyiLtXC7vS8mYvSFnpxxUq1cqP8L+cv" - }, - "address": "noble13stzqk27y46cr8fz7vfr8dsqqk4wpz90fcaqyd", - "percent": "0.0%", - "airdrop": 6923.477314418114 - }, - { - "total_amount": 800836051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlbKXqO2M9yoy6mzPMLlnsf4CO/P8dTTGFKdWNkrtl1w" - }, - "address": "noble13s530dhzfxrwma9kg7x4pqgl0gey6k0vg8k9qq", - "percent": "0.0%", - "airdrop": 14067.279464898294 - }, - { - "total_amount": 804710372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZdB9DQM4vhomBJwKhSVE9fEIQm/mXhRL6ArX4SZaMa" - }, - "address": "noble1338xneeda488uk48w3vppcynd6vnlumfavayj0", - "percent": "0.0%", - "airdrop": 14135.334788051729 - }, - { - "total_amount": 87389896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvTSUCm7tFB333inNoGtyn47s22SKkEZK1Dr0Pze8rTV" - }, - "address": "noble133j4pa942z4mrgljtzym4qj37c7smhawxd4j7k", - "percent": "0.0%", - "airdrop": 1535.0683674958557 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4jkVSQPodRbOM2KRvW106SDkoeS6R6w1lmt1IwxCAU/" - }, - "address": "noble1335v3hpjfrnzghg8qk5azmupsfp4caxk3adyqq", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 50730930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AimVg1vM0Yr7RHMe7yeZfLncZTUEAVyovBgjoFdKd7zJ" - }, - "address": "noble133cvats2ywavsnarrtkvmayvexpnl6f93xd7un", - "percent": "0.0%", - "airdrop": 891.126428353302 - }, - { - "total_amount": 2337570128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Qhfqkdmv1HRhwR3Xs4peNj71xdLT2Mllg4bK+pjC5I" - }, - "address": "noble133cw2x543ce8egvk8la34ezjxcfpy5403luz0t", - "percent": "0.01%", - "airdrop": 41061.15380084716 - }, - { - "total_amount": 331144624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtrHEp3Czn6fmIBa0PvS1fqP4yY2B8f7tUugCx5bbKKz" - }, - "address": "noble133akpc4t0j9pzt0apjx66ns9q42dmelw5ap6vx", - "percent": "0.0%", - "airdrop": 5816.801033482279 - }, - { - "total_amount": 52229658, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArZze1OUh/gQI2VCgploNeLFu3LQUQ4s0yHwrrabZUy2" - }, - "address": "noble13j9dzuvttctnv40zmce26s7mxkfe2ayr7r2ml5", - "percent": "0.0%", - "airdrop": 917.4526977458224 - }, - { - "total_amount": 98303746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqkuRKfMSyVNVy4JLmI8iMgTPNxW/8JIxRNwzoikqbb2" - }, - "address": "noble13jfgzqfe6l38sec9ql9h2g5layylqk8h76adaa", - "percent": "0.0%", - "airdrop": 1726.7782409415756 - }, - { - "total_amount": 73500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoJOVk8PQYbhfDmr5itHFBXdyYe9xtHgP2thVR+8FUba" - }, - "address": "noble13jfeg9qnx43w2lwygwqsqcjs9s8t3vcv297m4u", - "percent": "0.0%", - "airdrop": 1291.0820378015485 - }, - { - "total_amount": 80991363, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5OqiJd/c33az8ntCuSH/XJNBO1IUB2oDrSw8AYYaDw1" - }, - "address": "noble13jt5nj7wlxwdqvnx3zcx7m8k3tcqtfzcfzmhsh", - "percent": "0.0%", - "airdrop": 1422.6733875695907 - }, - { - "total_amount": 105285532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Q9cMHZ0keb1wuN61Lxzft2Ipc8reUNXxQWgLvEsdCM" - }, - "address": "noble13j0mxcz9dmrxdl3upmaxes8jmzpfs47zrczawr", - "percent": "0.0%", - "airdrop": 1849.418492592927 - }, - { - "total_amount": 89288652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsYRDlhgbZcDWdUV3/H4k3MNaidePuJjHIN2rIy/H8pa" - }, - "address": "noble13jsq7vym2y4edmzhr95mkmsywclekky97en86u", - "percent": "0.0%", - "airdrop": 1568.4214255335141 - }, - { - "total_amount": 1154488072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArJqUppvsMoSrDuRLAKPuGkzlHPqOl/Z4WuhW8ZD2oYM" - }, - "address": "noble13j5kkrzksdl4sfufdvallgrkk7l46hy3lzayaz", - "percent": "0.01%", - "airdrop": 20279.439627419604 - }, - { - "total_amount": 553597437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+M3Os8ONx6WiLrUyvBUtOAf1bOYSe7Ra2bT01r32EE/" - }, - "address": "noble13jh3raffysr9j03xvz7szyhf73vp8nk8zp7ase", - "percent": "0.0%", - "airdrop": 9724.349756240466 - }, - { - "total_amount": 735067026, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoBjKzrV2QL7lBYeS0Dtr8Tr+Rv5CqjilMivPpjL2tK7" - }, - "address": "noble13ju2v0kjrtx6gz7zn3jyavhxdjj2h69x0typvn", - "percent": "0.0%", - "airdrop": 12911.997739439505 - }, - { - "total_amount": 471396338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AumJeGsfoIFB4zUtp7JXtGZf2AxW9czySHk/YEpnhH8B" - }, - "address": "noble13n8azkyuknh5744ftl47ljwy6uf7a3nurgj4gk", - "percent": "0.0%", - "airdrop": 8280.426458193571 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXLMVLXil/aSUgYFn9ehiG+OXtiNkgDS4vxaSOIQcF4" - }, - "address": "noble13n0263wxkh7lmgta3g6m9u6gy9d3gjsfhh7y0w", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 2477132568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ECmCJ1pW/irZNA2qwFYrPuav8hT3yA6ml2WrJ59PRf" - }, - "address": "noble13n05lm84xnmf7f44fne8dt994lsajmzpuxwkln", - "percent": "0.01%", - "airdrop": 43512.67161629963 - }, - { - "total_amount": 72595522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmQT65EmCCB7mmFOI5GtJK3CA2GTdte8cqlIM+IstfuT" - }, - "address": "noble13n36nuhq62p32j3q33z503p8skcppx6kqezhhh", - "percent": "0.0%", - "airdrop": 1275.1942105990086 - }, - { - "total_amount": 125646642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A58UYyrC9lKkHsz9tOmPopxcrmKf/Zn9hFAvocraKBpJ" - }, - "address": "noble13nj7c2jsdygpmcfhpv6lvjmvt70undcw7uaqpv", - "percent": "0.0%", - "airdrop": 2207.0764979085934 - }, - { - "total_amount": 4016563383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aug2wPmwut0nb5e5dV5pUB7p7fgMwLVN/8JNnd5h6W9B" - }, - "address": "noble13nc5m34j6cauplfrn0gt6kka8yl3umvd2vfnhh", - "percent": "0.02%", - "airdrop": 70553.9161562275 - }, - { - "total_amount": 50897524, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8a6qIqzg9/dWqUYWyITxZGrXeYfuT3J+KXkmWPVgMlx" - }, - "address": "noble135gfvyr5wgu0ass8thdk29s06dnf34fde07ra8", - "percent": "0.0%", - "airdrop": 894.0527755778669 - }, - { - "total_amount": 2279172052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzMk3fPvMsffC0FHdKJ8k1xfQ/+nhOsqohS2K9jPuHm" - }, - "address": "noble135fz3j4k048dauv3h73rktld2z6z6s663uty5s", - "percent": "0.01%", - "airdrop": 40035.34826389791 - }, - { - "total_amount": 654028163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Hs8aNyYV36fro/diPaAyc2TWu4fCQzlLIu5I2uwXx0" - }, - "address": "noble135f3uw8utadhttg6p4al32lvcjfhuw2mg76paf", - "percent": "0.0%", - "airdrop": 11488.489979124397 - }, - { - "total_amount": 80900565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ZuhfibYqrFG9XWA0ng/oKwwfR23/feJePrE/hgX10N" - }, - "address": "noble13505kd7fxfcykvkwy9ns88r6qlj3wp37kcghgv", - "percent": "0.0%", - "airdrop": 1421.0784533264848 - }, - { - "total_amount": 50090163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmE+Z3Qi5X3eNltsuZh84i7a7mPpkvV2TXZMiq0JWWdk" - }, - "address": "noble135kkadpl5zq8kjklgy2ge2rgrt279lh7l98epf", - "percent": "0.0%", - "airdrop": 879.8708805422003 - }, - { - "total_amount": 300895474, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0WH6gZ4rrSusx19E/+cDZMHd2DlxD4OifD9FyrEgoO0" - }, - "address": "noble134enz08yjzmakkx5sckcgqsh3amzkd7tdc9rr8", - "percent": "0.0%", - "airdrop": 5285.452268533099 - }, - { - "total_amount": 168418281, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+rZrUDNEamxs73kSchyHsVHRrKzqbd2Jm4GMcomoDVC" - }, - "address": "noble1346kjp0t4qnl7gcee02a4cuhqclx6kamvltk0d", - "percent": "0.0%", - "airdrop": 2958.3920739661744 - }, - { - "total_amount": 50116618, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApExSyioYj5tcnuQBT9l+vOtDx7osoRQuOEjkOb6loeB" - }, - "address": "noble134mgr8td6fadtyfe7uuz444fq72stgsvn6qzfh", - "percent": "0.0%", - "airdrop": 880.3355822470988 - }, - { - "total_amount": 505366101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akwoi8CR7HnkdiSR1JIPuvxbJ2kiIL4JHOdeeCrHwSN/" - }, - "address": "noble13kq2s8r8ppst5fdqs68tuazalfepj3psaewuex", - "percent": "0.0%", - "airdrop": 8877.130551223172 - }, - { - "total_amount": 1757535487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Lt6l4uCFNT9iAFpwZHC7gy+RNugpQ2SK6o93z35OeQ" - }, - "address": "noble13kwkws34chyzsfjlvrc3rl0f952xnj4ass88wf", - "percent": "0.01%", - "airdrop": 30872.41493965302 - }, - { - "total_amount": 1039912157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al8elrfPjs+wirggekYqBzsr1367lOwsIZknIsQV2Wwz" - }, - "address": "noble13h890cnqrt579mftq34mgkatz67cf0t4qp2y4e", - "percent": "0.01%", - "airdrop": 18266.82866386617 - }, - { - "total_amount": 115594563, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A96AM3kC4QdtFBOBsiz6VOKFGN9Z/ipuPycTIHi7+e/G" - }, - "address": "noble13h06pekncs6ht3vsyrtjmrkpprqahpxr3e8jyn", - "percent": "0.0%", - "airdrop": 2030.5042715213533 - }, - { - "total_amount": 111915466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A15+04sGD9NKOC3/rWhrMq0hXwhPRQRmd3o4oz2jYg1x" - }, - "address": "noble13hsjxjpt5s52u7slvnnuzw4zn3y9ktqfw4s7sv", - "percent": "0.0%", - "airdrop": 1965.8782027862571 - }, - { - "total_amount": 86076517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A59Acj33lm6/aTnynJWzo2jGzVQ/dQXD4q0DqP6ujX/3" - }, - "address": "noble13h3az4cl8sl3m0q606hlyau7j2n63j3j4lykqm", - "percent": "0.0%", - "airdrop": 1511.9978908193145 - }, - { - "total_amount": 989907843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq1IrfwChNMklJUOPVi++2LaD6B3blcM+xqdu025g6Z2" - }, - "address": "noble13huudvafy4rze65nf6lc0pwjzqay6y5j8n64tx", - "percent": "0.01%", - "airdrop": 17388.465784709868 - }, - { - "total_amount": 395675808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7E9ySIGXhZpNVc2P8BYapZK95yzkvsJwJN3tAarcFWH" - }, - "address": "noble13h7k7ctjk3yxga2zyldm8c3dvrp0n2e3ksy6vu", - "percent": "0.0%", - "airdrop": 6950.339163284547 - }, - { - "total_amount": 934950631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8GjyUpWrhNwGWRHMQHV8Vi1sbP1gQAJEIigrQSWA36k" - }, - "address": "noble13cnq7apv8qnl72f762vmranu9zawx4z5pu6j7p", - "percent": "0.01%", - "airdrop": 16423.101577079233 - }, - { - "total_amount": 645778964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3dnGUa1K+gwzDInZZwIfc9Zlgc42ihVh4f0kIFNP+N" - }, - "address": "noble13c4a9y2j36mqujf2jkcgrw63ekly5r0rll20x9", - "percent": "0.0%", - "airdrop": 11343.586677693778 - }, - { - "total_amount": 1590912563, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzB70PEBnJYLmxgdX+OIoMx6QPAs0nOj+vP7gIHny9O3" - }, - "address": "noble13c678y9ez36e5seycww29uknajfr69xxz6az55", - "percent": "0.01%", - "airdrop": 27945.559643566317 - }, - { - "total_amount": 451397122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag7I6lDgDOZ0YEjq5Lnk5yM6ekdw4fQEgwOzzNrq2TUL" - }, - "address": "noble13cm7r5uqxdgdq7glgpmh3r5cxq77pyd0takvpr", - "percent": "0.0%", - "airdrop": 7929.1253895171985 - }, - { - "total_amount": 280208725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32hqzY9NMfN57mU3fBzNHpPNNhcrPntLWwYU+36BSht" - }, - "address": "noble13cadeecvj5hry2wlx3x7sxsd23rcl9f9khl33l", - "percent": "0.0%", - "airdrop": 4922.074172554744 - }, - { - "total_amount": 480295645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah8VF+J87ZIKieydP5q1QLP6WUiDTyqkS0MWBaLqSShq" - }, - "address": "noble13cahjd44t8qhxp8f26wx9rgxu7kyzv4phfqvxg", - "percent": "0.0%", - "airdrop": 8436.749389031416 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At7HoZmEXiUpsFn/g39hJ2NYP1+7OezUFA9JBWSNLNSU" - }, - "address": "noble13cl35s0p6vvpnr6qcchspf0zgr9rwn0f9lnpsk", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 831160072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rOSHJEF6pmeP9q+M/W0ibTLCAw+PLQpndlcrFMJu9D" - }, - "address": "noble13ez0f3a0yvgxay0sce2lt7vgghtgjue76mpxh8", - "percent": "0.0%", - "airdrop": 14599.943394517573 - }, - { - "total_amount": 488542396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoWzw+fIas0Hn7NOSLP2ykhozK4sDjUihToU4j5UtOSE" - }, - "address": "noble13eygv50sulz5zjactn6eqc7dn6r4fyjemsz970", - "percent": "0.0%", - "airdrop": 8581.609689525592 - }, - { - "total_amount": 51849351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al4wb0ch9rVWCFMY+NY49JzWAY5auRyN0tieH8z/Z3Hx" - }, - "address": "noble13edghq28yt3hnyy2qujctdquz82z46qw3e7vuq", - "percent": "0.0%", - "airdrop": 910.772323098881 - }, - { - "total_amount": 223799041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6xfNs4ZFA/fU7GciXSrrc0Py4mrKGbnam8Cu/jYL1c6" - }, - "address": "noble13ewxygzfkvldfjcf28l4jn5aq9u0fjyp2uchwz", - "percent": "0.0%", - "airdrop": 3931.1962164940446 - }, - { - "total_amount": 102900477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArqfxItYJvbD7DuCx7hlSP7UCcIKutfpfWBxwwDOsWOm" - }, - "address": "noble13esklg0mrp2hkyjuldn92pgm39f5wzjrmferv8", - "percent": "0.0%", - "airdrop": 1807.523231781107 - }, - { - "total_amount": 2898251993, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvbwRoeRNQsewYOopOE3fzPHtyD1AFRoctTWU3lGOEPJ" - }, - "address": "noble13ek9j6zl4fraj5frvkunufskr9n79rluuff2dp", - "percent": "0.02%", - "airdrop": 50909.946791630464 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkfLhvj4AGOUACluaiVqefQLc8I8DxGOoh1kyL+B5YJ+" - }, - "address": "noble13eh6n60n89pdhgawqc4a75hur2zxppc7srxgyn", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 81500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj/PNQA8F/lS0L1/kFF1+JuD/V430aDxmro/Eyx7Nntt" - }, - "address": "noble136qkjqcvav94rm8d9jmjap8m6gcx5tsh7nznd0", - "percent": "0.0%", - "airdrop": 1431.6079738887918 - }, - { - "total_amount": 215890166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apk7zEvZP/zMLbjvL5BAWXD4nxUiHMpNKxQ93FWOVeLN" - }, - "address": "noble136yzxcv79rhr2v6qtm0lan505tu6r4g5vjd30g", - "percent": "0.0%", - "airdrop": 3792.270958647545 - }, - { - "total_amount": 50047898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgqbhiB8rUAKgetO/sV6nWh+k4v90bvy4k8Ir6c4AQ2H" - }, - "address": "noble136yfv05rjrfaj46d4wr69yxgs7067gzwe9j08r", - "percent": "0.0%", - "airdrop": 879.1284644561093 - }, - { - "total_amount": 2495907821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzFBuO421kFFRnrW6oBFQWceiPKkZ5OmPiPNQWqMBew" - }, - "address": "noble13697e76tvv8r5ny6uhs4e5admv023532gryk44", - "percent": "0.01%", - "airdrop": 43842.4728666871 - }, - { - "total_amount": 596571616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj0G5IbvgORzpBwZrNgvTeWajdzty8iGgnhP3U63WZB6" - }, - "address": "noble136xluxzqh24mtx4g7qavzpdw8yzwdqtf344duf", - "percent": "0.0%", - "airdrop": 10479.223097684937 - }, - { - "total_amount": 78485271, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avd2aJcXcvv5FUXr41cwE5kLyN7tTejJOe2doJTRpB5H" - }, - "address": "noble1362e0qnt7ye3zrt5pk7f4mge6pgwg3865nnl5t", - "percent": "0.0%", - "airdrop": 1378.6520220419968 - }, - { - "total_amount": 300000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5l9UwrmlOWSJvfrGvuSYuYYWjjYCH9qAm6l9/XzQBof" - }, - "address": "noble1364w0rf4mv27j8wxdypmqwtpyl7h6pxzqgu6r5", - "percent": "0.0%", - "airdrop": 5269.722603271625 - }, - { - "total_amount": 61761678, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkRYO2ty/vVAgjPZSz1dswRcqmhJZGdfB09XjbN/eidV" - }, - "address": "noble1364kqjyzwvd5pt9wakhzfe9sufzv09qgz0mn9h", - "percent": "0.0%", - "airdrop": 1084.889701908613 - }, - { - "total_amount": 639790282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AugS4XfVODBU6uBckRXyrYf4Ns+ss5GkijweCJEaKoTk" - }, - "address": "noble136luunjjfas46rk68n2q67a9xzjxewghzl9sfu", - "percent": "0.0%", - "airdrop": 11238.391034696426 - }, - { - "total_amount": 172127878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A40Vvw+OQutIOhNDiQeEvU4+ozbHMjEtQ7RQeUld0Wg8" - }, - "address": "noble13mrcvv3vwgaewll3ds5d07hdmzng3vxlgqt7kl", - "percent": "0.0%", - "airdrop": 3023.553897832603 - }, - { - "total_amount": 234711045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A34Eod+vJkaR3Mlt1gtXGOKlPsG9xojEGxFNa5/CcfLq" - }, - "address": "noble13mglyh8df776rcgxrglv4j6njag8xtkedv8v97", - "percent": "0.0%", - "airdrop": 4122.873663580012 - }, - { - "total_amount": 914451422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A83FkOHu1YD1tebwiVLiVfCwl+0zb61BkpMaZTQ89gM1" - }, - "address": "noble13mfq0e4jrp23qvs4vkajljvdw4ddtupzrncl6r", - "percent": "0.01%", - "airdrop": 16063.017760357601 - }, - { - "total_amount": 1556209534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtlH5fYaerfxoTzhvBNTj3PsDGet7GbeD5lg7TEaxJIU" - }, - "address": "noble13mwjm7rffs73dxqny808376xkpzzqkzvnd8w8u", - "percent": "0.01%", - "airdrop": 27335.975189155346 - }, - { - "total_amount": 119931488, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aund617fW7ijlY/gYZabUK6IuQkIK7EHYOVti37aoEkd" - }, - "address": "noble13m3x3djugv6d4unny64evcu625v7kdl3llya23", - "percent": "0.0%", - "airdrop": 2106.685577191999 - }, - { - "total_amount": 722747631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArjXN5EAVgycnh/iq3SqM/MHUGSTQFic+2MZJSmKz/MF" - }, - "address": "noble13m5kqyzudkhg2eudtd2smew9dt4klmhm0uzswv", - "percent": "0.0%", - "airdrop": 12695.59842513907 - }, - { - "total_amount": 88645405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+wY1co5aoKtJv2RQBxdBAvAZ26fBPRkzW5hU5B5ejQp" - }, - "address": "noble13m6cy6vadlmd7da4tguza4nrud7z9m6cnesxuq", - "percent": "0.0%", - "airdrop": 1557.1223146822254 - }, - { - "total_amount": 437554983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Rg7r5NUnFzTD9AVAbiONylw9EXEOH3lrYPBI2LPtT7" - }, - "address": "noble13mmarctcdyt4vhtx8rxp8q5z0upjkfwamwwj2d", - "percent": "0.0%", - "airdrop": 7685.977946964107 - }, - { - "total_amount": 204026622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwoRpSJhUXBshFzI2xo0nDo1w03ri7pO0T6yrpVDoBDB" - }, - "address": "noble13m7zqaeetak4p9mvf4a9v8ere56szgsl2gwsx8", - "percent": "0.0%", - "airdrop": 3583.87900540852 - }, - { - "total_amount": 1417607776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/nEPjxKP1NnR2Sa1fh/KKPnKtIZlHbMkR5cW/RKvIv4" - }, - "address": "noble13mlkzcd6yhylmckq4wjajldnknsmtca07hymgs", - "percent": "0.01%", - "airdrop": 24901.3324658694 - }, - { - "total_amount": 1218066675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsUhhIFUOM0qM8APdJZecvkTBr8HpSFVyaRZ7KwrZIWP" - }, - "address": "noble13mlh3xjgj23y8t8f45w225uxy7zfzfhguhdgnv", - "percent": "0.01%", - "airdrop": 21396.24496513138 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1YV5inV+kIFLF+pAO4ohHArpESwFh7+aURJAS3nK6oq" - }, - "address": "noble13udze089dl6evvnua5dnzxcprfakeu840palc4", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 1213835659, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aym6wOsUQqWQj+OlHZjq04DEINe3NZVAxRgDytH6LbIZ" - }, - "address": "noble13un0cydl5jncndj76khsplawqasfkxy8p5y4v3", - "percent": "0.01%", - "airdrop": 21321.924029631366 - }, - { - "total_amount": 50997812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlgEJCXXTmcV6F7pW+GQrbALj1i4nLzgHm7HnSfLQYDt" - }, - "address": "noble13uhl4tp3flplqpfnwjhz45req2wj2fjzaj38vz", - "percent": "0.0%", - "airdrop": 895.8144087126566 - }, - { - "total_amount": 69358745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au2cDqKFQjdZVVQZFVyEzYXDu9sJFEExO2MmbuY3FaXI" - }, - "address": "noble13uect2vuvyp34hd93s86jvr6562mcdtdpfg6px", - "percent": "0.0%", - "airdrop": 1218.3378208701763 - }, - { - "total_amount": 428008273, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZTAl2dkovZP02qjoJkgu6M+UMKLWxB0xXUhl/1w85h" - }, - "address": "noble13ul4aenfqnyq9ehhdv9ln56a2we7ja59v6pqag", - "percent": "0.0%", - "airdrop": 7518.282902051176 - }, - { - "total_amount": 12399581912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiQ9yJ3n0ASi7alSF1qf7hRLNQwBuoYMh/S0nfV75Eo0" - }, - "address": "noble13axkauxjxulmvjyskppf8kxec56fyl96m3w0cw", - "percent": "0.06999999999999999%", - "airdrop": 217807.85690928134 - }, - { - "total_amount": 84323293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay+KV/AuW5KDebsLlkYw5Opf+Ob1QQBGs3ATM+gHqvit" - }, - "address": "noble13agdwjs0apdw4ylmw4utgpqpdcqdwrff96tjlk", - "percent": "0.0%", - "airdrop": 1481.2012103479867 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay5Tmt3VwDpe5URgK78yrmpPSBW0VweCxBE3o3pHPMiQ" - }, - "address": "noble13a00dlwy4jt76vfxlfp4y0tpljt6xtktnarjrn", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 251641098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw1XtzAPzPF18vXVK3cSYZoPQncEcWgC4I6oDcf9aa+e" - }, - "address": "noble13a04ryy0khxgxtnp9vgwqevqgsw0fxxcfpen8w", - "percent": "0.0%", - "airdrop": 4420.262606808968 - }, - { - "total_amount": 50847653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AklWxFrvdwUf7Ez4zYqJDgHBB4kcfnSoThyyhKecAYry" - }, - "address": "noble13asjnr5uwp4am3jlp034dxty3mfyvn3a5mxpn8", - "percent": "0.0%", - "airdrop": 893.176754458041 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6J3wiM2FoOCsPhJxYdZWjqblmQMSdngG7xs4oJvjMLb" - }, - "address": "noble13ajzcxlyeq5z6a4s3vg805gueuhz69kmech33j", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 2166798291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBgtUkQLVUkm3nHq7KSUogCJMv1iXleDuPZ+l31e41T" - }, - "address": "noble13acu2gmykq658hht7x7hafhrcjlpkcrynglvju", - "percent": "0.01%", - "airdrop": 38061.419769376764 - }, - { - "total_amount": 956528770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0phiGLWldcQbyreAMLRBAiu9lsvAWy9YdjIkNVn+c8T" - }, - "address": "noble13alnyagpmqjdrza38x8av6yl4uxn6yuxxa8wc5", - "percent": "0.01%", - "airdrop": 16802.137599828686 - }, - { - "total_amount": 572504340, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPQRCY3VStcrfCa7rYOb/lrW1uR2MwJ95EavVutoB3h" - }, - "address": "noble13aluyh72snykxxr6pm20y264xsaed4dtkaypjk", - "percent": "0.0%", - "airdrop": 10056.463536563679 - }, - { - "total_amount": 211069892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgDhENWEtNopDuaegHpDMsYGYXG+YaDOr/ok1PGi/Cvs" - }, - "address": "noble137pj9kakewy6av7w6vfy2ara8cxc28ptmfncjh", - "percent": "0.0%", - "airdrop": 3707.59926914167 - }, - { - "total_amount": 76561119, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UHBRtRVtp/VrvgbJ2+M/cmHahpoLV5tKJdudwkjpMR" - }, - "address": "noble137zwzxw0nvwfyk566zjw5j89zdwrns8fr9ptsr", - "percent": "0.0%", - "airdrop": 1344.8528644202293 - }, - { - "total_amount": 77668173, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApiW6e3sq9ECt6YqifvaJcppGMYkyF2WA8FyMNoNupx+" - }, - "address": "noble137yv4tlzr4j9aqvlczrkdcn04lnlv8dmfsjmyr", - "percent": "0.0%", - "airdrop": 1364.2990893763701 - }, - { - "total_amount": 2985675775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArHjZXuLJiJymTNELUkK+eWeF6NFRSMHHuIVwankmxcm" - }, - "address": "noble137fvwg20etens0khp6nrpcxudn7f6xazefpvkw", - "percent": "0.02%", - "airdrop": 52445.61039186009 - }, - { - "total_amount": 211687397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9YSTI78LEZ7HhV2CWYGAeidrMTTqtMXI17V/DZk6tb1" - }, - "address": "noble137vxjfeydx3a5tak2n9yj6tm3add98qm95z454", - "percent": "0.0%", - "airdrop": 3718.446202662114 - }, - { - "total_amount": 50513797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AozOdNtAq70R4/v92mhU/rvmx+nPnNVeKsfqdl8t7JUc" - }, - "address": "noble137nm0r0yycejyaajxmswyh9r459xw6gtwu440q", - "percent": "0.0%", - "airdrop": 887.3123260932482 - }, - { - "total_amount": 292194582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UVTdHJ5ohOR41oPs8dPI3TxFSG+breh2j0l+zAroPp" - }, - "address": "noble137ldsrkz2qj06g9tvtmqklw5d3ek8knd4m9vwf", - "percent": "0.0%", - "airdrop": 5132.614644396349 - }, - { - "total_amount": 583885266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao+NscoPSlzMnQvObThzf2b2LOaVEc8xqiIqq+9q6G62" - }, - "address": "noble13lpyrt8vc9ctl3cnhpmp2sf8aqflnyvrtppuq3", - "percent": "0.0%", - "airdrop": 10256.377946524884 - }, - { - "total_amount": 3146409143, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am0XLQSAQtld2u+sMYQCjAUdK31hjM8s1lK9PEmUeKtA" - }, - "address": "noble13lzly6934ymemk6k3tzvlu3tl7v7gzq3t6nlnj", - "percent": "0.02%", - "airdrop": 55269.01126669202 - }, - { - "total_amount": 77781050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlR29ZLg85f8jJWklr66zdxGmm765VtPu6PQEl5Nr6By" - }, - "address": "noble13lyzsxvz8yacjvnmxw48tkxvgk8nlr74zx8nmd", - "percent": "0.0%", - "airdrop": 1366.281857637335 - }, - { - "total_amount": 176258371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7mKU1TdaYnqiSP2clnmJtbDhqPAVqTf4Jl36/bKxez" - }, - "address": "noble13l8eg2ltwlam0xt7cz25hz7fm9f9k6an949uvr", - "percent": "0.0%", - "airdrop": 3096.1090722484532 - }, - { - "total_amount": 7973747261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq++fmcqTyAj6TKM2TLqmXvtdptaU1+f0l/WmnhdMsQt" - }, - "address": "noble13lgvp36n5rwqave9684hcrs9l82vah8fkpfsdz", - "percent": "0.05%", - "airdrop": 140064.78724688973 - }, - { - "total_amount": 30697914718, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay/cwWHmhTUy8u/yMD5cx86Hrc1elZQmVs/5rNSYrUXz" - }, - "address": "noble13ll28wzd5yex2nyxx8fr0zewy4ep4nw5d8825t", - "percent": "0.18%", - "airdrop": 539231.6502091644 - }, - { - "total_amount": 60349777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9OY3wdFNOKo9iK9nW96lH8NAU7tAcDsCs4tq7oKTkAp" - }, - "address": "noble1jqyrmszs7ndgjn87ep7gqeahgap4d3urycf6t3", - "percent": "0.0%", - "airdrop": 1060.0886131976736 - }, - { - "total_amount": 435795085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6J80qZ9F9le8lH+7QfCMu5Q45NoFhr0bLkVSYXFS+iV" - }, - "address": "noble1jq8s8ul02z3rayya35e4tp6dqjqsmw8lt50n0x", - "percent": "0.0%", - "airdrop": 7655.064032730599 - }, - { - "total_amount": 58115800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiKk+ZRkwKo0EPiuZF8dx921GkeB9NTnpFFQu8b/PAUa" - }, - "address": "noble1jqt64pcn5f6sqxcsgcdamz9lw7w9gz6lzwnjy8", - "percent": "0.0%", - "airdrop": 1020.8471495573772 - }, - { - "total_amount": 54841460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iPG6vhxlEcT0YCgg9YccMIZE24ln78n4i98oUCU0v6" - }, - "address": "noble1jq3h5a73xvkj9f56vwq036xwwrkkpqc905atpa", - "percent": "0.0%", - "airdrop": 963.3309378613892 - }, - { - "total_amount": 250674422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkO4hyU8ltrQqmaQ6phwQyzUCRCJBwHc2MGQpo1XPwCb" - }, - "address": "noble1jq3mzm9dzqmsj0mxt2z7lxzsavn7l4xwu95dqj", - "percent": "0.0%", - "airdrop": 4403.282225584834 - }, - { - "total_amount": 269825327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwOtsqINCZlg0mR8yOXcFkybFLFN+EIXssfmDE1a8b9U" - }, - "address": "noble1jqhyephs2g4vcakq9aqf30f4d389qyy0yrwed8", - "percent": "0.0%", - "airdrop": 4739.682082090192 - }, - { - "total_amount": 941095550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0w28ZoYECQ8UlOo3UE5KfEReiarJQfBTC/9pVN/RiUg" - }, - "address": "noble1jqcq9h385r62tl6sc4hy2j4sdgwuzquw0cj9mc", - "percent": "0.01%", - "airdrop": 16531.04163891114 - }, - { - "total_amount": 218702165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap2kv5ZMqObnMEU2ojGLY/ulur9Gya0dj0f2pCWwioBh" - }, - "address": "noble1jq7wgdun6487e69w3rklmh2ha7p90ltgkh7umm", - "percent": "0.0%", - "airdrop": 3841.665807616469 - }, - { - "total_amount": 198077300, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3veywMpJ+tXTO7t1CYrUtKqoEjLNHC/9t7jLyuc5vyI" - }, - "address": "noble1jpqnljj2rlf53ujqj4e86l6sm8carljqlnk5hd", - "percent": "0.0%", - "airdrop": 3479.374750016716 - }, - { - "total_amount": 62290958, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvdrVAGfM1u05Rb3UgUQuLfqWYu/cyc1LYRT/VaTQlrm" - }, - "address": "noble1jpqe7dvj99fyz887u9pglhm3v9zf804f0hnaum", - "percent": "0.0%", - "airdrop": 1094.186897840145 - }, - { - "total_amount": 1233227080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax36M6S7/Q61eDb+wT/G5fvVqOwSRv9bA3WX8hqaIp8G" - }, - "address": "noble1jpfqqpna4nasv53gkn08ta9ygfryq38lvt3ukx", - "percent": "0.01%", - "airdrop": 21662.54872814222 - }, - { - "total_amount": 66529728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHg8+mIdTHGtI+0jTQd+A187JA+j8qepWeI4BOzAXsn" - }, - "address": "noble1jptrj2cth7fe49eymtz66kp90u2qn7x7xf6q93", - "percent": "0.0%", - "airdrop": 1168.6440381037107 - }, - { - "total_amount": 572443283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6NHnf+GMGMGirR/whR5G7APb5/Cc8/4q6T+qAvFdv5A" - }, - "address": "noble1jzz9autrg49ngr7qh5z9vyxkln7mxmfkyezspj", - "percent": "0.0%", - "airdrop": 10055.39102505372 - }, - { - "total_amount": 459012800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1CUHSS3PCTaYay2nj+SssTc9/h2redBfEC69F2JDwJ3" - }, - "address": "noble1jzyayj8fk0csd5trurr9t7p4fygf9zyun3pprk", - "percent": "0.0%", - "airdrop": 8062.9004245033275 - }, - { - "total_amount": 179078925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/d/r8/uBZ1a/aBo27JzV2tO+CA65uZe9HZoGdUQvB0" - }, - "address": "noble1jz96sshlu8t2ft5ep6yl8jkgzrnqpwh64mcdaq", - "percent": "0.0%", - "airdrop": 3145.654196140281 - }, - { - "total_amount": 334923944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2UOxZ3/kDAIqvoCyvrrJqqP9zr/CMng6BzkX/K6swSq" - }, - "address": "noble1jz9l33fmppjfvgnhpx3f2y56aup73hxgqvkckz", - "percent": "0.0%", - "airdrop": 5883.187593578934 - }, - { - "total_amount": 153032054, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJA+Hrw/pzfK9i2SIm+wEA5ClDr/cK8+R1wFRJNYkUS" - }, - "address": "noble1jztjx6f4zml0t23gzf544a9s7ejjqr0djx4fmt", - "percent": "0.0%", - "airdrop": 2688.1215799629467 - }, - { - "total_amount": 96601724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ZGTEIc99FNoC4nYQsKqd3DBsjW4PaYzR8sMLV4xeVF" - }, - "address": "noble1jzvdq0hfhzlt6ct6p73z634n6hcqutthspluru", - "percent": "0.0%", - "airdrop": 1696.8809615926905 - }, - { - "total_amount": 9784590674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au6ZaS63WRprqrEGDyt4nuqvfuFqZdKR8fWnbcThfkUR" - }, - "address": "noble1jzv43gtcsatl95ztj6dn4edq6pd85tnajztxhp", - "percent": "0.06%", - "airdrop": 171873.5954617952 - }, - { - "total_amount": 103915885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A803uqOBsmEpCYg4bPKBIqDvnHcSu781WuZJg7ChcHfI" - }, - "address": "noble1jz00whka2nx944jczcex6cp9edyylftq7dq5nv", - "percent": "0.0%", - "airdrop": 1825.3596267449163 - }, - { - "total_amount": 61016031, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ow0rSYCUYjvhIYKkFPKgCEKRb0ftUpZuvmnSngX96W" - }, - "address": "noble1jz55dexnlwcmslv64uu4cpf95a30hqa6nrj3w2", - "percent": "0.0%", - "airdrop": 1071.7918590754075 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmJ8tI2Y5RyXJEkQQI9QhePzF2I6GDLjz6yUndM9lwVM" - }, - "address": "noble1jz6j3kvg2p7nvr3tm662tr3peaq27arl89je2t", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 102504009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhRbeTJaKaEELY4uVwkEeFRib+3p+s4TvB+qgOTzgogF" - }, - "address": "noble1jzlxywucspacqdxa76sfurwd29vwzcz2dkke5e", - "percent": "0.0%", - "airdrop": 1800.5589771775271 - }, - { - "total_amount": 92501659, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyLUmei8JSQxHG0zwED3Mxj3fPfJ2k4DXp+jhFYXLdTo" - }, - "address": "noble1jr80vtajjn5hag3r62xj3vdtnx36vrqd9vugpt", - "percent": "0.0%", - "airdrop": 1624.8602775747474 - }, - { - "total_amount": 1566384868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0XCeiH9TAKrsxSDefBYNlWAS2mW74N4K5W1LVX18aGz" - }, - "address": "noble1jrg2gwxs4789swnzwt9r43h9kqmfzdgkthp2l7", - "percent": "0.01%", - "airdrop": 27514.71248107414 - }, - { - "total_amount": 50155840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avsg1LUhs/y3Nct0wexkg8X1htdfLtOF0oAKTsGq6X6E" - }, - "address": "noble1jrghqg2lj6maqulx2sj5e6gl7p30kp896n3ync", - "percent": "0.0%", - "airdrop": 881.0245457802505 - }, - { - "total_amount": 55163441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5fU26rDHo9L8E8El70/z7to8mAUBg/CT/Rzyk4CwTQF" - }, - "address": "noble1jr3c0m638sxhz400py08ue6grt2erfn56jn53u", - "percent": "0.0%", - "airdrop": 968.9867730398025 - }, - { - "total_amount": 139978769, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxlzrTJTl6f2M6lIzyV1s52xWxJ2CQwOlEEWLRRJlroV" - }, - "address": "noble1jrjc0c482qsvf5lgepg587cn9dwf92pcre0alz", - "percent": "0.0%", - "airdrop": 2458.830943258125 - }, - { - "total_amount": 362378853, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AztP8w1ayzRvEc+JszhvQWZQmRqtpY6iICKrO+7up8Go" - }, - "address": "noble1jr4jsrfsql3ncwhrxq0szwxlzraswt94tp7x6l", - "percent": "0.0%", - "airdrop": 6365.453442005819 - }, - { - "total_amount": 69694546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoyVDVMmbqSPpXZ6UrlaK7GucHQ4phiu6xOVGwbPrxeq" - }, - "address": "noble1jyrw9nphgu4lctznge8mhsrdhhttr3ucq7h5su", - "percent": "0.0%", - "airdrop": 1224.2364146031803 - }, - { - "total_amount": 245309527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0yQnj1Gx5vU4ypT0Vl9v8/sglzaRCIXz7tSfPH8jiMv" - }, - "address": "noble1jyrk7uzew05laywh88vq2pvegdqxmsjt7jqfcz", - "percent": "0.0%", - "airdrop": 4309.043864099238 - }, - { - "total_amount": 255850012, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atlz6ETPe189/aFiHeXLw18CyGq7jviGkGUm2h1F0ykv" - }, - "address": "noble1jyx7v2dg2ed9lrzgcne6eghknck3muveplq2qv", - "percent": "0.0%", - "airdrop": 4494.195304279056 - }, - { - "total_amount": 1191510632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5GsUNru/ttPyz77Bd06CqVEUUA4zKbgCGiWQdKJpwvS" - }, - "address": "noble1jyv8hhkwttrlxdss04usywapphlvkxgy3rnzzu", - "percent": "0.01%", - "airdrop": 20929.768364962867 - }, - { - "total_amount": 60472112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7fmPWYgrRetdTn9RsukrkKTCSfOKA7vwJf1cPhKuEt8" - }, - "address": "noble1jys29nftc0dca67lwaj93pwjhncntgd9z5zy43", - "percent": "0.0%", - "airdrop": 1062.2375182465778 - }, - { - "total_amount": 411013482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvGoRLm8BsaucIpY/BI54slQRG7bfSbhCgy5iRg0A+VJ" - }, - "address": "noble1jycpj3s5rk4z6hgnpepcj84csqg5pl5xzu0cf3", - "percent": "0.0%", - "airdrop": 7219.756787815919 - }, - { - "total_amount": 792096093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyTdnNSmuSgWLAqzq/SXPSUlILpamkF9x76CH8G+iPQ6" - }, - "address": "noble1jyehgmj4fr2r2us2fq9dj50xretqk70h4g78y2", - "percent": "0.0%", - "airdrop": 13913.755617484147 - }, - { - "total_amount": 252012185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AumlD5cMHClBfUpYQHi1bFUMAP+6KrKEgdu1HPvCjyYO" - }, - "address": "noble1jy6ht5xcnzeqmlz8npc4x33ll9s2lxwazh0j0n", - "percent": "0.0%", - "airdrop": 4426.781025314568 - }, - { - "total_amount": 159432718, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/5MxdqYlmqdPkdnH9tySv9HIP6pkomlojy5kNMrAOND" - }, - "address": "noble1jyavp5cx3scklpw7v9p3g42esdjcwrwvuyvxr6", - "percent": "0.0%", - "airdrop": 2800.5539924854365 - }, - { - "total_amount": 208071216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azs1hqrSfQu8Cc1VamshX120B2XUwi0qw+Ll11B+U8GG" - }, - "address": "noble1jy7hg7q4mw5kpj5r6xa5akvf7hvtdjua4c7usp", - "percent": "0.0%", - "airdrop": 3654.925300151376 - }, - { - "total_amount": 1313972536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A43QcxrLXLjQHRDOo88Rn5dxDoZFYmf6ugtoxm5VdbaY" - }, - "address": "noble1j9fthtp9855fmhl7ylhm9tr6g7f7mtfek8w50a", - "percent": "0.01%", - "airdrop": 23080.902576791137 - }, - { - "total_amount": 2658413611, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A25/J4uwK4b2ZfFdNjePJbsXsXhefDFIocpO6SA6k8wC" - }, - "address": "noble1j9tlap5vcs76uv4kuyeuuat0xcjgu0vm05cvp6", - "percent": "0.02%", - "airdrop": 46697.00764910548 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxQyLnGUT3j64VezsI+MUBW4aOnXIuMS9nFGPaeOdZcP" - }, - "address": "noble1j904g0ehuxt5pg87g2sekduygqeuw8ffv93t6e", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 125875896, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahjx1HYZmQtgyXR1otYAFifOky8ep6VynSM6ToGPv+VN" - }, - "address": "noble1jxxv57d0dkvzdd5aw7rgh4qfnyvp555h39wj0f", - "percent": "0.0%", - "airdrop": 2211.1035145275614 - }, - { - "total_amount": 213758848, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8rnRvJsyotJgyIWDIgfZHl4nBcq0mqzuvOL3kPGZgYZ" - }, - "address": "noble1jx8yaezcje6pqzt2ts3wzjpttg208fz6f60gq6", - "percent": "0.0%", - "airdrop": 3754.8327765163463 - }, - { - "total_amount": 265401754, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3EgEXx1cCwJmmjK8nD2Rj8tydXE+mMWZ7TnqVqw98mW" - }, - "address": "noble1jxfjp0xhwkq08kxg7nrnfw6ququ5n3f3yqszv2", - "percent": "0.0%", - "airdrop": 4661.978740005786 - }, - { - "total_amount": 1526309206, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzpFUdYgnnbo7SUVjnTBWbDghXF7FmL06bq3Cj/8vaTL" - }, - "address": "noble1jx2wxdae8mpys6ljqr9skyfwhnxm7pvnw2yrk3", - "percent": "0.01%", - "airdrop": 26810.753741465895 - }, - { - "total_amount": 161668204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9suC0jpXQPpPkhsirEtz8FPBKwOpf9+6UKgFgLjvkew" - }, - "address": "noble1jx25nh7w3mnklqdntf4828hapy8e0szwv528xc", - "percent": "0.0%", - "airdrop": 2839.8219628304278 - }, - { - "total_amount": 101336248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1jCdcN+qc3YvyHz5jjTqoRlm/mOsAnFfEkQqqe6WVdd" - }, - "address": "noble1jx2k72t9e8wvqpm95wcvlhq5v65l7tmjvunrc2", - "percent": "0.0%", - "airdrop": 1780.0463887211304 - }, - { - "total_amount": 176418808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+MHfxshRkw5H0UDZ0IxglCOQkVF1jhZWJpgdh3ajH6r" - }, - "address": "noble1jxv0u20scum4trha72c7ltfgfqef6nsc6fp8vp", - "percent": "0.0%", - "airdrop": 3098.927267199457 - }, - { - "total_amount": 290871279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuP2SzgWFUkaE278hArjYqG6geeUFPYCvsA/JEEWQu5a" - }, - "address": "noble1jxsalvf5pvkq406fz793fyzlsjg754qh5vlajh", - "percent": "0.0%", - "airdrop": 5109.369845296092 - }, - { - "total_amount": 986727057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlrB/0CM4Huwyj25POxdbLXVsq1gkPpUvMq2pQIbZpPE" - }, - "address": "noble1jx4gkyyz0rf38wtvvc42kk7x0kgynffpffns4y", - "percent": "0.01%", - "airdrop": 17332.592918441966 - }, - { - "total_amount": 57789684, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7YiBb+E6fKsa329FUCNPmejFf17CLqHBYoAAP8CrAHD" - }, - "address": "noble1jxc7ph07y83qwsn4gud25rv7srhkdxt05j5j3r", - "percent": "0.0%", - "airdrop": 1015.1186800357488 - }, - { - "total_amount": 118706927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhZZ+Yct+yhySef/hDao/8hEekuWrKluw6pC5pIip3n/" - }, - "address": "noble1jxumnl68xhu8dqcl35dyllmtrz5jq5mxkcv637", - "percent": "0.0%", - "airdrop": 2085.175254589383 - }, - { - "total_amount": 334600000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnJ4PB1sV5usSHhimL2UgsINO8TnLjbl49GSYWLfkbsl" - }, - "address": "noble1j8gpqjk7phszpkyh0u26mnf53pca3nytal88ku", - "percent": "0.0%", - "airdrop": 5877.497276848954 - }, - { - "total_amount": 11000125845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiaznooIbzblQFG13EPnxmo/NPQJjk3EFFl8vAovB587" - }, - "address": "noble1j8g5qjxdg3msskw8y5jts42vywdvfkg38nuuu7", - "percent": "0.06%", - "airdrop": 193225.37268076296 - }, - { - "total_amount": 98065184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZAEGZ25oeOlOvNUgYGHYrjdmGxS8SIIx8n/y2MHNxt" - }, - "address": "noble1j8gkhtllnp252l6g6zwzea30e7pvzqtttc0j85", - "percent": "0.0%", - "airdrop": 1722.58772239597 - }, - { - "total_amount": 57697536, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Ut7HfEKx8pMZAE4DNybft1ykE1vBTJN2ALkKaflLbp" - }, - "address": "noble1j8f9hzwjh0a9lr5nc85992893rj224j78dnxgv", - "percent": "0.0%", - "airdrop": 1013.5000320409279 - }, - { - "total_amount": 67612530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnFYAQlLXDoNThocaLNjq2cDvphLx2IOyA+x5IG47E9U" - }, - "address": "noble1j8t9s7psm9q7u7janagzn03vja6whdgfmyjenl", - "percent": "0.0%", - "airdrop": 1187.664258684603 - }, - { - "total_amount": 2304030724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZkN4D7kGlhi48308OtqOzBCRC4dsqApx6FS1JTL7r4" - }, - "address": "noble1j86t3yyrejgxf0eutgcr4hdf2lq0rc8fum6gde", - "percent": "0.01%", - "airdrop": 40472.00928298363 - }, - { - "total_amount": 84076788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Hqc3fi9y0CADAVOvgHIBS/b2ZVCT+NrMP1PB4VUvJU" - }, - "address": "noble1j8mrxeny7pqdhymuchpp44c9zg5fvme0nwd3dl", - "percent": "0.0%", - "airdrop": 1476.8711671135886 - }, - { - "total_amount": 61805522, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aklb8Yc2Ne4g96jBD22X3RbLEUBRisLixKi52Q5ktsMO" - }, - "address": "noble1jgzralvsamcjdgnqpjq2cjr099uqfrcfsa4ekv", - "percent": "0.0%", - "airdrop": 1085.659854301339 - }, - { - "total_amount": 60371068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwUq/4gABBHWMnh0q4in/HQ9rfch4slvdFqDfXqw4Hhs" - }, - "address": "noble1jgdxy8sczlzxr2ca59x97vpt72ms4cm36sreg9", - "percent": "0.0%", - "airdrop": 1060.4626054108278 - }, - { - "total_amount": 100112930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/kjKg2BwkIYGyD//WhJmUZsvqAf2y/0UTifKZs6fv0Y" - }, - "address": "noble1jgshzqh20xzservhuvs57r0jvdz6m6z8c8xd6v", - "percent": "0.0%", - "airdrop": 1758.5579003358337 - }, - { - "total_amount": 1075676849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqybY4Uec7sCY8U6boC7ZEPI/x6U9hi5Xoe3KmlWZKL5" - }, - "address": "noble1jghl3gyhh6ct3hf0x08sgnskhd0qw2wnfp6h2f", - "percent": "0.01%", - "airdrop": 18895.062016637665 - }, - { - "total_amount": 80000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A05YWeqVam0Yir1AmktUgCSER5wA4WfnndetjZlSmDrL" - }, - "address": "noble1jgcf9ej9x2hq0755t2sdlv9vnay4ujn7w29y49", - "percent": "0.0%", - "airdrop": 1405.2593608724335 - }, - { - "total_amount": 198301102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2882ypr780DP0Sbalei6BjhT/IrTiHcJjo24HEuwb0G" - }, - "address": "noble1jg6hxya37m88w7uzu043u4lwz0yqfhqz9fqlt4", - "percent": "0.0%", - "airdrop": 3483.305998210241 - }, - { - "total_amount": 112273069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amlpo1+Sva7iUp7RnV6D9bvAqwURWfbBqgnPmkzNOwzR" - }, - "address": "noble1jfqjfxscdzx897nj7sk7ctxutx4jvnpe5ft3yz", - "percent": "0.0%", - "airdrop": 1972.1597648265831 - }, - { - "total_amount": 4269492506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3q5rV5Ib52ASstYXHvaCbAoItsbb+d1xi0WZUDNFU/o" - }, - "address": "noble1jfztx6g0jvt6s7zswjutg3jh0xq3gka6q69uwp", - "percent": "0.02%", - "airdrop": 74996.80387789007 - }, - { - "total_amount": 51892593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az7b3BytTLDh8/6ixIzfZFDZfLNUKlps9Sj1E0Ynv8HX" - }, - "address": "noble1jfvhlyh55k5vc59sgdhltnpthajmcy25ytryur", - "percent": "0.0%", - "airdrop": 911.5319009149166 - }, - { - "total_amount": 107766946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhM08ku4k5sqWbXeanD7EuhyqayuluccQWufGIEV/qim" - }, - "address": "noble1jf5h7txl5q33yjnjkm476evjxngk9ekye8twar", - "percent": "0.0%", - "airdrop": 1893.0063707391757 - }, - { - "total_amount": 1552524960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As7R9fDUnwsUVLDr1cxspp+cY9UfXfUf7i9/w+N0EzKA" - }, - "address": "noble1jfa3vw3r50vyww2qwklxqn6qu06d3uf7vqufw8", - "percent": "0.01%", - "airdrop": 27271.252912851254 - }, - { - "total_amount": 539373912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxfM7jJHM/KJyLpAy92l8AVH7tZ7Ziyep7TytSuUeEEj" - }, - "address": "noble1jfamvjge3sjy9anu6frakxs8dy2qwwr43fqzcw", - "percent": "0.0%", - "airdrop": 9474.502985604802 - }, - { - "total_amount": 5671724789, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akte1FSptibynaFniKvCGBST/rmmxRc1oUFTJ38PMZ1F" - }, - "address": "noble1jflpphw5yqjye056ahj58hmhnks3urjzr9taqc", - "percent": "0.03%", - "airdrop": 99628.05440043098 - }, - { - "total_amount": 726221824, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzCSGuFp47mQtTZIX6UpOPm/4ksVTqq+moeN/B4+cLoV" - }, - "address": "noble1j2yeg4d37sm7e43jyyu5g5k7qq3ggh6n8kgvtj", - "percent": "0.0%", - "airdrop": 12756.625203073163 - }, - { - "total_amount": 594177295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Bi9cfQ+SG4Gbtnsbley0+l9+X97LLFiUuTL3sr0ltV" - }, - "address": "noble1j2x6r8kjrl2z4lps2x7wsyf69fdysdl0h7zp65", - "percent": "0.0%", - "airdrop": 10437.165072707643 - }, - { - "total_amount": 68470353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqWgmCA8Fhcljx39Wo8n9FLWSdiqduBb10c4un209cjB" - }, - "address": "noble1j28qh3anj9r02am2a9sfnp8cahrzy7csk300c4", - "percent": "0.0%", - "airdrop": 1202.732556193624 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArZig2a77UK5WhBFHVIJU+tF0DhmmjIgMwFMB2kPhakY" - }, - "address": "noble1j2jl9kw8f3qru4q7trnq5jtglf40hx26275ks0", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 102802487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkiESXwnF1qTnztIV/sYtqArXqAEnxYNOlyUrP2tPppH" - }, - "address": "noble1j27u6q79f4wjj5lwk4c0r70lxej3780ukzxgva", - "percent": "0.0%", - "airdrop": 1805.8019647214583 - }, - { - "total_amount": 198400985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6LweTHaiFkNbUb++FOYpt5AhWamqDtzDFj+8QmQjX2I" - }, - "address": "noble1jtre6fe9q38alahwkk6etvnx39v687h5p0rdm6", - "percent": "0.0%", - "airdrop": 3485.0605172195164 - }, - { - "total_amount": 6968121327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzO+TGThl0nEkUxJr/hScMIfBRhAUA9FWWlZBUFeqY50" - }, - "address": "noble1jt0qcz2y9p58cpse4etjms804qdl3gunelu34g", - "percent": "0.04%", - "airdrop": 122400.22153076992 - }, - { - "total_amount": 240857989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqCTipCzY9HXuqrY9pDj6SASpruSSpsF0DSOa6AlFZUJ" - }, - "address": "noble1jt0tqm0vs9nd923vzfe0sa5xxnxtmvav665jxa", - "percent": "0.0%", - "airdrop": 4230.849296039496 - }, - { - "total_amount": 865087590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3uktEJIK9EgrysbANEctqBJDhd16bB2iIzAiQx9EqoT" - }, - "address": "noble1jtjzzryynafuaaeg2v664sway9lh00pckazeqx", - "percent": "0.01%", - "airdrop": 15195.905422775924 - }, - { - "total_amount": 50060516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlWpX9ss896LjJWOglVKs3NeBsSr7M3O3367wRmJWmoA" - }, - "address": "noble1jtk5d8498hthgql4anf0demce3n4tw0v8h7wuh", - "percent": "0.0%", - "airdrop": 879.350108988803 - }, - { - "total_amount": 383393051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awo9UZ2LbPdTqqausMeb+maiNFArLpvQg+YpT+DlkrCM" - }, - "address": "noble1jthnjdm5fw2kev08dnzpqly079a8fura89g5gc", - "percent": "0.0%", - "airdrop": 6734.583422639904 - }, - { - "total_amount": 238798189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6U5Yk7h//nFGRHQpyJZ/USml8Uict0kcloT1I+tsoqg" - }, - "address": "noble1jt6eumn7xkr6f60l5f6m4tww9mmz89g66myy4s", - "percent": "0.0%", - "airdrop": 4194.667380645433 - }, - { - "total_amount": 612159680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8Ptbxeb1cPqtFW9BvZaY69Sd98ur4L1SqpN2CZoG4C" - }, - "address": "noble1jvxc8hfd2x7s6mrs2j8qa0l7eruz8ndduurgkt", - "percent": "0.0%", - "airdrop": 10753.039008358417 - }, - { - "total_amount": 76425234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak3Xx4t90gw1j7fM/+NsBdqE5JkTBhneI85s1+AbWByU" - }, - "address": "noble1jvsfudf0jn5t76jtfgpe60cpdujf0edme9dnle", - "percent": "0.0%", - "airdrop": 1342.4659435670774 - }, - { - "total_amount": 511375879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6V456WLYDrar48tPTDZKMd91ej2OVH/Jq6KlLthIhmS" - }, - "address": "noble1jv5cv43n2ak3u7cj7k82dkvgzynn8t766ly5vk", - "percent": "0.0%", - "airdrop": 8982.696761113986 - }, - { - "total_amount": 59914330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiUX7qTit/2LgbuMjyiZ0qMgmGtCLfiugWpiGEEF+0c3" - }, - "address": "noble1jv4t4mcgdvlkznqjm03nupw2av3ld52qlalds4", - "percent": "0.0%", - "airdrop": 1052.439663536251 - }, - { - "total_amount": 51259773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlFD0Yw6wD1xk9l199Lx+WxaFXuVGNzfAGqxYNlmIv7u" - }, - "address": "noble1jvepr56jkvx5jaxrqx6w890v9k3j2jas96se6p", - "percent": "0.0%", - "airdrop": 900.4159480555753 - }, - { - "total_amount": 871751558, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5D3ZvoVcsgwqmH39Ns4Z5gRqmxiPn0JfRj5XGi9NX61" - }, - "address": "noble1jdq9ttay9303huw58rprqcwx6sytn9cv9w9w9k", - "percent": "0.01%", - "airdrop": 15312.962965432853 - }, - { - "total_amount": 96016812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4IPhL9vy0NwXP2UiAmiieUUDFPXjshM4De5ZqzmfTBa" - }, - "address": "noble1jdq00ad0c4q8xnny30fg79ns5lw2vmtr3c2wx7", - "percent": "0.0%", - "airdrop": 1686.6065483016075 - }, - { - "total_amount": 6300270376, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgfITP9ePk+2HOxNJAsnvIH6DIVQAnB21z9ov1PRb9kK" - }, - "address": "noble1jdfdqv73xwjmpwce0eygrntxx36f082su5lxp5", - "percent": "0.04%", - "airdrop": 110668.92402376609 - }, - { - "total_amount": 3632318153, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+7RwjdU0WOOceNu7mYv2fJiYY1Rp/N9Mq+TyIyiN5q0" - }, - "address": "noble1jdtlvg9asqmtklr7mxajt2dynd35mqg0dnn3d9", - "percent": "0.02%", - "airdrop": 63804.36357712648 - }, - { - "total_amount": 52462255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtXXorg2CetfqQKOGQXTdcbKEVquQgBo6eI2qthsnUzI" - }, - "address": "noble1jdn767m5qwzmqys9q87s77qv3fqjq3knj39ydu", - "percent": "0.0%", - "airdrop": 921.538436640333 - }, - { - "total_amount": 380921864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+m/39cx57kWgaLBTugSEsuZnATqaqPpFL7IEUQX+o+1" - }, - "address": "noble1jdkd57kyj0ps6y8ev2sktxzteavsqzm8c7y87q", - "percent": "0.0%", - "airdrop": 6691.175189337201 - }, - { - "total_amount": 1059079401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZLSucQ9O/VvwF88h6G2wSmmaPexW9izcmlc8BJI+Ad" - }, - "address": "noble1jwrdsdzn357n9kmk52nydwnv9876uj3gezx7rs", - "percent": "0.01%", - "airdrop": 18603.51552703025 - }, - { - "total_amount": 51495525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A57kT4iuMu/znO40xE1kddm1SamuLqxgViNItEhUWwbR" - }, - "address": "noble1jw0fc07j8fsrhyjg5ntvd0juews7d2f7amwu5m", - "percent": "0.0%", - "airdrop": 904.5571068661303 - }, - { - "total_amount": 1799684156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzmVYnSoqUXtbTPKuOv8W7yWkIhWRRMQ2j7ohxsx4TCB" - }, - "address": "noble1jw5ukhf27qgd5ds2rfh5jzqajmfhgelx0m3d5m", - "percent": "0.01%", - "airdrop": 31612.787585410064 - }, - { - "total_amount": 1241131666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az059sOtc1FReMDq+Ikx5fIA9ZDGU4vKz31/24L8Al/3" - }, - "address": "noble1j0psv87p6uet72d76cwu0cz9swz3u23uyav4jk", - "percent": "0.01%", - "airdrop": 21801.398646521233 - }, - { - "total_amount": 2210642374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiTWbD04WEZyQed+oPhMIXhl5JRmOgEUzYf+3ah+nfmq" - }, - "address": "noble1j0pk9g7tuuhh2c3yyq9t6ymxktd98g2xm22ukc", - "percent": "0.01%", - "airdrop": 38831.57362005949 - }, - { - "total_amount": 97094075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlwOX1TeD3KdmkOC+lSlD71aZgKvtKFxCwOv33wFPOBj" - }, - "address": "noble1j09xwnlqxjk506m9y76pwyu5vf7pv70dqvx9ja", - "percent": "0.0%", - "airdrop": 1705.5294722375015 - }, - { - "total_amount": 242558249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2I9aPb9lPy+8asCGLaFpPAWbjJS6MKxvB8Eb2IjhPv1" - }, - "address": "noble1j02zrssj3kkzsw3e8pt20zlqveekx3d7kv7fte", - "percent": "0.0%", - "airdrop": 4260.715624550958 - }, - { - "total_amount": 3734929358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/bnq8sVRMP4ndQl/j9zVBIYhNvNaozj/nrGMHCkq3eN" - }, - "address": "noble1j0t06lt5p8ap7k49e87dtlqyvejhz5kkkjcu8h", - "percent": "0.02%", - "airdrop": 65606.80553158461 - }, - { - "total_amount": 102588077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26GFzuPMoPkeAxb6h4vRgcwwtJH1lsqg75dmLlcg1yC" - }, - "address": "noble1j0sjpzrqjqewqjpul90xtjpne8f6j9h9z2cmp0", - "percent": "0.0%", - "airdrop": 1802.0356939769001 - }, - { - "total_amount": 217936674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az5prVmG902jyAoniWmvN4ZugpNexX2ChfMOR04K1ZgU" - }, - "address": "noble1j0nunangfexqx46m702m4fhpxngzg9v9kk2e88", - "percent": "0.0%", - "airdrop": 3828.219390198799 - }, - { - "total_amount": 849156955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4bLcHza2uX/3lgGj36K3rEwE5EznT/aGYAAC8xTPAgz" - }, - "address": "noble1j0clrcqrzca52lagpz27hwtq74wl2re5ayq4ke", - "percent": "0.0%", - "airdrop": 14916.071998296024 - }, - { - "total_amount": 750895150, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arw4sgovemfTwLyBzdAWeeKow9Opv8JQgW48wZPW/qqj" - }, - "address": "noble1j0l56g9hglw6wdaksczjukek87v6mfvnktsvzk", - "percent": "0.0%", - "airdrop": 13190.030482140128 - }, - { - "total_amount": 3979007631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvuWiJyDlG9W4xlbWftOyNXA/tvv131HGrsZ+TDdmp8S" - }, - "address": "noble1js2p0vzlwh4r0wruz8hy29m73vn3jejpwfhpy5", - "percent": "0.02%", - "airdrop": 69894.22150556995 - }, - { - "total_amount": 79960000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axmgpcv0PmLgVbRtjmo0wD4ex6ZDiObKD8gACBUDXOBW" - }, - "address": "noble1j3qhec6fav85p82s84n6luuj0tjpdnst25w9kt", - "percent": "0.0%", - "airdrop": 1404.5567311919974 - }, - { - "total_amount": 57712868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyNrCOxW9ka2vxjBovmzU/OU1TpDzQzN8W3MCLBtr8l6" - }, - "address": "noble1j38s5svukmg5s5y9zpwtxjvaf8jmlxg6neznpz", - "percent": "0.0%", - "airdrop": 1013.769349997439 - }, - { - "total_amount": 1090046459, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atq7GTnsoAIb2NM7aPrVHxpCyCjd02g/C7zYkzkIPp7s" - }, - "address": "noble1j3vunhr2xkyp8v9ukynuxk7rewkrmvl38z57c7", - "percent": "0.01%", - "airdrop": 19147.474878694993 - }, - { - "total_amount": 250544484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjcePkCKCdIHrYkhl/EjF5+zBqAEyv7hzPXUDetYNXF4" - }, - "address": "noble1j3n082u6j92w6l98lh3qveq2cc4yq4fh74f95x", - "percent": "0.0%", - "airdrop": 4400.999768199421 - }, - { - "total_amount": 50068790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21WUn5MkHALQWksg3GVRRt2+WoCiZ50j8HGn/RUMayy" - }, - "address": "noble1j3e63aeqetwtgpwtcxej2mte495pvk3ejxrjw3", - "percent": "0.0%", - "airdrop": 879.4954479382012 - }, - { - "total_amount": 1989588900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMsx7yhp+Lg6A/2v6myKjpjEmSbOpaxdc+k1ekF27zE" - }, - "address": "noble1jjwf2052uy7fvl8tl65lgxnyr7mggc7vz79syc", - "percent": "0.01%", - "airdrop": 34948.6053251611 - }, - { - "total_amount": 197340669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar5vV0GTXfFA8FnA6Wpwpd5g02r2R0yhj/406Qk0QWO6" - }, - "address": "noble1jj5warjav229mjxksukfuge3gp98s6zt2290vp", - "percent": "0.0%", - "airdrop": 3466.435279913481 - }, - { - "total_amount": 839500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlS5Wo6bQ1ScJvGw7aQ7OG6f/0iFcXKqI22cXmNYwQsJ" - }, - "address": "noble1jjugyg2tl5aqcrgqm9y2amny75dt7r5eyc4c9u", - "percent": "0.0%", - "airdrop": 14746.4404181551 - }, - { - "total_amount": 71190720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awo9gPf77KdDzP0F1AoK7lME1mL74sZu7+C/VntaQTGD" - }, - "address": "noble1jn793kawdpg0drkpptc3eyc4n26twc25mhg9c9", - "percent": "0.0%", - "airdrop": 1250.5178210906047 - }, - { - "total_amount": 8927968373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax5wB5yjiKcLeuGhjnuG9wlYQeHzSoM1OppLFU78d7kt" - }, - "address": "noble1j5xr0pu09z747dt507hvuc9qzhqjp286gvfwcw", - "percent": "0.05%", - "airdrop": 156826.38912164103 - }, - { - "total_amount": 89500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyLOIkG8icg66IdzLT/BRd7OFv4hImnRnjs2G1/8/NaM" - }, - "address": "noble1j58azmeyl944mjq7eem5tf8agc07lme2a6ktv6", - "percent": "0.0%", - "airdrop": 1572.133909976035 - }, - { - "total_amount": 1194817148, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A82TSf4CtL/MDD/5JEtxAH03OPCPRWmhAHrbtdJ2C2iw" - }, - "address": "noble1j52rrjkrg8uztr4vnr4ckhlqkw2scwdvmaj6al", - "percent": "0.01%", - "airdrop": 20987.849771973797 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwHS5zdjDkjgJckkHqEqnEwhKuNMH6b6J2DTW8k6VXyi" - }, - "address": "noble1j5v6fk06n64807uafcc4qgtzjz4sqjmmfhlsuw", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 348281733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajdgt1qc/B+6RqUYw62zVN0YSL8b7PKUV2exnTePo0AW" - }, - "address": "noble1j506lzkaczca83xzzlhx23gq09ml9fuhdlcrzd", - "percent": "0.0%", - "airdrop": 6117.827068989044 - }, - { - "total_amount": 688597473, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnbjHu2ItNtIt2HzbWftmJrKBS89t8Zu/ZpFVeRGP/Jj" - }, - "address": "noble1j5nny5u40juv65pjl0al32hpxa6purkswyqsy2", - "percent": "0.0%", - "airdrop": 12095.72556007941 - }, - { - "total_amount": 927552319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhinI1Wov2jhSinDQp/FQb6OB17uWPptL0LABQE8gPsF" - }, - "address": "noble1j5547f677c4qhj4y3tm28a6sz3fkpmeu3u7y8g", - "percent": "0.01%", - "airdrop": 16293.144737171046 - }, - { - "total_amount": 1728928087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFJ7qRMtTqADIFzGkW6CphKsU8CsFAwfmlmbrvduxLJ" - }, - "address": "noble1j54er2utjnzj97hzrw7al7w77z7m4g5w47m3v2", - "percent": "0.01%", - "airdrop": 30369.90473165024 - }, - { - "total_amount": 123647318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq3ksWUbLZecsesY22d89hgXljR9k5w4mIwku7qPA59t" - }, - "address": "noble1j49050hrtaeer8nvlwu33mtd0shfaygt2eeqmf", - "percent": "0.0%", - "airdrop": 2171.956888328382 - }, - { - "total_amount": 191520007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+VFn6OekBKmVBrn2TAQrG7KbFdS0hLsG7sy1zjD4THJ" - }, - "address": "noble1j42j7hhqxaf9e3ekepa43frqnzddqtx9w66gh8", - "percent": "0.0%", - "airdrop": 3364.1910328888002 - }, - { - "total_amount": 209070628, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0QWUVjjcL2JcabnYNRLozkyRVMCceYTMvriKYt/d892" - }, - "address": "noble1j40u42q2cxyg2hewxd6y6vze277adqeg38max9", - "percent": "0.0%", - "airdrop": 3672.480713505979 - }, - { - "total_amount": 132034775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuyZ8rkzhXGF64Eukg4TXZDH+eEqtw78VeKhAjyrv1t3" - }, - "address": "noble1j407mxwccvf94al0a7flhayes466g67xlf3x2l", - "percent": "0.0%", - "airdrop": 2319.2887941179447 - }, - { - "total_amount": 180735058, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkJbjG1OrwX2yM7WTaX9F9TTgEAdIazHNbDhPy7edWXs" - }, - "address": "noble1j4s3kmj4udxy5xg7yza33u0dgpw4469hhpnfps", - "percent": "0.0%", - "airdrop": 3174.7454011540276 - }, - { - "total_amount": 100609865, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyjcwsRiXKC1uxrmTJNtgdfxcGcydta48knXD8KUsq8/" - }, - "address": "noble1j45sj07lk4693an0ytrf2j9vj3uuekt2rnuykm", - "percent": "0.0%", - "airdrop": 1767.286932342023 - }, - { - "total_amount": 270311751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+W4kiIiVQD3AyfHnTDsFK5DTnapT0sjoiRB3piPiTU8" - }, - "address": "noble1j4km7wh2cl8mr38thw9p2d8xftcdlqrawacg6y", - "percent": "0.0%", - "airdrop": 4748.226480582105 - }, - { - "total_amount": 5216173635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzpD3mh1g7EzAC3zNe7ACosGx9+JmrFMJddH5sVRiU3O" - }, - "address": "noble1j4m07xvvyegsv66flum2mp9mfe7zd4ugjypwja", - "percent": "0.03%", - "airdrop": 91625.96035649674 - }, - { - "total_amount": 2119944584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxK+EFi5P15vy4oM/H8ok9QGKEaosX2O0E7Du5+MN/X6" - }, - "address": "noble1jkqwufas4dmt4fqy6vr9g95z3gzygzard6t7z6", - "percent": "0.01%", - "airdrop": 37238.39963996022 - }, - { - "total_amount": 559908631, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4BRmkgdLB4M2Ud1qm4JO0A34YYjoujgvXYn7CmQ1Qax" - }, - "address": "noble1jky5yyzdrn26z38v6kj3smgvvvr8g7r36taml9", - "percent": "0.0%", - "airdrop": 9835.21056182524 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjSRZJbMznNXV5kgBaraFTW8EuVtuwVEgrCoQ5aOw2N8" - }, - "address": "noble1jkvsxqq6c99tef76myy0h5cc6rmvy0mm65r442", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 197240077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlIcNjKbNYz1OZqa3ql6wthTxgvCSEVm3o+csj2E5QPC" - }, - "address": "noble1jk3n66judha6zay09hual25qccuysj8w285c72", - "percent": "0.0%", - "airdrop": 3464.66830679312 - }, - { - "total_amount": 170765267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5sR+vYJs9hoxd2TovAvg1DFuOnM/8oJvBGmTN2boAEX" - }, - "address": "noble1jkk8r68cauwa33l5pnr22zr4mrz664cttd44c5", - "percent": "0.0%", - "airdrop": 2999.618624545381 - }, - { - "total_amount": 230617756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7+u4giAWe1AXhL/hfRooCi/QSpYRePHd0ue4DmwKuG2" - }, - "address": "noble1jhxuzqaue2vzq6w0zgam6z030h4sc2atg435zz", - "percent": "0.0%", - "airdrop": 4050.9720050299356 - }, - { - "total_amount": 52903632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A74Kvo4lYuWMGDePDcJzBDeRHAYN1+97sZYgjrAkgzt1" - }, - "address": "noble1jhf5jtjgv57wyl07pyfdjxrh76qcj6ldeu8j04", - "percent": "0.0%", - "airdrop": 929.2915511518803 - }, - { - "total_amount": 144145107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3w/Rwt6aXlYZo/omPVRjaLE0krMiA3CQ91T5IRJLinS" - }, - "address": "noble1jh45d73pldxusf2dxknevs8qwffhqeftkk70j9", - "percent": "0.0%", - "airdrop": 2532.015761696357 - }, - { - "total_amount": 97627664, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1QnHJUGA2E3sPuHSh5TRSjRXyYPsrN3Qjp6nBfX2uCV" - }, - "address": "noble1jhaxcywwahdlgl8y9flsfr8n5zuh525m2y7ljx", - "percent": "0.0%", - "airdrop": 1714.9023589513588 - }, - { - "total_amount": 58975244, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyozOZQcyGnNU8DhJNVIrP6+3bkH2+B4poHwAcI+uhQG" - }, - "address": "noble1jcqz64mrvctsr82dsp2uf4e68mer2jre6ltykj", - "percent": "0.0%", - "airdrop": 1035.9439211341978 - }, - { - "total_amount": 103669582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7wAHRcqwJ9xoRl0zFv3hVC82/fQKw/BArdqa+FtxXaw" - }, - "address": "noble1jct7jk6meplq96s2ryl23gzvs6n53k58gjncm3", - "percent": "0.0%", - "airdrop": 1821.0331317904045 - }, - { - "total_amount": 560127729, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqi6NsPQo9yfzLp0TrKqBeRo0Di/2YvPSotI5KeuiLYr" - }, - "address": "noble1jc0tlh05g4dz6j208ph0qyxyjsgyjrmcepnw87", - "percent": "0.0%", - "airdrop": 9839.059180768345 - }, - { - "total_amount": 1069723006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgitUQxjAZGO42+uM+OMAFPvnwtAnnYCcm/1F3B8rrok" - }, - "address": "noble1jc0j75csja7j6hhhkudxugmf9scuj8qcwzq8nr", - "percent": "0.01%", - "airdrop": 18790.47834652623 - }, - { - "total_amount": 430998120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYTZHg/mIun/HJH+Fto9Qwnz+0zf6GVBVleV9dyS45D" - }, - "address": "noble1jc5ysnq2kdrjsxv7x07384ugmcmuwup6luev6f", - "percent": "0.0%", - "airdrop": 7570.801783105256 - }, - { - "total_amount": 758355650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/BJMFlNvYmvjk9xZOqQ0gZ7k3YReABuxNXGmsTCCTN8" - }, - "address": "noble1jclqgvsetrw20w34p8vqmjq4d4ja6zs95x2qww", - "percent": "0.0%", - "airdrop": 13321.079700412487 - }, - { - "total_amount": 918710444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhxQMwLnoGMj0Zmzfy+L6a2xOneT9jkfJcp5vkrN6taA" - }, - "address": "noble1jeqg4z0fpecyvuwcye2lpn4d62s5r4qtyrkeju", - "percent": "0.01%", - "airdrop": 16137.830642028372 - }, - { - "total_amount": 500368923, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+2DOKf4qZjoeeeSlsFbXWKcJ5kxtTvLM+q47ungDPnm" - }, - "address": "noble1je8x66jjwgekgwg0j6d2wknxp0xd5h2924flga", - "percent": "0.0%", - "airdrop": 8789.3514116926 - }, - { - "total_amount": 76795528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqcrqC5LvRQVmbUM+R+rhnTWOGT3SMrIPB11izXKvtGN" - }, - "address": "noble1jef4vv0tmzthast32lhntgh0fynjt695y2g6mu", - "percent": "0.0%", - "airdrop": 1348.9704324392633 - }, - { - "total_amount": 1655119287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoABAecL4Y9K33HClbpFkbC9jsOnETvKIc+CmTE9pTjt" - }, - "address": "noble1jevdtc4ev3r5gys6a8eg398s636t3dwujyrrfr", - "percent": "0.01%", - "airdrop": 29073.398392715728 - }, - { - "total_amount": 60795870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9gPmGkkYi+sEkzpUKcL33pno7t33GiijOTbrkhY0Ow5" - }, - "address": "noble1jewe9p5d8r982j38yvufmq5ml59v2pp8elg4d7", - "percent": "0.0%", - "airdrop": 1067.9245677485446 - }, - { - "total_amount": 2497513399, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Y3sJUIs2bvTLA7etoiWRHkZcYj1tY6X/Hyb2Dku2mV" - }, - "address": "noble1jemdazm989380rzgj77mf87rx0a6rvv2d4akd9", - "percent": "0.01%", - "airdrop": 43870.67603561349 - }, - { - "total_amount": 419319557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmwiZDb0H7Ljc6LMrDiYBTjSrC/4vkb9VswLUXtS9Qzp" - }, - "address": "noble1jeup594t8m8m2zg3j42ss3jm0c07cwh0agvqwn", - "percent": "0.0%", - "airdrop": 7365.6591583891495 - }, - { - "total_amount": 221962589, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzzaUrd9Q3HCzi5cG3NVkxkgdxu1bx7h+vmgDoU66UqS" - }, - "address": "noble1j6gd9ttw459qjxr3026jxc3sfmvdur5rp0jq4c", - "percent": "0.0%", - "airdrop": 3898.9375744466333 - }, - { - "total_amount": 119459761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auc2nhDtw03ew/MARnOYMU2C7m9w792ZzF1MntKsEm4y" - }, - "address": "noble1j6ttdqahvjnca4kcdhd5zmmz4dyyede99jhlqt", - "percent": "0.0%", - "airdrop": 2098.399342410421 - }, - { - "total_amount": 754653691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9gb3Ds/c6V8x02is6Bx27tfHT/0QznuwrxD9nO0BDGY" - }, - "address": "noble1j65qylr0nrm4wvll2lny3fy7drsthsy47smqrn", - "percent": "0.0%", - "airdrop": 13256.052043683538 - }, - { - "total_amount": 1832607620, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvPtkiM8Al1pV5Hw99EZJfTl49CvyemJfz/OtPP49o1Q" - }, - "address": "noble1j6avk44y54znynhgrrt5ytv5r84h892cqtn5pv", - "percent": "0.01%", - "airdrop": 32191.112660139395 - }, - { - "total_amount": 115407299, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Y8GZA9Y5QZIkL/jQz1w70i6ESLbnQCf7zjjGzwK9WD" - }, - "address": "noble1j67qktvlhl2m6j0avpy77jrn093ue3msytk0n2", - "percent": "0.0%", - "airdrop": 2027.2148404094232 - }, - { - "total_amount": 328352925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApW/v1VzQi1wbz9vSseQN4vRkNcc8uTf5pGgE+5gmPUV" - }, - "address": "noble1jmfnwmq9ga02klaavfkt7lvqhhd8amfz6e0d3d", - "percent": "0.0%", - "airdrop": 5767.7627690761765 - }, - { - "total_amount": 9415972437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9EtZu0aA9cDghhU6vQM0IZod4MLYr1myNot3gqDMPjr" - }, - "address": "noble1jm2khnm3xa6pfawdl2q5qud86w70pay4u9vw43", - "percent": "0.06%", - "airdrop": 165398.5426101384 - }, - { - "total_amount": 113061566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Zd5ED+sSILWUJN5FR4SBEoCrAeDz+c6CWdh3OUgJtX" - }, - "address": "noble1jmwfhjm33v5cf4zamhkyxaztdxl99l0h00053l", - "percent": "0.0%", - "airdrop": 1986.010299704956 - }, - { - "total_amount": 137021485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyeJWDoUkAhEOO9gHvfd+tahPOoW99nVcV6wcqe763v/" - }, - "address": "noble1jm03c2yqy0xr0pfejs2k5ygr5lf88pxwl6ngnt", - "percent": "0.0%", - "airdrop": 2406.884055461147 - }, - { - "total_amount": 828316638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsvE2ODZYtyHsKCt+nBxp6ICEuamg68co4Za47ubpGFV" - }, - "address": "noble1jmkjysvv7nz4szc9tfykntqdp5jywegm2xy050", - "percent": "0.0%", - "airdrop": 14549.996366448537 - }, - { - "total_amount": 2491400265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6BCOJ6PtCGiL+pf0/y0ybB3OnJVJZZLoP8ZGSsvzqrP" - }, - "address": "noble1juzrz62krln9fuz9ckgpat4ucfne0wsytgq2fh", - "percent": "0.01%", - "airdrop": 43763.29430089139 - }, - { - "total_amount": 52540092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ywb4yDKZK8sPWgk88aJTx5dm7DN+9iL1iiVUAqHIYA" - }, - "address": "noble1juy596tequu6x8mg5qyh70n605ldd54kl94lq2", - "percent": "0.0%", - "airdrop": 922.9057013012357 - }, - { - "total_amount": 68299617, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArvPyhdj8oloGqA8TjJXA+JOlXo6I+fhJ0M8beiPU/zE" - }, - "address": "noble1ju3d8cxwuhkydq5z7p3h62pfkgnl9ghs4qfvts", - "percent": "0.0%", - "airdrop": 1199.73345166565 - }, - { - "total_amount": 166469836, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A314HqkK6k8zzr+Gjm6gBYPVzHud8t9hl/UUyCwRPe0z" - }, - "address": "noble1juj40t69w9mrfslrde6vyf2tdz2gsq880escdt", - "percent": "0.0%", - "airdrop": 2924.166191773735 - }, - { - "total_amount": 204587924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2aFKNP0A4roSu5iDCTzKpPkXH62r9uOVuf2k6UNLD0g" - }, - "address": "noble1jumr8t582arcql0tvlyzprn5nf4r5l4gcc0evh", - "percent": "0.0%", - "airdrop": 3593.738691530725 - }, - { - "total_amount": 50277569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxRL52YW5x7NZg0/73pbDGRuVhYV75ugk3/n+Rnii3Sr" - }, - "address": "noble1juldj0mnw5c6gsvaq9nt7yq6tnq04r3reh0ygm", - "percent": "0.0%", - "airdrop": 883.1628059894961 - }, - { - "total_amount": 58701792, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AynoWJcryZvAa+qnf3ZY3vlIT3e/pwHcTiNh6RQSDnWG" - }, - "address": "noble1jaqeq9j8a4sxpd7sxea4cyg84wxgq2xag48v8h", - "percent": "0.0%", - "airdrop": 1031.1405338498316 - }, - { - "total_amount": 160505959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDlr+ZldpPOPSa66HhkZfimVapsvYTxW3xFdSiaUis6" - }, - "address": "noble1jar7l6raxqraw2wsu7kykzweu9q6p40ll6x3r6", - "percent": "0.0%", - "airdrop": 2819.406267006963 - }, - { - "total_amount": 54224798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+rdbZx943oDypJVLb0kTYNVyOZD9CQa/VikOmj8VqYV" - }, - "address": "noble1jags6dsgv7aan0taf4muuyrsq5x2pf4vfa3kdw", - "percent": "0.0%", - "airdrop": 952.4988122614602 - }, - { - "total_amount": 124599672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlMnOZXQmtUJlOH9+6mK2+hozgyzwlVPUOBszw9BaCVw" - }, - "address": "noble1jagmg9kqle2n2derz4svdhx7lznxq5x36pdhhw", - "percent": "0.0%", - "airdrop": 2188.6856929954356 - }, - { - "total_amount": 660532842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avxo146lLQsavBpMLh7DOKf9oV2ggK/C+F2CJR8RLLQ6" - }, - "address": "noble1jafwafqlqn6c7gumuscjkjt05ynz97wlgc5mfz", - "percent": "0.0%", - "airdrop": 11602.749492302151 - }, - { - "total_amount": 645301091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7racNJracBxtrqBP5vHWGz4GuVQ7hRMTEYD/G5rhF+5" - }, - "address": "noble1j7pl4ctrqyyqgk83crpawrctkrqcs9wns2pnzd", - "percent": "0.0%", - "airdrop": 11335.192483861802 - }, - { - "total_amount": 488278567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvCv9vaPv5c8ZMYp1bUhUxtqyWs14pdm/8nE6Gk5E9Up" - }, - "address": "noble1j7rxu9easrhmve4qshdcauepumksfnp49f5k7d", - "percent": "0.0%", - "airdrop": 8576.975337376596 - }, - { - "total_amount": 2938941692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8QQzXmnyEgcA2Jhljitdj8cvwuObnkvHNGareGP31va" - }, - "address": "noble1j7yz0mrnp6tjmkveddaypzg0gzws59gtjcjkat", - "percent": "0.02%", - "airdrop": 51624.691546765855 - }, - { - "total_amount": 652389879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwE1T87S+CfDv/octW6Kramt+DN2QG7yT7Mr8vIK0uvm" - }, - "address": "noble1j7x0wrj0dh57pmnxx07kp8nnxmgp29m55v7rv2", - "percent": "0.0%", - "airdrop": 11459.712305039802 - }, - { - "total_amount": 66647937, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao7pw2hXkFokGkempZcf6imQHjizLWzj/EvwRRgJxRpp" - }, - "address": "noble1j7gvur50x0jf3n9c260psaa63g9chjxj5xtq09", - "percent": "0.0%", - "airdrop": 1170.7204669010775 - }, - { - "total_amount": 438452297, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+VRSFVgwX+dWU2wVh/NtKXo22YWLHk7LJ1IAIS329LF" - }, - "address": "noble1j7vqdt8k688dz5asc33mlsclpmz60f45rk6anh", - "percent": "0.0%", - "airdrop": 7701.73993319088 - }, - { - "total_amount": 363863934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amz8WY62GEeKcUaCl3InwxGiWvhCJz3w8wqhQS2ms5j9" - }, - "address": "noble1j7jfahmd355vhc5nfjvwdlkq266gms9jf6fgyt", - "percent": "0.0%", - "airdrop": 6391.539991717117 - }, - { - "total_amount": 2034420394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7E2CSPC5Rs9ScqQ+BvjxddHj2VwhEljudTWmuJww8IU" - }, - "address": "noble1j7568na208k6vj58mucy5hs4dttzhhcdsfm62t", - "percent": "0.01%", - "airdrop": 35736.103782728555 - }, - { - "total_amount": 231555645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1z2boxol6l+izBkFl39Q9LOm+TZbQksPKJAqvinYyLm" - }, - "address": "noble1j7kv6xrtd657ejgh64qfckeuuf2kqs0gx08veg", - "percent": "0.0%", - "airdrop": 4067.4467212388013 - }, - { - "total_amount": 170234157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+7R5ELTRkRv98DHAWSNNB7H5u1oOYpQopEDruy00nKS" - }, - "address": "noble1j7e56tu6tgrnwmfy3za3ygmlk7uhsgz7hrpqh0", - "percent": "0.0%", - "airdrop": 2990.2892833059686 - }, - { - "total_amount": 374355437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UVe1AVAH6IxK9vvZvpjcL0eYJvcMifFUaRnMj5y+37" - }, - "address": "noble1jlp2jwj74ltvchlfj4mffkp2fg6mru4k6jgmyg", - "percent": "0.0%", - "airdrop": 6575.831026721758 - }, - { - "total_amount": 72956436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnruwrwwqnsPJp606/huj+RFUbCF9NfD4TBXM26BgWoC" - }, - "address": "noble1jlz82w63aykm2d8u8grdms24l62ecvvpgq7u48", - "percent": "0.0%", - "airdrop": 1281.5339328111324 - }, - { - "total_amount": 5043079034, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avqrw7OmiKAV9YWDAR5tFA0H+t9iyGuHLcb2Or3Pn60U" - }, - "address": "noble1jlya2kd6hdjez5lfsl59gljd75fe742ue2mg99", - "percent": "0.03%", - "airdrop": 88585.42525185013 - }, - { - "total_amount": 50004482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuRque+ylJP/GVRASDL5CiyXKdOsmbMpca3f7aTj5ezY" - }, - "address": "noble1jlxs0yd9wcfk5cuts509w7xdme7rtfuehwh0rs", - "percent": "0.0%", - "airdrop": 878.365830200964 - }, - { - "total_amount": 1293124393, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6gZJwPvVb0IuxuBulcUN9Rnmv973qkch9DlJgc8kvlY" - }, - "address": "noble1jlxh32hqemecq2mzk78r5e5un26t45n2w2rwfl", - "percent": "0.01%", - "airdrop": 22714.68947544667 - }, - { - "total_amount": 1019920805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2VZsqmR9B0BX1MjYHUXAcE+a8Petl8e5ueZFDPw2jh3" - }, - "address": "noble1jlgjlshf30legxmzft9veggh7ctnnrynw5g07c", - "percent": "0.01%", - "airdrop": 17915.665732184974 - }, - { - "total_amount": 53774201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/AiwEUsLSFYwhuvQJmayNB3/exJTpu3Zqh+3PssGiGg" - }, - "address": "noble1jltrt3rx2cc3n34n52cwrc5ug7yh7clcczr6t4", - "percent": "0.0%", - "airdrop": 944.5837416085722 - }, - { - "total_amount": 471753421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoG/TGgeKgH2skulvU6sn4R49W0G4wW0RfYARFduXTGx" - }, - "address": "noble1jljhtm3kqr7anwd9qx8nzfr4js53kk4ajxyat9", - "percent": "0.0%", - "airdrop": 8286.69888604805 - }, - { - "total_amount": 60007792, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2lCsr9/u6vLRrlKgUp6iWSUkeFmGtKLCGx74ieWhksb" - }, - "address": "noble1jljc8q5ldykyvxxquvvfx7fv8tm5n9hmq6t653", - "percent": "0.0%", - "airdrop": 1054.081392916074 - }, - { - "total_amount": 308545159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Hcr/oQrFinwMHQgornY1T96H05EcDXP/U7pVCgxBan" - }, - "address": "noble1jl74t675kkguk98un97m35kz2gy49zanqshf9d", - "percent": "0.0%", - "airdrop": 5419.824661707792 - }, - { - "total_amount": 117023149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnEQtmVYV4Yz9hZAqzbGx0m3xGMUdUJFdQp4Cv9lqBHh" - }, - "address": "noble1nqq9v9ptrzg39vuadcma2rwmnd7z5fc24xgtz4", - "percent": "0.0%", - "airdrop": 2055.5984446377447 - }, - { - "total_amount": 182939099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/j5+VXstkswHLw+JLJffRfc0RGt7yIEv/h5vj0CicLv" - }, - "address": "noble1nqza9n5cleyqtqz6fh2sjp7wdjfzs4fjwu6aj7", - "percent": "0.0%", - "airdrop": 3213.4610167414858 - }, - { - "total_amount": 1210933648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5GbMFNYOsuwYUxqa0HBqOGnQ4UrxzVqZXf/2oNSB9Ly" - }, - "address": "noble1nq93qus8hw7fdkeergvpxxvyswlmaggyd8qapf", - "percent": "0.01%", - "airdrop": 21270.948053092554 - }, - { - "total_amount": 65863939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvTQ2CgJ5nKzYqRc64h4MpYKZ1JiXg48toteRwf/X5Gh" - }, - "address": "noble1nqfc6rnlw45cahjldg6n2g8yhhx5knlv9kek49", - "percent": "0.0%", - "airdrop": 1156.9489602960118 - }, - { - "total_amount": 1291581877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A73kjfNcsbeBIuXWonbx7H1l9kQ/rGrqQ8/zXK/EagKP" - }, - "address": "noble1nq0aaznre8nl3fykt7m2259859wy92u4vrtnjr", - "percent": "0.01%", - "airdrop": 22687.594037342973 - }, - { - "total_amount": 224303815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwOsf25+uxPdzhTmOEqQm8O9MCwDaqt3eL9sNpoxKQY5" - }, - "address": "noble1nqnnfavlwf2tkgdw4x7kxwrl4de0ce0cg8kz8n", - "percent": "0.0%", - "airdrop": 3940.062946351857 - }, - { - "total_amount": 51262832, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/iIxUcHTy1Qfko33BKyomxt6qrPMkJZm9lriGj+XnNk" - }, - "address": "noble1nqkyhrvl3ygxun0aus5u6vy72lf35fzrz90etw", - "percent": "0.0%", - "airdrop": 900.4696816603868 - }, - { - "total_amount": 1453682766, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An4bOeORXWtH4FaX/pTxT1IybZwxzwn3z7XCX3BB22iy" - }, - "address": "noble1nq7phv7d85hgeuzeg75a6r3zlqknwlyf2xle7s", - "percent": "0.01%", - "airdrop": 25535.016433255394 - }, - { - "total_amount": 167024482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxKmO7BxJ6Eh/u2d7VB517lOfiChCVxXoHf5ukpZ6XrI" - }, - "address": "noble1nprfmp9yqlmej34vhlqcw2xdk6gtzdda3d3zca", - "percent": "0.0%", - "airdrop": 2933.908960317116 - }, - { - "total_amount": 131976652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AikILWxPMS3wqXvtu9m3jUPT7rfqTteelZEdDesG6ZHW" - }, - "address": "noble1np88lp9kem5lj92vy75u3x9agfyj24cv7kpxsm", - "percent": "0.0%", - "airdrop": 2318.2678204950444 - }, - { - "total_amount": 82597685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AucKS2auMU2Nk0rabO0t9SqChF0moweYnxzc5IPlkamZ" - }, - "address": "noble1npvc0x0qhfk5d9ytul04h9lxddjmuezddhldt3", - "percent": "0.0%", - "airdrop": 1450.8896254080325 - }, - { - "total_amount": 62848825, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtBlqi/MoKCOX3fTbdn6iy5OHluicImgcGcr94QuLwc4" - }, - "address": "noble1npw2tq632x9ep5lmhjzgpte526lkzg4sjkpqk4", - "percent": "0.0%", - "airdrop": 1103.9862456385429 - }, - { - "total_amount": 1093665391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0GCf6T17nqY4POy5SoGHk1Hr3z1dcyW4/6L/u9Z+J/w" - }, - "address": "noble1np0079lc7ga3qpxxtvn8me4jmvz469hlr8tkvv", - "percent": "0.01%", - "airdrop": 19211.044104562003 - }, - { - "total_amount": 109381082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkXG+Krpuk+QzssIHWqTGhN5SRto/Dy8zoPiyNiFSo1Z" - }, - "address": "noble1npnllf4lx3cx9whtnzv5r2jc9270l99j95uj7k", - "percent": "0.0%", - "airdrop": 1921.3598672856906 - }, - { - "total_amount": 169501653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5SkUkQkeHD68EKAHN1jO/oChOug/zULXZKGyUcS35ik" - }, - "address": "noble1np4c0pc0rch4gg55hcm4hf7y6h7twfl2ug76sh", - "percent": "0.0%", - "airdrop": 2977.422307020013 - }, - { - "total_amount": 308317009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5OJHAhRmB4fZCVymhrbMnoo1+19wH2WHBx3fsS7X5+9" - }, - "address": "noble1nzr60e29la2jm2kcqfg3lsdlj40svj5vkd486r", - "percent": "0.0%", - "airdrop": 5415.817037668005 - }, - { - "total_amount": 1956356469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuH2ofXtAntm817ItK/zRGy4Ymi8XFiB/lytUX9bqB+b" - }, - "address": "noble1nzg8sqwre87dcg7a0q0y7pqre5fedu9vp3c7c0", - "percent": "0.01%", - "airdrop": 34364.853015819885 - }, - { - "total_amount": 1223885759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxFGn8ImzmGgCukQwxXcd57zuuZOaJo4pqnPgYpcy3r1" - }, - "address": "noble1nzdp8mkqxk37hulrut49atsjjdmhjwx0k3hamn", - "percent": "0.01%", - "airdrop": 21498.461493415165 - }, - { - "total_amount": 50597214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyjxRjUZ6RVtnjjfvohWyZxiVA5mA4QHQd/eBE70mVd7" - }, - "address": "noble1nz6pmxj2ggznuxk2dxq73xk8mh3654u7halg2w", - "percent": "0.0%", - "airdrop": 888.7776075945718 - }, - { - "total_amount": 1736280157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZByCcIld3RRJMl5qEmecw/IyaN5rrt+dcOBR+ZOg4E" - }, - "address": "noble1nzmrau4jvcp9ae6f0hktud783wqdfpcua8562m", - "percent": "0.01%", - "airdrop": 30499.049296516358 - }, - { - "total_amount": 9471242643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtK6WFzzx598MTCHmCL4TtmFd9AVqxfo8IxZ4we8o9tl" - }, - "address": "noble1nzakfztp86c00dptk2evxha8auvckauh5rd9ev", - "percent": "0.06%", - "airdrop": 166369.40478962398 - }, - { - "total_amount": 89939069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/f7IW5ZqgJ/cm3nS1jWckQdGDNzdGbuoV9TLkKErWf3" - }, - "address": "noble1nzlznfj2q4px546c8hr89ftf0uz76acaqxn6jn", - "percent": "0.0%", - "airdrop": 1579.8464827550213 - }, - { - "total_amount": 1449239812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlIC2+uQCWWq9yrlPr6z3Lawx83NThNIftIsghVDtG1x" - }, - "address": "noble1nr82503wlg3d730ra76kjh2pc8w3zkcgnr4gzl", - "percent": "0.01%", - "airdrop": 25456.972649525072 - }, - { - "total_amount": 50604700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap9v7SyYtr9rdysvAYMERaG6ISshpcH4/kIqeBpPRqIM" - }, - "address": "noble1nr4zsrmcw5gv63hrgphkmmcwvpm33uc7ge2nsm", - "percent": "0.0%", - "airdrop": 888.9091047392654 - }, - { - "total_amount": 546468414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A50W9v/TJaZEr2cPSDO75lml1e4MpOsn+Xxkt2fnqL9i" - }, - "address": "noble1nyqgscax4vzgag84wesfffv7jnn89hyfw09plc", - "percent": "0.0%", - "airdrop": 9599.123177432655 - }, - { - "total_amount": 1558830718, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AycDyyk/qdmFiYSciI/MFrC1E/ouTtJBfwJ6jeJ6xl5W" - }, - "address": "noble1nyw5g9yjtcrcsvk4j5tzrk5fh9yjhshl4sh5ys", - "percent": "0.01%", - "airdrop": 27382.01823106246 - }, - { - "total_amount": 16853404385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3jazMwtG+GEUNEhqoEkCfIrjAIyCcOwbt/lKiCaCP33" - }, - "address": "noble1nyw4tlau0a9vfnl66lxak7uqmhdkwceav4c0sn", - "percent": "0.1%", - "airdrop": 296042.5534323721 - }, - { - "total_amount": 50095960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhorRbwQpBqOXSqrv8euhvqJZ1JSo8H1QR368NCT/SMd" - }, - "address": "noble1ny3v2x7umdqhnl9hg8ut4y3gzzd9w3ypktjttx", - "percent": "0.0%", - "airdrop": 879.9727091486375 - }, - { - "total_amount": 593397383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkHsJA0TXfKOkfcvkpr+LwTsrKIJVJzxjzpj7XhxQqzT" - }, - "address": "noble1n9qr9k5uqn6wd50ca30kygpwglws0cc3ynd7pj", - "percent": "0.0%", - "airdrop": 10423.465339724433 - }, - { - "total_amount": 178120360, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awf6YqBzfx8wZZATEb+LOwuZZLiHKRyMrdv1bkYfW+wk" - }, - "address": "noble1n9qumgrtyzykta693w296uu6sn8ukp0h0ndpew", - "percent": "0.0%", - "airdrop": 3128.8162906495972 - }, - { - "total_amount": 216306214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2JWEGlE6DBC/jBTzkMTJbsGqxpVCwtZE7/1W8HZWQiv" - }, - "address": "noble1n9yh32cslsmyd82g0qztv0pnln7t38p4pnzn9e", - "percent": "0.0%", - "airdrop": 3799.579150479698 - }, - { - "total_amount": 692138592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar5CZkTwyjjVJW+15AbxMg3OE5/sW5GWwltF0WxidekX" - }, - "address": "noble1n9x22jscprxmd2m24l5cs8f6w70n3xufs4pg35", - "percent": "0.0%", - "airdrop": 12157.927942863327 - }, - { - "total_amount": 2000405733, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApQthBPpWHaxtQB9dGmU5PnBA/CHmdMekdB4IF1YXruq" - }, - "address": "noble1n98dym43ag9ltwzpt29d8eljzt8azerl84z3ql", - "percent": "0.01%", - "airdrop": 35138.61102301415 - }, - { - "total_amount": 4485821959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ZdkVVGw6dTu3265LV9TCfDailMGpOhLNbt5ZdlbwIt" - }, - "address": "noble1n9gugf0w3kgkrv43zrqh630j3c0n224ft6qa4p", - "percent": "0.03%", - "airdrop": 78796.79123864835 - }, - { - "total_amount": 90199680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBBs3jZCaGdY2vPtLtgnvwbj3aZ5oIs7FTRJkZBXmyW" - }, - "address": "noble1n9ft67428w5596tdkvl7cdhhc206f7xq0dkwch", - "percent": "0.0%", - "airdrop": 1584.4243083462254 - }, - { - "total_amount": 1896656780, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6FDeDrxqSnGbmKg9UvdwK0jDnTrzFH3FGKj5lLRPuRg" - }, - "address": "noble1n92kve0gvkgqv7f7avzqq074s44zr5z26480r8", - "percent": "0.01%", - "airdrop": 33316.183680714596 - }, - { - "total_amount": 21744705837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0msmvQlh3EhFCqfw4gnUK65QcrUpC7a+rsNmuHRCuj3" - }, - "address": "noble1n9dareectmt92uyg4exs0meku340q3jrkrncz2", - "percent": "0.13%", - "airdrop": 381961.8928357712 - }, - { - "total_amount": 51145769, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay4DeY+z5CTY2DiyRnGpRsSx9yc+VOnbPQHyIk4NkCkg" - }, - "address": "noble1n93esxf3her0vszqzyskq5lp763qhs3dd8d3f5", - "percent": "0.0%", - "airdrop": 898.413383203364 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3rHbZP8PRb/zCoERQMXTshb/1HzK+DWqPoBQQml08b/" - }, - "address": "noble1n95uaylffpg6pr4zzfsw7rgr80gsemxp5h6rwy", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 201500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuohtC6imZ7hhEgA/K31ZobPoE96ZtWvSf0fJ41PTznv" - }, - "address": "noble1n9c7j57sga50sppnkdfd7qhye74nvjw4x9md7r", - "percent": "0.0%", - "airdrop": 3539.497015197442 - }, - { - "total_amount": 51747761, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyYZ8WNy1WNETTPkdTBfQS4hPxHL9bA1izpLCmHdi1EC" - }, - "address": "noble1n96j7t24sl9w8njdjsq78yfh7xpxyu5fden3nd", - "percent": "0.0%", - "airdrop": 908.9878193679931 - }, - { - "total_amount": 1994394292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyCXWqgvqpa1Z3T2DOkLxnfJPg3kuNRu0VphaHz+80RR" - }, - "address": "noble1nxfkgmt3lrldws84jgt932xl0x7yxq6pc2g29c", - "percent": "0.01%", - "airdrop": 35033.01560129437 - }, - { - "total_amount": 489269518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRGt4URzKFFUrReBn3alv+BookmzY/a6nPimRa9G+/L" - }, - "address": "noble1nxhc0hxzhgkh84xnluaurc28twakynkq0y3lkk", - "percent": "0.0%", - "airdrop": 8594.382126988045 - }, - { - "total_amount": 1335605640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5AmvF2ZGMp4Y4F4wo4fBk7thOaj0+/D78pIy/GN7MuY" - }, - "address": "noble1nxmm88uccpf6dg36kzqfmfkw3552gcd9yxcgq2", - "percent": "0.01%", - "airdrop": 23460.904100550222 - }, - { - "total_amount": 166984758, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxBc1kuvkT4HEkcc+uWFbU+RIi5stYEJlgI+JqfmQard" - }, - "address": "noble1nxupzhfy82ydy4qztfyy3qsyvse894lq046sww", - "percent": "0.0%", - "airdrop": 2933.211178781475 - }, - { - "total_amount": 488548876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApNQfJE8WRELXqBKK9AFeM/ncFYK7KszhXag9ufzfB5U" - }, - "address": "noble1ng9wft64hapuwtr4dg7c9m5k48zcqgxyzhjnvs", - "percent": "0.0%", - "airdrop": 8581.723515533822 - }, - { - "total_amount": 6198000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ats33KsOcVXgIQV4oh2Z+50mUCCJKot0nlJT16Uq7dSG" - }, - "address": "noble1nggr7kzjndm8w3vdepyw90d706sks4qfuvgut9", - "percent": "0.04%", - "airdrop": 108872.46898359178 - }, - { - "total_amount": 2015000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6jtZ06/ka2a8qRhs75aE1ucvgpdElw7DLXkC7hFUAU0" - }, - "address": "noble1ngvys6mz4laxvgklsqd9ucuqh0jxw7pusgjjku", - "percent": "0.01%", - "airdrop": 35394.97015197442 - }, - { - "total_amount": 92347223, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3sY0R7Y9JQIbrtmKDWBLsPVI7IlfXSVFnzpcy8WfY/L" - }, - "address": "noble1ng0np3s208g6kcf8tg070p8yqg83uh89ys5ddg", - "percent": "0.0%", - "airdrop": 1622.1474946415512 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4qq8ULk+RDIK2R0VLuh/+ojh8rj322FE/+EbtsdNuF/" - }, - "address": "noble1ngjc3staurm3z08mffccl4srq7twka4e82x6mj", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 69540236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw83tHzVVqx58V/OtDjJE77+7jhyFcrStkMkVCnpJn9A" - }, - "address": "noble1ngn35mamcs30t4eh9dmmdzudnkj0cycnv084gt", - "percent": "0.0%", - "airdrop": 1221.5258449534774 - }, - { - "total_amount": 50831212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhnhMmi0HTQLl4n90YDgaQQlWIzmNciuoAoj76AAJYzP" - }, - "address": "noble1nfpqztkxvaa4hmnaqgfp232ypl68yt77nkjex5", - "percent": "0.0%", - "airdrop": 892.8879560936397 - }, - { - "total_amount": 62898917, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmF0eKKJx9gkenyuJP+kJjuFzZe2CXaCiDuuPLpOQqzq" - }, - "address": "noble1nft8l7mhfdeg39duj0umw6aw9sykr9xdp2sqqk", - "percent": "0.0%", - "airdrop": 1104.866148787353 - }, - { - "total_amount": 62646089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzRtvTFma/NtyNoYCN5wCUSwQPrHeH1GRG6getGg2m0Z" - }, - "address": "noble1nfwdtdtpckna5qs97jw3lj2s3qfcw4u2w4am0d", - "percent": "0.0%", - "airdrop": 1100.4250373662198 - }, - { - "total_amount": 17457205336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0sWKYRsSiKXrNk+ZV/BF7wXV6EbN+dIOcHuLTXaSqto" - }, - "address": "noble1nfnge92upw2uedhf6eje6lmejl8sfmuxc23sh7", - "percent": "0.1%", - "airdrop": 306648.76516357745 - }, - { - "total_amount": 70125599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxaQp+rVVbLDNePwbg4/MeW2kYp/V7Fw+bYew6LkbQxL" - }, - "address": "noble1nfkw62etj43pxugv5y3vs6xj7petkma3vmr54a", - "percent": "0.0%", - "airdrop": 1231.8081803942073 - }, - { - "total_amount": 50110844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1hiyt7thQDO835wKp9YfRPZ2po5ImHvcxjjkeEPjm6Q" - }, - "address": "noble1nfkm9w0pu0j39lr3ek8yp54mtra4v5w4llyetk", - "percent": "0.0%", - "airdrop": 880.2341576527278 - }, - { - "total_amount": 51050956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmHUdfOAlfZJe1iqj7+T3Al3XdnUt48rO93fa6j4Dd5s" - }, - "address": "noble1nfu0z6hhn7jlptcmgnwmvlea8ne6zuqvn93c8n", - "percent": "0.0%", - "airdrop": 896.7479225060841 - }, - { - "total_amount": 19920714818, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5uj+OSPa6Mfez0hwQZQH2V7wUBuK85xIgU3AdqG7OvL" - }, - "address": "noble1nfl4mkc0xglpxmsnzu35cd6x3ptnkkc7a0qm0g", - "percent": "0.12%", - "airdrop": 349922.1371658087 - }, - { - "total_amount": 200528706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak+sBY+W4NetbXZXBfpfWUe3YbrUnF3mHV5X689vAn3b" - }, - "address": "noble1n28yt6va2vpvtysjn2gg89n88pce2h22cfvcj7", - "percent": "0.0%", - "airdrop": 3522.435515376702 - }, - { - "total_amount": 148770459, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxWa4w7yd3O85NtUI/KNwtNFpiY0xC0usrWI/0i7yXQf" - }, - "address": "noble1n2tgy8zvfrhcsw8v6mslxmerdzwjt0dfp0h0a7", - "percent": "0.0%", - "airdrop": 2613.2635016379827 - }, - { - "total_amount": 9480942100, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlCsesp6bzCQ1yaNpbXbUAQ2EuSR1afpuaRx5qLJXXbF" - }, - "address": "noble1n2vtr9sgt46e8fygl856k6rjguyfkygl6epjmd", - "percent": "0.06%", - "airdrop": 166539.78294893182 - }, - { - "total_amount": 228500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwuNAeuu2W9u7+GbxxxMExpiSYKgn2t6tKYD46EpPzpc" - }, - "address": "noble1n2wh3l6ke8yeqtf3mzjz2z4ksdvxhy7rjkatar", - "percent": "0.0%", - "airdrop": 4013.7720494918885 - }, - { - "total_amount": 62192967, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlpoqrdMtX1IbD+J2e2WEh90FAtHa6qkNfnkWWGcotT2" - }, - "address": "noble1n203qpjke3jynrfw6tyr8sgjzaa78c42kxpy9z", - "percent": "0.0%", - "airdrop": 1092.4656132147545 - }, - { - "total_amount": 4020531215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyDjGD1S/4kOijhfK6PNS9lW6WWMwkPO3taZ3UW9tCdk" - }, - "address": "noble1n2nnqpnkxsej0ed8v6wka79wlheht3h6rdcmyk", - "percent": "0.02%", - "airdrop": 70623.61406948211 - }, - { - "total_amount": 78096325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0MKBN9EeRI0UXu4VGmCqCs1JL5YSozzCgEHLaBExT67" - }, - "address": "noble1n26jpdn0nftc3rqh647d8mtwle5cndqgfnclmd", - "percent": "0.0%", - "airdrop": 1371.8198969498233 - }, - { - "total_amount": 121152115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A91Kp2jwJS3WBoeG5R/9WoqTP2BDA/0RVNeUXOiVPihr" - }, - "address": "noble1ntzfe3k6jfw622g2hpw6wj694s6s7lfzwuanlr", - "percent": "0.0%", - "airdrop": 2128.126796165545 - }, - { - "total_amount": 125573753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Q2nUzMHqfYBR2CFhvuq3YuwgkBGzCyb38dTpMD6sGW" - }, - "address": "noble1ntxe5vwzzjgsg9qftvykp2p8t7xjpe4cqte4se", - "percent": "0.0%", - "airdrop": 2205.79614853916 - }, - { - "total_amount": 64963106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvTTy3C7h1PCJcFE/XenhkD5UsSLkcKox0fs3Y/bylaL" - }, - "address": "noble1ntfevfc742820r5c84e5lkgpdygu8a746hecea", - "percent": "0.0%", - "airdrop": 1141.125160223102 - }, - { - "total_amount": 178022985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Hq7pIZDw1vLtT+QVOdnwkpO0KRtvSbQZVWKOw+/zwV" - }, - "address": "noble1ntt024edzuydpc2wdxuv4wqc4pplgegntav2uk", - "percent": "0.0%", - "airdrop": 3127.1058265212855 - }, - { - "total_amount": 661603451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3i3/FrI4wpIg3D/JbXjg6MEddVyHxCgyHuNfUty3rDs" - }, - "address": "noble1ntdqjztx9fm4sexy82gex0cdxl3arqgm5r0ne6", - "percent": "0.0%", - "airdrop": 11621.555533790704 - }, - { - "total_amount": 183560377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJuzvJeMdeyYKYR7GSkuY1PyXB3czN+fTXG/tTElvq2" - }, - "address": "noble1ntnlhtmj26sll0w35kz8s26efdttxjhqz78pm7", - "percent": "0.0%", - "airdrop": 3224.374225806537 - }, - { - "total_amount": 121617359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+LXGR4gsz5cx+4f1Y4WkTerBAhWptdIDSQYC+stEVGK" - }, - "address": "noble1nthsq75ruy22xpj9lxww9f63lvj5u3xl27lkr5", - "percent": "0.0%", - "airdrop": 2136.2991522416664 - }, - { - "total_amount": 695400177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyqtngePqxhONLzlMx6i4umLyJkXzXm1qdYiMOw1TR23" - }, - "address": "noble1nt7xmnpy9d679u9w0k00ctakk5x67t8jd95kqm", - "percent": "0.0%", - "airdrop": 12215.220103519965 - }, - { - "total_amount": 2977503231, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2GxESWxv8MKgarsIoS3WdOn2IPiOFrwPg2kG4JD/Ml1" - }, - "address": "noble1nvpw5frclvlz56z8elydz7g2xd3yaaxh0luzd7", - "percent": "0.02%", - "airdrop": 52302.05359238333 - }, - { - "total_amount": 62576604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4o/rlrvP9tqw+6wiAmYG+GSr9PklTwhI8tBg8L/Ly16" - }, - "address": "noble1nv8tgffxsghzgqeqxfhs35sjvw7dz3cl8jc2nu", - "percent": "0.0%", - "airdrop": 1099.204481782592 - }, - { - "total_amount": 89163940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoedakZwNswwuyzv+kfyiCCp6b9CPyryjA7QXZxko+j/" - }, - "address": "noble1nvfc7hcpa5uvldgx6tc2zhm9657jqzh80cpu7f", - "percent": "0.0%", - "airdrop": 1566.23076671585 - }, - { - "total_amount": 449497349, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgTV0n57hN8Ieu07REF10vKH0YKEoySgSOYkzIOVMlw9" - }, - "address": "noble1nv2zlq9g64ktgpx7gu8d5gyjqjdx9daxr899zs", - "percent": "0.0%", - "airdrop": 7895.754467119916 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5nEo88Thpg8IHMUwo8VxDxOQVzGYuq/TQrpex4yzdRw" - }, - "address": "noble1nvhpkksppeewv7meeqstnv0fy5mxztcqd88xhp", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 450885115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuzlguDG2UEdc79zcR4DeOTxywGbXyHm4u29KMkz9kKM" - }, - "address": "noble1nvmxftfusrkwrwpkleursyugycr6fhdstqkk6j", - "percent": "0.0%", - "airdrop": 7920.131606647422 - }, - { - "total_amount": 77215262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuGgpB6j5xK93EwoFECEnmo+nZnETO+wmuikvrMROPXQ" - }, - "address": "noble1ndjfgk4r76xtjsw4axdfude80rf3jy5ty4mnzh", - "percent": "0.0%", - "airdrop": 1356.3433715964688 - }, - { - "total_amount": 51430483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akab4tcs8E34H/a6XnJUJwIyRbixJp9cS8lkOlXMU9o2" - }, - "address": "noble1nd7yjr3770e9qqe4cj20yjxfjcjt9ga953mah0", - "percent": "0.0%", - "airdrop": 903.4145958742571 - }, - { - "total_amount": 2094150253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4KDa0pVzU6Tp4setwQd9+IGuLUfxuGDA9D9w3VJ/b6F" - }, - "address": "noble1nw9zggjxhe9geanrean0szrrydg5vqaxa4rew3", - "percent": "0.01%", - "airdrop": 36785.30307627032 - }, - { - "total_amount": 2376655407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmYDRYJwCzQwuE0AV2fZu/D4oPaxdrDQH9O16/jxAJGY" - }, - "address": "noble1nwxm5cuvt26pww9czqnygx8nhe8hmhj0evmj39", - "percent": "0.01%", - "airdrop": 41747.71572818542 - }, - { - "total_amount": 556037240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4EBe1uexTMZWkm8DkhS4YcZYC9bQx+WvG4fv3ohO9r7" - }, - "address": "noble1nwffz6gq7hujqy3nd7tr6jp22jg679na2r3za8", - "percent": "0.0%", - "airdrop": 9767.2067062959 - }, - { - "total_amount": 64850411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJ1HMtmslsdykqfstwV8YoL/HJTlKVCBHTxGJQ18Lzs" - }, - "address": "noble1nw2scw4quvfq6zrkf8hwj3ylpf6j5kag0ugem6", - "percent": "0.0%", - "airdrop": 1139.1455889271829 - }, - { - "total_amount": 3735654842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw4Ag5I6cvyqAo2a6aHULAw5z9C5dFvWfTyLlD8jUwA8" - }, - "address": "noble1nw0fz0prpr6twdpsnheuxsqz9dgya2wpewh2yz", - "percent": "0.02%", - "airdrop": 65619.54919636165 - }, - { - "total_amount": 61557659, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnULlujxI+Adzelp4LTumOQYYRvSvycm7vOGZpYG0Ym2" - }, - "address": "noble1nwsh6cl2fxjnwt7kgvfx5a60ac0u6693v604ee", - "percent": "0.0%", - "airdrop": 1081.3059567892901 - }, - { - "total_amount": 51743285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwzivfegAkKbF/tAot+gcwNnyR6iz9syxTY7/n8iu8a" - }, - "address": "noble1nwk4jp3nu6qtsp2s42lw2u7jzn6gs3m62cnle9", - "percent": "0.0%", - "airdrop": 908.9091951067523 - }, - { - "total_amount": 359363221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak8ywIpMfZTVIVZXIxxxyVh1psNC21++NWseuWDjvS/l" - }, - "address": "noble1nwlwj9tcjq50gudvnrcsvcmyale558w8h2mgkc", - "percent": "0.0%", - "airdrop": 6312.481628293988 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ViiQEc8P/pMoR0ZdohrX6PD8qKPxJyTg0LvcpN+HsF" - }, - "address": "noble1n0p6sevzjdafzdlu8ak9cz86rztzev9tl230ka", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 50090378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwxJVcJ8LsYBKhRV0o8fFaKm4KsodUM1df+pYM1V+LyL" - }, - "address": "noble1n0gjtusl5yx2t4arhdvwlal5t3x7lqhzmq9w8e", - "percent": "0.0%", - "airdrop": 879.8746571767326 - }, - { - "total_amount": 90000731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiGVTxe9a72IOrv9jtuMF8TtsYeEY6+02CERoIoQO1xv" - }, - "address": "noble1n0t8y6thd255umma0t53psj2p0dgqgmvzav694", - "percent": "0.0%", - "airdrop": 1580.9296215388977 - }, - { - "total_amount": 62478061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al7qXeJG/DD/ee2uQWxe4BbtY0maYFm7La7bBILmf9sZ" - }, - "address": "noble1n0dnfv7cjlc7sm9ner23yjvf5qfptpvu4qz6ve", - "percent": "0.0%", - "airdrop": 1097.4735008676114 - }, - { - "total_amount": 10426577664, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A25BD2gJ5mEdpr0NE/tAzoMIu4iCW4F7YwYHchm9nsTA" - }, - "address": "noble1n03ug9462h2vjxemrslewfccsc3nzj7zavvp75", - "percent": "0.06%", - "airdrop": 183150.5733024929 - }, - { - "total_amount": 334564746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7n1tSwONiuAPanVC5f4baHMcF/16uuQDUPrjRj9g3my" - }, - "address": "noble1n0jrrjjzel6fw8g8gqndg50ffm7m24wqhdp8q8", - "percent": "0.0%", - "airdrop": 5876.878014180101 - }, - { - "total_amount": 614219843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AszTeOgGEQQ+O+suK9l/18KYo9B9Ugg6vs8R7nl2WqzH" - }, - "address": "noble1n0k0fet8emcsmq743smfl28lgp4ygcq24qv87r", - "percent": "0.0%", - "airdrop": 10789.22730011683 - }, - { - "total_amount": 50155104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4/br05j0cVJA3/Rr5pIf09xW3WxWNvPlgFMZy+5agl7" - }, - "address": "noble1n0h6ejsjuvsflq3pgvsx02lk5a5hlf40xsvr8v", - "percent": "0.0%", - "airdrop": 881.0116173941304 - }, - { - "total_amount": 81042521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ail1B1s0TdCazPo3VwCA8PEMvXqJ6LT0m9HIQp1fTf9n" - }, - "address": "noble1nsz3p6kscknsk0whc9kzzxcjsu3nwk2q66fxuk", - "percent": "0.0%", - "airdrop": 1423.5720157993846 - }, - { - "total_amount": 437891639, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJ/TTmbt/H68Ahwb9UVPjxy5ylkwYj92JI3P+P34XrG" - }, - "address": "noble1nsg0ad3vwqwrx8q4d53wra7wkyrn4xdllrceg3", - "percent": "0.0%", - "airdrop": 7691.89155940653 - }, - { - "total_amount": 2606954676, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkPGj/yDgEZBjIEq/wgtC4gx4UzcvuyUUCQcRQtmZ//A" - }, - "address": "noble1ns2p7x4sj8etquq7zrq539etq84gemwfa59ugm", - "percent": "0.02%", - "airdrop": 45793.09327273953 - }, - { - "total_amount": 1043181743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxRmt3YiMbw+sDP1S1ZXfL48c3WqM9ltnqVPdfMCUWJD" - }, - "address": "noble1nstyqedtek80s2arjrjpsmjacu9vgc6pt87nxt", - "percent": "0.01%", - "airdrop": 18324.26136802464 - }, - { - "total_amount": 103235964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6mQPPYnlfLoMXj/D/YvOE3Pw9XiVCl3bibpEfqGSR0a" - }, - "address": "noble1nsdmqt5829gdkuamjg7pv5v9jgwtcxxk7u7a8m", - "percent": "0.0%", - "airdrop": 1813.4163098711194 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj+qScBVsIZCcOc+xulTgFKsCM9T2IKM5BN1+bxikZNH" - }, - "address": "noble1nswr3yjsm3quh84nq0x6gr2ekh2w8gyx38avya", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 240691060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqmmeN4r1GFHgNLN5MhXfzeAol8PmckHmhJaj9Znhak/" - }, - "address": "noble1nsjngnxwlpc6n2v7gftzf44sgh6esza6j9dqdf", - "percent": "0.0%", - "airdrop": 4227.917064291357 - }, - { - "total_amount": 27531979629, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiypV517fU4ROUQF/ZqHo97I7ETzwBWnoD0hKSUZQuyv" - }, - "address": "noble1nsn7ufsh3cuckqst9dxur8gvem43mfjef3chvd", - "percent": "0.16%", - "airdrop": 483619.6512125175 - }, - { - "total_amount": 520447194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az3TPnGGFTVXg+bC1N2dALcFfEj5kF0ulhtXap19lE7Z" - }, - "address": "noble1ns5ehf9khxg7yhe936hp7450p46hl0t0awgkhx", - "percent": "0.0%", - "airdrop": 9142.041140103644 - }, - { - "total_amount": 260678479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtvpCP5SebvpGIHZfIRC7SffRsZyyzTeHHYmbvfwmq4+" - }, - "address": "noble1ns48zse4c77uqha9lee4skmvk7kzxhujwmnnuk", - "percent": "0.0%", - "airdrop": 4579.010909909226 - }, - { - "total_amount": 158728845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXj0MvHH1CXifGtq94YltMtX5K9h3BzucjhBZLOcMay" - }, - "address": "noble1nshwa38sfkp5yhxfhugsdsl7nvs63amccxd9vq", - "percent": "0.0%", - "airdrop": 2788.1899409589946 - }, - { - "total_amount": 7702336228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxxUuvxV9nfmODSWmoYIq+u0qDvjG4alZZmF/AiOG+bK" - }, - "address": "noble1nsc4rrar3l0drl7fy2cfrhfnuyggtjgxplgrz8", - "percent": "0.05%", - "airdrop": 135297.25106229837 - }, - { - "total_amount": 5189518253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqCwAjbYOSlxWZQhfaydunrSsSA7gDDhWgH6Ixsk5lB" - }, - "address": "noble1nsuxjsp0zhfg23j4y8fzrxax493sqjjzfx0t2z", - "percent": "0.03%", - "airdrop": 91157.73879308261 - }, - { - "total_amount": 339173947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwDzERwSoT4S1WVWbj0TqZtP8fGlZmNLOn+plR3IxFJ4" - }, - "address": "noble1n3qwyw3tqsf4dg6u592jvnvrth9wvy6z7kwcvy", - "percent": "0.0%", - "airdrop": 5957.842049822508 - }, - { - "total_amount": 1139535000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AolExQfQnDDC4hQZdwaDZXyaUz/o4iQOQVrr9+Of8ZXG" - }, - "address": "noble1n3q0le4kazjhw8jzwm7a3srp5sjce4lwe95t27", - "percent": "0.01%", - "airdrop": 20016.777822397107 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgMc/SjZeaht3AzM3od5er7yOQIakVrrC8mf4PZRsgP4" - }, - "address": "noble1n3p25h9xm0pl38dg5txqymev63ajq4lgc5avvn", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 359662232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Th50h0s/j3F6+Sw1liUqDunDpp8DJF1NQ2jUDoc+oL" - }, - "address": "noble1n3rz0lpmslajnuxnz8h86sfshs2nytrtaldf9c", - "percent": "0.0%", - "airdrop": 6317.733978378412 - }, - { - "total_amount": 7599312907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+tlOt/wLDTMIrt2vERqvWHBfqdLBe14fsA/darghDvV" - }, - "address": "noble1n39mzh4d4jk8f88t7k7dgfg7d6fmmxnxg28ca7", - "percent": "0.04%", - "airdrop": 133487.56998450568 - }, - { - "total_amount": 92605880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqweTe/bC6ScmvCzeZpX+xxIJz+1dsmZ2xVfcJz0iP6" - }, - "address": "noble1n3x3gnxpmz6ax87av0gnfa8d0re2v2089yacsk", - "percent": "0.0%", - "airdrop": 1626.6909967728661 - }, - { - "total_amount": 52849245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmwWAvLXH5YvIfSAr3lkW8cKdmQXjoK9qsGT303Yl2S1" - }, - "address": "noble1n3f0zhkvvf0gvdymdmcuvwvn0gj0knepy8nme6", - "percent": "0.0%", - "airdrop": 928.3362031411332 - }, - { - "total_amount": 100013601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Q8bu6KlSLAMrNlpkrDDC5gJv76tmhmb6V4zsmsrWEJ" - }, - "address": "noble1n35yl0nqrq306vcwgzk4he4y4femlyg55ydhkp", - "percent": "0.0%", - "airdrop": 1756.8131127476322 - }, - { - "total_amount": 654561323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlvtU9zTAHLPGQjQRfQpxIzLnPW+SNdTxWS7etNoVWYV" - }, - "address": "noble1n340zt8g3kanlzn9x2xd4sfd6yhr7pxgdd575u", - "percent": "0.0%", - "airdrop": 11497.855330134931 - }, - { - "total_amount": 2350772592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArFRBD/uKqplf6PX6Pj2zhc/eezQkE+V4hFNt9L/e2i7" - }, - "address": "noble1n340wk3pdndr7qzzfg256tjxv4pcjtweymftxm", - "percent": "0.01%", - "airdrop": 41293.06487737943 - }, - { - "total_amount": 55345876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AptXeKuzd0NmTJwGclkiM+WkbM0bZJbvWnzc/FDLmIYb" - }, - "address": "noble1njqr6xukgxycmp98xjzwm6e3ad7rccfh0wg96q", - "percent": "0.0%", - "airdrop": 972.191379183562 - }, - { - "total_amount": 1356971921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5dwX6VG9BcxqxHL1ZWbNj6nLYO1ywTanbycWNcnQiXO" - }, - "address": "noble1njpswnglh9wul253f39js9rsawn4lqd6umv7jf", - "percent": "0.01%", - "airdrop": 23836.218680328733 - }, - { - "total_amount": 51718895, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5SgIsy+VtrH0R+967Dex7GKaeV2dxFArmveKIflYZk6" - }, - "address": "noble1njpu4ga46tt3tpt264fz3gytj0tdayqv3wfnfl", - "percent": "0.0%", - "airdrop": 908.4807666591063 - }, - { - "total_amount": 187934519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak/UO3w+RSFhmVyxJ2lSCq1KFSsw37/6kQ4LUt3L5vX0" - }, - "address": "noble1njzgvfkh649dwzr708u7f3jp4scldmzh7ypsgn", - "percent": "0.0%", - "airdrop": 3301.209275697603 - }, - { - "total_amount": 583906841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2WURYZNRTE/FvXXImr1Ka2+Mi/+0EkH8MP5z1ojON1" - }, - "address": "noble1nj9z03zyaetysmp2gh4ehyh90r9gu7fzs5mr0u", - "percent": "0.0%", - "airdrop": 10256.756927408771 - }, - { - "total_amount": 74519290, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8caKfRIQd8M3/Dvixh0RKrlJuk1WxpU73l+4Z3O7wa5" - }, - "address": "noble1njdtkyrwef9sy0nkwh7mtj3urftnqlhuz30atz", - "percent": "0.0%", - "airdrop": 1308.986622975844 - }, - { - "total_amount": 726085927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzezNlJ0iRBlyEQDRIgleg5OWPFWO9cPsyFkATIpwlnT" - }, - "address": "noble1njwqsrfnxv04a6y82ypp5zj608xw3xezsmrrpn", - "percent": "0.0%", - "airdrop": 12754.238071431106 - }, - { - "total_amount": 90550000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj1/ZCi2VInr48XDd6x1upzxUGOs9ieat8VKgbp2FkwC" - }, - "address": "noble1nnp2t0c9nfjstswg33p2hfgcs9p79m27h7q8py", - "percent": "0.0%", - "airdrop": 1590.577939087486 - }, - { - "total_amount": 104874481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/YoEyJ4d+iECXoUFdH/vvEsx/6DFatiueGa5tQS4Gx" - }, - "address": "noble1nnt09s0t6a54vxqfedyrs596sde63xnnr6mzfw", - "percent": "0.0%", - "airdrop": 1842.1980767736025 - }, - { - "total_amount": 391788330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnJ7ua9oucKZ4dVZAl5fW45TuqIfo9USZSoZ1kK328Qi" - }, - "address": "noble1nnv856w26kmw3r7lvpj8stj794py0ls93e7gwr", - "percent": "0.0%", - "airdrop": 6882.052727663476 - }, - { - "total_amount": 238571129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArPS7lKYu4TcVMGOxPt4LCTi/Pouaq0I/k6uyyPgdFbk" - }, - "address": "noble1nnn98h92funzp2ujmqzsqt53h2wfjpgv9vduxk", - "percent": "0.0%", - "airdrop": 4190.6789032644365 - }, - { - "total_amount": 908843407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuPc6F7oORpQBkgTMaPP5/FBYmX0/RSpYUg0gsBQ01nD" - }, - "address": "noble1nnnk59k39q284epcf0yh58rvmr0jt6rxz5l72w", - "percent": "0.01%", - "airdrop": 15964.508815674313 - }, - { - "total_amount": 866865159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoPU29eE3z9KIbKnNqYyEaTOsRToNOOVQYfhJd7dKbcn" - }, - "address": "noble1nn7d86uf54fpea7u637zqga04gdslzvk47q4yr", - "percent": "0.01%", - "airdrop": 15227.129741236507 - }, - { - "total_amount": 1001239552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6lqOUzPDhXbcaCFCRQuH9njs0Aej7tkWAFVcZwLEirS" - }, - "address": "noble1n5pd0r8rmpw94wq357s5w5k5hlh74h80jynhyc", - "percent": "0.01%", - "airdrop": 17587.51566154652 - }, - { - "total_amount": 98759757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7I6B8wpy7QrY+GHiNAKrci4pOI9tHS98PgyvAnKiRzA" - }, - "address": "noble1n5yr7uxk9eza6m29ew7zvrc0zkd5nvwe9vsdwm", - "percent": "0.0%", - "airdrop": 1734.7884125217106 - }, - { - "total_amount": 87651945, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/toNCyycjudcz9+B++RUFsWviu7cgW2WyHvqDshsIr" - }, - "address": "noble1n508culcmmzcc7wn8rns4hd9ks93khsfcrsuxs", - "percent": "0.0%", - "airdrop": 1539.6714526240712 - }, - { - "total_amount": 663033625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9JeWtixHQz0bNVfSjTG/jHH/YJSzekzd2eYNIPljM8P" - }, - "address": "noble1n5usxthswjge2mwddx6895q5ckxjvex0fmt6pv", - "percent": "0.0%", - "airdrop": 11646.67760130541 - }, - { - "total_amount": 1102361128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxWF6CJP95EhIcz/NpknKMbN5x0bAwpf04opmqJn7nrv" - }, - "address": "noble1n5lkxn6v9dar46gt5dva8lwel4zjwqr3tejmhw", - "percent": "0.01%", - "airdrop": 19363.791177298688 - }, - { - "total_amount": 335102767, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApVzdnagzSTABF5KZlY2mxdMruXedNbPC4MT8hG52WuI" - }, - "address": "noble1n4pea37th4u0wypf4j9g7h26zpucuwatjfdwrs", - "percent": "0.0%", - "airdrop": 5886.328752262551 - }, - { - "total_amount": 291327808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atgs3gCEJ/vGXI8CKdu/Gq4LVak3RUE+xAFkeeAEqkA4" - }, - "address": "noble1n4verfrkzuxadnnduhanlrz39mv8c4n8deswsn", - "percent": "0.0%", - "airdrop": 5117.389115930588 - }, - { - "total_amount": 109006339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwNeSPwdfcy5ehQH3QsOneeeXD2fj74tiSeG/x9MsK3" - }, - "address": "noble1n4wfmek9cdn34n7t40h9uvks8drxu36rxykkat", - "percent": "0.0%", - "airdrop": 1914.777228427298 - }, - { - "total_amount": 179100919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApP8BmGMXlJ+VvnSUATtKo64HdTu81jWRSA0x0dY6MLE" - }, - "address": "noble1n477vl2knfku34n7d2pprwykvnvzyay2d00q06", - "percent": "0.0%", - "airdrop": 3146.0405370700687 - }, - { - "total_amount": 91389682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1BbWShg1HXzrt9aA5K/v6gaKNwNq4KtJtSdl/L0xxTc" - }, - "address": "noble1nkzqtvsq7pl4rnvezt96a45afvv8e7rugd2uth", - "percent": "0.0%", - "airdrop": 1605.3275764706868 - }, - { - "total_amount": 264376642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al9QD7k0Wt+U745bFtrz2RF1wJCGQ/+K5Tnoqo20Zl47" - }, - "address": "noble1nk9pnpwqy7xa2krmmxls0phdc7xqynmgs8d0ep", - "percent": "0.0%", - "airdrop": 4643.971887081502 - }, - { - "total_amount": 56040591, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Og5UY+DdxrygiQ3iMxuatMlUu9v7zXS+4L5LOuTinF" - }, - "address": "noble1nk0a97g6cvqwrcv5pjwxckk5z7s6zaj7g6y0q8", - "percent": "0.0%", - "airdrop": 984.3945636446682 - }, - { - "total_amount": 244474578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A90Jcd70wGxqJwh1kmkp1eM6otsoqAYJ1TPDJ9k4+ueK" - }, - "address": "noble1nkjsnndhuw2tkvu4u3vpl5tj7uzutjs9g5eh3v", - "percent": "0.0%", - "airdrop": 4294.377365372974 - }, - { - "total_amount": 2356268287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmmCaBJLcgPNrhO7Eb/yvOa7ZOafFYH24csvzquvWcyb" - }, - "address": "noble1nk7u2uecd2vrk6a5hkh0hj79va7ptqu0r57pyh", - "percent": "0.01%", - "airdrop": 41389.60083792005 - }, - { - "total_amount": 190663787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwuB6u2zbU9ML9ldiyX4CkWbh8K5k7Wi4yyguW2GZ2iD" - }, - "address": "noble1nh9n2mem9dcwpqrlmsvjdr32h86rtk26wf84h6", - "percent": "0.0%", - "airdrop": 3349.1508932642228 - }, - { - "total_amount": 266024189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPcPmKHXJolrSwQaumLuOfbYmlt+TouiNNE8UYTzhFS" - }, - "address": "noble1nhnvusnymqmqv367ppfv39fqcelfnqjf0nhucg", - "percent": "0.0%", - "airdrop": 4672.912272634344 - }, - { - "total_amount": 331298705, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRoeR9cV3/nZ9wDlWIhK7DAlzHofKEIkgMPWXsAuxmo" - }, - "address": "noble1nh5qchhl8ufyyu68f6kq0nksjwespqm33k6vk4", - "percent": "0.0%", - "airdrop": 5819.507580577062 - }, - { - "total_amount": 34923729823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AleDwCecYJy+vFzzNdUYRENYeWVvJlFf1pA4WIUTm4m6" - }, - "address": "noble1ncgpx06a956mp2dt7n3ktd3pzzyly2a4af9n37", - "percent": "0.2%", - "airdrop": 613461.2281293817 - }, - { - "total_amount": 239890093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/XYFjXNbaqVcFOpLm4itpeLpmxag0KhjuCsr27bL67" - }, - "address": "noble1ncfskh6945xqmq7rshye9dzmeckdvguctr6vdl", - "percent": "0.0%", - "airdrop": 4213.847484610108 - }, - { - "total_amount": 517253010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7dbRu86a7bF/yRx6SOy2K8cT71V5HjOdcNS3b1R1Mgg" - }, - "address": "noble1nchc75uswex4v5sa7fvprqpvr7jelnd3vzl7a4", - "percent": "0.0%", - "airdrop": 9085.93292802428 - }, - { - "total_amount": 525629252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9zNV4MY5nMvqcIgfueHheuW4X9SL11o52N2oC3dk5jY" - }, - "address": "noble1ncewp406gcgqd48082j4pephyr90gwcvk2gx7n", - "percent": "0.0%", - "airdrop": 9233.06783401719 - }, - { - "total_amount": 63156963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ipsPWjhTyptnVjncEeZd/BGddgj8fdKdX7rT6U4Gj9" - }, - "address": "noble1nce5z6cetl7daqzkx3n0uqye2qvvhjh4l07q4c", - "percent": "0.0%", - "airdrop": 1109.3989182502992 - }, - { - "total_amount": 1984552189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjRk6yQ7wDAFFQ/9EtbTfkZsGS7jsnCEvG5OdWmcZXf0" - }, - "address": "noble1nc62gnsx52myzvezu9ndxqsmdk8mu2mhvd4hgw", - "percent": "0.01%", - "airdrop": 34860.13175915161 - }, - { - "total_amount": 59782027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay3dMSXh2J5kPbNCDCTAWtMWogMd3Rnd1h57tfh0ClHS" - }, - "address": "noble1ncay4z3xkpymmgjr9mncykhlq8zrrvyxefur4m", - "percent": "0.0%", - "airdrop": 1050.115663170982 - }, - { - "total_amount": 50989821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agh+vcDhvztC4n68lnNJBqRaKp1OV8uUtjWwvI6izuX2" - }, - "address": "noble1neqprx4sd0xrs4snn2q9ccchg6ksva3pnnyd6q", - "percent": "0.0%", - "airdrop": 895.6740408682474 - }, - { - "total_amount": 99058918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1XSy3DNOZWz49PCYPvvfglqFtkP/G1G5OLSFT40Rtyn" - }, - "address": "noble1nefqzz9plple4dvecc4pv5x8sy5zfu9xr64d5v", - "percent": "0.0%", - "airdrop": 1740.0433974674352 - }, - { - "total_amount": 645357320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWj5p/iwOvCKVIs0431wk1wyCwDp0OlT6bM7xtCxy7n" - }, - "address": "noble1nefqtngrnrcg9leyj29maxj82lj0jh0vh2x8nh", - "percent": "0.0%", - "airdrop": 11336.180187969334 - }, - { - "total_amount": 103375098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjvdoGdSYF0PgFvMGeOBj3QBrbIkIqOWb4ZVP+MWY+cQ" - }, - "address": "noble1nef4dm4ep7nnlra6w862wmmyt2q84fe84t5202", - "percent": "0.0%", - "airdrop": 1815.860301820065 - }, - { - "total_amount": 51257491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+YK8PxrQ7RfxEpkNJMpQIUFGPGpBi8S63XPt5gm84ub" - }, - "address": "noble1nedddn8c2n2hyqd3yrf9y0njd5lscrsk3xqcc7", - "percent": "0.0%", - "airdrop": 900.3758630323064 - }, - { - "total_amount": 488238952, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aozp3a8mjAseCOto/iZikPNS16zlQx3FHlP0YgIrD2Xw" - }, - "address": "noble1nen8k454qmeuh98583vyknwt20k09v8wxqd0vt", - "percent": "0.0%", - "airdrop": 8576.279470506834 - }, - { - "total_amount": 51944373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiyr0rsFRBO+EjCiRf120hKz25NHsnZMOefv2U6MklGB" - }, - "address": "noble1ne4zple7m85s89vvpfyat284phvmyy7fdndn5r", - "percent": "0.0%", - "airdrop": 912.4414550362411 - }, - { - "total_amount": 420407331, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7OQmCjXUFtA7Q6ejFXvXFDpDoC6mPsfIVIPeAtkb2An" - }, - "address": "noble1neevmecdxg4t58rm0jk4ekl7vf0hmpuc3vgsc2", - "percent": "0.0%", - "airdrop": 7384.766715839321 - }, - { - "total_amount": 54737247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3jjJ4GKzwMXsLvIH14YHb/8+4jC4CLMFYxsGYKv9a0R" - }, - "address": "noble1n6qh46fdzsn32nvm375unj2lr89kv7rmn884lc", - "percent": "0.0%", - "airdrop": 961.5003591892066 - }, - { - "total_amount": 278281812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvIj6UEXD2RM810khdTahvxfS7giXLmEUq6GLO+iJUCE" - }, - "address": "noble1n6r4ax8czyhxssvwtty8kwdzr4q6jkjnnuk8yw", - "percent": "0.0%", - "airdrop": 4888.226515919284 - }, - { - "total_amount": 2718529358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah/xkfoGX7iJTIpFQhjPYlysl8psM0x0CH2/Ier0jmN7" - }, - "address": "noble1n6d6rwz2jqhc4ah82mdrhe3mam867vceqz2kq4", - "percent": "0.02%", - "airdrop": 47752.985351700336 - }, - { - "total_amount": 419678525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7V+vZqJRMjJQqS16wdF5FsS5sVFexaumHpwSDO+3T1H" - }, - "address": "noble1n60nyh5j2l6hx2uhcmh9gj9yytfvg40sflu2ry", - "percent": "0.0%", - "airdrop": 7371.96469766732 - }, - { - "total_amount": 67651087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahps5uztPEk48KZTyavrjDr/Wvoubn0cRBLhcMB38o8n" - }, - "address": "noble1nmperxmdruwt09ttacdq80a0fppq6ajm709tve", - "percent": "0.0%", - "airdrop": 1188.3415409993174 - }, - { - "total_amount": 57680987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cMrrJ48TdidyXvxl1J/uDjoUnq+3YchKgmvyk1r7PN" - }, - "address": "noble1nm2dgke9p03ev43jk4r950ml0gwh2kdc9urss3", - "percent": "0.0%", - "airdrop": 1013.2093365763893 - }, - { - "total_amount": 143230115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cVCBiFXhsechH8rnW54dwzevzwPv0zZUAf1tUm+t8P" - }, - "address": "noble1nmdfhm9jwucu70xyt9crjeqy7ra9mrvgeufr6w", - "percent": "0.0%", - "airdrop": 2515.9432482823145 - }, - { - "total_amount": 10221337027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1EiKqZEoEeAjnJgHJdTW1wd7P82AWHmFW82f61gOvMb" - }, - "address": "noble1nms78fxglettl428u88a05atzumv2srgm39n2n", - "percent": "0.06%", - "airdrop": 179545.36922279702 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+udYRRcJMn9q3OH8ceSj7S6Fq17N65QV2Rr49AK2r/i" - }, - "address": "noble1nmkmlcth2d8skcn4xfr27fswewajts0cwwhqwt", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 56431160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnYUcd/W9wo7z5/FCQETmNkOhdm+d0IsPrgro40SN+Ga" - }, - "address": "noble1nm6yuvs2jhwtc3725nkaj2094xzld2guyqga5p", - "percent": "0.0%", - "airdrop": 991.2551979361255 - }, - { - "total_amount": 393720654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxMZQ0NqwXOHGIAWnPfDLGV3pN3MX+byc0HM3DrM7G5" - }, - "address": "noble1nupyw8hz2ltrgvclzmac8uqrwe7h8f46g2xqpp", - "percent": "0.0%", - "airdrop": 6915.995432528957 - }, - { - "total_amount": 179428333, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlaTrBH8kjcNR3C1tzcFw5Hamcv78RCL2zFhVKH5q5J6" - }, - "address": "noble1nu2tvechspyanl700nvneju2sff4nwl5hsma9a", - "percent": "0.0%", - "airdrop": 3151.791806924827 - }, - { - "total_amount": 2612392255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUlztyygWTlfI5DFMez0Xs3wbLZNNEFjaxFPA2Jo7Hq" - }, - "address": "noble1nuvcrpd27cskcjrtwxa8alnx3jg5n2nxa3y6du", - "percent": "0.02%", - "airdrop": 45888.60838261744 - }, - { - "total_amount": 2476056139, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AretKv2VrLHf5UcejFH1wIUQmK2TeAGp+SKYe3Nf1YK3" - }, - "address": "noble1nujrce7kyx9w7k30nlc4tw8f20ycyrwcpt4j0e", - "percent": "0.01%", - "airdrop": 43493.763342192564 - }, - { - "total_amount": 94372154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQyCPnOhSjU9k3cRd4kYb80HYKqIbBSFDTsBuNlps4J" - }, - "address": "noble1nuedt9fpf6fyce4f6k34p57cgu08tdsp6jzdck", - "percent": "0.0%", - "airdrop": 1657.716910177436 - }, - { - "total_amount": 78542841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkIdWl9ImPhalOhHmj5BRpj5/jHZNIfmgdBv4bNA07oo" - }, - "address": "noble1nuec06qndjm9fqshlq9xsdz58y36z7g99kkg54", - "percent": "0.0%", - "airdrop": 1379.6632818095645 - }, - { - "total_amount": 446188601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AofCz61qV29+3ql4QqO47/eDUq9TyZWAusJJs/3Hj182" - }, - "address": "noble1nu6urgklzee6ehu3uel6sa5jd5xydycvs64c9h", - "percent": "0.0%", - "airdrop": 7837.633853372816 - }, - { - "total_amount": 154811452, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1EFeQlWeRjmP9JJe6eq0JEgIlS8nKTTp0DwWK9JGXJR" - }, - "address": "noble1nu7zadhh8p9u7wgmr4tgy9yf440z8d667svwc4", - "percent": "0.0%", - "airdrop": 2719.378026165668 - }, - { - "total_amount": 64782646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A97GvhaxSFiuZdSrEKE1A5gcRnNHp2AeIgTRdy1Q9R/y" - }, - "address": "noble1nag9m6ztn7qyaya5nh36ggcy0388mfau3lrnt6", - "percent": "0.0%", - "airdrop": 1137.9552464198139 - }, - { - "total_amount": 129871727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhVJPv1bUDh1pJrMv4dGfL+hFsjMifCYuMZyghGgXWBF" - }, - "address": "noble1nacclrgzvmvvtlc2lp5p3gt7ymn8ywt65cenfd", - "percent": "0.0%", - "airdrop": 2281.2932509927396 - }, - { - "total_amount": 363924755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqSbduWvFMAq4uQzwe4GMkqxO6D9SDb4OJKK0Z8yLmsN" - }, - "address": "noble1nam7c3rzznwvf2gjde5s8p4z9u74qvgw3hc5ma", - "percent": "0.0%", - "airdrop": 6392.6083577119625 - }, - { - "total_amount": 565364454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlMquqRCo1rMaj4z5APMg5PLCIsaxO57+5PRrRsfqYwq" - }, - "address": "noble1n7p3y6c3gvt3vdeapp0qg60zleyhwafy2h9fwq", - "percent": "0.0%", - "airdrop": 9931.046141100405 - }, - { - "total_amount": 298666888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+YFluSTS/FONrZTIXbgVeOXAMVIZgscvEl5qpu4dqei" - }, - "address": "noble1nlqypwj3w5dg3faxpda849xtakne40kra7d0cc", - "percent": "0.0%", - "airdrop": 5246.305501807984 - }, - { - "total_amount": 497238248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvErU2NjI6N1+ww9SUyTsd+4ZgXBps8rpfki9EHOgqMT" - }, - "address": "noble1nlpqvgzufy9ds63j8y4030ufjrfvrkcypnsve0", - "percent": "0.0%", - "airdrop": 8734.358782322608 - }, - { - "total_amount": 353388391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArFFo+y2lJBQ9Ab5KbLGtz0AZuPnoh1BDROPRrprOSiL" - }, - "address": "noble1nlzhjltwnj0ltrnhtpdrkvprzulv3d7x7glllp", - "percent": "0.0%", - "airdrop": 6207.529305954971 - }, - { - "total_amount": 76507335720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5xXM6tzwNcMIESWJhEozJd+4POSZRSZGhWihaXuF86a" - }, - "address": "noble1nlz6p5w34akqvgqv0jt8qkljvpyap0h8j7e2mg", - "percent": "0.44999999999999996%", - "airdrop": 1343908.1211992488 - }, - { - "total_amount": 4730000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7UwmYw6gyu3iKN9QFa23L3Yo/oABAFnxj2lE8BxP8z1" - }, - "address": "noble1nlzl250g2yauc6l328skzff3h27vw8ajl90ypa", - "percent": "0.03%", - "airdrop": 83085.95971158263 - }, - { - "total_amount": 50109351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax644PVDBT8qQuzXdylCH/M2EXZRr/AXNxxjKb+cZFJK" - }, - "address": "noble1nlxve2seyr73a3kpaclsxw5k5z5s0razgt966z", - "percent": "0.0%", - "airdrop": 880.2079319999054 - }, - { - "total_amount": 133324255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlhWomLxfWvuOoSzqu0ORm1tHW9x/5m5s9zOByffRR5I" - }, - "address": "noble1nlgvrm53x77w45h4ryyj0gpuwrpgy4frqxx2yg", - "percent": "0.0%", - "airdrop": 2341.939467126167 - }, - { - "total_amount": 134428993, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0GtZJbrr8lgEK6XmD6MNevWfjUYggEqf9GBXmPwbcDC" - }, - "address": "noble1nlg730rrh0jl55sk2dnprtk8rkr2utrcm7k22c", - "percent": "0.0%", - "airdrop": 2361.3450098238104 - }, - { - "total_amount": 824276787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8+zRJfZ1wCBwR8NYr/GB3MoOrNv+YXRyUgp2jkKNrQa" - }, - "address": "noble1nlwycfkzc7q55nv722ckkjh6myysfyhg07hajh", - "percent": "0.0%", - "airdrop": 14479.033386020037 - }, - { - "total_amount": 8000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap/1npZC+F3W63rZ5levms70iKlPDA42rH7YMQloOI6q" - }, - "address": "noble1nl4cmhfgvxnzmzp67v4jvu53809qsvqtcz5ndk", - "percent": "0.05%", - "airdrop": 140525.93608724335 - }, - { - "total_amount": 62450547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au8VTc2n8z0Jllpf91XqHvGVCh9Hhs1blUMyYui3um8L" - }, - "address": "noble1nll8aw46lk9zs9hj4wsqgpxsgza0pxu4g0xadf", - "percent": "0.0%", - "airdrop": 1096.9901970419235 - }, - { - "total_amount": 1200469171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As1mq8yCIgTbvNbbQx/MVHVSkPxWOrK7HiSQrj1a4RQS" - }, - "address": "noble15qpmaw36jqup44cpmtej2lmk0p0l8d70k2srmc", - "percent": "0.01%", - "airdrop": 21087.1317498315 - }, - { - "total_amount": 177325369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Art+zc07N/2OmGpQdVozaXMA71wEtA9JP/2wMK9UrAtx" - }, - "address": "noble15qtl3eknwv4y7x0dnvvgrkcgqrkvkugx2jyrht", - "percent": "0.0%", - "airdrop": 3114.8516838426053 - }, - { - "total_amount": 137925421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32kir/yAQ2mD1irvOq2sMz9zBJ5sXILR1gi/KzXCck5" - }, - "address": "noble15q3m8veuymvj0g5hpyxv2gp47w4qpsfapqw4v8", - "percent": "0.0%", - "airdrop": 2422.7623620315167 - }, - { - "total_amount": 13826726904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoywQRID+5SNWwyohJj3XoKnqYvqkjuksArykvoZtD/d" - }, - "address": "noble15q5y8dwgdfqh3ghgjdlu8x285k0dfcj5g3ane6", - "percent": "0.08%", - "airdrop": 242876.717650909 - }, - { - "total_amount": 176444172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2ckMolvYjUdZ9NVvZGNy2xDVstlphCRWyewmII68Ba" - }, - "address": "noble15qmha6yseu9qahrxv8uvpzuh5sdllr9ej5hg2f", - "percent": "0.0%", - "airdrop": 3099.372804679822 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/psnMS77/MDSSb5YGklN31W3Af+4p/JpHNZABjCjwLG" - }, - "address": "noble15pqhm7v7jl3q9tk60zpndeje08nfal4m248pvj", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 58574361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/1PrKLIcuac5M5g2osdVmizNTh58gOiW9yziDDrE3L3" - }, - "address": "noble15ptdxcd5gp439xgv9ujkvs8zn4l5m49pfk233x", - "percent": "0.0%", - "airdrop": 1028.90211377964 - }, - { - "total_amount": 82884180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8/Qe/1SsSn9Ap0iCVuT4+jZ3rt6752voti2VDSNdP+T" - }, - "address": "noble15pwn9nkfgczee0c2yg0jl7xdd3tds33m30d7h7", - "percent": "0.0%", - "airdrop": 1455.9221226654468 - }, - { - "total_amount": 86174362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsN5tJlNFMEFWRqw4kudf3YUNTM7weF2Aj5C1+A2qTau" - }, - "address": "noble15pswlsa8n7jmjahfj4ma98g3x5ta2zy57quca7", - "percent": "0.0%", - "airdrop": 1513.7166108463716 - }, - { - "total_amount": 634382029, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2Anu3GxNmUFWO/rRxn/eAuI2yrHMqWX5ae8vZBWc2S" - }, - "address": "noble15pn5hs98f2rt9m3jy2sjg4rvugp844hz86g6fl", - "percent": "0.0%", - "airdrop": 11143.39105776872 - }, - { - "total_amount": 83850254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Iakanoq3WiiWlMoUEDpmGa4tYTvO2PL2HQ/lszp6/7" - }, - "address": "noble15pmclsa8r9ry0c3lqmmzj9vvsww4hfvkh58pqw", - "percent": "0.0%", - "airdrop": 1472.8919293128902 - }, - { - "total_amount": 2261262374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlYPutEyetlZqYoVjRN6CnSsNtfXtyJgYbv9LZHcaljo" - }, - "address": "noble15pl6ufz4k03yr86hmaa8c5waxkkkqk7wnremzv", - "percent": "0.01%", - "airdrop": 39720.751480651525 - }, - { - "total_amount": 236331859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwQ9AQlsO6Ve6eaYBVKUI1vQow9VR+4HbVL068b1zblo" - }, - "address": "noble15zqntg33gzpkawfr73n743mcnr6rhg4qp0hzma", - "percent": "0.0%", - "airdrop": 4151.344464151676 - }, - { - "total_amount": 536989936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjwkQtFm/b1nmjV0Ld1DLPn5aBExsTbJ4d6mcOxoQRjZ" - }, - "address": "noble15zz35mvfz5wslq29ftasflgefdanhumcxlkg9x", - "percent": "0.0%", - "airdrop": 9432.626678228613 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap0m6QVutwX+tT8oZQB/1I2Zcdm0CAr5L9JEXjuHIeSc" - }, - "address": "noble15ztv2ss382krdc0nk55d424jzst4lgxrfvrsk4", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 238622924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asq902HwzcAzeNGoMT8b7/au5N1unVclp/cVlNZMZYTz" - }, - "address": "noble15znaw4qq9jqnyv00spnwgfqnqsjlazc7mgjwqv", - "percent": "0.0%", - "airdrop": 4191.588720871891 - }, - { - "total_amount": 2576262338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvtAVcUkD63uf8+r4aWS1VNhM0cogbyv0KmiF0IWd+42" - }, - "address": "noble15zk9adsud6x5aj0jfdd2ce8pvaa03zh6dsragx", - "percent": "0.02%", - "airdrop": 45253.959581720024 - }, - { - "total_amount": 472433569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arxqqm2R4NXei2MAgr/sYZnLWgbY9bIk0HJf+9K7aI/U" - }, - "address": "noble15rpn47uu9c3e24ysvcpw8a63eeyyfjmd43tt4j", - "percent": "0.0%", - "airdrop": 8298.646190345284 - }, - { - "total_amount": 249262954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnYx0OHQRNQNjpTe2FjBFxc3uyEzrLaIYTgzm+76GQ0o" - }, - "address": "noble15r8vx4p75rnmwz7jy4q2ye66ccg2u8vlahvr9j", - "percent": "0.0%", - "airdrop": 4378.488742840185 - }, - { - "total_amount": 112396797, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar/c8p+frhR8ZN2kjW655sWQjWRj07kxHcPMQFCFGdDB" - }, - "address": "noble15rg6uzs4gtr656ayjnpcs3fcpdu2qpjnkyfhq5", - "percent": "0.0%", - "airdrop": 1974.3331389541083 - }, - { - "total_amount": 8667528540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alw50BaGjm6EHwSAcL2grpPLzqG0OIyPn5Q7pH/gIv+w" - }, - "address": "noble15rwc2zn4akune5rkujyc3nuyurwnvt3h8kn88h", - "percent": "0.05%", - "airdrop": 152251.5702057997 - }, - { - "total_amount": 351778157, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtkMmcRHhze6FgCzuF4/0ZrxtyhQBLOxbicm3zCUFMr/" - }, - "address": "noble15r0sq4233u5jg5ad7pda2v8dqsux2n3qzky8wc", - "percent": "0.0%", - "airdrop": 6179.244350933783 - }, - { - "total_amount": 5224352156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/tQAhPH42bd7yyrM3mcSUShFQOcNJHC+MqPvvgfoO3q" - }, - "address": "noble15rknyn2q6rvwmj7hsdamf6lznvezz8px8tmqm5", - "percent": "0.03%", - "airdrop": 91769.62214641352 - }, - { - "total_amount": 173885566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amh3rNB8XvvTMreia8R8SDqutacjPOArYB3pnUDOfpJf" - }, - "address": "noble15rcs7ls3wx9k894en8ceu7fsgf7pz4pj5ladtk", - "percent": "0.0%", - "airdrop": 3054.428991776267 - }, - { - "total_amount": 54076756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiXgWgT6zSDEm+Qn3Fw0AdyDZTIa+saKMKxNOI2pC6LK" - }, - "address": "noble15req5xqs5fwr2j4ylsrcycc9ytmpqmu8jp0jgp", - "percent": "0.0%", - "airdrop": 949.8983446826817 - }, - { - "total_amount": 79705357, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsDlNy5SzNj+HiXPPcoQA696CaCPZo8wPWgVmFYkMLw6" - }, - "address": "noble15ynz4c7629fwu39clh6p78egd854vnjhwehy72", - "percent": "0.0%", - "airdrop": 1400.0837379491143 - }, - { - "total_amount": 58576360, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvIMQvWWe7ggaiZ6BuChJ3SBFnT8xCbCie8rT7yglHIi" - }, - "address": "noble15y4j0z0g3nl257n4rnsmjpytdag5m6x9twnxjq", - "percent": "0.0%", - "airdrop": 1028.9372276979198 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnBfIgSZbelcjxT0gaFD5tFAsoZjRVvXkzYPrqDDykuS" - }, - "address": "noble159qtt6zq7lu7zgkjt0y0mwk2chucgq6lucluxp", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 123569232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1yDBuwmEXPYduOOPQB31b0UbJ6IXhY4SS6/gSpS7adD" - }, - "address": "noble159pvyrc4p8sl4l2rrsdp60zxmxpppy8maqdtcj", - "percent": "0.0%", - "airdrop": 2170.5852497977185 - }, - { - "total_amount": 81980373, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av2WTAtbpI4av2daXS7X5oJRJk4Daijjc84osmH9v9Fs" - }, - "address": "noble159fry747kcxsh2nxv4t54mqtx49s7lwt0ew7sq", - "percent": "0.0%", - "airdrop": 1440.0460820757964 - }, - { - "total_amount": 172354632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnOfhv9ZY/3BeY5HswaL91NUJm4z5DAXRt3ffOcy6qih" - }, - "address": "noble159teqvs7c980c8nhkf9lyy72t8hjlen523zgd3", - "percent": "0.0%", - "airdrop": 3027.5370000965436 - }, - { - "total_amount": 57869312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+hzgfXkF5DNE0rKFgI3OXqMq2XR05iUNk9ySztNWGD" - }, - "address": "noble159van6dz2zdphg7hwt2gnqeux43n9e6c52tk0u", - "percent": "0.0%", - "airdrop": 1016.5174049405931 - }, - { - "total_amount": 2508138081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Wlz9/B4euP4KAvtB3YFINV62CjFoadw+yA0Odc3sln" - }, - "address": "noble159w444056phpcnfcfxstrtkezcymzkr6ar6khh", - "percent": "0.01%", - "airdrop": 44057.3064585734 - }, - { - "total_amount": 506250133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0q5ixbSn0oxB02//6YwSCuq5i5Ef8vZjPMQMlpCzKBf" - }, - "address": "noble1593gglgy4kwwc8x6kstmgevkddtgex6dxpfzfg", - "percent": "0.0%", - "airdrop": 8892.659229264556 - }, - { - "total_amount": 65061455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4+XWYoTOiRm5pT/idZ+VQEnfwMy5l+5mkAD0VrAVkLT" - }, - "address": "noble159ncglenfs0etmwnlnjetvzq6gr85dlsx5au4r", - "percent": "0.0%", - "airdrop": 1142.8527333841325 - }, - { - "total_amount": 227552583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApZ6p2xMVHayoKzQd9KpZxKV8c1vHn0dPp4kVfroaDqn" - }, - "address": "noble159cywr3kv9689jsxh4cvleg8g4npzgg6p45j7d", - "percent": "0.0%", - "airdrop": 3997.1299668931424 - }, - { - "total_amount": 1533328654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8giqysQ0/ZanSwPiZSfS9UEpkDRDmyvlLGvK28e/PS+" - }, - "address": "noble1597rd825lnwfzruh7jy7zrud662t0xq34nwakj", - "percent": "0.01%", - "airdrop": 26934.05555409286 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6UAk/QXYwrotAMvq5IUPBcRz3IiiU+Etc3WxER2bjBT" - }, - "address": "noble159ly3dqk77h4txppfs488vz9xhll7dy23c29nj", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 96246979, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Sah0+li8zJo5mZvCdXYK/JPz/laPTB7XD3o6uXvnqy" - }, - "address": "noble15xzlfssqtsjvypl09z9tgrgwl4gh8vyy8j4y36", - "percent": "0.0%", - "airdrop": 1690.6496024430317 - }, - { - "total_amount": 438579938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiEuFeUtMpptLZyfjhTEdso/rw1k0FALeHvMQb8dDbu1" - }, - "address": "noble15xyqp0qu74mlqthjmw9kx2ygyzn0sq49rdqyrg", - "percent": "0.0%", - "airdrop": 7703.982042066895 - }, - { - "total_amount": 4742712954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkTxSGKCKWs/9j5WAwHR12Y2zVO9QhHVeOmtDwm6/PUQ" - }, - "address": "noble15x89q5n5wjqrlvfc8437s945jzgmdx8sxx4mtn", - "percent": "0.03%", - "airdrop": 83309.27218174314 - }, - { - "total_amount": 651945035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj34RbcC3ghjEAzMUFkyxXM99EYJCE98k3jWmfoTBJEW" - }, - "address": "noble158ygg3n64c0wt4u58c7fv2jxgugmr7kxv5stat", - "percent": "0.0%", - "airdrop": 11451.898290100706 - }, - { - "total_amount": 417853663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMhjqlAydpea8Rjt0f/gQ8HrelcnCSu2Tfn86vqBVNv" - }, - "address": "noble158demsmucqfjazcxkmflh756t3d79xz3z2ad0k", - "percent": "0.0%", - "airdrop": 7339.909642569815 - }, - { - "total_amount": 299167380, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxucR9bQoCN2DvVkXaxeckDfS+J+OdFm/N91sxWPlAZ8" - }, - "address": "noble158neurpal2aaymqw3m9wrh49kcqg2d7gess94h", - "percent": "0.0%", - "airdrop": 5255.097015158506 - }, - { - "total_amount": 53136969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnxJXJG/B0kBcu7ZWvGz4Y/BfUh2heQl+MS9RTpegt/3" - }, - "address": "noble158ep04lmck7hx7pt5vwkjhshkqs6wrhjs7wjfu", - "percent": "0.0%", - "airdrop": 933.3902886954791 - }, - { - "total_amount": 71850591, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/aAnippz3vQsnK8BeB+nyo5LYHDhXRfwRgW8+2igw47" - }, - "address": "noble158m9p5v6vl458lumpxtutrj2m4zy0m3dc5e9mn", - "percent": "0.0%", - "airdrop": 1262.1089448370828 - }, - { - "total_amount": 452662500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3+bs9sfaEfAOphjO1O87lQLrwgZnLvislKvpSsd8gju" - }, - "address": "noble15gf8mpdxmkkfxl2a4mffe2l0vn08jase3n3ty4", - "percent": "0.0%", - "airdrop": 7951.352693011474 - }, - { - "total_amount": 1728271526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axtbxi/3xhfAVKNSLs03fJUXTBtr/nTcX7jYAFBdU3Qw" - }, - "address": "noble15g27tflzejfsw8mg9r6aj5kwtjr3ls5wvpv5a5", - "percent": "0.01%", - "airdrop": 30358.371750509818 - }, - { - "total_amount": 101188219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9VU1efSgJyfXuLf40Yn/FFQ7+o+Fq6nLDjvjShWkTs1" - }, - "address": "noble15g5k2gxml9z5x02udd4rr4hvssxv5n8lujdntr", - "percent": "0.0%", - "airdrop": 1777.446149496998 - }, - { - "total_amount": 3430624065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av6A3xJzPGyOlUmod7XO4x10AqCuGP9ikQyqKc1G3h4h" - }, - "address": "noble15gu6rr66kexp7jp4v8wferd8xjuaqn39slq4pg", - "percent": "0.02%", - "airdrop": 60261.457262193624 - }, - { - "total_amount": 175000777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UZCyye0inWISJV2bGYsF4nGhoNEbKrcE96XR9zpikU" - }, - "address": "noble15gamxlpzazlc6e8qyjpajfrd6mr2e0a2f97edy", - "percent": "0.0%", - "airdrop": 3074.018500489991 - }, - { - "total_amount": 50889089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwPbDwRAWAuEK0trJ0cDBZqfC+rOeEoqxqP3a0OkmCqu" - }, - "address": "noble15f9y54x23ywek2ed3l7a87y9u5zwyyc6sk98r3", - "percent": "0.0%", - "airdrop": 893.9046085440049 - }, - { - "total_amount": 241003583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amelje3+Gr45px5U4KT4ys/W8b+jME8DqwaH5/rVsqgr" - }, - "address": "noble15fgf9gcpurnrmrlh322mg6rvsy0n6f5ms3770y", - "percent": "0.0%", - "airdrop": 4233.406762681831 - }, - { - "total_amount": 6123121467, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akail6/Gv+W6+0LhZvks4dDSoWXJNngQKZz/JpIq5fE5" - }, - "address": "noble15f5vnp36kscawc7xugp2ne7c6emxn6su3e39vr", - "percent": "0.04%", - "airdrop": 107557.17199075872 - }, - { - "total_amount": 397969893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al31TVnq2yIeWuParME66ya2L35sAIJLISx+pdHe+HqW" - }, - "address": "noble15fkqfxd7e0egw7ekz8sts20xkgw3vz38m72dze", - "percent": "0.0%", - "airdrop": 6990.636468545635 - }, - { - "total_amount": 689099304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsNv13iJX5AFl37lF+nzlQa9w7VDdIQNimZeCcwePQxU" - }, - "address": "noble152q0zrs7tkqp7lqmm90ynte052n8vwn8xm90a7", - "percent": "0.0%", - "airdrop": 12104.540593958485 - }, - { - "total_amount": 67731521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjNRlozA4D8LmGdGUOXV3H+R/Hc5eBwcyFwrHhh7+YIi" - }, - "address": "noble152fd73e4j9y76zmjnp7fd53y203yn4dv4mqtkk", - "percent": "0.0%", - "airdrop": 1189.7544238922226 - }, - { - "total_amount": 16987800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmfiR/xXdR97Eeb60Ci8KVu5wuePh+kIIWxK4Qg6Ayjf" - }, - "address": "noble1524hkdddm2fa9hn8dt50h0fhtt9mpuwjlp9xzc", - "percent": "0.1%", - "airdrop": 298403.3121328591 - }, - { - "total_amount": 182431487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rTw7uAfc25YPmf2tMJG0vqunRSiJ1AD4jmVDDnJe3X" - }, - "address": "noble152c9xyzfz95f38z2fg5rxp7pxgsedxff6axd58", - "percent": "0.0%", - "airdrop": 3204.544435307846 - }, - { - "total_amount": 86254232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArrB8RSZ4Vva5biSmOrTLDa42VkG3jfCVP4wJTZEKQOL" - }, - "address": "noble15tqnrayt99r0cur5qw7hr846gqxznswf49qc66", - "percent": "0.0%", - "airdrop": 1515.1195866607827 - }, - { - "total_amount": 402249355, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvARSvqt2fGOkdwzTVfCYHXqHlF2umhdxsBIk0in+iF3" - }, - "address": "noble15tgd4hkl6c0t596a2ffqzt0e56jq87ukt0hv8e", - "percent": "0.0%", - "airdrop": 7065.8083939831085 - }, - { - "total_amount": 240000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7wQmGMl/OAhLoJaM31cZ8AWsaOVbi43PxSIBKdCB/lo" - }, - "address": "noble15td28300kf7dkpx8f3us4gj29nmtt0ryha2cse", - "percent": "0.0%", - "airdrop": 4215.778082617301 - }, - { - "total_amount": 81189610, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiNh+HXwLkROulAvsxABnEuEussf88tYoyWSEw3rEwzn" - }, - "address": "noble15tw02lw027jmft4lxzyw7ccnlqyedsywrm0tkz", - "percent": "0.0%", - "airdrop": 1426.1557432260267 - }, - { - "total_amount": 1488969556, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AleyEY2gZBYPbqzd8uNfV4uDVC+GT8EsyGA24tUIooKY" - }, - "address": "noble15tw7y0760hhzk549m6eqxxd6rgz62l33cxkyuh", - "percent": "0.01%", - "airdrop": 26154.85508278839 - }, - { - "total_amount": 129752445, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5m0skvrzgFC9mAiK5ky980ifSxeDgtfUVX0zIQTc36w" - }, - "address": "noble15tk9q66fqx924mq42cz374t7up454tsnm0zuwp", - "percent": "0.0%", - "airdrop": 2279.197974154195 - }, - { - "total_amount": 2385274222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6raofiGFWumlRFxP8suoDJZNpZWS7T0Ug5emCdtqbFS" - }, - "address": "noble15thm573y837sn2tuk8mre8hvhcyhct5ev5h7d8", - "percent": "0.01%", - "airdrop": 41899.11160891514 - }, - { - "total_amount": 179226714, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnajXZmpzK9dt1ceX/7r1o0xHUl9qYHuScXwVNLZMxA/" - }, - "address": "noble15tex54t5caw0gq8q7f4fwwwp7wklce65ueu3ev", - "percent": "0.0%", - "airdrop": 3148.2502195863303 - }, - { - "total_amount": 57501401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgKgQpBJ/PSuEkaX5pkBbFKP73ZvVR4H2CsDLJC7S6uM" - }, - "address": "noble15vq6p460st6f5z37393hh4nr4fs8hnvsvearnz", - "percent": "0.0%", - "airdrop": 1010.0547752316189 - }, - { - "total_amount": 558586836, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhvFq3CzvZCnpjPE5Z4aWv9mSz1BPp/1EdD7HEGHzGhz" - }, - "address": "noble15vr5jgeyewvfgnu43pp66w9h7zv5rvhpvxcm0j", - "percent": "0.0%", - "airdrop": 9811.992251863936 - }, - { - "total_amount": 231458605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/tWfP4teczH8vyUU0CqoG5dNT8jKMrmTNFqypZwOwNs" - }, - "address": "noble15vrulyt0gw8h55su80dkfscus5lcjp32pvc2zf", - "percent": "0.0%", - "airdrop": 4065.7421416340635 - }, - { - "total_amount": 52407158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxkjD4oqprSqZ4UHVYWV6n/J8UVVUnClJbO1SGS0TheX" - }, - "address": "noble15vg70sqdma4gk033nhy9lzfw3aapwqwq28fvq5", - "percent": "0.0%", - "airdrop": 920.570616952758 - }, - { - "total_amount": 81957075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9fG7kQ+/2At3B2ugzYY0EVqrb3ivtczmuiIMKzITpt4" - }, - "address": "noble15vwvy9txcvzyeezuls4xzq52r3hjuq88st07nu", - "percent": "0.0%", - "airdrop": 1439.6368354184262 - }, - { - "total_amount": 131902654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AthVYaaXtNv8EiFaEmvcA/lN/Vne/PCW5P9gADUy9hnU" - }, - "address": "noble15vnv7cznjshhe5ahfz2e32rp4zq5zedq3axuq7", - "percent": "0.0%", - "airdrop": 2316.9679907177215 - }, - { - "total_amount": 57909798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApF8HsQicFh2Iueb8Qbya3rfNBTQ+FI0iQ35Ifn0vcdh" - }, - "address": "noble15vh35eslvp7e0jfsmstpkd9x9ynn5ad0nkvj37", - "percent": "0.0%", - "airdrop": 1017.2285715716466 - }, - { - "total_amount": 118762092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alu3OY9CVDVkgHHO9Jsx7jceKTg3VA+kzNssNfAgN5yL" - }, - "address": "noble15dd3yye38sltwmdzft89nvk2ghtfjdaqhsqjpp", - "percent": "0.0%", - "airdrop": 2086.1442687474146 - }, - { - "total_amount": 754199060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7pTKKveNWGo5WHTY5ZOfxpgKDBNy78i9RmzZM4RvdfU" - }, - "address": "noble15dde7elatyxcs5ela59g53f6n5753hje6w8k0z", - "percent": "0.0%", - "airdrop": 13248.066112827379 - }, - { - "total_amount": 51205980, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1rbvpcWWS98pbWHxMBlGip8cbgS5Vr8BA73Vo1k96yD" - }, - "address": "noble15dut7nmjq07l5m04peqzsh4vx3efnu7lpklhsy", - "percent": "0.0%", - "airdrop": 899.4710340955827 - }, - { - "total_amount": 275185875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArddheyhdxgBrj149uMn1uk9cT6cC7IZLUHKwObo+hKL" - }, - "address": "noble15dlvx82yt5evgrl9z32khlaw7q8zdwnkxg4r5h", - "percent": "0.0%", - "airdrop": 4833.844085295267 - }, - { - "total_amount": 425500088, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzvLZ2vJ6OGzE7tJWKE4P8quOx4TbH+E2Y9RW/NkwLIR" - }, - "address": "noble15wfqhtlwsa5ddv0e84r4xs2gcjt2kg98xwamdc", - "percent": "0.0%", - "airdrop": 7474.224771425553 - }, - { - "total_amount": 287532827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5uE0KyEpaDpJjKqdTbOcINapka5vSrA73UzVAm0E9I2" - }, - "address": "noble15w6f90atnc80u27mdcfahszyd5rp8kcssn74sv", - "percent": "0.0%", - "airdrop": 5050.727458748301 - }, - { - "total_amount": 3137324554, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agnl6GPE2IGH7tEGB/5d5G39Ke9vrhhZujKLkrhT7fIt" - }, - "address": "noble150p2mxhrpj4x73skffaxxr33lwlrrgf6srs5pp", - "percent": "0.02%", - "airdrop": 55109.43372004291 - }, - { - "total_amount": 58169870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmjGt2/ipBjdwwL2QrGeUQT2g46OTaYuwl8lhmyAxaQS" - }, - "address": "noble1502wewj57539muwrqevh4s43wemk48drx89475", - "percent": "0.0%", - "airdrop": 1021.7969292279068 - }, - { - "total_amount": 20334866030, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgE7/ytyspzzRQOvMxdoU9NGM6DNOsITIdSIeJQKcSR3" - }, - "address": "noble150whxs5ed9msp7cql2wfm2sr7yhef7c76wrrx2", - "percent": "0.12%", - "airdrop": 357197.0105093045 - }, - { - "total_amount": 57268791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiorOXAc25zvSzhJZhGJjdYAKgXb7kAdkMkU88DV2zCU" - }, - "address": "noble150j9auccvjdsquttx0qhawvux2m67fcxxkslut", - "percent": "0.0%", - "airdrop": 1005.9688079824623 - }, - { - "total_amount": 319089835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvFRNZM9DuICEEum3YXqIrO3TD4SG87ZCsV4GmYwStwr" - }, - "address": "noble150jkrlp53fqrj4kmzpk9pzk5geutekm62vmkzz", - "percent": "0.0%", - "airdrop": 5605.049719912378 - }, - { - "total_amount": 53573558, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwDTC4GFRBs6SEsjeu2uajZT5iBxnRaUx6Ksspj9Bati" - }, - "address": "noble150mv2j5jk5zg67wnctl3skznlc0dm7c2x0v83v", - "percent": "0.0%", - "airdrop": 941.059298434278 - }, - { - "total_amount": 81800613, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5nu5oXlex5SO+Q56nWRKXB1gEfF/kpWl9AQcarA/Zv/" - }, - "address": "noble1507nuv5unctg20l6yl3hgqpr53w7df6w7mettp", - "percent": "0.0%", - "airdrop": 1436.888464291916 - }, - { - "total_amount": 129953365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqv7D234GQkG4aZNy97CQqAc+8xL4S+lPDhMHzzA1ubW" - }, - "address": "noble15sqhfz4vkupj8s6tjtr3uuumcm72r2j4evtnkt", - "percent": "0.0%", - "airdrop": 2282.727283039026 - }, - { - "total_amount": 7804473648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2humo4IUZ7uI4MzMjS/HmCt4bL+Vdvqvxd3fJ4EpxSS" - }, - "address": "noble15srde3entztcsw9c4eg9dp2hk07vwx9stwlfv2", - "percent": "0.05%", - "airdrop": 137091.37063167788 - }, - { - "total_amount": 8943329158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ankf09DaIO2EJhqPzyqQoYmCqJCXRa9MNN68YjX4Quij" - }, - "address": "noble15sgu90tvktzn7m46tl2cufxcs7a2qp5c08jxr2", - "percent": "0.05%", - "airdrop": 157096.212708036 - }, - { - "total_amount": 2899329101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwoNkWvNxnmeMzjh5Nkl+KdEzdzbGwCEtSPdMWj6OOuu" - }, - "address": "noble15svfrwa3gxqg5zcyvschuafzaqgweufs3rjrqz", - "percent": "0.02%", - "airdrop": 50928.86699287634 - }, - { - "total_amount": 55847103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A907HuJYKVl3zXjz/0x3NUex0lDOMho7ge7WBi8tyGXD" - }, - "address": "noble15shdnc7h9nga5v5x6svy4zwezd0643fdharrpx", - "percent": "0.0%", - "airdrop": 980.995803354462 - }, - { - "total_amount": 2707696268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjoaDoZOgtVj1jTa8gXHX3JS0vMEHSaWV8epzEpoJBoV" - }, - "address": "noble15sujj524sp7avyjh9zkpnxgyj5auqtfclu0l2l", - "percent": "0.02%", - "airdrop": 47562.694087579424 - }, - { - "total_amount": 1226750000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3DAAWLidNW+LbhNo0A1ylsV4y92TtB2rBn5qci3aTO4" - }, - "address": "noble1533axxt8cmt58608f64ckjzmq60u5e3my6xx3q", - "percent": "0.01%", - "airdrop": 21548.774011878224 - }, - { - "total_amount": 2768143907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzlTyRbRQ2qXqQJMH/HkrpsQOKk2VsA1nRiB5nhlHEOW" - }, - "address": "noble153u2lwc02jc2w83sqn75ryds325r3x2pplcxpf", - "percent": "0.02%", - "airdrop": 48624.501719421765 - }, - { - "total_amount": 56925601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsQBLkYS6M3l91tV5jaqipWBaISsQ2tVbsc9GYkeoIgV" - }, - "address": "noble1537n7gmfq48hurma7mw8xkzdg5ewwxlh4q9nzr", - "percent": "0.0%", - "airdrop": 999.9404209817395 - }, - { - "total_amount": 19048679878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjevTEc5CVfEkjvb6B+hy4biHxQYeguShnrn0v94wwi" - }, - "address": "noble15j8p4fc647ank7shny6p6p6tfejgmm7ede8yx4", - "percent": "0.11%", - "airdrop": 334604.19638527336 - }, - { - "total_amount": 632637569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A31pYQyoDiWdk3RCdBbUJTtFlzcPOV+YOFbCVD1r/PX0" - }, - "address": "noble15j3l0t4de2f39re2mz7eeh2jtzgq7k9syln7qp", - "percent": "0.0%", - "airdrop": 11112.748323460377 - }, - { - "total_amount": 200998820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1T7nWL8jRtotdk/i6W5xkcFCFBYtq2JqEKjsqNfgIyo" - }, - "address": "noble15jnp8n277s5pj8334ndnwzwxqntgql9tju4pjq", - "percent": "0.0%", - "airdrop": 3530.6934166164165 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApKY/uQYvbJrxJcDVJFg4/ybteBtWoN2Qeg2AgohL7MI" - }, - "address": "noble15j46nt4mfsl3m0dugf8e5zxvjp8hgla4mqvw3z", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 660000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsS2nAzHhiqRTjwO/1JBJlV3Aiqdp2BejPTu9DUAQ6LV" - }, - "address": "noble15jmm8rkh8axh7743lt6n5qyrafs8uxjzyu8pln", - "percent": "0.0%", - "airdrop": 11593.389727197577 - }, - { - "total_amount": 59357371, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ZRdJ869fm8whSsE4xnalwuacyqzZl5kuhw4d/I8A0z" - }, - "address": "noble15n3za8mrz6am4pxt7v2556syywvp05x624l9dz", - "percent": "0.0%", - "airdrop": 1042.656265431599 - }, - { - "total_amount": 784339745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+fdofbiJRE8n1G2dt4G/TxlS96hN17fuDZaQ4ndHoxh" - }, - "address": "noble15nk7j47aytcnlpv90ukjjg6z2s36y0e2gm326v", - "percent": "0.0%", - "airdrop": 13777.509609569344 - }, - { - "total_amount": 57457841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ane5NQXOphbH82W+TM4TjzHu+byNXcUeBxjqBpwk8JDU" - }, - "address": "noble15ncsssyks98mg4dpnv6wc7ljqqa74rxq7237lq", - "percent": "0.0%", - "airdrop": 1009.2896115096239 - }, - { - "total_amount": 132564862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsInGky6Mz06pYYPiYgo1vmLe3kAh2mTDJdGLa0J/rJf" - }, - "address": "noble15nmea0l5k5lvhe3ph2y5vulpskvp85w7p4daah", - "percent": "0.0%", - "airdrop": 2328.600165603279 - }, - { - "total_amount": 415459949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgK0iOyYyRU7V+6aFU4bXWc6o2AldF0CTFQj2x9+MJsV" - }, - "address": "noble15nap2dkshu88dq7fnf8sjasr92d5f52c727mfg", - "percent": "0.0%", - "airdrop": 7297.862279997923 - }, - { - "total_amount": 72172778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8bB68l7vi/v+nUnYJotITJIR0AVe7HaSEMIOe6b+UHQ" - }, - "address": "noble155q6zpy2xvuv88n9mwd5w99jwwdezrvp78xh6a", - "percent": "0.0%", - "airdrop": 1267.7683985583503 - }, - { - "total_amount": 1572439924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4EdgYHgni7W+3y/o5V5zvukwJfdldvqepAqNAayjdu7" - }, - "address": "noble1552y26cxd382a254vks3xrdff4fmagl9c4anhj", - "percent": "0.01%", - "airdrop": 27621.07403263173 - }, - { - "total_amount": 89092638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzdlVYp36a1PuODtZqvUnGSopLDvrqzWMgekvuoQvfT3" - }, - "address": "noble1550c0zq7yky2lxane8twg499jw9avlrczrauf3", - "percent": "0.0%", - "airdrop": 1564.9782941789886 - }, - { - "total_amount": 119124307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8c+pdEpR3UQX+S5gdOzbH7f0NcUEIu5xT0Ign+QBUi1" - }, - "address": "noble155nr4hc8nnu0qdr6zeudcy4htpvvg50q2nt5t2", - "percent": "0.0%", - "airdrop": 2092.5068439898946 - }, - { - "total_amount": 1186568361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ala8ICy6AQiYY+eik0XdRyHT+Xdp4t/1O/z4iOj6wz2v" - }, - "address": "noble155kkgk8s7tr0skw0lfmtrjtyz2rh0pwh66nfkf", - "percent": "0.01%", - "airdrop": 20842.953707628887 - }, - { - "total_amount": 149050756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0i2mMMbJFVKePZ3AeGbLT0PuAW+Zc0kakeFue7rIsVy" - }, - "address": "noble1556asuejc84uvmg8gvyj3kxdx3sh5m05ydjdr6", - "percent": "0.0%", - "airdrop": 2618.1871264264128 - }, - { - "total_amount": 120468890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxR3B68ZrCXgqNJw//ur5uCC3FEnTkg5L8dBW41dFHaO" - }, - "address": "noble154vkh66rry96ntz6506mknys3hypcu4gzk7tjs", - "percent": "0.0%", - "airdrop": 2116.125442080144 - }, - { - "total_amount": 380015013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8NlRLGLYngxsnPyvzly2yZltxroy9ALst3RyrpI48DJ" - }, - "address": "noble154w59ny9w75hpzhzt5fd7redrdrstdhaw7hhqj", - "percent": "0.0%", - "airdrop": 6675.245678628869 - }, - { - "total_amount": 3010000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2yCeS5cnRh6yRAY5/MWAtn3UlVNEYH23+laIl8DtdiO" - }, - "address": "noble154slrscptytk6ctfsg85zr52spf4lsuqjyglp3", - "percent": "0.02%", - "airdrop": 52872.88345282531 - }, - { - "total_amount": 1889854278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsxG8Bd+i72Esdwll5CDpr+x7q611undXj1qvAYAEt6m" - }, - "address": "noble154cvfyu85tduekt60ga8ydc45lc76w7y8ec8zd", - "percent": "0.01%", - "airdrop": 33196.69268555393 - }, - { - "total_amount": 207291348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlOrGKWIE6mF9XYWCSxP982/RrTUuxwTYwedwVQnS+fT" - }, - "address": "noble154u78gvrnhu0ne7ttyzj03d2kwmsd02dnrg2fs", - "percent": "0.0%", - "airdrop": 3641.2263400608153 - }, - { - "total_amount": 2131324966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgpaFroBRBULPa8EJww1SR5j2Hla4ugLN3TYqbdxECiI" - }, - "address": "noble154ljjmx2z2dkf4tehh3c66nd3zpml7fzpe2zln", - "percent": "0.01%", - "airdrop": 37438.30449415776 - }, - { - "total_amount": 655484325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlwUJT66AaVXTGLb15U0PwjWgycqkHHxzdtaPund8Rlr" - }, - "address": "noble15kdsn3quq6h9thmra0dslcyhv3mqlye0ve3j47", - "percent": "0.0%", - "airdrop": 11514.068545142482 - }, - { - "total_amount": 85905262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkW5hPQfigrjY+JRaHnnm3ojHrNae9y+/NUQKkpz4YnL" - }, - "address": "noble15k5zl6663huvrlq0kaparqvc9mmpnxr4lyfy3m", - "percent": "0.0%", - "airdrop": 1508.989669671237 - }, - { - "total_amount": 53968285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvENdImEQRR9XRhB6Sgi9PTYgv5r0gPEOI3FmKsJ/eLi" - }, - "address": "noble15k6m734stvushvtm8xx7kg0rut2l29yzanfkxc", - "percent": "0.0%", - "airdrop": 947.9929710810168 - }, - { - "total_amount": 2730202868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am7DOzPb5paglIBq69Rl6mzmfbdfFNaM/6hjpcoVNtEW" - }, - "address": "noble15kuyqke44arum9afduxagd0lpd6gx6de6u3n7m", - "percent": "0.02%", - "airdrop": 47958.03921672206 - }, - { - "total_amount": 650000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmlO+I8+UdzxLAyGoxHjWcCLU5ljJVYeactdCMOAOo2N" - }, - "address": "noble15kaueuu45w47nd3fh8ul3773w0xx7adcgws45e", - "percent": "0.0%", - "airdrop": 11417.732307088523 - }, - { - "total_amount": 182137254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Mq9Uq8QPmKsmZ9BEdxBLSfdhDSnts98Gd2IXR+YbRg" - }, - "address": "noble15k7z6429n97snh94c9grq5mxml9xjxz2s7pj25", - "percent": "0.0%", - "airdrop": 3199.3760143387512 - }, - { - "total_amount": 237863190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJXOFhNCUBNrQAud5IP6W3eViN3HlPnkrV801XiK3Di" - }, - "address": "noble15hz829wam3wc3k9jlhdrwwdl93050k29xqlpkc", - "percent": "0.0%", - "airdrop": 4178.243429430978 - }, - { - "total_amount": 6434594796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq49756/F62Z0lAG4IGRycmi5nOYhuunws3dEAx4zPyM" - }, - "address": "noble15hr8c7wv92d7wllksy06wkz4d5x6826vpnz9sk", - "percent": "0.04%", - "airdrop": 113028.43213125059 - }, - { - "total_amount": 127414852, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3/CL9KEWLUIGf7SQrqAxMVXdxfrCpUNrJgB6uMBP3YH" - }, - "address": "noble15hy3579f7mzv5djt2nvj6fjvjzvs824s3p2yac", - "percent": "0.0%", - "airdrop": 2238.1364185896964 - }, - { - "total_amount": 128863850, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0aHtwTOzY8+lNQzadF4n5VXjOUsUu8nCPXSpl/yvMEK" - }, - "address": "noble15h9uuxsnr6xymraa87laljs8qs5lh7u2q32ewr", - "percent": "0.0%", - "airdrop": 2263.5891436320144 - }, - { - "total_amount": 1269913359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsL1yK4mJ+oYeR1ykQN1WM8JxJuK+BMT+LLGy7Kz/bF3" - }, - "address": "noble15hwkj8snv5eglp4wzyq9xcqk65mvmg4rkv735g", - "percent": "0.01%", - "airdrop": 22306.970440396315 - }, - { - "total_amount": 100946336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtdGbxdgUtZ3HJxVMeza72lo5/JXUO7OL9Vu6oeA5f/o" - }, - "address": "noble15h0k8grgpmt5hpp7w64z33sre5s9vdv5alfw2r", - "percent": "0.0%", - "airdrop": 1773.1972951221742 - }, - { - "total_amount": 9043696324, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnjJPrMBFyScnn1WtdBNSTGzbWqiXf0IYT3M1whwCYQi" - }, - "address": "noble15h3x52ag390rcdh2phda6zwe2scqxaarzpg9qq", - "percent": "0.05%", - "airdrop": 158859.2364523577 - }, - { - "total_amount": 148913742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3lTnZ+74OXQSFiobqRywshTP6Czw0DNyUgZcSwNTj0D" - }, - "address": "noble15h3gnyk72p8s64gff6lge0ydxkvywy66gahpyn", - "percent": "0.0%", - "airdrop": 2615.780373850531 - }, - { - "total_amount": 138289197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8x9L0gmlbCHinEbvNN6LBi3hJ9WA5XK2LIlH0EolAG" - }, - "address": "noble15h304f84gevlz9dxwmndjq0dw40dprear23tty", - "percent": "0.0%", - "airdrop": 2429.152357397276 - }, - { - "total_amount": 38403634725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvadgYePUBPKGaDEf1AR9ftrCdlri+HU2nmp0EBLIznV" - }, - "address": "noble15czt5nhlnvayqq37xun9s9yus0d6y26dwaqtv0", - "percent": "0.22%", - "airdrop": 674588.3398603988 - }, - { - "total_amount": 293889809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiI7iwoitqjs/RKGSEcHnP7MTgmNi7iV/JDp7Y+lPelH" - }, - "address": "noble15cx77sra54wfalj4fx7hw7w4rwn3yy08xfxrpw", - "percent": "0.0%", - "airdrop": 5162.39256452827 - }, - { - "total_amount": 119642902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A63FONAIQU9uNFDqTifPJpoUQ5U8D/WruZpoRDDEM6Xr" - }, - "address": "noble15cww2r667q3m5tdgfu2xk8kzcjzglg0fmqcqaw", - "percent": "0.0%", - "airdrop": 2101.61634996804 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7FSlBq6yVRw1QKOzVWB08nCGnLO98VW+MJDM4Akw5yQ" - }, - "address": "noble15c70tmnylhtw79t8wq0dzd3arr23hj4kgwnka2", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 50544764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5H0pWYAJ5oS47NDAeuakXslWdKU2lYfiWmce+9EIC+8" - }, - "address": "noble15epa2c9wjt90cluy2ykxqcx2qgtngxuzy4s3mn", - "percent": "0.0%", - "airdrop": 887.8562844260998 - }, - { - "total_amount": 489500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxJeDSzVoBFOANhXKYGRAG7n848LhKtWxMU4XBQlO1Ee" - }, - "address": "noble15ex76ccx38d4p376te3nxk6wzdqrfuxqa2l3aw", - "percent": "0.0%", - "airdrop": 8598.430714338203 - }, - { - "total_amount": 52781041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A//IgTp0eyQL/2kk1oTXyQilVsa72a93AVZyvH2a+Y5L" - }, - "address": "noble15edkdxhah488fuzwlh7uzkd8jmtydh5ayzsqe4", - "percent": "0.0%", - "airdrop": 927.1381492730214 - }, - { - "total_amount": 100504817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1HpK/Y8o0MR917VH4ABt4MUQYcbp87sXw4G1Mg8Gx3+" - }, - "address": "noble15ej2awv9tvuqeh84m0zuvdawnxwk24fx482g7t", - "percent": "0.0%", - "airdrop": 1765.4416862752612 - }, - { - "total_amount": 1009305141, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap2w/HILBOYYLCKVVcY9NhU7Xwft/ctn/hqUrQoLRcWA" - }, - "address": "noble15e5ger90pueflh5g7kl7sfrfnfvst6rzr2uraf", - "percent": "0.01%", - "airdrop": 17729.193717086517 - }, - { - "total_amount": 292402443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+NcRjS1RTV2GwJLbb8E7dMd4rRH5pcn9DXOudIVB0sS" - }, - "address": "noble15e47lmv3ucf0e4ygyzw2sd5xxjmd8j72dx29qk", - "percent": "0.0%", - "airdrop": 5136.265877096477 - }, - { - "total_amount": 1000042209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag1LuGr0dqEmNuI/f3LnrHVBAX21v8rY+hu7RBuHcdQi" - }, - "address": "noble15eu6lym326mmcdu6nmtdmx4qntwh2ewuzyz6z0", - "percent": "0.01%", - "airdrop": 17566.483443309957 - }, - { - "total_amount": 63874673, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AttQcdr8Fq0Gkn+fK8fQ6F7lAJ5LKHUasIntK0zExnwO" - }, - "address": "noble15ea4sq5vx8ffvvr3e3y7gwef9qyxp6u3r9teps", - "percent": "0.0%", - "airdrop": 1122.006026948946 - }, - { - "total_amount": 105355984, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8L6DJNKudQPnw0XMiSYq+llQs+YjUlkl5hvdtOaGOwj" - }, - "address": "noble156raksnqtwnzyxca9hrgwk3upzlj44q0h778jt", - "percent": "0.0%", - "airdrop": 1850.6560342490793 - }, - { - "total_amount": 1586571742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8AmP+GXNedHqkvy6yo0tqaLZPtI5Bs8lDl2/LhYzWi0" - }, - "address": "noble156yt3cw5s86g06rfgd8ll53pu344klz08uh6wp", - "percent": "0.01%", - "airdrop": 27869.309901764795 - }, - { - "total_amount": 221817022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7YpMZR7VEwCLqF2WYOJJbdEB1wknV3rLIdw62vYU6Q" - }, - "address": "noble156w8p7jckfyp3te8srnvjpjhqtrt3p24l46ya5", - "percent": "0.0%", - "airdrop": 3896.3805820793314 - }, - { - "total_amount": 95634949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Vp4W4+O7eR53JcQ5vNYsTrigiK5wUV/tltDtudotI7" - }, - "address": "noble156j4ga3nre8wvjkl6ge3923chpvfmfwfdq3cy7", - "percent": "0.0%", - "airdrop": 1679.898841360097 - }, - { - "total_amount": 362452476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am/Y98NpwhaWLnnr5T2Yge+NAh1ZcolSwysUM/zL/Tzr" - }, - "address": "noble15my6ksqywnt5ywe3sak64ng9ysh80fqwt0vfkq", - "percent": "0.0%", - "airdrop": 6366.7466846298885 - }, - { - "total_amount": 2882836226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSz4QtNosT7dI/N6PWMgqRtLq1EsjAlvS5MhQA+Br7N" - }, - "address": "noble15m92lpypftchmg50gn93eeamj9yf2zcsmpy3lp", - "percent": "0.02%", - "airdrop": 50639.15740560823 - }, - { - "total_amount": 939630899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9PVeUk1/JfVxyYp7vQOno3r/JGIKD53d0hgRvcZmSOV" - }, - "address": "noble15mxxewmh0tdsqjppp0zg6a69erz5vkv8v7paey", - "percent": "0.01%", - "airdrop": 16505.313957309125 - }, - { - "total_amount": 1069618079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgkD+RmBOGWSm6KEXIDgWUgfQULaaqfe8PV2LjN+7rEj" - }, - "address": "noble15m8ys53k9gw2l058gjme2la4s9nragjnkv9f4j", - "percent": "0.01%", - "airdrop": 18788.63522591425 - }, - { - "total_amount": 64368877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8qIKQ8Dhu0OWunYV7ANv+o96mjUdqm0KKphI9ao0f+s" - }, - "address": "noble15mu78lpn9uweqss22h2974qmmusq80lqkgufru", - "percent": "0.0%", - "airdrop": 1130.6870869137035 - }, - { - "total_amount": 245618249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqWWrjq74UYUIJYdwtIX44v+bHAl+lGtbC78l1sDLERm" - }, - "address": "noble15maf89hvy8um03hmh8rf47rehan5cumjwtk5hl", - "percent": "0.0%", - "airdrop": 4314.4667951043275 - }, - { - "total_amount": 220726888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoUAnGnBsT7xGv2PTnIQbfK4t4oNyimGk2AhPwfgxq3T" - }, - "address": "noble15urq2dtp9qce4fyc85m6upwm9xul30495ctrmr", - "percent": "0.0%", - "airdrop": 3877.2315694780154 - }, - { - "total_amount": 51781541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8RwchRZ8t00QYsHH64lrhjoaHQljC4bl1HGE08m1pT2" - }, - "address": "noble15ursa2ykyryvdqjafyuu4spntex3us7mnpg3h9", - "percent": "0.0%", - "airdrop": 909.5811901331214 - }, - { - "total_amount": 1298466110, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6SrM9/6o50ywYtpAqbKglEUsCSBflrjjzTY1nYI7CVF" - }, - "address": "noble15uyxvazzj8syxqv7lth4xdmxv5gp6trkx94yp9", - "percent": "0.01%", - "airdrop": 22808.52069816394 - }, - { - "total_amount": 63640589, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhBcUZWHi2CUwohitHA4HcjvK6x2zMT/AMuCpk8h9BsD" - }, - "address": "noble15ugjhr9x4aava8ytw2g2efdazg8u8l5ufuzrrw", - "percent": "0.0%", - "airdrop": 1117.8941677960652 - }, - { - "total_amount": 1592888184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtkRJRh34h6R/xxDcCXA9udLRnvFDZGxB0kRbuFK2hVn" - }, - "address": "noble15ut3tn7twxtwnnv4r7fqvmnxhy2ynp39fzlr33", - "percent": "0.01%", - "airdrop": 27980.262892363644 - }, - { - "total_amount": 500187289, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj/ssPCqw9Xya7HgQBH14pwvYlXHVMdhnvAajkuZkdDB" - }, - "address": "noble15u3w5mn36qa6apaav9y8j7qnmz86a9xszyvkje", - "percent": "0.0%", - "airdrop": 8786.16087570819 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiAmbP3CrOiYcp47LLvwdnvOcgPdgEA45NIeiihk7Q9/" - }, - "address": "noble15ukhjw3phqwe8g4tgjl3cgmmva90cxwmgslppq", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 32557162637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26BsRu6e1wHXah/IHm1mLmCbRJ6c7ca3fV6aOlGC5EJ" - }, - "address": "noble15ueg7pcjv98umk8fht2ruw8auywu58pkhwdmdf", - "percent": "0.19%", - "airdrop": 571890.7194886312 - }, - { - "total_amount": 26023929080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0O6grHvD+UuNSQ9cHFDhdlgWu/36IgnxECA8SCOVEdm" - }, - "address": "noble15um8tm6jsy7g4q9my8uu0rj270knj58ny95yp7", - "percent": "0.15%", - "airdrop": 457129.62432937924 - }, - { - "total_amount": 6542065134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amsjc1hffyiGj/5FCcI+nZKe6KoM0h+qXB7ze2PAaE9f" - }, - "address": "noble15umwmrgfs5app7jq70l963xufclgerlfzktssg", - "percent": "0.04%", - "airdrop": 114916.2283623834 - }, - { - "total_amount": 707303293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Uwd8L0OH+Mb1/ZeCNPb9Km5mGN20Nqc1qeUWqmNfpv" - }, - "address": "noble15ul4ayz9zsw5vytju2ec8lz2cpsm8prdedml3c", - "percent": "0.0%", - "airdrop": 12424.307168301844 - }, - { - "total_amount": 374786760, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar3FLK01VTiMtlqI7imIqqQS4oFYnP/UzgwWP0gMr61b" - }, - "address": "noble15armrlj4636t6lz4e4d09e6yvrcj8qx9fdwjvl", - "percent": "0.0%", - "airdrop": 6583.407535263127 - }, - { - "total_amount": 100858742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsfY44m2yX8JDdxJBHdc+YQlwq62IKwFFWVucEVysXPU" - }, - "address": "noble15agq66tzaq3m82vujvy9003dvsjztsrg5e0kf6", - "percent": "0.0%", - "airdrop": 1771.6586415164709 - }, - { - "total_amount": 2794858655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzmZf1yr1ZzE5p3VSi9QE6YyabPvjZW+ESpkuJe/5pYA" - }, - "address": "noble15agp6f97jehce26xcwjnrtxjm808ex9kvx6ssz", - "percent": "0.02%", - "airdrop": 49093.76609067612 - }, - { - "total_amount": 265161327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4OK0NBnHj/Zz88i7pnjiMJTiM1MjocoSAJUiuziVTHU" - }, - "address": "noble15a434j55nj6mejw4syflw8q20nyz9epauswqzg", - "percent": "0.0%", - "airdrop": 4657.755461351329 - }, - { - "total_amount": 55379583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuOvpz9ELo2U/Pc93sXiOsjDAsIOO0BMRdFnu73r46vf" - }, - "address": "noble15acyslq77wylle9kc3cueme5ml42aacs6rclq2", - "percent": "0.0%", - "airdrop": 972.7834676495236 - }, - { - "total_amount": 92277137, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayux1QH8eIEvUV4Xs4FlSvW9lmZwZP3udUJRL1XaY9Yf" - }, - "address": "noble15a6x95hu6qrg93dyt6vny9qmj23k6m9uwwjxew", - "percent": "0.0%", - "airdrop": 1620.9163820469748 - }, - { - "total_amount": 91190319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcZy112nK/waGD7y4F/6UZ99Q7HREIlO/zphBNlOpc1" - }, - "address": "noble1579685540ljp0zl45xvy6tvvd403h6h8txugzz", - "percent": "0.0%", - "airdrop": 1601.8256174461667 - }, - { - "total_amount": 366011777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Avp917yCoKnt7YVd/0x86FFR0cUODChwL90upvpsIe" - }, - "address": "noble157gtks3qd8dragr4zumpc0jpfgmuz7ncvza5gx", - "percent": "0.0%", - "airdrop": 6429.268447735047 - }, - { - "total_amount": 57131067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AldQE0XIKCOvEWb4c+xdCfmOS5vxt718dlcLl1BTePfr" - }, - "address": "noble157g06e52xajwk77uzt7urgjh2zmjhsd9f54849", - "percent": "0.0%", - "airdrop": 1003.5495837297523 - }, - { - "total_amount": 951060102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ailh8+uEZ+XEhkrMp2nks9n0+1Lhc008LLA2c3Wf6mrU" - }, - "address": "noble157jj8yh0ks45a89eqk9gmcgkctdmzm03u43st5", - "percent": "0.01%", - "airdrop": 16706.076388597394 - }, - { - "total_amount": 1986546339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+eG7E8qN09SDjkhfN9RaTQMqQGBrU3+jBuRXfcIe9Q1" - }, - "address": "noble1575ssgakaa3azvn2rc8q932m76wyx40xzgtese", - "percent": "0.01%", - "airdrop": 34895.16048358266 - }, - { - "total_amount": 116832619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8YfQvLnbqI/RW8CO5fQRV8r0Rj7AMJQ3XWaMR/M/vtl" - }, - "address": "noble157a6sstrw9tuwmaqwurzqsskvrxsk3tps6xlke", - "percent": "0.0%", - "airdrop": 2052.2516438124067 - }, - { - "total_amount": 110612809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azv8RJhWh7WtVh9yITNVneRz2T9UhZuw/VPHfM863Hn4" - }, - "address": "noble15lpzm7a7hhghcu8qprexx8ln80d86f8demfa55", - "percent": "0.0%", - "airdrop": 1942.9960659955573 - }, - { - "total_amount": 128261679, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqqttYRDFpzX7gtJPLf30N3mnqw4W3Y8lfkZKS4F6Jvd" - }, - "address": "noble15lstq4lyy89jtkrym8pzljdql5w6e9lg06ss68", - "percent": "0.0%", - "airdrop": 2253.0115631995654 - }, - { - "total_amount": 698149779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjeE+V2eNMh2Av0TtQOG70A/dcuVraPbkmCMH0Bw3VTX" - }, - "address": "noble15l3d37ct6mwct3kc7g7zvgcvpgvcwvd8ecaelu", - "percent": "0.0%", - "airdrop": 12263.518902884634 - }, - { - "total_amount": 282242268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An/bp+rQB0w7SX2yA/0mc44dFD68XoMj9HrlihQwbone" - }, - "address": "noble15lcy7h0xr8enqsslcy8qr5jvneghlkx9emknsh", - "percent": "0.0%", - "airdrop": 4957.794864260826 - }, - { - "total_amount": 88657537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtSs4pB18fG0T0y5xhUdIXRaT7jSyyvCsLiBPWkWg2dx" - }, - "address": "noble15llhtv6wt6ha5rau25kef947jr507lkshvxkj8", - "percent": "0.0%", - "airdrop": 1557.3354222643015 - }, - { - "total_amount": 89500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aypj56zUzajK907x0h3VoWaMKIPACKDbZjve4byyB3ou" - }, - "address": "noble14q9wvt803xth64fprutvk27fsa089rcnrmgtvd", - "percent": "0.0%", - "airdrop": 1572.133909976035 - }, - { - "total_amount": 661929812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/YjDlalNTDpt1GRSILMkOA6mr4q3y/C5/lrbq4yVRva" - }, - "address": "noble14qdsqe89xe8t8ajtedy68kdj8u7gsp2g6f7hgu", - "percent": "0.0%", - "airdrop": 11627.288306919127 - }, - { - "total_amount": 213174642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnYP/2pzquFr1wywerDNRUzdkv26dMHnGA0ivQTYq6fX" - }, - "address": "noble14qh8ta5pq6rdn54u59ssxt7kwqypmqpafltz8t", - "percent": "0.0%", - "airdrop": 3744.570764639123 - }, - { - "total_amount": 54485404, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOorVC7Pr7bg5duL6TeV0Un8YcBwWJ41fukb4+7OotZ" - }, - "address": "noble14qaqu6wftuc2ujp09mmmxgfr3ge2xk6vze6h0j", - "percent": "0.0%", - "airdrop": 957.0765500239542 - }, - { - "total_amount": 114690967, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhM032KEqxJ0Q3OFHJ8XmeuOiz1wFJcI6iX2fnV2Rnor" - }, - "address": "noble14qlgyzpc7f7eyv6cz52x7dj5q3yfkzr877fv5h", - "percent": "0.0%", - "airdrop": 2014.631937303267 - }, - { - "total_amount": 58766004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah1+ofHr3qBIAUwkOcnmkQvBR3hBOYnkFzOXCAu3s5Gf" - }, - "address": "noble14p8cpsh5cv5zzrfxne0pw9487ec7qq0tgvelw8", - "percent": "0.0%", - "airdrop": 1032.268465275836 - }, - { - "total_amount": 156227406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3AFXdmDKeCK1A5Ds5wvugX4BWrB7/CL4DG1g4Su0PFQ" - }, - "address": "noble14p86msnasjpjttv2tux0443qh5qqkttqak7p5v", - "percent": "0.0%", - "airdrop": 2744.2503088289777 - }, - { - "total_amount": 58317327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYNtXMWjqfsYtyQP/7OqKr6I4/vXChko/Xo0Yi/MVoJ" - }, - "address": "noble14p2ypx3jyv40y5n086auyrwfm6m0uz5pwqmdkh", - "percent": "0.0%", - "airdrop": 1024.387120847609 - }, - { - "total_amount": 50156342, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkJLdEGaKtNJXD6I03/Nv+qPLUT14T4gxV4OIen4OGMO" - }, - "address": "noble14pt7lcjkw34hqukxrsxxfrayps89tv5pysvzj0", - "percent": "0.0%", - "airdrop": 881.0333637827399 - }, - { - "total_amount": 1772723228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8vcXLP3rTyipa0eU10xm3D7iKGxYmWo7/DQpez/eMZ5" - }, - "address": "noble14pseemx4yarq6lh67ew2mtp57ayqwj7t92pjtm", - "percent": "0.01%", - "airdrop": 31139.198879787466 - }, - { - "total_amount": 979523783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHpYgiyhzviB5z4TZGqJrcgTUKu4X7KyXaB9Kq6XXMv" - }, - "address": "noble14pjpv765vlfvg2dx8e0g0t8pvj9jausjexw7t9", - "percent": "0.01%", - "airdrop": 17206.0620657241 - }, - { - "total_amount": 1765039774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrNS4JeLR1W4k9PJQH3iuVQMLXSiLUE4vlZxo3gjDVz" - }, - "address": "noble14p4p6dj2hx6wz62v2detskeavdm36sn84y909n", - "percent": "0.01%", - "airdrop": 31004.23330907081 - }, - { - "total_amount": 3862525221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0IeavZw3icA1rV9fnZbDLXft/t8Yp/pDeD2IHGHZdF5" - }, - "address": "noble14p75mn708qxf30dhemj54c7u4vmevscmf6j36c", - "percent": "0.02%", - "airdrop": 67848.12154270144 - }, - { - "total_amount": 1989500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnQ98WBODQMdtC5q9tXfC8FpfB3FzNH4auOl/M6UX6mc" - }, - "address": "noble14zf7crnvdtlwqh4uzyd4w0s7807mm5c6q8gs9y", - "percent": "0.01%", - "airdrop": 34947.04373069633 - }, - { - "total_amount": 686877680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj1l8qit2gZCrRs2uP57csa7iTw6dLoXaL1l8wBbQbYz" - }, - "address": "noble14zd67galdpdq2yvtep64jmsr7e2jjnt6h2gmnw", - "percent": "0.0%", - "airdrop": 12065.51611992925 - }, - { - "total_amount": 123139965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap36CbNTbwSpwAhLT2gTEGUXd6TVSf/2/DqQ1EV9/Mtd" - }, - "address": "noble14zn8gwdc8magve97t0f3p7ytqdctttu72ypstw", - "percent": "0.0%", - "airdrop": 2163.044856421923 - }, - { - "total_amount": 11446981518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7R7CwuL33x4X40oLgJxOvfC8jaP7m33EjzGM5sIJKX6" - }, - "address": "noble14zhkumpvhh0nyt2y5lyutc9rhwn6762zxhc6r6", - "percent": "0.06999999999999999%", - "airdrop": 201074.7241487905 - }, - { - "total_amount": 371510129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am6YY50LkECbT77QqYaK7Ow+nTIs+840M+5Xhm9H9FVb" - }, - "address": "noble14zmmh093z0uvv2mr40n6f6ww6tnmqxn50sl2kd", - "percent": "0.0%", - "airdrop": 6525.851080452192 - }, - { - "total_amount": 2533582515, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3PyKvFLtIBBARu15ioFhG4vPAMTTkTni4FY4tI5Mrzw" - }, - "address": "noble14z7lngdvxrzaj9a3rhhgy0vtt8dyx45zkec3e9", - "percent": "0.01%", - "airdrop": 44504.25682183092 - }, - { - "total_amount": 118483464, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auq/+wsoqOdVL4nAFsaA6uKGmBHBqFWLD9mZrUK2N3IF" - }, - "address": "noble14r2xtxsrz8p40tfwpzjpsghcmpt43d2pfm4t5r", - "percent": "0.0%", - "airdrop": 2081.2499611824 - }, - { - "total_amount": 161859392, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3bgJr3DtpQ5PNbuOF5Rjq90Qy8lMTz2VH9qc5zycj3L" - }, - "address": "noble14rvkhd75gzae8n5835aj4n5wclnw4upnrds5rd", - "percent": "0.0%", - "airdrop": 2843.180321914009 - }, - { - "total_amount": 12794736989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Ocu7o0m4Qc0x/5PhA79bzqDyOI26qxyKGSn6SZyW9f" - }, - "address": "noble14rhjq28qjkavk5vmhy34fw7zns3w3xtrhezmjc", - "percent": "0.06999999999999999%", - "airdrop": 224749.0490461628 - }, - { - "total_amount": 154541176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArVw5jcXUC79F3FVckky+Q7S3n71XzZjYWwONeWSoJT2" - }, - "address": "noble14yrjx7pu8n77quvl5vqshxrhm6j3zxjhlxp2j0", - "percent": "0.0%", - "airdrop": 2714.6304276779283 - }, - { - "total_amount": 233181221, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhnXZ8Z/xqUmspO1ij6nVebQS1Tyvmv84y4j2riiYvlU" - }, - "address": "noble14y8s58tg7waurmyjhrqsj6j254ddguc5n3uycy", - "percent": "0.0%", - "airdrop": 4096.001169873921 - }, - { - "total_amount": 158657864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Astfs0qr/NumUoQdzFZeSFqSifec/3rH9DPRsn2/wg7k" - }, - "address": "noble14ytv3wm2wyaa3hw78rtsks95ffneftvtp282yj", - "percent": "0.0%", - "airdrop": 2786.943107025319 - }, - { - "total_amount": 480612730, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amxf05R9QDN6iy7DmwTrLyz4rgIiv92Jpg/T1AyfNh7j" - }, - "address": "noble14ysx5r0xsltr5z74932k0ncvcvm559ua32dgmv", - "percent": "0.0%", - "airdrop": 8442.319222336944 - }, - { - "total_amount": 212892576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuVNwcD5VFCTRf+JccrhnBYAtTHJgOhmVqxwu1dK+fxC" - }, - "address": "noble14ynmps2a8lyc3zvvv7ak56vxeyt6zqyfzmjlcn", - "percent": "0.0%", - "airdrop": 3739.616066053075 - }, - { - "total_amount": 169411176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iQ3DqgwHBK9HgItoEGKJWRBbU89kXmd43SDMPjKZnv" - }, - "address": "noble14y4jh43q7gd4f9sdx3zchkhky9wex3ytg6qdn4", - "percent": "0.0%", - "airdrop": 2975.833011380092 - }, - { - "total_amount": 3093422791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A732ZT16Jj7S42TlsPzUZd0PcJZQNkQNzegz7f8xriU4" - }, - "address": "noble14yevkrpfafkkuy8usajtldxff35t00khnkqx9l", - "percent": "0.02%", - "airdrop": 54338.266677360996 - }, - { - "total_amount": 1736907624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3ELAsw79lSv5Ba8Za39u1dEakvEosIFddA3prRVmwSP" - }, - "address": "noble14ya5sefuzzq0r3w95rave27k52chq6vqdle06y", - "percent": "0.01%", - "airdrop": 30510.071219958718 - }, - { - "total_amount": 9602302133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8a89WnOVAUcXUFD9Fz3hIbD/UZ9CLY+aMyCogpFnDgF" - }, - "address": "noble14999jtmpcmjzz7ers0w7yw638w9mhzvnzyafxq", - "percent": "0.06%", - "airdrop": 168671.5619790448 - }, - { - "total_amount": 140000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgEzuEMLWYjAW8ZxhWl6r3vZt0zfOFgX2R2OHl8IyEGa" - }, - "address": "noble149stcytm332uc5ysprf7ljee78dry9qu2xustq", - "percent": "0.0%", - "airdrop": 2459.2038815267583 - }, - { - "total_amount": 30598131525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArzOXW+UhWJfRzOEBCj9ATSwvNObnoqzGQdLV+UMITRD" - }, - "address": "noble149s4l640lpnz56rmsxdgjr6q5fe4q5n5mxsgw3", - "percent": "0.18%", - "airdrop": 537478.8843839021 - }, - { - "total_amount": 68002128, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0FwTUKkmst+P2lFJF7Un3dMUwwBr6VbhcdZPklw59Kn" - }, - "address": "noble149j824ejhm7rvz42rxs63k4d2wknae0pqsx0xj", - "percent": "0.0%", - "airdrop": 1194.5078366405678 - }, - { - "total_amount": 86880252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8+uybLJg27RMfMvC9twRl44NjoQUCDk/DZe75pkDnZE" - }, - "address": "noble149cau2kdqd3vx2p8kqz3wy32wjejxzcxwp6yqe", - "percent": "0.0%", - "airdrop": 1526.1160924744497 - }, - { - "total_amount": 85769174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IcXQarsSTq0xL+KInG28ev/9necSIHrlzKdWHCEZTB" - }, - "address": "noble149mvqdpr0q2m8egp50qpvd35ljecpjl3l78y5r", - "percent": "0.0%", - "airdrop": 1506.599182972457 - }, - { - "total_amount": 57593688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2IxuO/UEeU0ZN5gYwCqPm+UEaskiByEoemqE6MuARc" - }, - "address": "noble149uj38vnsh8vva3md5mfafr3k2rcaehm3jy0ag", - "percent": "0.0%", - "airdrop": 1011.6758648645792 - }, - { - "total_amount": 131738034, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5EuJQIXiDrjC7YNqPVQjHTY4TyA6s4ge12x0KQhUd/U" - }, - "address": "noble149apt7eq0z6nq7vgeq2k07m83xn9urx93xclag", - "percent": "0.0%", - "airdrop": 2314.0763182678866 - }, - { - "total_amount": 10884833248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2f+gGDV+HZclvdK8F8Ph0UNBwLfvVRzcMX+SFCTTDKo" - }, - "address": "noble14xqhp6z2f0dd3058tereffchy5gxx8dw2xfy88", - "percent": "0.06%", - "airdrop": 191200.17266609368 - }, - { - "total_amount": 50503064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyLbSjtmLT2A36+SAG4V5YjcZeH8pmOG0XGBYJh981Q8" - }, - "address": "noble14x8lc0jwk9x237rcxwru89j8gjrn4sdaaqer8a", - "percent": "0.0%", - "airdrop": 887.1237929842451 - }, - { - "total_amount": 120622085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aosf0E7HCX5E/L14OEkklhHOuzelS5WWna34Zmmx24b5" - }, - "address": "noble14x2ez205qhzs6kus32uhldgqhgys3gv76n2jxy", - "percent": "0.0%", - "airdrop": 2118.8164259275045 - }, - { - "total_amount": 193994861, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9rSo6nS3ffymMXdo5WWpezLucl6IREX22scsxqL6UTH" - }, - "address": "noble14x4yd0m6r7ee6s3zfpvgjal5d7avk98p82t5nz", - "percent": "0.0%", - "airdrop": 3407.6636797674573 - }, - { - "total_amount": 59154208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoJkq3aPN8Jr9CMoKn73nxGUBHC/ljbNPMW/VaeX8CKu" - }, - "address": "noble14xuzrvtm5p8xtxsxjnnyd9skw78yqy8rytfmpg", - "percent": "0.0%", - "airdrop": 1039.0875565874373 - }, - { - "total_amount": 83000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzDasGldGs9t+ACNTQOJJDb/vtEBqKbBogcw4i6Ts8Ch" - }, - "address": "noble148q8fvp0fv4wex6sf4w0s3jee75kvnfsqj7ars", - "percent": "0.0%", - "airdrop": 1457.95658690515 - }, - { - "total_amount": 5000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4/TzlML1aBGybM+DfHBxyJZMlyDyWxQ+vw9gH1uAAT+" - }, - "address": "noble14889etcnpjgc7n8l5lxjkq3avx8mn8lrfvk98j", - "percent": "0.03%", - "airdrop": 87828.7100545271 - }, - { - "total_amount": 1489428022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzOkzoRq2InqSWl/CFPQyRvsKtRONuFSpfweiH87d8gA" - }, - "address": "noble148wk77rqznqpze07hq84hhtgwr94a2u07hgxwu", - "percent": "0.01%", - "airdrop": 26162.90837826516 - }, - { - "total_amount": 1550005480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A27vk0VoTRotzimvpVPlGC8Wox4DMKIAjrQmqJtUx2Ix" - }, - "address": "noble14867s56wvfpnfme66uyqz70c6yhgtt3cwns9ad", - "percent": "0.01%", - "airdrop": 27226.99637716962 - }, - { - "total_amount": 100359930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ato1oK3RdsfHZAODbaTuTBoFxiMeC7aDUMDiSbjLAIMX" - }, - "address": "noble148mc9xzwg6yh3el66kxj73yh550awrmcw9dk7c", - "percent": "0.0%", - "airdrop": 1762.8966386125273 - }, - { - "total_amount": 30643792199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CrgzwuInfDZt5MnDs4g5nW56GxlHEIdM7CL3mmefVN" - }, - "address": "noble14g9djmq5kqh824h4vr5x7e0q4qc4eh97dmac6h", - "percent": "0.18%", - "airdrop": 538280.9480034302 - }, - { - "total_amount": 66366483, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AivCegry1Vi7zHsH2zuRkSungQ1JlAb2QfRpmUv4LTCQ" - }, - "address": "noble14g0p2hsmf96gwztwx9uztp72fl4pchwka3tvq8", - "percent": "0.0%", - "airdrop": 1165.7765185491403 - }, - { - "total_amount": 154147028, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7hPc+eT/pd4WvSGKLPYkkule7wpLGTL40PvwyueBKyX" - }, - "address": "noble14gswn2sr00aph628x495f3e7hv25wtk099kqdu", - "percent": "0.0%", - "airdrop": 2707.7069255958145 - }, - { - "total_amount": 66475674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4z7gg+mO0M7vCihd/ZmuLh1KFbokjbs1GYVa2n2+5Gp" - }, - "address": "noble14gj8wjzq65zzltsfzd4cn54gzgmllfdmh3htjk", - "percent": "0.0%", - "airdrop": 1167.6945394850532 - }, - { - "total_amount": 146014113, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArBOe5qtY7YCJa8Gs086nHosJL9SX76DTxQw0TqzZIab" - }, - "address": "noble14fpfdqwwmf8ekwh8h34shucnd352247uyctuqp", - "percent": "0.0%", - "airdrop": 2564.8462389091915 - }, - { - "total_amount": 104568840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlNivYwoeK1wD/g9wg5/DW3aNFvn3Tgrx+OuZBtFzUlB" - }, - "address": "noble14fy56ajn9z53qawtn6mlpk6sdq2364d9ejhd93", - "percent": "0.0%", - "airdrop": 1836.8292658196472 - }, - { - "total_amount": 2489239671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arno2KuNqL9KMdAlwtDC8N4z0eoNm7KU2R8bHYNUU903" - }, - "address": "noble14fketv99hlrlk80mkggw643spsj3yyf7tj82el", - "percent": "0.01%", - "airdrop": 43725.341864097085 - }, - { - "total_amount": 148375519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtQKntddoNzrO8CQhn/h57YHor0n96MUxadQKNmb1VNi" - }, - "address": "noble14f65psnkqqqccdgrva6xz3rlhujqtxx5xcxgve", - "percent": "0.0%", - "airdrop": 2606.3260874881953 - }, - { - "total_amount": 104081314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axh7GuV7X/P37RArBZPRBKLUTJ1fNT+9y3GsRT9N3Usn" - }, - "address": "noble14fmgk6uwjxzpx224ej5hp6mujpfpk825h0wdyl", - "percent": "0.0%", - "airdrop": 1828.2655098800385 - }, - { - "total_amount": 99037848, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvL8qFtVrIbOAUZazqkzByg/Qu/ulhgcNv+V5ozZBogh" - }, - "address": "noble14fanh3ml3ucpxwd8f3036w37schwyr7c9dsu0z", - "percent": "0.0%", - "airdrop": 1739.6732872832654 - }, - { - "total_amount": 246459023, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap9C6bI3GpofqpyAJLwNT08KyBLlsPRsLQsTykwIRTGa" - }, - "address": "noble1420walj3u64rqgxevn868qn6mey9a6rluqapxp", - "percent": "0.0%", - "airdrop": 4329.235614277805 - }, - { - "total_amount": 88000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwQUEPeFvNTaRgBbMrqzL9g3gbbQwHMuPGnEZ9Bf/SEz" - }, - "address": "noble142sgywjdyrg9jayrhzkvry9sqlp5sjczx45tl8", - "percent": "0.0%", - "airdrop": 1545.7852969596768 - }, - { - "total_amount": 259175985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyuVsW62XmefD8OrXtSbSCCFrJp579TQu+b7JFDNro6d" - }, - "address": "noble142cru2h3xa6p4kajyg7wzcuweq0p72pu366fsg", - "percent": "0.0%", - "airdrop": 4552.618487932293 - }, - { - "total_amount": 938825545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A12zAOZ9Ee/dAOgTO4Oln+hgYgCK/4AS9ryGqI+C0rZE" - }, - "address": "noble142ufxszy0t6xr43u7yza3fj5scadyag0avpkdl", - "percent": "0.01%", - "airdrop": 16491.167316717678 - }, - { - "total_amount": 96436436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0mXbpCXhnRLPlNGnS6+pGszN/Qt7NlHbydKW5Nrs93E" - }, - "address": "noble14tqychgw57v9756w6r35ece8t9s4adfe0uptk8", - "percent": "0.0%", - "airdrop": 1693.9775552271917 - }, - { - "total_amount": 1057582409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtHNIJb5QH1JGcUq8ZoSF0uVgpbqEoDtKh4HZHefOv7c" - }, - "address": "noble14twa40uu8sskuyw9d8gg4mluk9s8lyjwsswan7", - "percent": "0.01%", - "airdrop": 18577.21975176586 - }, - { - "total_amount": 257294499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsoDnqBApS6w2sc+mbL19125gTkEs7UZ7x57/5yaEhZ8" - }, - "address": "noble14vqc4a73z75mlnlythl2nv8ytsmjec0jlsv59s", - "percent": "0.0%", - "airdrop": 4519.568790259163 - }, - { - "total_amount": 98866285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0QgWKOjzBP8Bn2haAyXzjgW8vRRFwLhQLyz6M28Bs26" - }, - "address": "noble14vpn4wz8gfcfr6n709cjgzrzwn9epvfjtxe3m9", - "percent": "0.0%", - "airdrop": 1736.6596558866484 - }, - { - "total_amount": 271235303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoyv+PctIH4MXtGanEBxhxg5u5MyC1tSWZFu30rSoX2s" - }, - "address": "noble14v2kls9qujkl8egul6ddajxn8uxsxt899crpwp", - "percent": "0.0%", - "airdrop": 4764.449356747761 - }, - { - "total_amount": 243048932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az6LYlmeZHa0u/A5etiwEhqz5xmfXksDT3Gi8ONDazxG" - }, - "address": "noble14dp6r96t5pwj2zq3j6j44e99a34xdj3wwvv84p", - "percent": "0.0%", - "airdrop": 4269.334835538095 - }, - { - "total_amount": 84538956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjcNsPnbVhvIY13uT//oM/b09COV80iiTviTKDi6hyIw" - }, - "address": "noble14dp67r65tcdx9td2cp6yq9pqsekz9j4q0c9v3n", - "percent": "0.0%", - "airdrop": 1484.9894909672848 - }, - { - "total_amount": 5184099429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Ozd0MudDiyWEACZIdWpZhm9Cox5rvmqdSaQdtkAI0g" - }, - "address": "noble14dr6km82eyvw2hw4e629c8v4wkf7dlw5yea4af", - "percent": "0.03%", - "airdrop": 91062.55312869609 - }, - { - "total_amount": 1084652497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvpxPXuz9/W/GCrgSGNkcoxwBQ2i8IRczzzGn+Gv3DJ2" - }, - "address": "noble14d9gv4x4kek4mzdwdlchjvks48nee4dzsqt3ds", - "percent": "0.01%", - "airdrop": 19052.725933786365 - }, - { - "total_amount": 470094486, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A938rOh/DStAJOrtKvvWT3q7jMDEX3G1eabbjktjKfwf" - }, - "address": "noble14d2pj374kxcsa5anawup5f3fvjhlmv0jlycr0f", - "percent": "0.0%", - "airdrop": 8257.558461825189 - }, - { - "total_amount": 676700849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgDra2cDkJ5QvOb550yqu/l81bCknVjtePlj46NojHVP" - }, - "address": "noble14dtrcj6xungt8l9tuepw2juhydydjalgsyyqkh", - "percent": "0.0%", - "airdrop": 11886.752532094664 - }, - { - "total_amount": 2525030747, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkqxbSvGxLG7GS1LhM6lzTJxfrG+6rugpH9T3e0rni20" - }, - "address": "noble14dvpmqj9jcrv3f2479mzlklwlum7lwng8zvd0z", - "percent": "0.01%", - "airdrop": 44354.0386714058 - }, - { - "total_amount": 503331071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+npv+ZLjBt7KNJ7Y+yn7e/cCF6frnAkZX1nIiSvVzwX" - }, - "address": "noble14dnhr6z2avz6fpwxs8f4au6rpu7uc96nkycwv4", - "percent": "0.0%", - "airdrop": 8841.38373925872 - }, - { - "total_amount": 365409430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A32oLcO/90w9YwXKhATtJdAIx+B1oMYRkWpcWs+slI7e" - }, - "address": "noble14dc4jhmjdu5xfhj9m87txzsfj38zyltch9kaxw", - "percent": "0.0%", - "airdrop": 6418.687775732003 - }, - { - "total_amount": 221634214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjpVRx0E2ngyk+0maDGyP3Wje7he2foxFxXWdc1B71aQ" - }, - "address": "noble14dudxj8zxr2qrs3q7xnqk9950er9wml2mpcsm2", - "percent": "0.0%", - "airdrop": 3893.1694239138023 - }, - { - "total_amount": 775954596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AskK6amWCJbCIkCyKWT28881/3TMFL5xPbwl2BBC+FbX" - }, - "address": "noble14d7tlnc2zfzm3etwm74wpvmlxv648hy38hymg4", - "percent": "0.0%", - "airdrop": 13630.218245512344 - }, - { - "total_amount": 203090187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As9Ud7sjapb9bxV5gHodeFR0qQmI3RvU0pkC4Ho1f98q" - }, - "address": "noble14wp20dqusrqy9xp3v4q34qj8avl4ehmy79x52c", - "percent": "0.0%", - "airdrop": 3567.429829788538 - }, - { - "total_amount": 60095995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At629xNMQssNIyhGQOzJqEwZJyNDfibFWRg9hiKPI2a/" - }, - "address": "noble14wtnv3xhhjejazuuml0jrctwswezvepk8dyttd", - "percent": "0.0%", - "airdrop": 1055.630744058662 - }, - { - "total_amount": 51917193, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7nYsnxiFh8GcaBwrlFV6xoovWEf4fg4NtnfJUqLJ38T" - }, - "address": "noble14wv264ngauxx9v5kyrc33yd6q3ek2jvdu6vwvc", - "percent": "0.0%", - "airdrop": 911.9640181683848 - }, - { - "total_amount": 2269648011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7juVWJ34xihsVgQnhtkrto5/ZgnTUmWDi1PFkTHQ8lu" - }, - "address": "noble14wnuhpgkzgnh7z908dsukskn7yujmr8l950zta", - "percent": "0.01%", - "airdrop": 39868.05141679063 - }, - { - "total_amount": 64403954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AooYAHQ9a9rAI/1keir0ZwWftnT/dHICZmty6Oqd0Xrl" - }, - "address": "noble14wkppmfjfwcrvs0sy4wc5puz3w42apnuhh643d", - "percent": "0.0%", - "airdrop": 1131.3032404462201 - }, - { - "total_amount": 55108317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6FQQG0Ed13WXKbPJnaP9hTjx8OKmUqPEshlY9zfKA90" - }, - "address": "noble1409ryz0fh00kqahpt35d9rdphn7h4jq3ayvhx5", - "percent": "0.0%", - "airdrop": 968.0184790771934 - }, - { - "total_amount": 297641463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkCQfQzJjWVQZpbP8y0frMaiizTNvHr0aHra/Qw0MGwq" - }, - "address": "noble140vx8zltvp88ahrq2zee4c86nrmxwsn5wtn0zl", - "percent": "0.0%", - "airdrop": 5228.293150806451 - }, - { - "total_amount": 539889501, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVVXxZ0UalfD6CnXSzAYplZ6ZmH0jlD6JgSpGa/d1QA" - }, - "address": "noble140sgtt39esuvy7vckwx6sgs339dn5r9pj8vhpc", - "percent": "0.0%", - "airdrop": 9483.559688962465 - }, - { - "total_amount": 706371642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlCZPW5OiEIXTkRCVAMFwi+2XTHlvNq01DnasPI4Kbom" - }, - "address": "noble140jsnsedthe3x4j8whreh48k4lrdvfn6xhgw7s", - "percent": "0.0%", - "airdrop": 12407.942027191644 - }, - { - "total_amount": 612086092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0AFYmdAf/vzPtR1pWZE7Pib7LVXXJUSRBRIiutnYsw9" - }, - "address": "noble140h9zqrq2f4he8usskd2n36yzzmnrc57zn40aq", - "percent": "0.0%", - "airdrop": 10751.74638053532 - }, - { - "total_amount": 50080388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvMBHyZOuc72r1G2o4TYnmHWLmkVvlicLiHp74iRtT7z" - }, - "address": "noble140lx6887vr2u27yazyu7m5kcyl5ysn7knu8m4h", - "percent": "0.0%", - "airdrop": 879.6991754140437 - }, - { - "total_amount": 74456020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2yDO84Ak2KZi18iksUwKDfeKHXNoKQXEdJcxSx43qlp" - }, - "address": "noble14sxe4r62gvr9z8s7hgyuqe2lv9kdsncwus8qvf", - "percent": "0.0%", - "airdrop": 1307.875238478814 - }, - { - "total_amount": 93521889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjgTEEdxnXpbBmZXZzlwHAAq5VqYxM6sAsuzYtjM8w6Q" - }, - "address": "noble14sf9e26fgtmgeae9qfj93crfupmjsxuyef3963", - "percent": "0.0%", - "airdrop": 1642.7813745465332 - }, - { - "total_amount": 193236097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aus3TwgO1PRNOoqphaM/pAbuEluWwDO4C6dR3MsM0h7c" - }, - "address": "noble14s0khxcz84vs727zzrn60mnlfymmrxrng844mg", - "percent": "0.0%", - "airdrop": 3394.3354270962946 - }, - { - "total_amount": 1886939537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At7rXV1BH5GG+NlU8ElikgrGMFQi/WqdMhweKSYPni23" - }, - "address": "noble14ssy6wtlgyr5l2l7gsjutz5lemztfmw0xks6e8", - "percent": "0.01%", - "airdrop": 33145.493097119324 - }, - { - "total_amount": 173778019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4hO/OkNf5CKLcCql7UhNqHB/7LS4wIAbx8ErWtOF5Gj" - }, - "address": "noble14s3aessr3kfpts6eu53suvumfmrmuj7n05yp2d", - "percent": "0.0%", - "airdrop": 3052.5398489202203 - }, - { - "total_amount": 252544142, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzJuBkY38BApK4+okuCREl0/+oahZy+YlLBuaX5cuzY" - }, - "address": "noble14scmz3s6nhs95d5zvxe7qzk2spqrnpx36j92r7", - "percent": "0.0%", - "airdrop": 4436.125244737464 - }, - { - "total_amount": 65064386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqbufWf0Bp+yl2afcCAFexIIIwfkWnjfzvM7Qlkf7F9r" - }, - "address": "noble14slp7cec0qdcrgt2wzgcqusl9n4w0sdpyepksn", - "percent": "0.0%", - "airdrop": 1142.9042185739665 - }, - { - "total_amount": 2052088952, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwUbZYxYfl0ZMbGPXGpZszXjy+3JOL+ZceYNGfYRn7CS" - }, - "address": "noble143qyr8mk6thr0w4rs080v4e3gen2kwcleud97t", - "percent": "0.01%", - "airdrop": 36046.46511426127 - }, - { - "total_amount": 2561552983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqFIfMkwS9J++0QtINGqOLKd1doQXOq+R5sFDNtdZL7q" - }, - "address": "noble143pzpv8vttquqfj6a5dea74v795eaqlxrn0mk5", - "percent": "0.01%", - "airdrop": 44995.57884664319 - }, - { - "total_amount": 85894931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuRD5wvgVWGedWgqvTiAYmpISW/f0GVEXbUo65WAi8nx" - }, - "address": "noble143z63y9ke3nennxrg3zxcfu8h2yffevqd6d9gx", - "percent": "0.0%", - "airdrop": 1508.8081979905223 - }, - { - "total_amount": 6947922311, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRMfrgEbzM7w9kqyfDTjE9rsOc3ASb88Yohfc7pNmor" - }, - "address": "noble1430d5lffc3lgc3pywqm0jvpcvcjm4vtpky9wrt", - "percent": "0.04%", - "airdrop": 122045.41082683978 - }, - { - "total_amount": 576192378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+V3IN+z4mjBAj0QT1kLJuwtgdefd4iRXG+xcDnTyKl4" - }, - "address": "noble143nl3cv60s8uyyg4m3a5se5vphv0wct64xh4hc", - "percent": "0.0%", - "airdrop": 10121.246660598097 - }, - { - "total_amount": 992255915, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Fd0Qz+nSVJbBpDhMCPB7dGd20OxsZEDv0BNf1Q8XtL" - }, - "address": "noble143kzr2qvu2kza4w0gkpnp8zjqq0k69qreqxgrs", - "percent": "0.01%", - "airdrop": 17429.711411684897 - }, - { - "total_amount": 79500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agh8wnYK+bZDPFgVLAVQwWPXKd48ZSCsBrj5ZDq6Na5K" - }, - "address": "noble143kl08020g8ef09c0mcp69rs4x3a24x036saa2", - "percent": "0.0%", - "airdrop": 1396.476489866981 - }, - { - "total_amount": 126055083, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8NTE+yps2v4Jgb2iPPTqVV1RrwIK+US0swWTs11Wayt" - }, - "address": "noble14jy373j0rr5pmpy33e7jlkujc0ve3rdxhjl9jg", - "percent": "0.0%", - "airdrop": 2214.2510671412697 - }, - { - "total_amount": 61571192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlFuxpznDSqBwBgFrqTXGzzSV3gXtGRZQqymrQYKHdSM" - }, - "address": "noble14jxg70dpqvr8tz0y4tv4qpf6qk3elg2wnlq2tw", - "percent": "0.0%", - "airdrop": 1081.5436739759236 - }, - { - "total_amount": 254135758, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag95WKzvAq6wHIv0SSCq+/9wN5b3iv2Irk8/ujdFyOZu" - }, - "address": "noble14jgwedcqz7k5pe7cmzsxegr0r4k3e4ajppjar6", - "percent": "0.0%", - "airdrop": 4464.083160773893 - }, - { - "total_amount": 57316783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlAjQyR6WyHW6XS6xxTi53N8TK3b7fRfyZCZudYlnsYt" - }, - "address": "noble14j3x997n65zm6jp6umpncamwvwxgexj8rrh4st", - "percent": "0.0%", - "airdrop": 1006.8118230730495 - }, - { - "total_amount": 811868533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6/b56eRF83OSyXhimBcYLIo8Xx6ld2E2uivcKmdISMJ" - }, - "address": "noble14j5nxcn2t66sx0me8zzade3mf3rgjafu4kndjp", - "percent": "0.0%", - "airdrop": 14261.073197450254 - }, - { - "total_amount": 212228489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgS6b7B9JY7lgE+3J1NCFQjQKQ4MbgE8uvbbRWm4s3TU" - }, - "address": "noble14jh0w276mpjxq0tkuqzfh35c66saja68wnaq4x", - "percent": "0.0%", - "airdrop": 3727.950885138279 - }, - { - "total_amount": 164572180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgUFj6sPYMY4/StqxY4fP31+mfaILFwAwlK0OzASgz1z" - }, - "address": "noble14je7rk764urn5pu4ydh0lyxr8dku735rzlkh04", - "percent": "0.0%", - "airdrop": 2890.8324560522888 - }, - { - "total_amount": 187867243, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjZDj/Y2uFjVUTAksD+25c6cc4IJy5ssliYvSv0maVRc" - }, - "address": "noble14n2wt48s7skmvmtgdjjl75py8jejfdrkhdjvwf", - "percent": "0.0%", - "airdrop": 3300.027522838077 - }, - { - "total_amount": 913178977, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzLhVl4dTR6TZqhcPqcIlRJrI734MMxO20qNwekaUtp7" - }, - "address": "noble14nj4ure8m8sjk2s5tpkd59ahe7fxw6m956j6aj", - "percent": "0.01%", - "airdrop": 16040.666319764534 - }, - { - "total_amount": 1682798991, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlKhD79AuDRvcbNS89FkfwJp44EI7F1AfpltlUQCSg7p" - }, - "address": "noble14nk4ec06f7y60g65ze3exmpuknym88f38p8vts", - "percent": "0.01%", - "airdrop": 29559.612932117954 - }, - { - "total_amount": 51382984, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8bRA3ApcNiXJq9ZGphZZWq+n+MHhXzhtKlX5iHS/Dm8" - }, - "address": "noble145quvrt4sjxf53fwrsnaygh3nqaywnfad0mz4x", - "percent": "0.0%", - "airdrop": 902.580240694481 - }, - { - "total_amount": 1146293487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8CD/5BRVBMqcWKBuk8iyVd0RYxRoBSwWxecy2vEGl3" - }, - "address": "noble145p2umpsctunqv7yrfv28eqcsrw873l7t4esnh", - "percent": "0.01%", - "airdrop": 20135.495661423163 - }, - { - "total_amount": 50639402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw5IShVUqNOxEeQi2IG/pbVZBIMcDhQFHkDAYex/cLvK" - }, - "address": "noble145rc022tm5alkz405e7akp4lr4lqlwydsxk0h3", - "percent": "0.0%", - "airdrop": 889.5186711185279 - }, - { - "total_amount": 783862313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AomfLgT3yRKqRtbUPUO/da38Lh8MaRcr7Ru0J6JK26Ah" - }, - "address": "noble145xte5t95nc7um25s859cfcnkc45w9mv8c50hj", - "percent": "0.0%", - "airdrop": 13769.123162229595 - }, - { - "total_amount": 75492594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aiap+9gXoTdoMTyTIZIENMxZRtJ0kI5MnOvAnSZ+7OOq" - }, - "address": "noble1452c2vzf8e5jkut2036z44vqsrf5lcrlw290kh", - "percent": "0.0%", - "airdrop": 1326.0834299380265 - }, - { - "total_amount": 1532374663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlyWnh/o8AAEwN6KU1YZPfzlzaNdpqs6qPha+KjsH5IU" - }, - "address": "noble145vm079ryqwt57wzefpnlqzdgr34cv3nhsue4w", - "percent": "0.01%", - "airdrop": 26917.297994306133 - }, - { - "total_amount": 1412540540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+dX3qLZFlQAjBl3SMjiLCA1/KNhbSTcq1W/p7itZ12u" - }, - "address": "noble1450qxgllvlx4mv5enwws4fe5kpm2g6vlw602v8", - "percent": "0.01%", - "airdrop": 24812.322705585026 - }, - { - "total_amount": 137904296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkLDqn5EbvbTAhn4yDiwznpJX9QgLidqsqckRYYXowkW" - }, - "address": "noble145spre7mp37g97w0g2638yz66470k8us7jgn7w", - "percent": "0.0%", - "airdrop": 2422.3912857315363 - }, - { - "total_amount": 611650945, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvAi/retNkyp2OJG4p17uXMGJ/lmawPc8S9AyzoeXDC8" - }, - "address": "noble1455jnm33mnks2k8acsfnfrs5vnvm9p8khn9r55", - "percent": "0.0%", - "airdrop": 10744.1027005965 - }, - { - "total_amount": 155861039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2A2UxZyO5XorTMyzDydLFRRC8sE4CsU9IGFPEABM0D2" - }, - "address": "noble145krdwc3ydnkw292cf8ujhugzx9cmat0px7hxy", - "percent": "0.0%", - "airdrop": 2737.814800625668 - }, - { - "total_amount": 639750000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxLApmE1sjcPUZqJfjt4DGb24NrLmaEhps9AMgsIYh6x" - }, - "address": "noble144qypw8r9h0a3tfj0e2d5scg33e2jhh4m0ccqe", - "percent": "0.0%", - "airdrop": 11237.683451476743 - }, - { - "total_amount": 256096004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuOAo/VMVI9o0esRbkRhQHPlWaGySX4yr9wGHxh0Ol8e" - }, - "address": "noble144fkhmppaphhdwm5rcq3cjmc4fmx87mcv5p4nf", - "percent": "0.0%", - "airdrop": 4498.516336287802 - }, - { - "total_amount": 3059824776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7xA+rIpaUAUtiOaRBFilBlUQd+1dv9iKSuJXHKXjW1L" - }, - "address": "noble144j9sw5884vwnlem6sedtzj8rgsmaz7zkurtk9", - "percent": "0.02%", - "airdrop": 53748.09261379247 - }, - { - "total_amount": 430903334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmmHWWAo6IVKYgSEdMYvOu8s/rIJEV77ykA5NjV7jgZm" - }, - "address": "noble1446sg77gw3q9xfpxrg673vckfn06cl4npg4hdn", - "percent": "0.0%", - "airdrop": 7569.136796683009 - }, - { - "total_amount": 99074154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqwkUlC2DpbDjRiFH13cO+mMqzdH/KcHJwTqLVWEIuUZ" - }, - "address": "noble14kqxe5lw286qgl8eqz3xp7puam9694skx5agku", - "percent": "0.0%", - "airdrop": 1740.3110291127132 - }, - { - "total_amount": 1809219898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyB5pwtR7LcXwHJQOCBXpm5r4WXdtEjBVcd7lseaz/sg" - }, - "address": "noble14kqcjwrmhxfwc77yh549uma23wxxcgjhaxx0we", - "percent": "0.01%", - "airdrop": 31780.289969264617 - }, - { - "total_amount": 278319586, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvnEQbNQFhSKBu73twaxkzDFBqekRcQ4OTMAGDRY046P" - }, - "address": "noble14kqm2eg2cxemu6r0vt59d08sn4635w9a3e5ter", - "percent": "0.0%", - "airdrop": 4888.890044258004 - }, - { - "total_amount": 168110817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoTwUqxt42n5UgOyXObmen/97Hi8mKVYk5bHp9wXptyg" - }, - "address": "noble14kzg26rjvmf30hls0lzmnh9y2epjvwdsv2kxfy", - "percent": "0.0%", - "airdrop": 2952.991240664533 - }, - { - "total_amount": 116209539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoz76lAafT2VE3Imz36wQbV8OEJDIYT8cZn+yMS/qFse" - }, - "address": "noble14kwq4dh6xmvvf8g0cqffue3kg4fdu7skfrknj4", - "percent": "0.0%", - "airdrop": 2041.306781280252 - }, - { - "total_amount": 472510332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5H9U416zxSrMDG7nsldDJwLKT0mTy2/SqAut8I1V1Kl" - }, - "address": "noble14kjrxes0fnlt9edqadz3uqnpj8d2cl6e7v0tdh", - "percent": "0.0%", - "airdrop": 8299.994589399268 - }, - { - "total_amount": 1051543356, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AizKq9limpsCiTsyrOVDUkY5YxEQdSILSDn9fCiwEdJx" - }, - "address": "noble14kul24h28mvum8xyqf2lvkgwwua6a358z2ypvp", - "percent": "0.01%", - "airdrop": 18471.139304777673 - }, - { - "total_amount": 90613625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApzN3jbTl8km9n5wYa5dj5CVx+asgl9iO5e17fS0eml8" - }, - "address": "noble14k75vkez9vttplgxkqzzr2xr0enr923qmwn765", - "percent": "0.0%", - "airdrop": 1591.6955594229296 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1OvwgyPxmkuscf5k/0bIG/IWeuFCY2/+IiFVMFRtSnq" - }, - "address": "noble14hq6f24zdqlkmepcej8dfnncucqpctazkd3sjj", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 64957177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTOUgrqCZylxqOrI2zuYkDOWTINe0dzGrBdtBikZrAJ" - }, - "address": "noble14hp2s0269kx0n84gcuk3rf58su5evpurrawr2m", - "percent": "0.0%", - "airdrop": 1141.0210129387192 - }, - { - "total_amount": 280533638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7TQ9MSCk+tyXQLovuNbqDL9zHPmlo7lNvLEsefgbmYj" - }, - "address": "noble14hzac3wm9s2kg9zj49pffj20u09u85jjwysaa4", - "percent": "0.0%", - "airdrop": 4927.781510488732 - }, - { - "total_amount": 529249269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3oJdKS1MyRaCuDvjNPKG3Mnvi/dS0c3kZEc4QXAYzJ5" - }, - "address": "noble14hxuwcl6cyz76xgsfxjueekg9de6a0l37tx5km", - "percent": "0.0%", - "airdrop": 9296.656118714283 - }, - { - "total_amount": 1815817211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1h1hMV42UnIQdjpR5GwiIHBHHXs1YdawAgcs/EMhV5w" - }, - "address": "noble14hxlgpgdxls6s5z5rnv024z9d0hev5gpj9ahls", - "percent": "0.01%", - "airdrop": 31896.176667387812 - }, - { - "total_amount": 422929024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+utSQvx/lwnBuoNc7Q9XgUpHfo2oOlOiyDIyoOKAYvB" - }, - "address": "noble14hvjc5cs3g0vlt94zhdql9ja9gmacsjcayrgz5", - "percent": "0.0%", - "airdrop": 7429.0621245080265 - }, - { - "total_amount": 322255494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5bsUN0ytFyu/wqyllCaluwiNVtkus+SHZvkC2SOGWZ2" - }, - "address": "noble14hdxzfsp34zyjcpmnrm2n56vjj0ghnchwyqnkf", - "percent": "0.0%", - "airdrop": 5660.65686920088 - }, - { - "total_amount": 195077347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au5tqI65Uj0hgvYFvw4iytVrlBA2NHTQEjnCYmcnds+X" - }, - "address": "noble14h3yyk344saqjj2vhksym8c999g4spl69rewde", - "percent": "0.0%", - "airdrop": 3426.678349573874 - }, - { - "total_amount": 97129759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apeenmtv1CjkCAL3SA/abb1qAoYoWwiKlZFYCynqrT2I" - }, - "address": "noble14h39ggyywxvz7aj765u98kasqz25dyz09gdm5k", - "percent": "0.0%", - "airdrop": 1706.1562881754187 - }, - { - "total_amount": 2002285688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxIVzbvRomAtaugPSp3W0aXuSmbsSvbVZVOnvbjQf/c" - }, - "address": "noble14h5w5tsxz4ep3sg0rg68kq75lxpvqu0uaj5zzt", - "percent": "0.01%", - "airdrop": 35171.633827536265 - }, - { - "total_amount": 218510380, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyYLtbzw+RfTLA8U2266qxJSiW+4UHXJjogebJ4/UVBz" - }, - "address": "noble14hew5e5ua5pzhr6swnr0t2md6up7qmgp8qvrwx", - "percent": "0.0%", - "airdrop": 3838.2969617849076 - }, - { - "total_amount": 321498453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+fF8dW/JO4G4Ro/acSNIvPDD+L4nJZNiqRgLPg5Dpoq" - }, - "address": "noble14h6j9s53uzspghr5r3d4tp2wdxrhejkqcnu6g8", - "percent": "0.0%", - "airdrop": 5647.358882303201 - }, - { - "total_amount": 70308870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8oxg6lRSQVnpm+rRYhGO0Bs0kubUU4ioJzEPQprcDoP" - }, - "address": "noble14hmp5glqk4gvaxe24wtdnx08qjhxvrvs4rrylk", - "percent": "0.0%", - "airdrop": 1235.0274714982877 - }, - { - "total_amount": 2000287306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax1vdBPKMRpBSGTRPwdHNMLzuyzpZvhDt0h4hoBQ0BoN" - }, - "address": "noble14hlal2zjsvaevyeh3tr558jujm4tylwcy4y6r7", - "percent": "0.01%", - "airdrop": 35136.53076488503 - }, - { - "total_amount": 922263728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aipfy2e1EfR7N47z+KBmsAwOvEJZYMjNjQM4J0d91eur" - }, - "address": "noble14c2zjf87ym5rkd0rx4meq8lnrncjgq8ew06zkq", - "percent": "0.01%", - "airdrop": 16200.24671206385 - }, - { - "total_amount": 8992382576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuDiiiCQxO+90xcxl56uzaCyh8ac/SYcM4U5j4G82C0H" - }, - "address": "noble14c2yxd4tmm43dsyfmc3zcn5dy6tawvn8qmhz9z", - "percent": "0.05%", - "airdrop": 157957.8723933771 - }, - { - "total_amount": 1297558743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9dCTqa84T+4rKii/eEd/EHnw7FrAmv7+brT/URAo8co" - }, - "address": "noble14cta0tnaxxcvdm7tszemkulqc66sd8ujylns98", - "percent": "0.01%", - "airdrop": 22792.582123532728 - }, - { - "total_amount": 389259646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwSCeTUdxDMFY2svG9J8tQVWuLToGv1/D3g6KRYJ0SHS" - }, - "address": "noble14cjmdt87vv6y56yuwr46fqdthzk90h32z8jeg5", - "percent": "0.0%", - "airdrop": 6837.634516892372 - }, - { - "total_amount": 1634987635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az1f+HjTkLm2TvNoqOkB3zYERn+zBoKtTVKc+9URiSZN" - }, - "address": "noble14c4a902leq022g4jpfg6khakdxw5tel2lcjqr4", - "percent": "0.01%", - "airdrop": 28719.770987430395 - }, - { - "total_amount": 70266471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5PC8pTjI+JuTCin4M75X7ZCiOyMFKw4wLJeRm1rY/G4" - }, - "address": "noble14ez7s75ch67kvzc8c444kn9r4twarmrqw5h0pj", - "percent": "0.0%", - "airdrop": 1234.2827016027675 - }, - { - "total_amount": 5452867951, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/+IODgeP9MwSH9T59J6hfyRlNdbWI+HTB68dndwBXkT" - }, - "address": "noble14e5mkxhpeet6p2s538zwk69c8sxurgzrug8368", - "percent": "0.03%", - "airdrop": 95783.67164680046 - }, - { - "total_amount": 68457745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjYxv/xZQlzOT1r0yfUpGKx1wsFdyPAkGCczVO/uwsId" - }, - "address": "noble14em9nnlfdq2gndu8t3qzvedafdrzn5mz3ne87d", - "percent": "0.0%", - "airdrop": 1202.5110873183503 - }, - { - "total_amount": 60413062, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjCQZ0VGTmxKmu6AOo7CDi88IPDEUMe16LVnK1Vj+hut" - }, - "address": "noble14ea0zna7kdnw4dpxhzzm7hfkl5afy35648hmvw", - "percent": "0.0%", - "airdrop": 1061.2002611808336 - }, - { - "total_amount": 546073319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmYlxY823WAXHX18VybByemL9PR1DNNE7dKjHuLkAxAO" - }, - "address": "noble14e7spzxmfsqa0d3trwe56flh92lt6f5geslcw2", - "percent": "0.0%", - "airdrop": 9592.183040592858 - }, - { - "total_amount": 2680257491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj/NQ141cGw53PRlsJs6Z/W8MptZqye5r8PDBxhAtQgT" - }, - "address": "noble1468e9dp3k5srkapagsse8lmss62pq4erjn4523", - "percent": "0.02%", - "airdrop": 47080.71160970265 - }, - { - "total_amount": 75722133, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7TY+BqnDwMxUjjU9T4OH3IXq3iE3elDOR1fk/wNijP9" - }, - "address": "noble1465zfqtc2fwfur79l0nltf7q2f4zv9g8jnl8pm", - "percent": "0.0%", - "airdrop": 1330.1154527934677 - }, - { - "total_amount": 171593575, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AreLXoGnrry1s4zwSlNJEZpbxoGLBUu+2ZFOTebrOx9E" - }, - "address": "noble14640tst2rx45nxg3evqwlzuaestnnhm84vdff3", - "percent": "0.0%", - "airdrop": 3014.1684691789496 - }, - { - "total_amount": 11229455897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlL2UeJ7SYIY95XXNeez2jLsWQfpS9nG/p/KwTDgUWto" - }, - "address": "noble146kwpzhmleafmhtaxulfptyhnvwxzlvm2fkn8x", - "percent": "0.06999999999999999%", - "airdrop": 197253.7252095425 - }, - { - "total_amount": 84068877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah++zcB9Pwp2aU4exdgnuzb4wJGym4iq/XMhh50HVY6s" - }, - "address": "noble146u9wz9x7unxgpl5ghxr3k72tncv7r53g3477v", - "percent": "0.0%", - "airdrop": 1476.7322045285405 - }, - { - "total_amount": 131321960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bKKtIaYBEQV1G9+e/9OWZ7vwOu9f2n7VqEOaUrISs0" - }, - "address": "noble14mf4auk2gd09lrcqutegdk7hkj8lgf5vr0yhul", - "percent": "0.0%", - "airdrop": 2306.767669726441 - }, - { - "total_amount": 65797478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2xjxUSbkAhHprGtX4+d7AzhD6qgrduPy06tJFHKOJR2" - }, - "address": "noble14mwhegj74cs90nlgdfmrgjlgd7rpq0yxscdepg", - "percent": "0.0%", - "airdrop": 1155.781523516225 - }, - { - "total_amount": 438903090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxQspaXp+wjibT3oj/lzvPs82qKYLEdgZ4UDs6PEDdXG" - }, - "address": "noble14m04cnzdqxzxce7s0wph7sk8twg0q0gp33ptvy", - "percent": "0.0%", - "airdrop": 7709.658446729202 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXsM/qwW+kjVdvIftUIJG7I3zlksKbhbTh1Dpp0PUCO" - }, - "address": "noble14m46c90sz30m7y6fnl4ftaraaj8h4uu5fvekyk", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 396519446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aje9duzFl9lEsXqzdd1n3dIhZDUu8BSV/dI1Yx2UoIK4" - }, - "address": "noble14mkrrrjvvlltv9pfgcz66p5v08nfka9vq2awm5", - "percent": "0.0%", - "airdrop": 6965.158290743144 - }, - { - "total_amount": 496427827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A35RAXvBZRqERVBF0PTD+L+kucb6HZ0fOxarCIzXOWD7" - }, - "address": "noble14mmus5h7m6vkp0pteks8wawaj4wf3sx7fuhgyl", - "percent": "0.0%", - "airdrop": 8720.123136116388 - }, - { - "total_amount": 58893780, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQpyeacCxmH7o+eTNcURJO7H5Bj5HzzENc+AVzvnSca" - }, - "address": "noble14uz8dt79a03g8alr5qa56lgad6djcstvmfrac0", - "percent": "0.0%", - "airdrop": 1034.5129455270214 - }, - { - "total_amount": 1414500001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmkiSc2KCpj9HJyzuRCS7DwqpyQ+rEn/dKCwaXUy6JJr" - }, - "address": "noble14udllglhgyvy75mgnltdcax2j8mjgkwd45zl97", - "percent": "0.01%", - "airdrop": 24846.74209199146 - }, - { - "total_amount": 121440669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am4LJLrwJLtO9t1Y4U/Sk0+Sf2x73QcjVs8r0QbppiML" - }, - "address": "noble14umk9mfznt7fqyq4ayh0zmwu44etaec32vr35y", - "percent": "0.0%", - "airdrop": 2133.1954612857594 - }, - { - "total_amount": 89548728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+f03xWK+N7QenzSWzfJUaFzMxnHd3h7eZre6fh3zWJl" - }, - "address": "noble14agkftt077s0rzqelgcucqytpg5hv0tcuk0dnw", - "percent": "0.0%", - "airdrop": 1572.9898534527424 - }, - { - "total_amount": 86421493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/5d7gp/Wzi15wbzmDPHx9ebOmsr4ZyjWSkzlHRnA+Lk" - }, - "address": "noble14atjf97kx0tqlqxnzyvu0p4gs4x0nct9y35gq2", - "percent": "0.0%", - "airdrop": 1518.0576502352687 - }, - { - "total_amount": 124309040, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvV3mWtM8YsnbQeOgck5FnUoSqCKU4gkus3BhuSbdYoS" - }, - "address": "noble14a3j0y4hfhx2gjzcu9lqh2tq0944m05yf37ry6", - "percent": "0.0%", - "airdrop": 2183.580526263322 - }, - { - "total_amount": 85300705, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9RO4t6iPDhz2PWqFF9B0MwWgOjgoi0Xt3gladme4cxj" - }, - "address": "noble14anzkn7apnn554s6d32cz02uf0vsqp4h7d40mu", - "percent": "0.0%", - "airdrop": 1498.37017737835 - }, - { - "total_amount": 50092819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlyazokBYfvTEvRVo56TaBv4kh3tkoyhFJEN1SOF8RcP" - }, - "address": "noble147y6dqfp9qyw4u9rkrwwafgnju40v7nl3lum80", - "percent": "0.0%", - "airdrop": 879.9175351529811 - }, - { - "total_amount": 65206291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9CriZNX978v4nzOX8bA+yhuWZg2QhYWpu8x+xv36QT9" - }, - "address": "noble1472m3dhn2gyh4txkx0kmzpg4gq4g8lct9qsj2s", - "percent": "0.0%", - "airdrop": 1145.3968851940242 - }, - { - "total_amount": 478927938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apj5tqhJjZaOaVKnzX1ryszN5Js6gLdMgAjIjB7ikG5C" - }, - "address": "noble147tt52fww6h6hst0qj0ast3027n356gwl22pp0", - "percent": "0.0%", - "airdrop": 8412.724600722906 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwIZBmWOlf7b75uaEEGICaFHIcOZhHBsNlBx2E1d/wis" - }, - "address": "noble1470a69gj83l443qxzsss2flcetxr25ppv6ndez", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 3450931862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkYkqF0TopEvuMaHQB9WBUz1mCBS65tRKO1rV4gBInOd" - }, - "address": "noble1475dprpyr8txl9xvahrnawnzd5ru54qsmpnhqv", - "percent": "0.02%", - "airdrop": 60618.17878510546 - }, - { - "total_amount": 57150732, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A41X2gqoXINPbHMwcTEP5Ae7p0G/VP1JyubhrnLgm9K2" - }, - "address": "noble14756jq5z2raw70gzcfrsmp8mpxpeks0g5qqjz6", - "percent": "0.0%", - "airdrop": 1003.8950140463968 - }, - { - "total_amount": 992734171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5eQ/6X9gpBpcc8UY38QOUxmD4BFnjs6O0PKiINfkbHw" - }, - "address": "noble147a2hzdj8aa9la7x0rdh5zj5ak63w7pnls8m5d", - "percent": "0.01%", - "airdrop": 17438.112333196066 - }, - { - "total_amount": 61390287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AicSug5IY3GO/VKXlgqO09EOxL4yRdwAMw8RtdXE9e8e" - }, - "address": "noble147anuemwczp68xuhfcvtaatxlgkh6ak3jckcse", - "percent": "0.0%", - "airdrop": 1078.3659434174408 - }, - { - "total_amount": 98306653, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3NOtSDTzH1OFUCk99h19+5NQapHauhBDpvP1gWaUUpK" - }, - "address": "noble14lp88s99uu97pap4mpjvvlwnsrljrveam8e742", - "percent": "0.0%", - "airdrop": 1726.829304553601 - }, - { - "total_amount": 289751960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al+Ep3CMvTEh6pK1NYIT+grWlXWwaXTOWrhJQk/Tc316" - }, - "address": "noble14lzz4juy2kq4qq8za06e52afy5ec84eggjls9q", - "percent": "0.0%", - "airdrop": 5089.708176514187 - }, - { - "total_amount": 140669545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqapyM2CpDHZWRJhaVr3z59pAQLhExxz15fujaM+SqQ3" - }, - "address": "noble14lza8vaxnqnn4nhdwrmuxs2hl3mhlwytxpy3z7", - "percent": "0.0%", - "airdrop": 2470.9649362614505 - }, - { - "total_amount": 62027839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoteFSsNzBajyUA5QPx7UqnWSTZEKA9SK+FJq7CKSQGg" - }, - "address": "noble14lrzujxue900a0hmjln6rmfwdczwc082xf7z7e", - "percent": "0.0%", - "airdrop": 1089.5650173679776 - }, - { - "total_amount": 5390663347, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Adb5fQpEJefReABjVfie5j7BQ5zMI2EUlse7ZSuhiW" - }, - "address": "noble14l98pp2z9wqmarzlqm48qgusxxj8wywm7y97sn", - "percent": "0.03%", - "airdrop": 94691.00162104591 - }, - { - "total_amount": 99005162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai0IppR75InVnydkhhtTPMBovt6YyAT5pNveU/y5N9Ha" - }, - "address": "noble14l5jx6ywsydeu8grdp6yf07hqmqc0h4gpk8zt4", - "percent": "0.0%", - "airdrop": 1739.0991334398968 - }, - { - "total_amount": 1682444853, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhvUSvxgfF8iNR4bjgnpiU+1AeYo/H7S+KsKXynjmfIP" - }, - "address": "noble14lahc45ymcdr7qtw0gq3utknpmgqnt94pu0z38", - "percent": "0.01%", - "airdrop": 29553.392235373696 - }, - { - "total_amount": 274108772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgDOcQRzp9SLTfjEfJACddHd1lR7v+vvCbWhz7dgM0Xi" - }, - "address": "noble1kqs0h4290w82f5m5ygw4qyekurhcp3w294xaa2", - "percent": "0.0%", - "airdrop": 4814.923971878095 - }, - { - "total_amount": 1132754818, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoTSvrO/WuDbIv3vSw99e8WkADzNZPXqglIxdRng+NAU" - }, - "address": "noble1kquk63vg0c7ugpd4n9l2hfemys9kgywwhetye8", - "percent": "0.01%", - "airdrop": 19897.67889459812 - }, - { - "total_amount": 134563200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AspN7aMWPEHwNTE9gE3Uyc7VR3CmSCGKUe0MG8tyG6Mq" - }, - "address": "noble1kpxpf0zfp3wg0ulgpfgmvw4jpd5a2r5aenx236", - "percent": "0.0%", - "airdrop": 2363.702455361868 - }, - { - "total_amount": 71821176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnIgnK/vOBdxSqZlHSxGzkQ0rNc8v2Bl0KfFlGMH/jE/" - }, - "address": "noble1kpfgu6mc2esls3udxsrmtwaetf69an543sreyd", - "percent": "0.0%", - "airdrop": 1261.592248535832 - }, - { - "total_amount": 6116426638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AngSScKL/Fjd/4x2LU7btGw8pnUIQPf0BZC9OdYOvcXz" - }, - "address": "noble1kp2lcnr3n9l9mzf60233nslc8dfvw6c8pdf9lf", - "percent": "0.04%", - "airdrop": 107439.57235173759 - }, - { - "total_amount": 50681597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuoUMe7KexDcnyxBEeiNkLdGNUv+OChONOyHag7/4oWx" - }, - "address": "noble1kp06tmj4wu5aqvy5dm54t76r0ufw23mezfpexn", - "percent": "0.0%", - "airdrop": 890.2598576026782 - }, - { - "total_amount": 105175158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2FqH8RnOwzXpZkNPW8kd8FUwQLUNe/pMaL74bDIBAJd" - }, - "address": "noble1kpnn9fk8yxyrp6n48qm5utnqrwfpusg3wmtfh3", - "percent": "0.0%", - "airdrop": 1847.4796913842151 - }, - { - "total_amount": 86167097, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxN59vJRDrLdWSlWImbWCoOqUcHHRt/u5Affdk/7M9sX" - }, - "address": "noble1kp5meta5l2nq7drz0dkmzf882w2yl8rl7zqjlh", - "percent": "0.0%", - "airdrop": 1513.5889957306622 - }, - { - "total_amount": 786065725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YT/1GPAmBjvfTCrgGHnpMNwRn9NQ7n79WaHiYbmPpV" - }, - "address": "noble1kpm538tq0hcaw0sx8zwkfw3t2l6vkp0q4efgdu", - "percent": "0.0%", - "airdrop": 13807.827728965327 - }, - { - "total_amount": 52699890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2NPOEx8i1JnPxiHlIp1Oc5Y8JTwC/8x79qOqrLK+obS" - }, - "address": "noble1kp70zttpnfsks2xhh76063r6upjgt4x6k8ne3w", - "percent": "0.0%", - "airdrop": 925.7126717430945 - }, - { - "total_amount": 392573710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiXqiCq8Q8gD9faME3H/YOoZqU1VBz8pR1meYTVx6rTo" - }, - "address": "noble1kzk0e3hsj2cl72sas8dd5vfzyj382mfp7cw8qr", - "percent": "0.0%", - "airdrop": 6895.848510124001 - }, - { - "total_amount": 76752023, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2bYZ9IZSz3Ta4rj99AwR6F8AbgSSjwFSvU75Oz5wNqB" - }, - "address": "noble1kz77qrwfa4hz3d60qqnl08mfp7rqd0lnmmztaa", - "percent": "0.0%", - "airdrop": 1348.206234833079 - }, - { - "total_amount": 50094753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw6fRHfP4ulqCX3MIxkcsjWhcUUjB/lpDRStvfqGVR5R" - }, - "address": "noble1kzl36z2407nvsg80fczk2accuemjevlarptrnx", - "percent": "0.0%", - "airdrop": 879.9515072980303 - }, - { - "total_amount": 83693326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApHqtHKp3b/vIrO1YlvgOdUWkJyQwYzYS4V2v9oj21fg" - }, - "address": "noble1krrhmefg0h2lydrme7gw5595pgxae4qh9z7qkc", - "percent": "0.0%", - "airdrop": 1470.1353725506028 - }, - { - "total_amount": 176309933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1YBc4xLeycU1SssXeVRKu8U4crXn6ryhenBkKc5rd0h" - }, - "address": "noble1krsznyszyp6udvn2wh60l2xgkg5cvxuhmvpjdn", - "percent": "0.0%", - "airdrop": 3097.0147970380194 - }, - { - "total_amount": 174441066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiXlji10A5RN93McgBhvm3vcfTcRWRpYOh2a05PfRbs9" - }, - "address": "noble1kra540g4qt4hlgkpmxh3m694e53zxam0qm53j2", - "percent": "0.0%", - "airdrop": 3064.186761463325 - }, - { - "total_amount": 373487388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoEn1Wnjeuu/eTK4GwMTYQqn1X4kZXnHWwdCMer8lNK+" - }, - "address": "noble1kypgc9jaqcrrk0xwytgqjqe9leudcz4txp09rs", - "percent": "0.0%", - "airdrop": 6560.5831019349325 - }, - { - "total_amount": 442816443, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsjdUkv5qKfEekbZ5pZ1rnhMiIvhki1f4w5Wd2bkCuB1" - }, - "address": "noble1ky8gpmx3vf6tw7zj970q7cp70xtynj0cadgu3n", - "percent": "0.0%", - "airdrop": 7778.3993959248055 - }, - { - "total_amount": 101891075, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxlouFqyPA2y+Jm3Gm2EsCqo8hl+p7B5Qb/HflfzDwy3" - }, - "address": "noble1kyd3kmm87fstesqe7970w6g6mt6j4eahrueh82", - "percent": "0.0%", - "airdrop": 1789.792336663815 - }, - { - "total_amount": 2349570217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah3GsffElElWPR+TEIERCmOU5YXElvpBVaS1oGG80EXH" - }, - "address": "noble1ky0zedaxwt55qysxtfemfmq38hrx4d06p3ze23", - "percent": "0.01%", - "airdrop": 41271.94426832906 - }, - { - "total_amount": 66080740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+GCZ1MsklwGSl/vfzVjx5pSCo4eyc0Gy0FYxX79AJZW" - }, - "address": "noble1ky5uwm74h4n7aqjjcm7qzj265dt04yfg77qtvd", - "percent": "0.0%", - "airdrop": 1160.7572307297182 - }, - { - "total_amount": 50890619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auef5svr0T1t+J4PKRtskaVJbf4jSeto4ohoH2S0kt44" - }, - "address": "noble1kyhmv66773tl7dv6wps6slyg940dw2qc0lteqs", - "percent": "0.0%", - "airdrop": 893.9314841292816 - }, - { - "total_amount": 124365428, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxUuTlP7tkkbMG8wBZ1FqzFKke5/r4ebb73wSD74T32N" - }, - "address": "noble1ky6yvh3e0ufmukl4zz9eventpegt2kr9ljyzgf", - "percent": "0.0%", - "airdrop": 2184.5710233238333 - }, - { - "total_amount": 1986892773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApKmaOvkso8y25PTLdNhP95ZDj6pedEcKt2FOgbSjch9" - }, - "address": "noble1ky67khz5ymwu9ahlvm69auw5rfx0vdmzwpdtdq", - "percent": "0.01%", - "airdrop": 34901.245853850465 - }, - { - "total_amount": 237869256, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+kSFFcYK8k4u3Olkz77okgFA78nNqJj0g59qk9cGjXs" - }, - "address": "noble1kyayw5q8mlxuee0qq5dl60v2wqay0vnw9aqqxg", - "percent": "0.0%", - "airdrop": 4178.349983222016 - }, - { - "total_amount": 1157066497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As8qG8CctYM5qBjI44SE0CtytlS5s3eXqSlJVYdSPUm0" - }, - "address": "noble1kya9wlejckspytzzqajlvruxmsm7dp39v767xg", - "percent": "0.01%", - "airdrop": 20324.73157576407 - }, - { - "total_amount": 4789527189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am0O2iuoA+25lEL0zHuLYqZ/+sEeh/C/Q4fpMnIQc1zg" - }, - "address": "noble1k9q738xuwdt0vvs9xxm840xmxutu9x8kk9d937", - "percent": "0.03%", - "airdrop": 84131.59895619104 - }, - { - "total_amount": 57563050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Ki3Z8fhnT3bENX1rL6uILwCKXBrGjCKNiwRlWKr0lN" - }, - "address": "noble1k9zqy8ekmmztjrjndglaup04xjne6rxq2sddm8", - "percent": "0.0%", - "airdrop": 1011.1376856608492 - }, - { - "total_amount": 281699255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A964HdbXWc3DB3eSapcaIIPUb4XsJimVzptxmW/YloZ5" - }, - "address": "noble1k9ysktepetdtljh0qf3kqh4avm69a3z82py9n5", - "percent": "0.0%", - "airdrop": 4948.256437994259 - }, - { - "total_amount": 409040827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArCbYbCveStcv01tnAtuTxNO65MkQ1qyTfGIyMjl40IQ" - }, - "address": "noble1k9smj4j3xzqem7u85k0mt27t30z5fa032mj3t9", - "percent": "0.0%", - "airdrop": 7185.105639009396 - }, - { - "total_amount": 357152637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobW773eUPkseIkCUjdgI+vvGxBC6hlEl4JhzvAPh7xs" - }, - "address": "noble1kxpfnesq9vm7z9uwnfmt83pwwdwgc28vgtp6ma", - "percent": "0.0%", - "airdrop": 6273.651080056554 - }, - { - "total_amount": 6787922329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay/roNdy0Q/gMJESzNkKm7M6M1McT6mAyailR1trWZmy" - }, - "address": "noble1kxzcgtrd55zcnajjx8890c82jflvwvzx68tfex", - "percent": "0.04%", - "airdrop": 119234.89242127827 - }, - { - "total_amount": 140755821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwQeffTgMmtISzdo9T+U5ANnR0iCRMoIT0RLYpwCWYbl" - }, - "address": "noble1kxrfglnlzjqvurf5k4sx270frgah43k5v6mqdm", - "percent": "0.0%", - "airdrop": 2472.4804382191833 - }, - { - "total_amount": 108849461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai8O84b2CIYDxCyql3gI0lnyNkqLh4csUfxmjM8VjD1e" - }, - "address": "noble1kx92d33hsdjxd4g2k7pes647gdtc9grwl7d9j4", - "percent": "0.0%", - "airdrop": 1912.021549952111 - }, - { - "total_amount": 144632574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aup2TneSVlVef7n9ldeCI1vjqoPZgPCCTOvKQpN2+lSO" - }, - "address": "noble1kxxyjjmgf9e5zxm6ytedjk65fnyjc8ykhkpkwa", - "percent": "0.0%", - "airdrop": 2540.578481257187 - }, - { - "total_amount": 945953951, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtqbqYZjqtwBKctAFJxt39RfmHYT9H2JwAV5aeFnW2R8" - }, - "address": "noble1kxtjys3668a924qadhhywfurw5a89r78ys59ps", - "percent": "0.01%", - "airdrop": 16616.383057462666 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Ymc31juvG7xV5IGvpcDVe6lOxbreT4R9q1LHgCKt9k" - }, - "address": "noble1kxv3xhty2rqz9rk3acp7cwdf5l56t6zchzjuwf", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 9052111986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzyoAmNFk5+Eq3YGIeVWaTWsniFCtjRfN3+e4213jtVi" - }, - "address": "noble1kxezshmwem8gdunnrmj2t7yds9f7hu0h9lhye0", - "percent": "0.05%", - "airdrop": 159007.0637999007 - }, - { - "total_amount": 51272186, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnepS/7F0Pd3bR6HsbPryGw97YotEUACqu188VecE4vM" - }, - "address": "noble1kxen27v9t0c4rf7z0ethh8ee0fkn62d78yd5dj", - "percent": "0.0%", - "airdrop": 900.6339916111566 - }, - { - "total_amount": 135317721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq/DHpcNZD5BhWznsnNjEgyO4Tek4NNYF2K7UCgXqL3U" - }, - "address": "noble1kx6qjxdz9mzadm8trrj7y9y0yntxrl5p9e8uft", - "percent": "0.0%", - "airdrop": 2376.9561765896788 - }, - { - "total_amount": 7637271774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah82CIN0vqUtLXrzgcS/vs1ham4q2gqAhHJKrVpYD9t3" - }, - "address": "noble1k8q6umgmtkmupphznts479k56ns2kzf2a8ps05", - "percent": "0.04%", - "airdrop": 134154.34564925396 - }, - { - "total_amount": 69658158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmZ6MJviz8nza/+EgJDMNMPMdGJKvsM/Ro8CAgvevJAC" - }, - "address": "noble1k8pumyqder0r6q98ccttl2v5sth59n8alqmm73", - "percent": "0.0%", - "airdrop": 1223.5972323828876 - }, - { - "total_amount": 173098842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4bFwxOpL6FueIC9KjKEwPaVQM/Qhn40UBJEqDbS01Z9" - }, - "address": "noble1k8zdqgnga5qv8uwsuufqhg3q0ucqprdvghqm3a", - "percent": "0.0%", - "airdrop": 3040.60960095848 - }, - { - "total_amount": 295100548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax2EwUOFRcjgNz6CDxhl+6p1lLYuRm3gEGiZk4G+uouH" - }, - "address": "noble1k8w8gys9fza0qt6kx7yd59phm6axkgwmljffpx", - "percent": "0.0%", - "airdrop": 5183.660093444811 - }, - { - "total_amount": 57780233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ara1nPXuGinlIXIVwixZUPhi2igZ+DSSKeNSmUjPfj3D" - }, - "address": "noble1k83rfe8tkaetq46ahf92j2yqxle8dsgkfcpkf7", - "percent": "0.0%", - "airdrop": 1014.9526662080037 - }, - { - "total_amount": 280717177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZag0DzXYx6wiB+VW6WFQR3C2j4KfRs+S/NNPPQQKd8" - }, - "address": "noble1k83vral0cy76ult338mk7vewsfs6t25ylu2n6m", - "percent": "0.0%", - "airdrop": 4931.005509211673 - }, - { - "total_amount": 105017104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj/zmRL4egtFsXz0cw8rj3fmo3yw6z70eXwLkUUcDERP" - }, - "address": "noble1k8nezswufaa75rh3nu28g86ryta3v2nfaa4tar", - "percent": "0.0%", - "airdrop": 1844.7033555964235 - }, - { - "total_amount": 1000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5amKvUFCXsBRjT/v6V+PwuHaCNnmEkqFyYsFmm4JHF1" - }, - "address": "noble1k86mar555q50gl7gllpjvpr8qc6g67slny0hmd", - "percent": "0.01%", - "airdrop": 17565.74201090542 - }, - { - "total_amount": 92277265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRRAGufEwEiAhkzIBNNxOMP8l6sa1HHhui11NyFk76c" - }, - "address": "noble1kg99k8wd67r0ffxwavgnxup7yk46rvttt04vxr", - "percent": "0.0%", - "airdrop": 1620.9186304619523 - }, - { - "total_amount": 12152741494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlEmHMi8XL8FruixgdmEAQBvdioT3P2w1j1LvvdPfV9/" - }, - "address": "noble1kg8npqfyt0z66mqy8g9c03yemylhjt3hwvhalr", - "percent": "0.06999999999999999%", - "airdrop": 213471.9218088293 - }, - { - "total_amount": 1411699888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6GzDuqGR3IKyj+F3wIkd60Hl/voUhmUlfNx3tWJwCij" - }, - "address": "noble1kgtqwhw7ddsfr54wg350rxz4ysugc6gp52ysdw", - "percent": "0.01%", - "airdrop": 24797.55602943208 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av5sekju/RaP9mj4im8UgeXhtJ34OltWbqtt9gi5NFfV" - }, - "address": "noble1kgv5g47zj7sdjc6s82cpycgf3t6z0xrhxvf28m", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 50594365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A61rHwxu2k67V+KA9CTDi72+jrPWfGznimtzfb0tIB0V" - }, - "address": "noble1kgjgcml9eewpgcwdc078vltu5635g9mam90jrl", - "percent": "0.0%", - "airdrop": 888.7275627955828 - }, - { - "total_amount": 780780327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkJGW2OysPG6de9Cbr9GwqTiw4s5u5nZISB3iv+hdZQL" - }, - "address": "noble1kgua30zdkg3edtfp8gnh7utdzj3qjy8yr0u6ev", - "percent": "0.0%", - "airdrop": 13714.985791272371 - }, - { - "total_amount": 4252210635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak/wz27VMfCfuEbRF/P/EWlPnVMS7/jrs1lwnX5t/dce" - }, - "address": "noble1kfxreqfvrg7dr93xd6md43pkmy9chky5ngx4qy", - "percent": "0.02%", - "airdrop": 74693.23499043832 - }, - { - "total_amount": 81632575, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ZqHtTFwpNmUNnjfOgEl3mb5CK9hOSTripXrf8kUbtI" - }, - "address": "noble1kfxlswgy760av8lx8dpxszjj8htt00n475y2lv", - "percent": "0.0%", - "airdrop": 1433.9367521358874 - }, - { - "total_amount": 538819672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqmK/4iJXVZXYAtJ8x0uqNuWx3FSrFd+hKQk1Ne/NYtr" - }, - "address": "noble1kf2ruy7ktpa4sq8pw2a467nm8xwf55axglpfa4", - "percent": "0.0%", - "airdrop": 9464.767348752679 - }, - { - "total_amount": 72361988, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjlJWXSbgk61gZ5Y4w985fDrGVBH/altczOWwmJ1/ZZP" - }, - "address": "noble1kft4q9mgr2m678q9fpy49k6y0v9jjggqs60frz", - "percent": "0.0%", - "airdrop": 1271.0920126042338 - }, - { - "total_amount": 96175310, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjlQtv7XecuPMjsUS2HuImtiVX4QKODT0idBgp4hI8nu" - }, - "address": "noble1kfcm2acfdyjnm8pf8sfk8q0tfn5k66c88tavr3", - "percent": "0.0%", - "airdrop": 1689.390683278852 - }, - { - "total_amount": 169382384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0XGUNVOIzMd0/Nvo5DkHCa2VWuzVskeeo022/Y/+8cw" - }, - "address": "noble1kfmkknwveyqjjjkvmz5cwvnu2398dz7muwhd0f", - "percent": "0.0%", - "airdrop": 2975.3272585361137 - }, - { - "total_amount": 59949143, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/qr2D9yZntiCRZUwafsF1wmt4Oz3z1oPOc1RuPEbab" - }, - "address": "noble1kf7th25x0x2dvqn9kuph8rry5mrqqs2ps4vp57", - "percent": "0.0%", - "airdrop": 1053.0511797128765 - }, - { - "total_amount": 84794433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1xwix1sSMbh+e89v0eO1HDjX96d1Na1qHL2tOwoc6D7" - }, - "address": "noble1k2rthqmwlg8jzdrpkhacrqgvz0m9f4lmm4ks84", - "percent": "0.0%", - "airdrop": 1489.4771340390048 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApO9boznQWaJT74XdAKMAd13Zo3WisJR/ofz2m5XBzVi" - }, - "address": "noble1k2npftykdqrcv37xrw4rwflydw357ujv73m3rg", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 96015724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5qdLGWxlyDfFjflVBAyDngtakn8KFgAIJhsQqi6Oy9/" - }, - "address": "noble1ktz6qdv997gazfa8z88lqvu7nv0ygwfyp2uvu0", - "percent": "0.0%", - "airdrop": 1686.5874367743 - }, - { - "total_amount": 2185620412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjZNkFM9m/C+yOtA53jn1f+1Ihg+2bPNW1ckPWHNU6XY" - }, - "address": "noble1kt280hlelrlctdmdf0pp5jzrj28h8v67zepjfp", - "percent": "0.01%", - "airdrop": 38392.04429096081 - }, - { - "total_amount": 764286329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A066VJt16+zRKCLN3c2bNFEfBj+LZIr0dP8bu7Td8uNp" - }, - "address": "noble1ktwvrny5twderrph4qmpetgeucgduwyny8garh", - "percent": "0.0%", - "airdrop": 13425.256477675983 - }, - { - "total_amount": 132570289024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ali5721IrPCBaDOv3H9brwVDC0Y99tIbVNokA86hVozh" - }, - "address": "noble1ktj544uuwuezuvwe59d50l9tawq27n6rxmnhl9", - "percent": "0.7799999999999999%", - "airdrop": 2328695.4953067503 - }, - { - "total_amount": 1238672971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av1RR+7+fni/phJEblAsmEDLPWHiAhjfLparIFW24j+z" - }, - "address": "noble1ktecz4dr56j9tsfh7nwg8s9suvhfu70qfpkpqd", - "percent": "0.01%", - "airdrop": 21758.209844467732 - }, - { - "total_amount": 118623047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao4E8JBVg1eXBQcYMfj6+mZPFM+oo0KHt3Ox7pbm9aLh" - }, - "address": "noble1kt79mugysw4y36mepdl8f4rt326l2qus9mmh90", - "percent": "0.0%", - "airdrop": 2083.701840149508 - }, - { - "total_amount": 841668253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiGltuLCAYJBXA6yLfXIeDK9lxi1A45kjpIprg1CyV4F" - }, - "address": "noble1ktlcp0hgvvm25lxprsunuxxplyge9nuzrlk9e0", - "percent": "0.0%", - "airdrop": 14784.527390967472 - }, - { - "total_amount": 85591112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azq1+p4DFIKy9W+LucP1Ijd3L2z659tvunoVnuf2N2IE" - }, - "address": "noble1kvx2t9w5f6sj9y9x8zcwv9nv0sec95j79j3ccl", - "percent": "0.0%", - "airdrop": 1503.471391818511 - }, - { - "total_amount": 74322211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgfgcAyFcN0WS32TCTnopgAhgth7GSb9pg4hq513AZ2h" - }, - "address": "noble1kvdwyqw38g5ljdgesh6wauchnlv5s644l6ktnj", - "percent": "0.0%", - "airdrop": 1305.524784106077 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ams+jPvDFPdrZLF+41a+4yaWNpdZEyIXcI1aj+QiMr2P" - }, - "address": "noble1kvd52d0afv5d55sgcvkgn0y9n702mq6kmgaqvc", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 83194891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axe8wtJBHeMhkmhv7VYKTXNBkuqBgfhK9E1bH1zwhrT+" - }, - "address": "noble1kv0frvl226r83v27fskzvw65lyeq2tcqtmhqvh", - "percent": "0.0%", - "airdrop": 1461.3799919313974 - }, - { - "total_amount": 176609841, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0glgr13ui8RCUaOTJrW/hGs8YZDq08FHaQY9m71zO/G" - }, - "address": "noble1kvlncp5luy22k9ql0lh52ryg3zcd3app7kucq4", - "percent": "0.0%", - "airdrop": 3102.2829035930263 - }, - { - "total_amount": 656756416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A093FK20v/IV28KmB7/GrvERMk1XgKNI493ImoHbxGbt" - }, - "address": "noble1kdz5795adnhc8q0zu42flwl7gkuluecz6y29f6", - "percent": "0.0%", - "airdrop": 11536.413767462876 - }, - { - "total_amount": 4015777184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5Wcu4tlbaUKS4yqpT6oUd76V2dy88a5RubKp0EB4qX" - }, - "address": "noble1kdzkhlph4w6t8d9739gfjma60xkfr449ltgj83", - "percent": "0.02%", - "airdrop": 70540.10598742426 - }, - { - "total_amount": 75070073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AunxqUrpsvRmfvnM+uGt0jmX+L41vBYXd4y/S15iTxBV" - }, - "address": "noble1kdgjxwdk4w5pexwhtvek009pnp4qw07fhn03j6", - "percent": "0.0%", - "airdrop": 1318.6615350578368 - }, - { - "total_amount": 65968751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgapngUZBZsj0Pso3+ungyom6A5jetz5YBMiIeVanksf" - }, - "address": "noble1kdvz6yrqk24dps2k4n227ynrdldawtdqxa4k20", - "percent": "0.0%", - "airdrop": 1158.790060847659 - }, - { - "total_amount": 59350203, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmCZCfCVDVOpHya+LwMxcyFuQusxH8lq/rCBCpkhjWwm" - }, - "address": "noble1kds7qe0mtnqwyc4hd5f3waqlxqxk0z87w3ju4r", - "percent": "0.0%", - "airdrop": 1042.530354192865 - }, - { - "total_amount": 100114547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjL3BU+ocvrA3Kjl41+X8XPcnBywNLcJsoPSnXe8wr1w" - }, - "address": "noble1kdkpy8g27f2qe7s8e6mmk6epwyn6zg6w2xh7ku", - "percent": "0.0%", - "airdrop": 1758.586304140665 - }, - { - "total_amount": 57065503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgPv4vGdVh8Ww17TS0691wsZUEwhP8MeyR2gB2x6umNv" - }, - "address": "noble1kdcs54czqk98c0ruzkl3u4z6tlkc4xs45mengy", - "percent": "0.0%", - "airdrop": 1002.3979034205494 - }, - { - "total_amount": 4675443957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3/CH7IO8BxG6F5n0fukXj1X6SJRoDa23VHx7AGASLt9" - }, - "address": "noble1kwcx7s20x64a7kdxy8wc769wml6vxp2rdyh9ty", - "percent": "0.03%", - "airdrop": 82127.64233510877 - }, - { - "total_amount": 2077490251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3KQGk1ElB3wd9dPNL93Z4drXBg9FaDa+DD2zM7MF6ju" - }, - "address": "noble1kwc7gt88207qsma7mvw9p4ammcvvpmulxf3qk2", - "percent": "0.01%", - "airdrop": 36492.657779237146 - }, - { - "total_amount": 54746147, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5nxrYW9gYHIvpKkuknV3XbGMbRn0H06SG5wogJ/AmjN" - }, - "address": "noble1kw6qlnr0m9392tz7tv3ddl0ees0gfxqjhwv5c4", - "percent": "0.0%", - "airdrop": 961.6566942931037 - }, - { - "total_amount": 111000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwoRYnW/VE/X530x122Mf3CVQIctAT/uYc2CsbnBuoTJ" - }, - "address": "noble1kw7y26mrr7u225smeg2xv3f6d4acrpcejar3te", - "percent": "0.0%", - "airdrop": 1949.7973632105015 - }, - { - "total_amount": 1142926799, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak0eVvBGJWbdLXjK5JK8/JzKwgG8esT5vv9FwnDgZ53k" - }, - "address": "noble1kw73wuhpqa3cz3a0w7j66je050wswpf9pnsuss", - "percent": "0.01%", - "airdrop": 20076.357288583953 - }, - { - "total_amount": 54590214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3tMrTxnvcmLJHG7/6tvGZZN2Zh1tnNbjEbKluDMAXP" - }, - "address": "noble1k0qy98kcc5hlfd25mrxqc9cmy248au2kvpwv6s", - "percent": "0.0%", - "airdrop": 958.9176154441171 - }, - { - "total_amount": 349394132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhpqcyUA1ms5mqwn6wqQSv6v1niSFYboF9K4RdUFAQTf" - }, - "address": "noble1k09f3qa5juf0xxfv6vhl982tfue05xvrf9ce64", - "percent": "0.0%", - "airdrop": 6137.367182836234 - }, - { - "total_amount": 343340061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7oYdYW/avwmfSq9HqZB0RJE4aOnLTPdXwc4OZTmKn6S" - }, - "address": "noble1k0dfje5g0ht4aeksc03ruwm9k9huvpthxnw8fk", - "percent": "0.0%", - "airdrop": 6031.022933534529 - }, - { - "total_amount": 88522996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awc3l7ayuOBNc1OQpNHiKQlO+X+YKK2DxCMssFDD7uxf" - }, - "address": "noble1k0s7w0y8t3sws73t7yfufdymlnu70x6r3rljd3", - "percent": "0.0%", - "airdrop": 1554.9721097684123 - }, - { - "total_amount": 476779427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyK1RTFcjGUbUy2YBmLIwoQujlLWEkcFgOVBCwJJ8ohz" - }, - "address": "noble1k0k8taprdzfrel6u9ufeengqtll55za6jnlm0j", - "percent": "0.0%", - "airdrop": 8374.984410789313 - }, - { - "total_amount": 1042974469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvI4MQWn/wzPY5eogJgrh1fl7EQ3w9SI9TnvWpKaMQPa" - }, - "address": "noble1k0ufpkvlpyvu5hupntudkaaqgaaxajkqflv60g", - "percent": "0.01%", - "airdrop": 18320.620446415072 - }, - { - "total_amount": 897502056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQ0F3mLGLowrJxDuYuTMuIPhIazS6360ODgC4pxZQUP" - }, - "address": "noble1k0aq3m7reynyeme3fh4fkx5y04q00h8cu0m95n", - "percent": "0.01%", - "airdrop": 15765.28956995319 - }, - { - "total_amount": 94472578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0f5+38v4JKg3x0VBY9lrcU8B1/KYFM4OgnkjgFrHk8A" - }, - "address": "noble1ksxsztqn0dhcpwk9k2gxcvkq83ldlx8q0dseph", - "percent": "0.0%", - "airdrop": 1659.4809322531391 - }, - { - "total_amount": 184000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNorXzT1HVhKDuLtzoSJHng7uQyKuAeIX7tm5IWsvzU" - }, - "address": "noble1ksw60fz7qq6nh0w424xseazlxt50qrfge0l36q", - "percent": "0.0%", - "airdrop": 3232.0965300065973 - }, - { - "total_amount": 95421109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah5Px5r8Y0iYf96A+Mv9R7NEIQcFFgh6FvUvIF9QsAVM" - }, - "address": "noble1ks0qeq9vyt9l7vgasaajd49ff0k8klur3ev2da", - "percent": "0.0%", - "airdrop": 1676.142583088485 - }, - { - "total_amount": 71933759, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am7lt+AKECl5yCjfqemQPT9fdvvyXIfJ5X0l5HTckXlM" - }, - "address": "noble1ks3lvkv2vkh8drelyhgwu4903z0q6mg8mznd84", - "percent": "0.0%", - "airdrop": 1263.5698524686459 - }, - { - "total_amount": 50157204, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5DZ1UnSt0CiNbgLZi8noxyfmEpNiC4jkX7t3I2iLTJ1" - }, - "address": "noble1ksh7evj5yy4k064rtcf0eem75tezewl4nz6x8f", - "percent": "0.0%", - "airdrop": 881.0485054523533 - }, - { - "total_amount": 2628134132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au6IZzG6laMvRElpnuRDt3dmEsHB5lpbKUF5xM+MP7dL" - }, - "address": "noble1kshlyr257twv93ma4dwr6s636p5e0vxnytp3gq", - "percent": "0.02%", - "airdrop": 46165.12613276685 - }, - { - "total_amount": 300000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwhKtj7LcwMEr4pSgYY/FLTJC4h2s/IeFqPs7olP4/lZ" - }, - "address": "noble1kscv7wsh5qlpaquegmt6c2dt2ake9gxkhj6wan", - "percent": "0.0%", - "airdrop": 5269.722603271625 - }, - { - "total_amount": 347578887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9pflfOsMDxh2X01huGdP7QQLLG65PZ8MBt+0ZO3OL/b" - }, - "address": "noble1ksm9emfgpj97vfkqd5t6rd59l298ycr2tux60m", - "percent": "0.0%", - "airdrop": 6105.481057479648 - }, - { - "total_amount": 1119266922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At6x020kzgafzPCFTeJjZ/LD2c5ilaQzGq5bRxlL9LUu" - }, - "address": "noble1k3qtf8l8zegp5k8f536u8rfqzfgxqtnfgyyh0z", - "percent": "0.01%", - "airdrop": 19660.753993192197 - }, - { - "total_amount": 327254829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AngdO8C3Gc5uB/FhnuqP+U463pNIXz/8bT35di828/ab" - }, - "address": "noble1k3zhx2vn7s24wnf2456frnc7wcrjnw7wtnmz2n", - "percent": "0.0%", - "airdrop": 5748.473898036969 - }, - { - "total_amount": 592296960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7xYA+keEmhECsQ67g0c1++e5K9Luc7baZnSWbSCfOwd" - }, - "address": "noble1k3y0xlrat8pnatp5gp4qwztyu4c3jtremexqsy", - "percent": "0.0%", - "airdrop": 10404.135593203568 - }, - { - "total_amount": 57180770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuJWySlRjMsaQUpb6e4TuJAPTnyIgDsHCxoWuwZWMMYM" - }, - "address": "noble1k389vej3zw55j3kdcnfn8lqqfla4a9pdz6ydx8", - "percent": "0.0%", - "airdrop": 1004.4226538049203 - }, - { - "total_amount": 90515691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhEtzz8kGHZjDROpNYKiGgFIasmDFgEKPPCDO91kY50F" - }, - "address": "noble1k3tepy5k7qndn0y0y4de85k7cx0l5nzrj79hfu", - "percent": "0.0%", - "airdrop": 1589.9752760448337 - }, - { - "total_amount": 498571748, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al0haUQmQEj/LQHtv6KhWPw5K3ThmfOnbHCbvt0ib4ZL" - }, - "address": "noble1k3dauwj4ywul3g4ye2vvkyw5j8jw32j2sedgs2", - "percent": "0.0%", - "airdrop": 8757.78269929415 - }, - { - "total_amount": 201141033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsG/L3VW9KP61MEyouUL7wdDX6Q+uuyX6MD2qUU9YwCT" - }, - "address": "noble1k306aku8mvdtm8vpnnvfsh89envm68tnp5d9zz", - "percent": "0.0%", - "airdrop": 3533.1914934850133 - }, - { - "total_amount": 2317154232, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqAwDJJQgMJedULQKWFL0o3lSsES7vdr73VK1+gvHbiR" - }, - "address": "noble1k3ukgehx4fglhxmkdctuldeuu2s9v4c5hknur0", - "percent": "0.01%", - "airdrop": 40702.53343878969 - }, - { - "total_amount": 71528421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4OxWMs7wjJ89G46/JpqLiQIPdjvevtxzdADafX9WBj" - }, - "address": "noble1k3lkltf766vytwxdxd84xmmtu482yw4lh2cgcd", - "percent": "0.0%", - "airdrop": 1256.4497897334295 - }, - { - "total_amount": 52461504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4X1CqmwFw2KR5RINkdPSyUUXrm56GRI7+gK0gDJfWI4" - }, - "address": "noble1kjqa4ew38sne0a4fqv7hv3ue3rtggdz36v3y7f", - "percent": "0.0%", - "airdrop": 921.5252447680828 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9ggdftECI1+5f2/h0takAp+J4Ry+oY8RqlsVuNC6ig+" - }, - "address": "noble1kjydxwmaazxgpk45jlucavrjlu4t8a2vk0sefk", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 53063434, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+KeFmOpCdaszc4T+5GMkLotfSct5HIxcLPbh+7cvqDU" - }, - "address": "noble1kjxa7524tcjzcmtvld0z8vny53ps084vtnkyum", - "percent": "0.0%", - "airdrop": 932.098591856707 - }, - { - "total_amount": 1793390450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApO3Al6wxW+3SkdEJWHaKIoR+UFCy5TuTQ3FkYjVOY1Z" - }, - "address": "noble1kj8t2thxar0nzauz67gpqnkt2l78dh592wxxlh", - "percent": "0.01%", - "airdrop": 31502.233969521574 - }, - { - "total_amount": 75500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AszvBwFiDaBgXDAG88AVx9qjZxj3jpT0bdl+RRW/RJNx" - }, - "address": "noble1kjg8lkpj95kesh0v64vanlymscrusc56sqqk35", - "percent": "0.0%", - "airdrop": 1326.2135218233593 - }, - { - "total_amount": 57914558, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arjx2B4Qcd6XPl++EdEK8CXK9PIrP6Iad1L4ZecF8kCE" - }, - "address": "noble1kjvrs3x8nv26rxjwv2fzwj4qtlvek3xujdf6m9", - "percent": "0.0%", - "airdrop": 1017.3121845036186 - }, - { - "total_amount": 300073887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlDKb/e6J65CVCAjdpmUpjEk+bk7hZZsJfELyFeCawl4" - }, - "address": "noble1kj574yx94qxpl0tk6xuts333asrdxwvnxkdly5", - "percent": "0.0%", - "airdrop": 5271.020483251586 - }, - { - "total_amount": 228135064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwJSchelI5eHc957EU8azfGOtTTBDZgYNhOrXlxoSGB+" - }, - "address": "noble1kj48tula8efnu2v399trdg97570uaggs7kfcw7", - "percent": "0.0%", - "airdrop": 4007.3616778653964 - }, - { - "total_amount": 1000840583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMoG4fhK/vPqFD6de+Jk0mUr1YR7kZFQsIqOtBNUK1G" - }, - "address": "noble1kjmy7vhzz954rqe293fxgc63ujqyy0nnqxxw53", - "percent": "0.01%", - "airdrop": 17580.507475022172 - }, - { - "total_amount": 130735944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/EFhLvn6d85lYfGtcEIU5716dfwV2bng84jrmvOJBuL" - }, - "address": "noble1kja08f5uhz6njg8jnlkqskqsr2gz59awjtkmqc", - "percent": "0.0%", - "airdrop": 2296.473863856178 - }, - { - "total_amount": 217651992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AldXp146Nli2XLv4V6ztmROTjLtu6mpdJ1i643pDw4qf" - }, - "address": "noble1kj76trzwlmy5pgqajj8fxpvz6kjnhp5arxxsfh", - "percent": "0.0%", - "airdrop": 3823.2187396316504 - }, - { - "total_amount": 2970354033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8OuLxEr8WMRxa0o1ekGzjhsbqqaZSJKtnDxW06mV/ti" - }, - "address": "noble1knfp5qgzgr29k00nhjp2qzxlezrlalhy6wpd77", - "percent": "0.02%", - "airdrop": 52176.47262473044 - }, - { - "total_amount": 143817053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A69asEO2P/z16xD4L/h/+k2TQ50OJBq4WPNnylKaX7+r" - }, - "address": "noble1knfe2whwjw8v4gqx6vwhcu80fx54sjnymlju7t", - "percent": "0.0%", - "airdrop": 2526.253249766711 - }, - { - "total_amount": 214399835, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApfC18HgqM9Y2pvBWyMTgqnQKMlBV94CYuYjeRnpjGvq" - }, - "address": "noble1kns2q4kz54rtwym5h8xs33zj0nhzspr78r4c7y", - "percent": "0.0%", - "airdrop": 3766.09218879069 - }, - { - "total_amount": 530114251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AieLLRy2iw9dXZn/KxJChVGpIOHYQKC9PDt6usBqrIc5" - }, - "address": "noble1knu6lphkagd0f3092tzq4gr5407g3qj3f6xert", - "percent": "0.0%", - "airdrop": 9311.85016937036 - }, - { - "total_amount": 504961779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As9ZEhark8jryS/K9hP8W3xSRYYOSF3mAPYt4p/lznzh" - }, - "address": "noble1knumhy4er4ttpkgx9a3k8n5weezyust4sedm7z", - "percent": "0.0%", - "airdrop": 8870.028335281839 - }, - { - "total_amount": 4446901608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AheW1oGbDT/n4tKin7DTrNvUw4vvX2EBYRSRYkmo61lE" - }, - "address": "noble1knl607trt2pv7kwaearkaella4zwypx07xuvve", - "percent": "0.03%", - "airdrop": 78113.12639400846 - }, - { - "total_amount": 18909993516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7z7hIcHb7yBzD+QNIDBFjLp/oY9dTnq2FtjLbwPLmL/" - }, - "address": "noble1k5ffemvn4w7sugzw84gqy0nplh3dj809tk9l7p", - "percent": "0.11%", - "airdrop": 332168.0675299503 - }, - { - "total_amount": 9080739487, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoNYDc9KIhndLIAqBEXpORauZDZXU/UPXrTRuILc1jyX" - }, - "address": "noble1k5f3ay8yw66vlr32xwv63090hg363y4th0havf", - "percent": "0.05%", - "airdrop": 159509.92709688362 - }, - { - "total_amount": 57097228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0a+rjtx9knXSSj+pi6p4ExYXZBSTKEbyUiFbd1DvSoj" - }, - "address": "noble1k5290s09r2qr9nc2u064u7hmw869yfpuf3904c", - "percent": "0.0%", - "airdrop": 1002.9551765858453 - }, - { - "total_amount": 195194692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak2+6HvCSR9v2F6oWBMX5+qb5Mlh3gBGOXEHbkl56xC0" - }, - "address": "noble1k52tmzc6tkk7rgj7k6r7x7sm76fgj36am26qyr", - "percent": "0.0%", - "airdrop": 3428.739601570144 - }, - { - "total_amount": 406537879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9/6ONBkmmHqeqlh4fQXLlx3yzbjgSf7FjlPHbY6J9mA" - }, - "address": "noble1k5sv8fypeetuu35g4lv9gmx08t8vk0r3crarw2", - "percent": "0.0%", - "airdrop": 7141.139500174684 - }, - { - "total_amount": 148739143, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiKN0kKDNl7VsDpwpWYpJ2RERKKdj6M2S5oR+icbGyAx" - }, - "address": "noble1k5e25qmzcv5kn652wwfn7hcen5dzja7hg2eucz", - "percent": "0.0%", - "airdrop": 2612.7134128611688 - }, - { - "total_amount": 200183851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayumrl7QLEHsHbGO+NEBOany91+DklDlAKRw3d8OhgdH" - }, - "address": "noble1k4pyklttngnnl5952mps5hx9jz0yqdnm645m05", - "percent": "0.0%", - "airdrop": 3516.3778814155307 - }, - { - "total_amount": 2618949330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asm/obFudfiOi3z4esSdcQaTlUkbASqYWjJ7ImYAdpem" - }, - "address": "noble1k4rzmsnme9qv5zguc5wxqmmjrr3cwe9pgfchch", - "percent": "0.02%", - "airdrop": 46003.7882704136 - }, - { - "total_amount": 1155175431, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+vAyhw/tPprc8M/HJIkDY+snHnEQnDjc8q2M/AqY0MH" - }, - "address": "noble1k49luuv6a09542hxyz7e964zz46ka5jt09dlrk", - "percent": "0.01%", - "airdrop": 20291.513598282476 - }, - { - "total_amount": 6654761210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsK76LoqoD00yChIBALOO2qR9YYxec+Q/fDg/iyVbt3H" - }, - "address": "noble1k4twvnq2szkgxa8ax994resn7y5wc04vnt5avp", - "percent": "0.04%", - "airdrop": 116895.81855904078 - }, - { - "total_amount": 580000721, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ARdAY2zulVhZEYjKHO0d7XVtgEu4rwVZab2QnvvUcM" - }, - "address": "noble1k40gyx8a9686s00lz532u40htnm282fmp40yqn", - "percent": "0.0%", - "airdrop": 10188.143031225132 - }, - { - "total_amount": 2771858608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AymaGTsFr/CyZ2N9hUvwatsBhkBFvSApc901/C62Q1/X" - }, - "address": "noble1k4568pg35wdx7wnk4nrtk24c8ct74tahzxr9l4", - "percent": "0.02%", - "airdrop": 48689.75319883542 - }, - { - "total_amount": 18938544433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ave93GebsaHb3SIUC828RVaPRv0gWIAn2P5i1NBseqVo" - }, - "address": "noble1k4c3qc59h9tk03w67u7s5jqdk0u3hr8uvnem3v", - "percent": "0.11%", - "airdrop": 332669.58557214704 - }, - { - "total_amount": 659480482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj6lOXJ7LY+43m01+aXFNuTnc4+y+p28mhtq17Ww5+DW" - }, - "address": "noble1k4mcagh9pw332je76qpnj58slzkx267f7888aq", - "percent": "0.0%", - "airdrop": 11584.264008039554 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Q+Q96j5URewxOSKMjeuKfj1XoZY9KiHB9GFlOF5/m2" - }, - "address": "noble1kkpl4ksu6y5mruv9ucg2kcu39xarldwv6edw8y", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 1305631294, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuONppHfE1mLwnkx8GmEm9Ka0ix5rmgHMcue3ah1N3/j" - }, - "address": "noble1kk2mefk0z005e6d5re2danmrufgzn6uudu9kys", - "percent": "0.01%", - "airdrop": 22934.382471768608 - }, - { - "total_amount": 3474433788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A67i5tUZ64uHR0CSFKNXkq2hVf0Od/EsUdl8WRB4Rc3d" - }, - "address": "noble1kkv9dfa5fksn57l4h4jhlarde5eqzl2dwskq23", - "percent": "0.02%", - "airdrop": 61031.00755398086 - }, - { - "total_amount": 5051511462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1zkvek61x3e3fncatxI2bKJWEj3AE42fuK4AUmQYA+1" - }, - "address": "noble1kkn4cnql8sy4caklspm0vxjfnmw58sjkql0qmn", - "percent": "0.03%", - "airdrop": 88733.54710662366 - }, - { - "total_amount": 528039230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApdjtELDcaaagMJ59E/WQEByumAvXNN+++kcyrIhg7Mu" - }, - "address": "noble1kkhfx4mftjgsn8w7wf3k6pk4lwl8vzxrtjpps3", - "percent": "0.0%", - "airdrop": 9275.40088581715 - }, - { - "total_amount": 94766588, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6EJ1o5iZoL7NlG2ux8SylbbFLA9k8mKf+vHC6E7e3ik" - }, - "address": "noble1kkeyxpjqkc2a7jku3h08s9xxtdhrnm427vksd7", - "percent": "0.0%", - "airdrop": 1664.6454360617654 - }, - { - "total_amount": 278116667, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amh3fWfcGXwhkEtmr5ar5WL9fRyYiug20IHWgnupv3vT" - }, - "address": "noble1kkec74l54erhd7csfpj3jehg3ajpntvujgxu9r", - "percent": "0.0%", - "airdrop": 4885.325621454894 - }, - { - "total_amount": 59543702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajd2ju9GMTu3QIZ9q7Mz6Y5AZFl6rzVMUQVyOxp3o0TT" - }, - "address": "noble1khq7neq8ct3sd3qa0xjs08zqlhrzrj8rvltnr5", - "percent": "0.0%", - "airdrop": 1045.929307706233 - }, - { - "total_amount": 331744052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxJFZBduXegx3C21zL0/vaFSUlY+a7nM3/BeqH4ihSCG" - }, - "address": "noble1khxz9rl6m4ac96eyua77mzmjvqd30kfc7wlqj9", - "percent": "0.0%", - "airdrop": 5827.330431084391 - }, - { - "total_amount": 82938481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asjf038JAInDx9tmpRrVIewL93hcTR1EZEnqJMhhEhMc" - }, - "address": "noble1khx4ym9aye23wlkwm3jtss36vlz6fqlccc4jzf", - "percent": "0.0%", - "airdrop": 1456.875960022381 - }, - { - "total_amount": 762906845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1YJ+eYAaI6Elcnwca85MfcQAFQeha8E6fEAe6Gx+gdc" - }, - "address": "noble1kh2pa8fu2frnnzttzqrmr7vqunv457y27uwspq", - "percent": "0.0%", - "airdrop": 13401.02481762381 - }, - { - "total_amount": 378494462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AniCd8z58e+hAOl7lvJWmT2312Uu5e9Rh1oVgrCnpLbz" - }, - "address": "noble1khv4apnzlc4ahx88ymnn0zgx00zw4hp67hx2zp", - "percent": "0.0%", - "airdrop": 6648.536072048445 - }, - { - "total_amount": 70777033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At0WclCgS4kJyrmUYUXXUAMLN9Y9t/M9yXTsPNeYPzoL" - }, - "address": "noble1kcj78hhd9qq9dcgh5wydv4ksdudpdmc9m39sla", - "percent": "0.0%", - "airdrop": 1243.2511019753392 - }, - { - "total_amount": 68925280, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Pd2FCeql6UYvLWUGpl8cjNBtW/UBNlAR44g4xxIyx9" - }, - "address": "noble1kc4dmcvvzq9e86rvfp07vug9vh885n2vyf4gwz", - "percent": "0.0%", - "airdrop": 1210.7236865094192 - }, - { - "total_amount": 388951325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AirZwuGzH9YRryv1cjA7/8O54Fzu2KAcbbkcswH8aNCH" - }, - "address": "noble1kck4ru2xagff367hsgcrft6vkfjjw2lp4tacct", - "percent": "0.0%", - "airdrop": 6832.218629749828 - }, - { - "total_amount": 868802230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahy3escLL+9UPcGdGd1y7vYtqCopTG4Ep+QqoFTVl8mX" - }, - "address": "noble1kcmjcr00qzw7l44ysarm4k457x597yej8dmtzz", - "percent": "0.01%", - "airdrop": 15261.155830679312 - }, - { - "total_amount": 149862546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ati/jwNvkQWzerrNcxiuTgvYBM1UxSFLtfxMdLG2gQzy" - }, - "address": "noble1kcuymt8mar8f4k88saa45nrgdplmr87e66suh6", - "percent": "0.0%", - "airdrop": 2632.446820133446 - }, - { - "total_amount": 217265249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax+jSPWHs+zujN1z92qCxa5By5ySrfGjK1LtmQx2UxMp" - }, - "address": "noble1kclx9trszya0224thxhepyclmczjzvf962gw7x", - "percent": "0.0%", - "airdrop": 3816.4253118691267 - }, - { - "total_amount": 61492318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0V2MVQftrpX6NIx7ujPh9LVUqc1FE4UM9fVljmHmDTx" - }, - "address": "noble1keqhrkaywu8sl0zw0x42tkd5r5h5fnhsjrekws", - "percent": "0.0%", - "airdrop": 1080.1581936405555 - }, - { - "total_amount": 58755530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGkwKYfj3E8yETOiaYpoddzMliwqbErx+vs2BMZ7SEP" - }, - "address": "noble1keyf5w20uwzua3f44ekues05ru2zpjj2gx3ejc", - "percent": "0.0%", - "airdrop": 1032.0844816940137 - }, - { - "total_amount": 65509149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzFyOmCqN+GnGmgL0746fAqKtj30AHGh8PDwO6hJnsyL" - }, - "address": "noble1ketsg4s40yypyhem06uhqv62q9rsg4p9u2an2c", - "percent": "0.0%", - "airdrop": 1150.7168106879626 - }, - { - "total_amount": 80409857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqzOVaB8v4q5CzDQPau+XoS0akLBtyd34fiSI+AERnWT" - }, - "address": "noble1keh2pws2sz7uuwu4j8m06nu7paqadc6tttvfvq", - "percent": "0.0%", - "airdrop": 1412.4588031957971 - }, - { - "total_amount": 329775328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnSn9IzwhJMfTFEkbWcJZMmYNgngQbEzbpazHQnCg6iy" - }, - "address": "noble1kemwrcw2ad26gn3s3qkasrmttxtdk96ax6eddw", - "percent": "0.0%", - "airdrop": 5792.7483332097145 - }, - { - "total_amount": 1582093705, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/FFzGVbJHqegxulnh1N3qk12jq70vinIk0rFm6tybbh" - }, - "address": "noble1kemuvg7h9lxpglv4ejk3q6rtg54spz9kvvrdnc", - "percent": "0.01%", - "airdrop": 27790.649859107507 - }, - { - "total_amount": 75180429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4gUBaVILcJ7aCeSAiHrUCzU52oSRqQVZa4Hk5XbkJnB" - }, - "address": "noble1k69nerm64znzlet3qjq2x9926xma2dr7pfejap", - "percent": "0.0%", - "airdrop": 1320.600020083192 - }, - { - "total_amount": 3154471291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj4bU79jW47H5G66k4gDAoQHOHSyQGfJ0urv6oBRNrRy" - }, - "address": "noble1k69nasc9kcmf6xepygay9r6lwylyjfpuht487c", - "percent": "0.02%", - "airdrop": 55410.62887851376 - }, - { - "total_amount": 17117932284, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnR8JgDxHXgQN8TaE1K4ft/TV4iuesSbevOu5ZkL9LUp" - }, - "address": "noble1k60x3yea35u9qgsj6fr0e59hfuc937etyncwgh", - "percent": "0.1%", - "airdrop": 300689.182260893 - }, - { - "total_amount": 249738934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar80OdqwU0pbZ7bLaW8R3sGTmSctfWB+9yxdndvLPciD" - }, - "address": "noble1k6na2j8pcrep2r5l4m243j884afagvva8wg2nf", - "percent": "0.0%", - "airdrop": 4386.849684722536 - }, - { - "total_amount": 65475566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxDWyLZpYXHRsUS4NKuAf1fBbaDmYCS/NU4BEL0Z5poj" - }, - "address": "noble1k658y2ajn6333s2ytx7rlvjy3t5596xh7xlps8", - "percent": "0.0%", - "airdrop": 1150.1269003740106 - }, - { - "total_amount": 80513510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHUVGSX0jqMDEDmFfnoC8fNyimqS2XnWEr/hvJF2F4J" - }, - "address": "noble1k64q72yr5qv2wwsv6src5za5md9ygq8hghzd45", - "percent": "0.0%", - "airdrop": 1414.2795450524536 - }, - { - "total_amount": 59718278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvCKZQjhFoX7tQkJ5G1Bw09IUky0+Zl78dSfjB1TP1I1" - }, - "address": "noble1k6ct28sgdr5sznw70zen7fx8gz2pwscmh7pfy3", - "percent": "0.0%", - "airdrop": 1048.995864683529 - }, - { - "total_amount": 788702881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxE8ODBH8obWLTwfX53jhc7z8vImHb/NI3CnmFpk7CPv" - }, - "address": "noble1k6er0ssepn6xl3fsvt8v55z63quumwa894ff5n", - "percent": "0.0%", - "airdrop": 13854.151330903838 - }, - { - "total_amount": 66743977, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqyfBTy6UF6kMiGoui1udhiGMwiHxDaCU888GrK5ypls" - }, - "address": "noble1k663pnhr9n6rkmgv7ws07r32axs4akrapce7q0", - "percent": "0.0%", - "airdrop": 1172.407480763805 - }, - { - "total_amount": 141727949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmdsMn/Awxfs2OghDsXwePX4NIUuB42ELmD5iUKwkYyW" - }, - "address": "noble1k6mcyej5ndlv48her7ut3k8nlj8dzmflwt6844", - "percent": "0.0%", - "airdrop": 2489.5565878687607 - }, - { - "total_amount": 4455118070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1MHpnhKSoGWG4ZdHdTrEGVxqoCySQI7tsVbrNOgz2U3" - }, - "address": "noble1k6al4p7vky47998nefgfh6q4wg2cycxxfxgneq", - "percent": "0.03%", - "airdrop": 78257.45464574288 - }, - { - "total_amount": 3363499643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsRcLpRNNjmNuTigOBmOekWtKcgL9nBTHEUoa21bOgC+" - }, - "address": "noble1k6l9g3ajsgy57upsvuwpwmezs6x7saqsrk6gx3", - "percent": "0.02%", - "airdrop": 59082.366982710475 - }, - { - "total_amount": 113260362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/bjMjeKjM7MpZbLs+QFVjZpWPKrxoT0cQDoync30K3" - }, - "address": "noble1kmq4khd2yzmdzu326cuufhssvh87dpfxty0253", - "percent": "0.0%", - "airdrop": 1989.5022989537558 - }, - { - "total_amount": 181505814, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhQNZ/4YNSIgsyFxTQcqMLQ8S48BApM8eIYmhTz8R/VI" - }, - "address": "noble1kmr5kefze6x32cjf3hmrp3ulxvd5efmx3yknyy", - "percent": "0.0%", - "airdrop": 3188.2843022033853 - }, - { - "total_amount": 492685914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2IH4GancXUF+uW29MJo1ismHZMx96lTUs48JDjF3hjZ" - }, - "address": "noble1km43d8sjnfr7xm9pwmyjq6e5xr9safdw4n47q0", - "percent": "0.0%", - "airdrop": 8654.393657731134 - }, - { - "total_amount": 54275837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6XPEM5McV2F07jJ04FJhk/qhTL5IiDuDgQogzueeIXH" - }, - "address": "noble1km4ce0jeu6xqe0qd0pj22q9k3dzav7njvzaxzn", - "percent": "0.0%", - "airdrop": 953.3953501679548 - }, - { - "total_amount": 303037214, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0adPyAUJESrpGrhcFSxFwEcjvlG9vIQDzZrnsrZ4gwr" - }, - "address": "noble1kuze2re6t38cmr25fplee9734a6svlze3lw3xm", - "percent": "0.0%", - "airdrop": 5323.073520827536 - }, - { - "total_amount": 902434872, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay8TobMJ01wXIUdPJ0ORVB4osry+oIf6fBJ2y8o0zN7N" - }, - "address": "noble1ku96qkjw4wyc578lnftvljf7qsm6haxljh8h3x", - "percent": "0.01%", - "airdrop": 15851.938143196456 - }, - { - "total_amount": 225446863, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak3VMM9KCd/CipjyroW3oKiiFPkA2wYOH1vRtdBJd0+j" - }, - "address": "noble1kugh95ldtz4q2mdrpq3xadma6dgkr8weypneep", - "percent": "0.0%", - "airdrop": 3960.1414326259387 - }, - { - "total_amount": 813262674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avd97IM/G3u9g89TV2rgh5O4f2ywD21VkSbHbX1N8KBm" - }, - "address": "noble1kut09t4khva6ldvjjxslxndqsyf694mvtx9lfn", - "percent": "0.0%", - "airdrop": 14285.56231858308 - }, - { - "total_amount": 194043843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apgk2SefNonkHnx2/oeit4zGhFR3ll1gyj+Izox0tSL7" - }, - "address": "noble1ku03asknjnx7dse9jgujc529vwscp6n506jkhh", - "percent": "0.0%", - "airdrop": 3408.5240849426355 - }, - { - "total_amount": 145690601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiwKcsBfait6bvf25qD2XienEW6/ghU4ANa7tEyyCMw6" - }, - "address": "noble1ku32zqkklx3ph0324sttmlqwxr2eg5eqsun5fl", - "percent": "0.0%", - "airdrop": 2559.163510579759 - }, - { - "total_amount": 106577602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4PoYkBxgknX7W2p+G2yOHWV0wRUMFxUTN8xlw39sxIh" - }, - "address": "noble1kuawvs5sr3nr0rvudpv0puh755j38v4nvcpgym", - "percent": "0.0%", - "airdrop": 1872.1146608729575 - }, - { - "total_amount": 2275417713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwQeaLI62IfGvxMQcBUy3xwLxLDdNWi1EQc7LCTV8+HB" - }, - "address": "noble1ku76sd2430mpmeythqet03ywv7lc5dgjlclf7f", - "percent": "0.01%", - "airdrop": 39969.400513602435 - }, - { - "total_amount": 80248714, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnWHUTgfJsr8d2uco/JD27Knpnl5H3KLKex+qEcAHkPz" - }, - "address": "noble1ka8ntl99xlsc32x9qwuadfshpf0fs49t7rucw2", - "percent": "0.0%", - "airdrop": 1409.6282068309338 - }, - { - "total_amount": 83764691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArAY9qGs2f0+a0NQvwsFL0lAYpH67w6+O6AJ6Zz7ZMtD" - }, - "address": "noble1kaf803pkrvvpdq3d03neje5383237dtfeprk6e", - "percent": "0.0%", - "airdrop": 1471.3889517292112 - }, - { - "total_amount": 91142525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqM9e/oBtJiooUkbfhoG2O/wV8jMqJ/n8bh2RaQFs7xJ" - }, - "address": "noble1kadqxcyt4nnxpxgdtafd3ckg60m8r79pctzlh5", - "percent": "0.0%", - "airdrop": 1600.9860803724976 - }, - { - "total_amount": 74812019, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtCo21aLY7UPtvtfKa8yta5CHcS8k5OJ4HPBLkJO8DHa" - }, - "address": "noble1ka0yduzwes79hn8hctpw7tw8hqkz6pwzzm552z", - "percent": "0.0%", - "airdrop": 1314.1286250689545 - }, - { - "total_amount": 58498398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiGkMNsGM9/W2X3YYg2/Zoy1scqYvJolUtKryiuHBlmA" - }, - "address": "noble1k7rt3k7ndcw8djsj02av88az3watky4sdg9k6y", - "percent": "0.0%", - "airdrop": 1027.5677673192656 - }, - { - "total_amount": 50280576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Ruel2QHxNC/TWhlDRAoy4iPGMq6G5mXCs8/6w3YTTL" - }, - "address": "noble1k798jk5lqfkqdkkesjj9pzm9e2rnaw3ykm9yn6", - "percent": "0.0%", - "airdrop": 883.2156261757228 - }, - { - "total_amount": 463281171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApS5NQqqg+rUY7SH8sy+BaVpurD8vuMvXQ644XHImw3I" - }, - "address": "noble1k7j6gm5cvdaz4lp67ge8fkclgewd36cz4ks3kd", - "percent": "0.0%", - "airdrop": 8137.877528296158 - }, - { - "total_amount": 58007233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au4UeP3ckHlf+hybbwV3gyv5ZWsrxgZKHCTx7WnOTFNF" - }, - "address": "noble1k75dhg9hlps6zq85sdh2lz480xc34ecpdrhjk0", - "percent": "0.0%", - "airdrop": 1018.9400896444793 - }, - { - "total_amount": 238740780, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9sqzg1wukhojwCAF1aF5kMB+HNb9nJV82yuEYc9PgWW" - }, - "address": "noble1k7403aj0ccp225pmqj3rlva436hrw5h7gn6vj9", - "percent": "0.0%", - "airdrop": 4193.658948962328 - }, - { - "total_amount": 417282870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avo8DY5s+RHrcbfVzsabjXFD4YX+PtRiDDYuKwP3GJlx" - }, - "address": "noble1k7eh9ngcmwz5rq9cz0c9nwwwaagpfzfmvmcezz", - "percent": "0.0%", - "airdrop": 7329.883239990185 - }, - { - "total_amount": 64237172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap1y1FydsS7V5fKpzJJLUU0fEqEi4a54ihubGGP9N4CZ" - }, - "address": "noble1klysctqe0wrq0cvaztyxdc7e337wr3uskg3q5n", - "percent": "0.0%", - "airdrop": 1128.3735908621575 - }, - { - "total_amount": 9980100000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah6MN+DYHiqI28uG+IK5nc3sZAryNfWzsGm1ewg/3j9E" - }, - "address": "noble1klya4zmkzzkcdvfg23r8323dz4zc7keg9ls69t", - "percent": "0.06%", - "airdrop": 175307.8618430372 - }, - { - "total_amount": 187777447, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6WogSWw8b5wOZM9Ej314OR0ZndMsIfoh74gP5Z/Tubd" - }, - "address": "noble1kl8gxthgqxacgmzqd8dtunfdpm72hznqq29zr6", - "percent": "0.0%", - "airdrop": 3298.4501894684663 - }, - { - "total_amount": 129254121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay2cRziMTMLn2tr+oxQ5e5UILzrbt8tdnf1cZ4kitIBM" - }, - "address": "noble1klgn8xlnfavd2sgfnxrmv2eqg4e7az8g3w6dmv", - "percent": "0.0%", - "airdrop": 2270.4445433323526 - }, - { - "total_amount": 93034830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApuQWcowgieVu+/ouuaBPnNpxgqKeNUMktzafA22Ix/R" - }, - "address": "noble1klt8x0fagmnthre9d4d3jsyedd56th3hhrz0kq", - "percent": "0.0%", - "airdrop": 1634.225821808444 - }, - { - "total_amount": 118907532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6rjoHyoZ8VK/oW6F0CYaxgZZKd1U8QJXUlg+WZMzVOo" - }, - "address": "noble1klntg9vre0ddaay6qxr4849h4cg8hgspc7780e", - "percent": "0.0%", - "airdrop": 2088.6990302654804 - }, - { - "total_amount": 3489732123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3iyc/9CkAB/SaJKHj4aA31/589ofS0b6liWQkwd6Skh" - }, - "address": "noble1klk3ycsazcq46g4l232k07g6lq8pulc8dq5tl8", - "percent": "0.02%", - "airdrop": 61299.73415978726 - }, - { - "total_amount": 209299637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnAk/Vt14AzNRunObfFg/mZ9fwlJJhNuHSyzxD629S03" - }, - "address": "noble1klhrwjc7hv0xzdmuz46kyzwtq4jldxvfquh5uv", - "percent": "0.0%", - "airdrop": 3676.5034265181544 - }, - { - "total_amount": 664578243, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6mvTrihteiUYbkmOYwES5k8uuYS+p9lVGcRhfRNRZI" - }, - "address": "noble1klacyps23d0az4kf94674tpcwqammsu8tdnhct", - "percent": "0.0%", - "airdrop": 11673.809962598812 - }, - { - "total_amount": 973937838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxhLipig8L8JM0L7Nr04vEELa8XXgcQh6RI8i+/6p7DH" - }, - "address": "noble1hqp3ympp8qcx0jkfls5fp4r6359w5h2g8626lz", - "percent": "0.01%", - "airdrop": 17107.940796966996 - }, - { - "total_amount": 74222343, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4J9VIw43W63Z/W3f7myCXEgBnjcQzY7yWTW+kBQirUx" - }, - "address": "noble1hqzywnm9jp3alg3ukant09gks0a6esydg8ntl3", - "percent": "0.0%", - "airdrop": 1303.7705285829318 - }, - { - "total_amount": 51127213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsuQ6MP6dMKNVcrlE7WYtAXpbooakJFpXNuJHg9Bqzj2" - }, - "address": "noble1hqrzvzdwtjl078uv0pqry0uhylajvverjypz20", - "percent": "0.0%", - "airdrop": 898.0874332946097 - }, - { - "total_amount": 50096164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjwdrhPhjrSP8sD87EKt9Zxy/IrIH92k7SR0IUdXwmv4" - }, - "address": "noble1hqd75s9jnt0a6f2vkx2uwntzg9dlzu5ykrus9a", - "percent": "0.0%", - "airdrop": 879.9762925600077 - }, - { - "total_amount": 60267032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AixiOQr6IOsXFeGi7U4j0dWEYILQ73Js2XHyvTVzWLAp" - }, - "address": "noble1hq5yy0s3wl05wr9yww8zlsruqpappd27lxj2wj", - "percent": "0.0%", - "airdrop": 1058.6351358749812 - }, - { - "total_amount": 612775076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agkko3XesmG9MYRo6b1y3B8cIuq27fBx+mPw6CfOhnbx" - }, - "address": "noble1hq4twwyc9emen9087drat4x7csejf9vmdwrfhd", - "percent": "0.0%", - "airdrop": 10763.848895728961 - }, - { - "total_amount": 866608801, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2i6UvIXv4FoqXghY3AXstUoy3Dko44of+MRsxb2A9ZF" - }, - "address": "noble1hqaanlhydmwg3n548eu2gusqrtsgaq9ghzdlav", - "percent": "0.01%", - "airdrop": 15222.626622746075 - }, - { - "total_amount": 52510078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJ3nGF/z2r6PfziSgYtgvOQXUFKt7VMHdeferj4dChm" - }, - "address": "noble1hq7pxpplhqsch2qsd5fz2wfgydcljtsa44ju07", - "percent": "0.0%", - "airdrop": 922.3784831205204 - }, - { - "total_amount": 174385881, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuFB7sebLUHX0lqVrI75vTQQLm/Hiyz/Bam4HQ2NUfiY" - }, - "address": "noble1hppa2ctcsz25hphr3evvh6h8wuv8d7e93wcm7m", - "percent": "0.0%", - "airdrop": 3063.217395990453 - }, - { - "total_amount": 189373194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkLL6ilI9DB1m+HLL8AmT+29bs/1LLGqE7LgqrvoP/0D" - }, - "address": "noble1hpwwf4k00whj0e4yfkz60tmuyu38lvdjftrr3x", - "percent": "0.0%", - "airdrop": 3326.4806695851426 - }, - { - "total_amount": 54998816, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5L+1IWZFLuVC2o7PqbH14EfOF0kASJS/bCqouDBp5pc" - }, - "address": "noble1hp0axyrhs36l8fpsds9dan3fd3duf20x8r6298", - "percent": "0.0%", - "airdrop": 966.0950127612572 - }, - { - "total_amount": 5839793690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qdpMWHI3jKm9W9ZPyo0WpXOn28CzCXoFQMdN9ksHlU" - }, - "address": "noble1hpjajdvsz5gpnxp69xxwymylxey9fgx4fxzuya", - "percent": "0.03%", - "airdrop": 102580.30935545337 - }, - { - "total_amount": 128635646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/eLjgRCm2AttNga04Yi4yPQEf1WCtZdefwITmkSezwq" - }, - "address": "noble1hpkv7fg85wetkk7ca20vz02zawk9kwztlvq4pa", - "percent": "0.0%", - "airdrop": 2259.5805710421578 - }, - { - "total_amount": 3801916525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3tgtcNvXZKZ1ytZMW5dZ3dCMVVjtEYzICshbit6DhmR" - }, - "address": "noble1hpczme392q9mc98r6vklyeeea3p0tf39p000am", - "percent": "0.02%", - "airdrop": 66783.48482514804 - }, - { - "total_amount": 596060085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgNc2QX/3l7fa3w6UkERzLv7xF9zYo4u5ra7eBjR1C8G" - }, - "address": "noble1hp6ryazhv9nukl3w7rhfl5ekw5pznugsep35wv", - "percent": "0.0%", - "airdrop": 10470.237676108356 - }, - { - "total_amount": 56006941, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3cxU4hzX4WROsEQ9CWM1sKajo4Ja+TwjSvAdUY02+yL" - }, - "address": "noble1hpa3cxxds3sfdrffmdnpf2smtq06me0kux805l", - "percent": "0.0%", - "airdrop": 983.8034764260012 - }, - { - "total_amount": 717729944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ERmywbHnkJyB2fUBzZ9obdXJD/MZryEv8M/xU2adNd" - }, - "address": "noble1hp7ym7f9px9j6zlne532d3dsu08sphy7e5the4", - "percent": "0.0%", - "airdrop": 12607.459029805595 - }, - { - "total_amount": 4038538713, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNDpgfljn/Ia+7DdfPmIi/yWZwww4riotFNB781vA1d" - }, - "address": "noble1hp7k378djny7qzwehxflx9tlpva7j9xuktpw2x", - "percent": "0.02%", - "airdrop": 70939.92913361201 - }, - { - "total_amount": 50015312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anek+IXZIQ6HR2V9He7rZXhI4id5SsVXxdjYTq6jcS0/" - }, - "address": "noble1hz9r5yydp0qht404mhsn8xy39ggglnt8px89ue", - "percent": "0.0%", - "airdrop": 878.556067186942 - }, - { - "total_amount": 758520008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1TQcqj0zSn4FW3k40E7ME/qShgU6mwk6L7PqAxsUqWT" - }, - "address": "noble1hzgupqnj2w0333rpr2wv3fhn4jstv8nwj98gew", - "percent": "0.0%", - "airdrop": 13323.966770637915 - }, - { - "total_amount": 83389217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2yjzoaOpC9M4AHMQH56HVkWebBHMU50fOj3yjH2tWQJ" - }, - "address": "noble1hzvxyyz3c5cqkly8k3eruxzt2hu6fa9kj5hk63", - "percent": "0.0%", - "airdrop": 1464.7934723134083 - }, - { - "total_amount": 132152462, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Zp07QQ9xlY5JNgMoIm/0Obh0SOaXh7SokgWB7EJBx5" - }, - "address": "noble1hz3d57zjay0etgzlgjgyp7tq5he5tluru77un5", - "percent": "0.0%", - "airdrop": 2321.3560535979823 - }, - { - "total_amount": 508976461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmuRWTSLq5+HXDygpZcxpx24hmp/yetJ+GPqDwEm7zuv" - }, - "address": "noble1hz5htdpw4t6kkclqvm0ey0dqzc6p7v4k3lrfrw", - "percent": "0.0%", - "airdrop": 8940.549203549663 - }, - { - "total_amount": 195387682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlwEZ8ra4TqKva+FOGIU3pwdvKVAfpBTAXbLtRe+vHPO" - }, - "address": "noble1hz79zujrwsv564htxhtr2amgwnw8cm5heqdx29", - "percent": "0.0%", - "airdrop": 3432.1296141208286 - }, - { - "total_amount": 140990021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7nIjlQurKrj5DnrdSHwurx/+mh7bqyl2SBL9p/VVH9C" - }, - "address": "noble1hrfxk25qfuq6a8e9h3hs07m7g2zjhsf3v3hffz", - "percent": "0.0%", - "airdrop": 2476.594334998137 - }, - { - "total_amount": 241984725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq1tJkLQKsHoHKF73qAW5wsSWd82pTpwydbYIS6Bib/0" - }, - "address": "noble1hr25gwzny0xwhguphw34twgs420s5us32asdxm", - "percent": "0.0%", - "airdrop": 4250.641249929895 - }, - { - "total_amount": 331996969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8TigcXOgQ4wEbXgTfkizwb2EZ+lOhy74RvgrM/7ykHb" - }, - "address": "noble1hrhaepalf2pktwy4havp3duagxz6fpefcnqhn9", - "percent": "0.0%", - "airdrop": 5831.773105856565 - }, - { - "total_amount": 5434412864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai1QxlGl4DVHCfj1KQBFYCgJ76cRvhIX+RVNXUxmJftD" - }, - "address": "noble1hy9cgqnnssgq060hzl8zd7v8wavhx3hajhdtax", - "percent": "0.03%", - "airdrop": 95459.49434976965 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3eBhpIaAkqAGWyi66Voa1+xdwAfYAndKDFmlpsep0+Z" - }, - "address": "noble1hyfcz8hy4zrclsgwfshcht4fmsa6j8ra9kckh9", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 86854545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq9LJ62boJpJaXPD4YxLXQ+Zaw6If/I10SZ4EE5w3qSo" - }, - "address": "noble1hy07rjhe0n8m5dz5mep9jrhk2xt2vk9aju34pw", - "percent": "0.0%", - "airdrop": 1525.6645299445754 - }, - { - "total_amount": 135459860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuMlaQ67Hfh6ZwYU1DbDi8dQAsbqAUp0ye86ykpQ5sUo" - }, - "address": "noble1hys43qstpwxt802n79rp8lq83xrhhgpatszazu", - "percent": "0.0%", - "airdrop": 2379.4529535933666 - }, - { - "total_amount": 123049081, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6XfAch3rqHoAB9zetnFoymgPccARMuDA/DCnumVYX1Y" - }, - "address": "noble1hycqp0g7ym7rqyphec9j26amxexl7hngtm84uy", - "percent": "0.0%", - "airdrop": 2161.448411525004 - }, - { - "total_amount": 59520448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhKKJjN+fAvh6wwEehvjw/26aOw3naq3Ry8LG4jtPxvn" - }, - "address": "noble1hy69f293dzahwwvnywylfded5f68hhgz82wsw9", - "percent": "0.0%", - "airdrop": 1045.5208339415115 - }, - { - "total_amount": 171709995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyI1PZMLcFiPEUWK32H4Ttyv0F648QASbKxafKu0tWKI" - }, - "address": "noble1h98gfg3crexaw6vnwrmejcds3p44z6sun9eg8d", - "percent": "0.0%", - "airdrop": 3016.21347286386 - }, - { - "total_amount": 94415329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqCDYHSwbzVxgsjgrghIO3Gs75/rszTO20/Q2NFadDNA" - }, - "address": "noble1h9jnf0dflmexs6fpaktudp0df0mhvl6vxz5fnm", - "percent": "0.0%", - "airdrop": 1658.4753110887568 - }, - { - "total_amount": 100619667, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axmk+ZYZhg9U/4lOYp/RDlGe2biDoL2cnNmsSVUrqZzG" - }, - "address": "noble1h94r2889xd56nwaxm448083a0uulnnrhc8nay4", - "percent": "0.0%", - "airdrop": 1767.4591117452137 - }, - { - "total_amount": 232226720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6y//V4E7KeNC0g2gR5zhOYdXpT9wPrq862O1u0Kg1aH" - }, - "address": "noble1h94su3dyrp6h9x55y9pdavkjfn6pvsyndys89t", - "percent": "0.0%", - "airdrop": 4079.2346515587697 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AniMHufinS+Jm2Fvt9/R18wQMMlE/k5IV3fIZRO++KZi" - }, - "address": "noble1h9udm5r33h82y6gq3fnw67jvpnppd04dkyv2v0", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 799021886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7BSmcSAt4w3JvOC6kmfI1UyY6sB2O8XzCTrQ/PcCvpC" - }, - "address": "noble1hxvsqtq8hrmwme5qye8w23zjrzgh6yfdhafap3", - "percent": "0.0%", - "airdrop": 14035.41231054308 - }, - { - "total_amount": 52089163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8GBI0T+8xS5zRKfklEsSDnT45hee6UeO8lL9AsmMMYO" - }, - "address": "noble1hxvjeylc46a3mgpvzrv0lph93n53ws6jcrj0ac", - "percent": "0.0%", - "airdrop": 914.9847988220001 - }, - { - "total_amount": 58943341464, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArH8onu6Ts/CGlO8KsrFbirPgQCEU3/Uu5WbVDNFIgLP" - }, - "address": "noble1hxdffsjntrzhgxmy02ffjf37hlt23qkxt4h2j9", - "percent": "0.35000000000000003%", - "airdrop": 1035383.5294173281 - }, - { - "total_amount": 69218114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyePvUk+sXfBAny9IPDI0kL6gpq+N48ip8q/LTUnw44z" - }, - "address": "noble1hx038xl54sutkrh7ra2gvymmlhjc2m59ay7cxn", - "percent": "0.0%", - "airdrop": 1215.8675330054407 - }, - { - "total_amount": 540272845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlW1WiZGrYnICkfierXnhiK666CHRr+Dlwb3xY6CTaDj" - }, - "address": "noble1hxn99xrnyzxfg8q9egfu2qqf3s8kwslcg9v4tv", - "percent": "0.0%", - "airdrop": 9490.293410767894 - }, - { - "total_amount": 366201047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao7m9V9N5fKDLkNkHxfp/O54N0bzAQUvkwj3dwQAz6HQ" - }, - "address": "noble1hxatl0n9z3khvcw7nq97tx2mm50u7m97f8n0lc", - "percent": "0.0%", - "airdrop": 6432.59311572545 - }, - { - "total_amount": 967163837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApTNGT9NQvXcFi4/GltwaajyhwpeK0qEA1vAtsEIc33V" - }, - "address": "noble1h8pckfwzwy50jq42ew8u39frelzumurd9x0wwg", - "percent": "0.01%", - "airdrop": 16988.95044301938 - }, - { - "total_amount": 9058345166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuNXiLPWqUw6SSnSlVRzCQixvSJOxcWS51NQXbeih/qT" - }, - "address": "noble1h8r7cpchuccfk6fq7rtsaw70jf2sxcan52403f", - "percent": "0.05%", - "airdrop": 159116.55423168823 - }, - { - "total_amount": 111037644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmXMtH8CBNiB8sRUTuVDwEARE0BpUzdwtoMkLca8MvkU" - }, - "address": "noble1h88qwz0ufs8chx6svs4u846j0w37g8a59gqsu3", - "percent": "0.0%", - "airdrop": 1950.45860800276 - }, - { - "total_amount": 1477564839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgqLATUwB2X6gVInbLJphO13l3/kxoRQ/9BkrK6FLLV0" - }, - "address": "noble1h83nm6adfcsxwsmysk0e2zgsp49ay87r4mpuyn", - "percent": "0.01%", - "airdrop": 25954.522766259 - }, - { - "total_amount": 1030945500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A545+IC5xV9Jf73k4XiQqQ1NUxUoOQQz9jP0JzH+bzYk" - }, - "address": "noble1h84f5hyp6h3lrhvx47qwatknjcrnq29quvn7a9", - "percent": "0.01%", - "airdrop": 18109.322680303892 - }, - { - "total_amount": 342771122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQXtRb/nV+Vyzlqf6rN9vCpK44jVgaVr+u4Rn5AxVl+" - }, - "address": "noble1hgynqm6ggr44szr9s8jqdu9x34r28uvkjek38n", - "percent": "0.0%", - "airdrop": 6021.0290978405865 - }, - { - "total_amount": 2172704783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmEM3WWYDd42romvWeYS93d/wBsAHTRYdmAXNZgOkyF/" - }, - "address": "noble1hg83gzcv2k4pxvnumx6vzlerjh4mkda4xsdq0t", - "percent": "0.01%", - "airdrop": 38165.17168403824 - }, - { - "total_amount": 223185753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awc60j3+huCGuhWgVGNRD95SduER8UC3PGOjZS78Xh3l" - }, - "address": "noble1hgw8vd709uksdu3mxlj9e27sqlngth46d9ys5g", - "percent": "0.0%", - "airdrop": 3920.42335770766 - }, - { - "total_amount": 114562024, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDzX++RIVz6qYyMUBToNxfeQsYdH1OFX9Effo1NvH0+" - }, - "address": "noble1hgemesx9tdcm8wqg78kd8t6ygatcjpv30u8vt7", - "percent": "0.0%", - "airdrop": 2012.3669578311549 - }, - { - "total_amount": 694394321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZhaMSgUC1qV8ksSAPGt0ydhAa5sy/c7/gPFx109KJT" - }, - "address": "noble1hga6nmhpksnc0y2etklnjxvj0zj6hjz9mayll4", - "percent": "0.0%", - "airdrop": 12197.551496523844 - }, - { - "total_amount": 388930699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIPkKnHfrYmOPkRXghHCISXNioCe6PZC/Lkj4l3xmNU" - }, - "address": "noble1hfqa8je07xf4jt4cuh3x806dynthxeqw96h7a3", - "percent": "0.0%", - "airdrop": 6831.856318755111 - }, - { - "total_amount": 379034521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AilPP5pudYjy001SMpjhnf9w4kjKWfimTGgkvPoPxTdA" - }, - "address": "noble1hfp05gmced7ks78vnv8hy86ls3jmc7n2x6806q", - "percent": "0.0%", - "airdrop": 6658.022609113113 - }, - { - "total_amount": 1914896136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvcUrnVKCwCMzE6reKkwU3J4Aw8bWOwv5bE1r7aYk1WC" - }, - "address": "noble1hf9wl8jn2e6wl37c9g78na8g7zu4sqkm7tsdhy", - "percent": "0.01%", - "airdrop": 33636.57150265566 - }, - { - "total_amount": 147329069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al6VVx1f7DZSPMyTZyEsrDzZ2ddjXKjaDgoUsuX2iGzo" - }, - "address": "noble1hf97nwyfaz5emypcvyp542ufr8ahuymytfwz88", - "percent": "0.0%", - "airdrop": 2587.9444167608835 - }, - { - "total_amount": 101503098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqSFhgC2yoYwMXZpcNRWq9J73GqPgwDVCv4RB80H9P7X" - }, - "address": "noble1hf2h3mcwm8xd2ygjzr0nt9cndcl5ncfed55pld", - "percent": "0.0%", - "airdrop": 1782.9772327756498 - }, - { - "total_amount": 304462903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/NZDUBg8POLr/0MaTLGM7NEodJWAyAYp6Kud4HM7bJM" - }, - "address": "noble1hft5xsg88jeqs0uzwy0ycunnj3qgdmxfucgg84", - "percent": "0.0%", - "airdrop": 5348.116805989322 - }, - { - "total_amount": 185612675, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akd9n+omfn/tTupElDPb5xV9Bgms7A+RxsZvvyTWtOd7" - }, - "address": "noble1hfkg68m2d7gsqnswzsl5uxsa0kru6ge4qsdy7f", - "percent": "0.0%", - "airdrop": 3260.424363004034 - }, - { - "total_amount": 2446174897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8IhSkgEgUK97rJ3mlL95JljZpOe2yW8YLD6IFRg/v+h" - }, - "address": "noble1hfkammkl3qnd6j6cn73373jeynextpjdv49j4u", - "percent": "0.01%", - "airdrop": 42968.87715425513 - }, - { - "total_amount": 4326124001, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AorpM/R3uhAXlHoiyPB8jESCUHndCQYjcjYTqmvtOxLF" - }, - "address": "noble1h2rpafgcknpsnae0dnds5h7mzcxzsaxvcw274f", - "percent": "0.03%", - "airdrop": 75991.57810875194 - }, - { - "total_amount": 4611185004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj9kHNFrdfZSIB4BMrjSu0OtVjUMqzvZQnizc9EeXT7c" - }, - "address": "noble1h2xus54py525s5srpza75pljfqjm5yn0xjz3zw", - "percent": "0.03%", - "airdrop": 80998.88614481987 - }, - { - "total_amount": 230767888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApMNmPg48cAk0TVp3zwf+lmp+CWb1XdRgCVGcPmr50tu" - }, - "address": "noble1h2hvf4nse977k5uyt6wq7wdxazvc5v05p9paav", - "percent": "0.0%", - "airdrop": 4053.6091850095168 - }, - { - "total_amount": 1116172888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhCkL1EdzwcUG2jnP18LYenTpyOte1deIJgKQrxvJSDH" - }, - "address": "noble1h2cr4j7kxh3v2skwgwlual8hxgc2xm6hkl4nf0", - "percent": "0.01%", - "airdrop": 19606.40499017523 - }, - { - "total_amount": 88174942, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am3iZOBl7MmE1Rj2MPaTGDdS3mFSiUuFj240EK3BuV9U" - }, - "address": "noble1h2c6w27465d3tck24784edsj489g525pgy54yp", - "percent": "0.0%", - "airdrop": 1548.8582829985487 - }, - { - "total_amount": 157008669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw9flBKdeORz9GiOD7fxOqzzY68TXQFi2kbYxCUowSgA" - }, - "address": "noble1h2uzs9927pg6elvp2gtjz8ahem56q5mh6prcwz", - "percent": "0.0%", - "airdrop": 2757.9737731296436 - }, - { - "total_amount": 1554055242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2NMBencMAWZXlrU52qdGX8aKhTBM8TnTdCLsc/x0aXN" - }, - "address": "noble1htrtsudz7rtjacgs6a8yjlv352quc4fwvwflvl", - "percent": "0.01%", - "airdrop": 27298.13345166719 - }, - { - "total_amount": 70930619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5bYt9k72BQ3owBf57fAt/ENWIFJ0NaQThVGOnbf/LQ0" - }, - "address": "noble1ht2uxl4qpe0cf3zmqvz2ee9m538nrz35688gvz", - "percent": "0.0%", - "airdrop": 1245.9489540278262 - }, - { - "total_amount": 913579250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw9tk8EZbcn1iV6WRLAAVmlhVc5CQc/KaKVDKNt0t/04" - }, - "address": "noble1httpaanwk7rtn20ewj5mnnz0v7w99wnuuchl58", - "percent": "0.01%", - "airdrop": 16047.697412016465 - }, - { - "total_amount": 150040249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay/bp3AG+ccR2kGQjbuMa14D5AyUzOF0nKwfec2ItuMP" - }, - "address": "noble1htths7hlgzuxr8rea3cxkgyyxqffgnn4ygld9e", - "percent": "0.0%", - "airdrop": 2635.5683051860096 - }, - { - "total_amount": 9644128185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVhFS5Vhn5mcOt1JUX6JriWSkK952NS63NJi97KLvgu" - }, - "address": "noble1ht3q6uafltkh6zt9sh7wn45warfvn4582g3j9c", - "percent": "0.06%", - "airdrop": 169406.26761781154 - }, - { - "total_amount": 65146400, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5G74PrExq6UMTS8oTyUEYmZJH9W3o5OWJhrZOT5OkWe" - }, - "address": "noble1htjazgc22yq9fd8xq2q2tesp9gy3lfc38fk9vn", - "percent": "0.0%", - "airdrop": 1144.3448553392489 - }, - { - "total_amount": 114693494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApINu8QaGvOb20jFufGvstqY2P1byERRflz+WB/YFRkG" - }, - "address": "noble1htkc34j89jkehjl3ad8we9x3mftgpjztqmr2fj", - "percent": "0.0%", - "airdrop": 2014.6763259333286 - }, - { - "total_amount": 50020288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akna3ozVPzMtFqtbzQxsAjFCdJZDc0TyHJ6qivMn9X6F" - }, - "address": "noble1htun0sn7guus6c5yfp4fcaefv83v6jjn87as4m", - "percent": "0.0%", - "airdrop": 878.6434743191883 - }, - { - "total_amount": 3614034819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8iNXj5ylXszJ9lWuiy/DQYR56RKV1Hwt+M3NtvhEsr" - }, - "address": "noble1htllgahywmq4vc9gd5rk2srhcekzu3hujw6zhp", - "percent": "0.02%", - "airdrop": 63483.20324898326 - }, - { - "total_amount": 83444491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1gKGILJ5nIiRb32e1Qm+y5iedpiiXf284jL8q829Dac" - }, - "address": "noble1hvy78hxnd2z9ycsc9t83a9k90zdyvp55208txp", - "percent": "0.0%", - "airdrop": 1465.7644011373193 - }, - { - "total_amount": 64588708, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AttRrfrO1S5X2LGvrl28HWKV5/DhGcqVRNJptzOxsCna" - }, - "address": "noble1hvy7lu2qchs8mzz7esnxu5ypnk739wwt6c0d0h", - "percent": "0.0%", - "airdrop": 1134.548581545703 - }, - { - "total_amount": 402909145, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/N4UQxLv5NLxkw6YQcK/BzMoT2eP+1dl+Mlo/oTE/bk" - }, - "address": "noble1hvx8m3nfcs2n6a53mhme2nqg6u268prs2dgt35", - "percent": "0.0%", - "airdrop": 7077.3980949044835 - }, - { - "total_amount": 2404500573, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmJ3hoV0o2UkI7qGBSSnoVdXwH78Xjt35Zrtn6qcs8L3" - }, - "address": "noble1hvgwl3pzflkqwuhmxf46dje6ena96x74273m06", - "percent": "0.01%", - "airdrop": 42236.83673039226 - }, - { - "total_amount": 69027163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9d+2Y7VIQ5WwV5O01FkwIlDd6Hs+Mb7T/JBTGQwFTX/" - }, - "address": "noble1hv25h2260gx0rlty5c0fugp4gdkkyxy3mm62hd", - "percent": "0.0%", - "airdrop": 1212.513337002716 - }, - { - "total_amount": 769440519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1F8Csjdj56+aPjOY58bkYeDX8TWL7KUda2apQn93CIf" - }, - "address": "noble1hvtvy09xkz8as33w9u5wnuyned6ypwvt4gullt", - "percent": "0.0%", - "airdrop": 13515.79364949117 - }, - { - "total_amount": 442499930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhNnMRpsO6PpMivqZPi7k8yzDb6nHf3JXd94BdccEqzU" - }, - "address": "noble1hvjylnwyhcz0vu0pdyzt462e9x4lr7twy5vvln", - "percent": "0.0%", - "airdrop": 7772.8396102237075 - }, - { - "total_amount": 2346500878, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As3FCpUgu9l1mMGFuz4ctWg//RYX3WY4yk+Vx9tx8Fix" - }, - "address": "noble1hv4wp790e47y4aw2rrk4s0e35ta4nfrz3028gp", - "percent": "0.01%", - "airdrop": 41218.02905131105 - }, - { - "total_amount": 12616411663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxHzhOROObdUeZMZIx9fBsfi5nFxP2xHsxRW0igoFM3z" - }, - "address": "noble1hdpxptt8r285z5assltm9s6mgk0utqncv75yzz", - "percent": "0.06999999999999999%", - "airdrop": 221616.6323756362 - }, - { - "total_amount": 8726615429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApEyHwQt1tDNGpy2kmXjdDThUeMn3S/hb5BXNAQsJrY7" - }, - "address": "noble1hdztyrt8yc0xemj2wq8rpjsskt2uzz6ajw0m45", - "percent": "0.05%", - "airdrop": 153289.47525420072 - }, - { - "total_amount": 884916849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/pW0wVJuoeVUZaXBXkKclxxkXKS4LCTysV6vOHrZXZ8" - }, - "address": "noble1hd2evedvt9tggmalwfj3emvd67ln7u5p4660fl", - "percent": "0.01%", - "airdrop": 15544.221070637348 - }, - { - "total_amount": 640224625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjbvHsbhtUXWWBIfKzyoq8ir/rkjQs9fUEU8Y5HbHsV/" - }, - "address": "noble1hdvu9a0evyuydvlq564t970mya3hrhtgpcls7t", - "percent": "0.0%", - "airdrop": 11246.02059177867 - }, - { - "total_amount": 203296671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7OxBijeK7LMsrZCftrMu2LbI4OeEaXKw+cJXC/wBcI7" - }, - "address": "noble1hddnvhpvan7rrzqp7mv2lmfz6nc4cgnrgvtj3w", - "percent": "0.0%", - "airdrop": 3571.0568744619177 - }, - { - "total_amount": 135873017, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A70Vmbpg59FnMj1WCABPajqA+fJJeyPcxt0rODc4SqQg" - }, - "address": "noble1hdc62e9kcn0tec2z853j7tdnphura7njhznc4k", - "percent": "0.0%", - "airdrop": 2386.7103628653663 - }, - { - "total_amount": 373065135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0b7kuxdmE7+9V+DvOgV4ttxKBrzOq9LSBLtG3yopKsH" - }, - "address": "noble1hdehvekr272dgs33u7sz5vxwc205p7f94qxg72", - "percent": "0.0%", - "airdrop": 6553.165914673602 - }, - { - "total_amount": 97203674, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Z5/Pl2Xnr/I0Jw5dO+vvG/56b8y40jzJdG7z/l4eDK" - }, - "address": "noble1hdec9a4gl4n7tlf85vzynzdqd5qeljv2thmghg", - "percent": "0.0%", - "airdrop": 1707.454659996155 - }, - { - "total_amount": 267627778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApJDEP5ACPRIaQbboZkh7PeUULJnk5xtx74IGR3J7KXh" - }, - "address": "noble1hwt30h5wdrla4y98qtjzknu2zrqmh5s5qys8eh", - "percent": "0.0%", - "airdrop": 4701.080503299869 - }, - { - "total_amount": 249870198, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ULkR7/rt1J99iB8nphrMuICXU+seICqIOEgjiGnh43" - }, - "address": "noble1hwvj0a8hmtlq8593qthsu0r748y4kek24m8dhg", - "percent": "0.0%", - "airdrop": 4389.155434281855 - }, - { - "total_amount": 451888787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyoaP41aO1iKs8aDgyeGE0n0S5lamCqVfCLYdQ1q+3j2" - }, - "address": "noble1hwvndnkhv886jyxt3a6tplfmjanzc3hgfp3vp8", - "percent": "0.0%", - "airdrop": 7937.761850062991 - }, - { - "total_amount": 2378449250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao8FB5o14qyRqonw2t5YNjMr/F1zh+DxcBeaRmyVqzOi" - }, - "address": "noble1hwv6a4m6y0kn3qm3nccshy748tl5w2eg8k6cav", - "percent": "0.01%", - "airdrop": 41779.22591153149 - }, - { - "total_amount": 3831561178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al3W0ZMuAXhq5IIr00ypCVMeK5gvJuVMLrlpuUH2Gkja" - }, - "address": "noble1hwws44glkdpptt89cjg2vjxev8fxvh6xzfqffc", - "percent": "0.02%", - "airdrop": 67304.21515174885 - }, - { - "total_amount": 1526139222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+rNIPDiaB4yVgNPSGuZ4ecLQAPz2PkIfx8Smernneji" - }, - "address": "noble1hwj7pjasc39aj9nz9u3f8qdmdd3reawe3tkkeq", - "percent": "0.01%", - "airdrop": 26807.76784637591 - }, - { - "total_amount": 172305870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoPD3vE0OjR7vaa4J8bN+eClPdF4ezsBPPDs3y5sNFs7" - }, - "address": "noble1hwkxagtjafcd06q3sfj5695eh4jrhtffszvnpr", - "percent": "0.0%", - "airdrop": 3026.6804593846077 - }, - { - "total_amount": 546112635, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arabc8FjnsxJuCmYlQgkOy3hbJvbeers+WHOwLGkH0dG" - }, - "address": "noble1hweykrmnzxv8hmkz9hr92rzramkjducex2xgk0", - "percent": "0.0%", - "airdrop": 9592.873655305759 - }, - { - "total_amount": 2462825863, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsrgET84wsGu3cay/2e4X0ZNgypvA/+/nhbvUAeF01OX" - }, - "address": "noble1hw6x9kzfm99vkkngt47m93c2judnvupdyjrx7t", - "percent": "0.01%", - "airdrop": 43261.36372724349 - }, - { - "total_amount": 164491793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajgxli+1rRLqL8sWorjSI0J23k0qn1ZPjJMnJIhdJnFl" - }, - "address": "noble1hw65rq0rck82tkz4h6r92x9jvpurs3uxrjpp5l", - "percent": "0.0%", - "airdrop": 2889.420398749258 - }, - { - "total_amount": 2086563311, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8iTM8OM5eaCGK7Qv/SZSTqTKU5X6lScLviW/My2P+Pt" - }, - "address": "noble1h0z9v7qe89n0469ntpyt2macjxwufnex5j6avx", - "percent": "0.01%", - "airdrop": 36652.03281044661 - }, - { - "total_amount": 239819423, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZX5R/EvAp+37IK3690n+4tKu0A7iL2ux4AM5nIeDui" - }, - "address": "noble1h0fcp65mkxhd3q7csjf6ld490jm4qtn9kjtgjc", - "percent": "0.0%", - "airdrop": 4212.606113622198 - }, - { - "total_amount": 230888526, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9/xLCgPYiLQWhLT5d0Pezx0WZ4ViRG81n3x9ONcN3wQ" - }, - "address": "noble1h0d37jugsxtqxhjk3xcw2uaa5gq3rqd50vwwlm", - "percent": "0.0%", - "airdrop": 4055.7282809942285 - }, - { - "total_amount": 637169279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8KI+yiaWhQTfi80+jacrYZ8bcUtD4XnQ8jpKebJH5Hn" - }, - "address": "noble1h0ckdrdhy4gs8ffn4fzwu8v8pcvarnedgm4vaz", - "percent": "0.0%", - "airdrop": 11192.351172188617 - }, - { - "total_amount": 659438287, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AleKrFh2qXL8xIEBTmeV6oPKrfDWOUopmU2MmUVszWp1" - }, - "address": "noble1hsqup766q2dfjtz0c7f2dvd25mzlqvreh9lvs8", - "percent": "0.0%", - "airdrop": 11583.522821555405 - }, - { - "total_amount": 137372663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgiahJ4EJDnhUhM70Q7Z4lmMzaKTlzXh8ezmcLYGyJVh" - }, - "address": "noble1hsrzu4s085669l3dhhzj3dqvlcws7j7wu42xqv", - "percent": "0.0%", - "airdrop": 2413.0527576090526 - }, - { - "total_amount": 686035801, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A87LYbCh9ZPogCXtvbEa11m76jNsfVmaIZi75ELENsl1" - }, - "address": "noble1hsyn58377tvqk874jhtr87pc5kdv8pz54vstkt", - "percent": "0.0%", - "airdrop": 12050.72789061085 - }, - { - "total_amount": 153780015, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApyjE8QKrNgBsu7pgWklAuijCZUJ4oTygydDvYUmzf93" - }, - "address": "noble1hsxvl2mnkytqem97xffu9kw4e0wncheanlpuy2", - "percent": "0.0%", - "airdrop": 2701.2600699231657 - }, - { - "total_amount": 50105385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9A5X9oaiBYi1/12JvxvSsWBAsRPMloMwYko6UtUdJBr" - }, - "address": "noble1hs24u84ftn98a2ls0u64ggk3trltuufezmrmxu", - "percent": "0.0%", - "airdrop": 880.1382662670903 - }, - { - "total_amount": 55884505, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwTKIc+M36g4WADVaM+1Fpeld/4FESQ4JvVTOIzi4ZMC" - }, - "address": "noble1hssgv284mev08wqrrkcllq8gwkw3sjfg3lgf7q", - "percent": "0.0%", - "airdrop": 981.6527972371539 - }, - { - "total_amount": 50122783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVZZ/78cDPIFn+7Yh0H1Nn8EdsJKzNHjxmWuI+9QOrK" - }, - "address": "noble1hsku307txk5jncwqanwlza206j7g3rjl8j3ysd", - "percent": "0.0%", - "airdrop": 880.443875046596 - }, - { - "total_amount": 103374627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AndGM8hRm3/oa9j9LE1l8w8U31DCjtwagJ7Xo1KoNzQY" - }, - "address": "noble1h39px0khjplzxcs0t0tlza63ag2x8a5etwax4q", - "percent": "0.0%", - "airdrop": 1815.8520283555777 - }, - { - "total_amount": 1095632225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agx00rX1DLZLhWzOFiwKIEwcVKsUWe33dGlqhhYcDNso" - }, - "address": "noble1h386y54cvz3pj0a82qpswdku5cx5fguk2qdvsu", - "percent": "0.01%", - "airdrop": 19245.59300318428 - }, - { - "total_amount": 185878327, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3adXc7sKHsmlirPo497aKqvXz9gPy87XrjbBuVbyCVc" - }, - "address": "noble1h3wzwxnu8jnyxunsk8228lj0stk73k56t4r3uh", - "percent": "0.0%", - "airdrop": 3265.090737500715 - }, - { - "total_amount": 3700000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7lY3Qn4RLAPoRo+ylyreWHuU6dSpmQ+NMlDMcRvE5Sj" - }, - "address": "noble1h3s4kfpqqsrh48ghf3wcyekxkn2estzxtxjxgw", - "percent": "0.02%", - "airdrop": 64993.24544035006 - }, - { - "total_amount": 520047178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsoY3dzFTkJlXNNYbkFom4sArYQ9K9omyeR0rg7zILxh" - }, - "address": "noble1h34grq2mcejdzk3l26z6gncn27x8gx32lczdzu", - "percent": "0.0%", - "airdrop": 9135.014562247408 - }, - { - "total_amount": 267137784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5BGuVQSb3bJ+3y53hYRO0K12T+7MaI278j5t2Uba1qv" - }, - "address": "noble1h3ejn88pk6nfv8gxq3s9vhfvpz66gg59zweau9", - "percent": "0.0%", - "airdrop": 4692.473395108978 - }, - { - "total_amount": 160813886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsovmJ6FPnQFSBR7qz48Gy7MkLYYPI0mMznxouXJmaTE" - }, - "address": "noble1h3m28pyxyhhd8xaj0d7u6wz8fgs3qh7qx3r3r0", - "percent": "0.0%", - "airdrop": 2824.815233247155 - }, - { - "total_amount": 3003800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxGqcK/q5Xn8XWTWv2sOGGk4A2a9TOY+2eM3cB3Q5Bln" - }, - "address": "noble1h3unrv2r7vyxrd6gfcze80c0tfxaapa35wmkl7", - "percent": "0.02%", - "airdrop": 52763.975852357704 - }, - { - "total_amount": 7454800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgrWhV/+gyH3weya4oJAcm3GyTbDs+ltFP0kk7QHhgvd" - }, - "address": "noble1hj8egv093vm8g5maaj4huj4g0npe3rpe8t24lp", - "percent": "0.04%", - "airdrop": 130949.09354289772 - }, - { - "total_amount": 435342105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjeWplZb9YyNJeI8mCtUZesmcH4Ry3K9ru2sMtEZaDvu" - }, - "address": "noble1hjdtxz84g3q6j008rtehzy2xx4dat7xmml25af", - "percent": "0.0%", - "airdrop": 7647.107102914499 - }, - { - "total_amount": 1489500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5gLx7HzimJxEHtWnHgrdWYLzWOGrxCo3B4OZoBLxJy2" - }, - "address": "noble1hjsh82j383kljt3l7ax0g8xwqj0vqy92ary7tm", - "percent": "0.01%", - "airdrop": 26164.172725243625 - }, - { - "total_amount": 377504160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A91qVQrfkBBmo3s/yeIGnruF0WlMEIYmydlq4+1deY4U" - }, - "address": "noble1hjumreyfm2wnsxrd7r8dskumapsc2wj3dpvgph", - "percent": "0.0%", - "airdrop": 6631.140682603562 - }, - { - "total_amount": 92672724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkXYKrASNK/mr/Y21wiq58p579tYDb4fsFvngaW5AwYs" - }, - "address": "noble1hj7n6ef98y4grlm77gdrg873f9nyx09un3lmev", - "percent": "0.0%", - "airdrop": 1627.865161231843 - }, - { - "total_amount": 70900000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au207oEQvN4vVdzx9sIEan3QD/pbC2UQPuQR/jP91krD" - }, - "address": "noble1hn0j07m50ka57zrq5w4tklv5sxu8whfxvrkxgw", - "percent": "0.0%", - "airdrop": 1245.4111085731943 - }, - { - "total_amount": 9011313220, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A76REMPdtuHMazJQ76TY/Nt9GGHckB+tI3FbrxucAZoM" - }, - "address": "noble1hn50q5ydexgtpuvp2hr7ruh89muxv2txqw3c4s", - "percent": "0.05%", - "airdrop": 158290.4032019814 - }, - { - "total_amount": 55086909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao+uhDlIm0RdRxV/8TXGVsETClqeHXTTH+oM07mDade2" - }, - "address": "noble1hnuve3etw4gnr74t55klc6et0f9trv3lz8uj96", - "percent": "0.0%", - "airdrop": 967.6424316722238 - }, - { - "total_amount": 437121076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjWuYwAUjiTsKhMl6h9736HHS/H+ysiHrJABENIfUfXq" - }, - "address": "noble1h5pz85tj86443dph37n2wvsgkceen4s3m3zl7m", - "percent": "0.0%", - "airdrop": 7678.356048545381 - }, - { - "total_amount": 733740032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjEkXl1zyb7faps5V9prAJcR0vyNncRtkPKFvXmW+qDb" - }, - "address": "noble1h5kqk49qply5mzr9lh0er377k0rtxdpszcj3er", - "percent": "0.0%", - "airdrop": 12888.688105185487 - }, - { - "total_amount": 125490407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apt4U0Zi5KltIlW4oK/m+/bLIeJXX8OrbRxG6vGD39Bg" - }, - "address": "noble1h5cqge75a7dxqt86hf5xnftvkc0r4458xx4u5g", - "percent": "0.0%", - "airdrop": 2204.3321142055197 - }, - { - "total_amount": 317410790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjRoE5XzJ1EyUBbILKZEG5voyoh85xXV8AGlC3ZsEovu" - }, - "address": "noble1h5mdxdjhlhjk2nm2wtznggqyf3x47emckpmg99", - "percent": "0.0%", - "airdrop": 5575.556048617677 - }, - { - "total_amount": 68211886, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhzOVq8NI9uuxiyHD94Vg6L7Wt2o5UGhSoi9j+1GvhO+" - }, - "address": "noble1h4zvy6wupk9lf4v2yj87v8006yzuf0sya5muew", - "percent": "0.0%", - "airdrop": 1198.1923915532911 - }, - { - "total_amount": 202097773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhZ8OZ73ESwNOHzTjMkaYPqV6VVNFDWhjfocBVZT9OBz" - }, - "address": "noble1h4ywaqjqdhhdwyqfaqywpje35r73mfffvm8ssp", - "percent": "0.0%", - "airdrop": 3549.997341496527 - }, - { - "total_amount": 93481212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw9PvBo7gu8180JjltByq0sQ1rnTZxJBTqugCe5Rj7TZ" - }, - "address": "noble1h484jylpn93gqc0wwq2vlvxcrgtq3d48me864w", - "percent": "0.0%", - "airdrop": 1642.0668528587557 - }, - { - "total_amount": 101594778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7HiGbC5MTiefIqWbd4NapGhPXCkc6uz5LDrZ5NmBY4" - }, - "address": "noble1h4g37l6n2n4442qt3d6kdl2z4vj45mz727v0zu", - "percent": "0.0%", - "airdrop": 1784.5876600032095 - }, - { - "total_amount": 1348228428, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Y98cHASInm1f7zpIM8F635HLEzVtqQDW0WNCRkxaqH" - }, - "address": "noble1h4fsz9jtuvz07cjfku533xay76qk0qvwu39a7k", - "percent": "0.01%", - "airdrop": 23682.63273801657 - }, - { - "total_amount": 50002003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvRAybHojVzTVPvnwRj5+lGLc5m/x3CImCy8Zq+kujY4" - }, - "address": "noble1h4vzc0wd99rt3cepfmuy9mdskmk8cvfg7j8gmw", - "percent": "0.0%", - "airdrop": 878.3222847265188 - }, - { - "total_amount": 2105604274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am4fjqt2ttCzBJmWqN6fmqmwje8lkaBjA3Nev75C8cfy" - }, - "address": "noble1h4d0wkjdqmcv38ugcy68h67knqcfsgaqc7pc2w", - "percent": "0.01%", - "airdrop": 36986.50145414381 - }, - { - "total_amount": 72183856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6xB0/KV6bmnArIz5FAdwrxiJfN6MXAPFY6eVA+dD8s5" - }, - "address": "noble1h46ylzpymlefcwl4hdjf8a9t8xhgg2lyj4xdxn", - "percent": "0.0%", - "airdrop": 1267.9629918483472 - }, - { - "total_amount": 74223104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuYCL/27uREcDq4ZfeICA95KT2J2bcc22H9y0ZogPrW4" - }, - "address": "noble1hku84ve9x9n6dfnpllpz9jzghtg2hjvhh70eyv", - "percent": "0.0%", - "airdrop": 1303.7838961126022 - }, - { - "total_amount": 62515688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9rDxyNTs1j9tKxUuwPuHML6DL99lJoSOdBi6APPdXtp" - }, - "address": "noble1hkaf8j5af8tpx8qnynsg9nqla663l8fw55snk5", - "percent": "0.0%", - "airdrop": 1098.1344470422557 - }, - { - "total_amount": 146262263, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahjk/nUdbDjjduuERhdv70DQcev29V03zW+AM3OtInU7" - }, - "address": "noble1hhpw7nplmeelcxmxq3jkel3pctqtn283lwt302", - "percent": "0.0%", - "airdrop": 2569.2051777891975 - }, - { - "total_amount": 8868036212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnD/QDN6/MpcgfunbXUkZg5p/c0K/rRisZIVcAHskNu3" - }, - "address": "noble1hhyztyjhsslfzyyfls8aseckwf68v6902459hx", - "percent": "0.05%", - "airdrop": 155773.63624335898 - }, - { - "total_amount": 64802692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ath7K5lVhgNloBCu+zGHqHN8dXyQ6mdbFwQ5GRN6nRrx" - }, - "address": "noble1hhvsnke6tfsv8dyzxl2nsnlhzeeqeeex62a24q", - "percent": "0.0%", - "airdrop": 1138.3073692841645 - }, - { - "total_amount": 2111693172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2rk2XwqZROSRRUAuCm4YrWJth74is2dtWTP3hjQwbXS" - }, - "address": "noble1hh08xcfrc0mv6utpnr68zkz8ldsfvespmgw33n", - "percent": "0.01%", - "airdrop": 37093.457465542524 - }, - { - "total_amount": 894625032, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1OsYK8x1NnP+ujlL0nDhVhzY2YhFyGbKxwFH5mIIkyn" - }, - "address": "noble1hhnns04nuyzsfez5mkx3vj23gyhs5htxm64rrj", - "percent": "0.01%", - "airdrop": 15714.752508610005 - }, - { - "total_amount": 65700598, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asq+r7Xa2l9MxZcEx42Km+9x23bDJDajFYOfgs2lqJpe" - }, - "address": "noble1hhkww5xtev75fdlnaes52a2aqaa0e6gsypl6ft", - "percent": "0.0%", - "airdrop": 1154.0797544302086 - }, - { - "total_amount": 341139663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApiiASQj8cPa4xERGc0uuhxD5ouRk+20/VxZL7bj74+4" - }, - "address": "noble1hh6vsdtv7wh06zvnh5kj22uhdcjfuur4fvycny", - "percent": "0.0%", - "airdrop": 5992.371309945218 - }, - { - "total_amount": 50546049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnG/A0gw5uFHVLoPRxBndFSiz5R5xA8NlM71fSRyihjS" - }, - "address": "noble1hh79nqcyexrgv9s6l96a884fjmlfy8zykxfuxg", - "percent": "0.0%", - "airdrop": 887.878856404584 - }, - { - "total_amount": 280421805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobSAdDp+KH5gYvf7PyhIwaqvSes/c1RHGUHubjAVoZM" - }, - "address": "noble1hh7mlwmhrn6sguamlyh99klcz5az8mcmpvjw8y", - "percent": "0.0%", - "airdrop": 4925.817080862427 - }, - { - "total_amount": 83144607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2tR4lz/i84yGP1wW5uG/xehoiSC4B9rhkwdcGS59QID" - }, - "address": "noble1hcq4ez5lkmrhcnctpm7tn8t94l5r720777z43a", - "percent": "0.0%", - "airdrop": 1460.4967161601207 - }, - { - "total_amount": 1939197844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apz/dbcfUqMpgYWgKvZhxrMQP9VqO07bPsXSsVJwyWYj" - }, - "address": "noble1hcpez7ywd0pd7f02w2ekwktzdj720da5l3ehp8", - "percent": "0.01%", - "airdrop": 34063.449035808015 - }, - { - "total_amount": 3937544605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1lcRKVvPjAOzplinBk7MUlHt3yWKBeGKlk55yDlKWro" - }, - "address": "noble1hcrjmgmajysccrjd2yz56d99jh2f0c2svu7s62", - "percent": "0.02%", - "airdrop": 69165.89268786249 - }, - { - "total_amount": 387014629, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnWuU3IjClFDjc8EPYPJopQNr6nC3fSfkDSibPiXdNME" - }, - "address": "noble1hc2r58snfw59qm5xnvrvc5xkful9xumm0zy6hf", - "percent": "0.0%", - "airdrop": 6798.199127460275 - }, - { - "total_amount": 69366070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyaSb/cN8G51PjETzjckIIjl8Md7BUlWxw/Q5FmvKPTc" - }, - "address": "noble1hc58y3465062phpkmf5v00p6axkjp8253erms6", - "percent": "0.0%", - "airdrop": 1218.466489930406 - }, - { - "total_amount": 968372436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+QxapMvmFnymelUBZHt9YC1sBPw0DaW2pvh/czqV4Y" - }, - "address": "noble1hc54kmcfv7f2jeyd32v5wxc2vvxk24j9ztf7md", - "percent": "0.01%", - "airdrop": 17010.180381248018 - }, - { - "total_amount": 6031674792, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+aml26zt9MF/dqs/O/XOEB1DXaNjLLN4yNtj/0Ydp3S" - }, - "address": "noble1hcuqee255wgl2lpf4sm0a92pq8gn5r5n34428c", - "percent": "0.04%", - "airdrop": 105950.84328995361 - }, - { - "total_amount": 3033370167, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRoDRjrFEQAEJwTu9IT1I0FgqU/GuAVE7HicezOHVyP" - }, - "address": "noble1heyr5a5ws5st7qjlku2rydj002cxngav5j26ca", - "percent": "0.02%", - "airdrop": 53283.39777709908 - }, - { - "total_amount": 4013924160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+1AZX2hPr/6TysptBk6eU1dRYqDYNctRmWYFXEBdEKM" - }, - "address": "noble1he9h8xnqj5axlhek3m0uupv88gc7gdes4kwyv7", - "percent": "0.02%", - "airdrop": 70507.55624590025 - }, - { - "total_amount": 64619176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8hBeec9Z6/UtrKAoLtfcewFhJMl25muJPYxW/bry314" - }, - "address": "noble1hev3kzyfr02axdw3ye382x883d8q4de5s7xqv7", - "percent": "0.0%", - "airdrop": 1135.0837745732913 - }, - { - "total_amount": 57545074, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6GycY4RRoQP+02BDnKhwK05tvFl4GNz+otVlhlCEc0n" - }, - "address": "noble1hen7e7hd5rulwslne5gddgc25atevfv2c7pa3s", - "percent": "0.0%", - "airdrop": 1010.8219238824611 - }, - { - "total_amount": 54246933, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AluhVR3mAD1bonzsRDAAGmUHAzFdFrGgNAyLoYK3bAq8" - }, - "address": "noble1heh8cw4hy04lvde7kx9qyjmp9xlmzch39fdl0h", - "percent": "0.0%", - "airdrop": 952.8876299608715 - }, - { - "total_amount": 80168777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30IAAip7Al9aneeJbKw99BAujY/ZWYeNPI23xj7O+XP" - }, - "address": "noble1heljlhlrf5zn3xk8uf59l5297lawv6pgmwuq6d", - "percent": "0.0%", - "airdrop": 1408.224054111808 - }, - { - "total_amount": 1096369202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1fmv2eygi8cc563I+r3noIfQ6a2I3Ii2pvw9IANi6id" - }, - "address": "noble1h6z5077xa4kk549ucslxa6xa6jpfzxhusaakzm", - "percent": "0.01%", - "airdrop": 19258.53855103425 - }, - { - "total_amount": 108863882, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3FQp4PVhBcmT+lPzKPVGMFhFqprW2AFgFWpVkEd2AvG" - }, - "address": "noble1h6r6azks3afzflawl73pq7kqq7s60kkv59dx6x", - "percent": "0.0%", - "airdrop": 1912.2748655176504 - }, - { - "total_amount": 4781683914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApX49WtNCDBPNU0adGuLirlRDHPk6gFe4ERCLA9d+Foh" - }, - "address": "noble1h6yzq668n4z4n0wc0lk7xrvhn439plfy95a9pm", - "percent": "0.03%", - "airdrop": 83993.82601102046 - }, - { - "total_amount": 86751644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmGVTm8A1nMXCWCs2KPRpjqrTagb/9E3VDvlsucX0P8N" - }, - "address": "noble1h6gv4n3kv5vmskd5hstw20qg044939zxlf7j87", - "percent": "0.0%", - "airdrop": 1523.856997525911 - }, - { - "total_amount": 97893155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwrllNZo483zKSSsuz0mlhXtPLdlA0GRkOqkCFtHQq9" - }, - "address": "noble1h6flxhgs75ax5nzg9mt226vrt6eu45jww590w4", - "percent": "0.0%", - "airdrop": 1719.565905363576 - }, - { - "total_amount": 276092367, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/mOpu5xxn71iqVr7VnxVp6APoQlYUZrEed4sev7Cewb" - }, - "address": "noble1h62s6sdxk0swf3gmm3g9lw98mx9cepa4097pfr", - "percent": "0.0%", - "airdrop": 4849.767289902216 - }, - { - "total_amount": 750942939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AseyqVznsqmssaOm0QBOFNoSBk87f90s7XSAzSTceGjE" - }, - "address": "noble1h6tf2g84mvxqaale03e560xhwg0zud9kzjafm8", - "percent": "0.0%", - "airdrop": 13190.869931385087 - }, - { - "total_amount": 332131446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxxHraLNwG1mn/x963ztRwyC1x937NrikSMPestMQHfW" - }, - "address": "noble1h6vn0x8wdkkkfwqfqzruc62yl7jyslrh33k9j9", - "percent": "0.0%", - "airdrop": 5834.135294144965 - }, - { - "total_amount": 153818672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnywdxCyF+IfuTcSlPxWDTDFt2MTor/KG2Gv5ivF09Ka" - }, - "address": "noble1h6m0q9vw0vn848lns2vqguf2uatq9llq753lp9", - "percent": "0.0%", - "airdrop": 2701.9391088120815 - }, - { - "total_amount": 51193647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzbqZUBF7aJAa61CK8dh/GkUyiT7J/UzOWKvUse7t0e4" - }, - "address": "noble1hmqza7r8fzrvu8q0gcmupegmzjdx05kagz7522", - "percent": "0.0%", - "airdrop": 899.2543957993622 - }, - { - "total_amount": 64197229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJ82Nu8TGhmXc7fx04jli4VfFdEXwTE1UtiAZCzgoOu" - }, - "address": "noble1hmguuwvdjc8nef073jvpya2lttv6n9gpk8kcma", - "percent": "0.0%", - "airdrop": 1127.6719624290158 - }, - { - "total_amount": 82140985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqz9MmR5fE3AUL+GjP42ZZQuBvDJMz+WldzV0gFpUEE9" - }, - "address": "noble1hm22js230r3zjdykdr8s488s9vq7ttmevdmg4q", - "percent": "0.0%", - "airdrop": 1442.867351031652 - }, - { - "total_amount": 1096541965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzyPyLqKwIFVcWFJ2HLL0b33SoaBfoATRrUq9mCcu9bh" - }, - "address": "noble1hm2mcvwmt6eqctrtt62wfg0wn0u22dpqpsxewj", - "percent": "0.01%", - "airdrop": 19261.573261321282 - }, - { - "total_amount": 52683005, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjB4cFJ5Bqj6LZMw4CYo6+f19Moe7BByrkK3rvGW81hD" - }, - "address": "noble1hmtdsq4slram99qyzgz8nfdkcx7c957qv504ws", - "percent": "0.0%", - "airdrop": 925.4160741892402 - }, - { - "total_amount": 24360499768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai7c0zZZcZ+KeK+gF+zEIfCY8qCFZDXyZcNLrPoZRS4l" - }, - "address": "noble1hm063760w3dwevjq4ch4a7c6g98366qezggnme", - "percent": "0.13999999999999999%", - "airdrop": 427910.2541814093 - }, - { - "total_amount": 56916777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A899isgcoVNczYnm5mQOH6QKYIyteHVvGkcbgwXIy84t" - }, - "address": "noble1hmukhvj55cdd5gzqqxcw9mwlrtcq539hxerm3h", - "percent": "0.0%", - "airdrop": 999.7854208742353 - }, - { - "total_amount": 8102802838, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApPJq9TdC37Xsvn6C9vyZhHpuw5DDTZzr6WcQ/DKuzH4" - }, - "address": "noble1huqrl00rlq52h3kkqdrk0fv7xyp7wqxgdp84mg", - "percent": "0.05%", - "airdrop": 142331.74421754025 - }, - { - "total_amount": 2314347544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A99oeQU3BctRetzSVWoSROtmIudd903jg+Boajf1LAtI" - }, - "address": "noble1hu2nnymfyq3npxny5dgn8ycwvvcdjpshrp5d3z", - "percent": "0.01%", - "airdrop": 40653.23188147658 - }, - { - "total_amount": 2358070227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtGliTIWsbrBzajsT7VE1U/JFgMGOsWdjyuRhIrEChb3" - }, - "address": "noble1hudpdznvcl7fms07j89mzt5mnqyqyznq5pdurt", - "percent": "0.01%", - "airdrop": 41421.25325107918 - }, - { - "total_amount": 1700800056, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avz8QHpVvJTz5e878soQDt6almCk5PTDatFcOuRtU5/x" - }, - "address": "noble1humk8de0twld8d2kwrhzfcqt0w063z33v3kqs7", - "percent": "0.01%", - "airdrop": 29875.81499582949 - }, - { - "total_amount": 2309848326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Kv57CbecXzIK1sf6r5yxv+4ekWqr+R6db/8YbcLVuT" - }, - "address": "noble1hua03azt8rry4gmlx495umvd5k37qjxs4kp6az", - "percent": "0.01%", - "airdrop": 40574.19977883776 - }, - { - "total_amount": 1976772749, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9aZPD66m7aa9ZkyJqyyl1GNbW3b2rC5gHr78zGpz3kH" - }, - "address": "noble1hayj4zc7r2relgytzjvl0twm2edh45z3hyceey", - "percent": "0.01%", - "airdrop": 34723.480123122295 - }, - { - "total_amount": 1076545396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A02zpSyhUCo6Tmd/V0Fl+4FoB0ZE0PyjqWECC+yyUYH6" - }, - "address": "noble1haw0es6hqx8c0h2yzgfc27sg6fvyw7egep3waz", - "percent": "0.01%", - "airdrop": 18910.318689164014 - }, - { - "total_amount": 11410750052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ld2X+6tGNA6P0aaXuPornE389e4rhXKIQ053Jj4hWC" - }, - "address": "noble1ha53wfpqya4yrp4m6xxdjc9v4lal9t4r0xhq77", - "percent": "0.06999999999999999%", - "airdrop": 200438.2915643576 - }, - { - "total_amount": 950000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApmFfe4XukEcW6SaA3wA/chTsv/b/40BTEf16oKdTggW" - }, - "address": "noble1ha62rx3jy79w6k4dvkygtlp6guc825h86rfrht", - "percent": "0.01%", - "airdrop": 16687.45491036015 - }, - { - "total_amount": 4855236880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8a1jkGFScN0B6toEG40LeCrNhJMirZccHs2dMap8Zt5" - }, - "address": "noble1ham5qwp4hks56zv587y24new7ap0md5sxu6yxv", - "percent": "0.03%", - "airdrop": 85285.83843591336 - }, - { - "total_amount": 57834048, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArR8jHVnoEPCSlUd6Nq31q6uIj/tNFCoOR/5krNzW1+p" - }, - "address": "noble1haakf8nhcgfm4urpegf9nwkw9vknplltmhvezs", - "percent": "0.0%", - "airdrop": 1015.8979666143206 - }, - { - "total_amount": 196779146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3upTNDV8IvswsjcbKBoCjZKACdM92EMH1a7mRW9Q+WO" - }, - "address": "noble1ha7hzs3lmzpnefptn8d9nqw2n58syfupsqcnlu", - "percent": "0.0%", - "airdrop": 3456.571711762291 - }, - { - "total_amount": 239965469, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqK/3ca4Gfos47tpJyD17mtWKkoCTe3aIHrB03+REYDI" - }, - "address": "noble1h7wpe943s6tsvxun6ahnxkzshr7r0xacl32d9m", - "percent": "0.0%", - "airdrop": 4215.171519979922 - }, - { - "total_amount": 181285538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkmhKMtDl2LaX9gVeSnixJa6zRJlf7HSpCjM5dKOkfIB" - }, - "address": "noble1h752n8v23ycmzsnfhp4d78k7myllm4lsm65tqy", - "percent": "0.0%", - "airdrop": 3184.4149908161908 - }, - { - "total_amount": 2006399890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Tp4IxVdEwRrd4B9qgjmndsmkEqHFUnbsYUPihmPKQQ" - }, - "address": "noble1h7hq2rdj2d7tdt7w09wjuuzdcvyyknd65ss00a", - "percent": "0.01%", - "airdrop": 35243.902838449016 - }, - { - "total_amount": 137598278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8nOYw77nFz9s232FfGdVwnv05/R/+KMHyx8RgiMTQUU" - }, - "address": "noble1hldw3ezqkjate7gpx7tn3l4a0nhy7m8pz4yktf", - "percent": "0.0%", - "airdrop": 2417.015852492843 - }, - { - "total_amount": 151828729, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvEiNys0whiEhMN4ikMcJ7l1Q2niUyzPZAuVyp+WHkAd" - }, - "address": "noble1hlauaqgea9nur72myv40x74yf9t8yxtq8kr8ex", - "percent": "0.0%", - "airdrop": 2666.984283457674 - }, - { - "total_amount": 95487622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MoLnMyYYF/G+/1trkHQdZkKI8sKj4yS35JP8+Eu6pg" - }, - "address": "noble1hllcaxj4p7ejy0atfnu8ja7azh74776xd5m695", - "percent": "0.0%", - "airdrop": 1677.3109332868564 - }, - { - "total_amount": 4498450840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az4+d7KFseoS8hTXyOPyrRaNmz05QREgYoJhxIBzcvT3" - }, - "address": "noble1cqpsfm0wzqssgk4m4n74v97968fjylkvced3yh", - "percent": "0.03%", - "airdrop": 79018.62690418078 - }, - { - "total_amount": 187382596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3V7ylrvb6O6xP7Nn68YoE75k7Fgf4DgLgMvwhbHjXLU" - }, - "address": "noble1cqvl0w8xyjt2vdnt3uuap4agg86xadvr4tlhw4", - "percent": "0.0%", - "airdrop": 3291.514338669718 - }, - { - "total_amount": 312192410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azkzyw6mTgDdTiLkJGCsEuwFtjaOATfDVzvP5gKztIP+" - }, - "address": "noble1cqdn47gsp3fsszpeae76wuw3k809wqdsm24fp2", - "percent": "0.0%", - "airdrop": 5483.89133182281 - }, - { - "total_amount": 5179732278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amlz+6Un66LV1b6+ujB+6WDuXu2RqEQ+DG9T92VwWyBs" - }, - "address": "noble1cpryrgng6uwwtypv6y0zpm7k6lnqttrc7842ly", - "percent": "0.03%", - "airdrop": 90985.84088090743 - }, - { - "total_amount": 152295870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0ZnhtY3Kv3D+3YnaLMCAInK8kO8WKu/DzxOcGBRcC+r" - }, - "address": "noble1cp2ufh3ze5zpuphccjg32pde93ctva3968yjxt", - "percent": "0.0%", - "airdrop": 2675.1899617463905 - }, - { - "total_amount": 68499746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av4nQLiH71Bn/D6UgRgGTteTA/3P0aO9ZCourwFwdGAk" - }, - "address": "noble1cphe5afykrj5eyshl7ysp4mupvlt8p0gexmm3q", - "percent": "0.0%", - "airdrop": 1203.2488660485506 - }, - { - "total_amount": 232510121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuWlQKA3ybpU6D2mpd+6pb9t138tgEB0jY157qrW6cFS" - }, - "address": "noble1cp73t536mxq4c6v5qz4k2qf4qh9np2qhr8dcph", - "percent": "0.0%", - "airdrop": 4084.212800410403 - }, - { - "total_amount": 500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTTGHKA8kztH4lQir9+D/hYlQHOBu6l3i5voZLceliG" - }, - "address": "noble1czxk68p0pkyxlrgvn09neh7k4an2hvpn7gkn0v", - "percent": "0.0%", - "airdrop": 8782.87100545271 - }, - { - "total_amount": 122530834, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1b0j1TmN2Ev6AzuayddAKkx9nByvHEiGkYjw6G5pkSI" - }, - "address": "noble1czw5tpcrmzfyj5e7rzx9tp8c45eenzaulryse5", - "percent": "0.0%", - "airdrop": 2152.3450184250783 - }, - { - "total_amount": 78421755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmlBtm+Rqjgqd7K3PZrXJfReA4g6oX+P3/Wq5y7WhG/z" - }, - "address": "noble1cz558xggwsgy9l73ee3pmm24scwa8zryzk6rnp", - "percent": "0.0%", - "airdrop": 1377.536316372432 - }, - { - "total_amount": 54811819, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgoDvvjw0pFfkSpt82QjgSOHoMxt4lK3bBuAKmloT9El" - }, - "address": "noble1czkjwx6rdlfx96nf3hx26uz2n8shfzlmry8thu", - "percent": "0.0%", - "airdrop": 962.8102717024439 - }, - { - "total_amount": 55886448, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/GHZjhmQgKGjq6kP2pClV1jIbiEH8MGTjz1Wt0AOsAm" - }, - "address": "noble1cz7qkhratdd3u7st4y32876glqk0r2ymleasux", - "percent": "0.0%", - "airdrop": 981.6869274738812 - }, - { - "total_amount": 725069783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvB7nNT1vgsLgDLdHHjthJOf64/cSq3IVmRb3sY/aNEA" - }, - "address": "noble1cz7y59k4jfdudjnpm7jynp3dkxqtejkfrp65ds", - "percent": "0.0%", - "airdrop": 12736.388748081175 - }, - { - "total_amount": 1519943450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A96btVK3mX1vz3hjEqZghWOCxja2tCt1BhHqTR0OzMf/" - }, - "address": "noble1crqr6yql8fusfz7axm72m6nm8lj3yezrx40ya4", - "percent": "0.01%", - "airdrop": 26698.93451386552 - }, - { - "total_amount": 397410432, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoB8kSis6fgX+B1Nhprv8rMzBzN8VcpHiBy0xjsont3A" - }, - "address": "noble1cr93japfuzpe4pf5gsv0vzsrjktwmadgspmzq0", - "percent": "0.0%", - "airdrop": 6980.809120954471 - }, - { - "total_amount": 173241003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1JfB1Iog7jTR2EYJq481fYY8patFsHtZadItZjdu5zS" - }, - "address": "noble1crfts8myvq5hw68ad064v9aj4ft8n8904qrfj7", - "percent": "0.0%", - "airdrop": 3043.106764408492 - }, - { - "total_amount": 123016916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3D0/TYx0quk1DZ94zlDLRUmr/Hb6R/AR9oaJrikKzz" - }, - "address": "noble1crvrxeyt5ks5ecw9j3s09swfpuxfm8jvnw43vv", - "percent": "0.0%", - "airdrop": 2160.8834094332233 - }, - { - "total_amount": 311869694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqUDWo2yvDJY0pKjqZhXBDppQ7D+jHEQkrIHWOjzP1x7" - }, - "address": "noble1crd8w59c8vuqnq55u8fuuaq5zfm2rvkukhez62", - "percent": "0.0%", - "airdrop": 5478.222585824018 - }, - { - "total_amount": 393539305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiwzOfF7WHMSEph/j12fFvLUiF07oLFZzDIzFH0F1A4p" - }, - "address": "noble1crjywxm9m2gaxdw3vjvx6uypw7r9nzct75eadm", - "percent": "0.0%", - "airdrop": 6912.809902781021 - }, - { - "total_amount": 618137608, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnitpEAwdB75Zyl1EHe07vim+YoZQ4JaO1sAWJ6tqYDd" - }, - "address": "noble1cr7wzf0snlxpyvq9lc0wzvpf7qswjev6sz5e6a", - "percent": "0.0%", - "airdrop": 10858.045749366187 - }, - { - "total_amount": 909181670, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/+aDZMUqG1eFsdinhhBE8herYp7jHzfWsIWe0Nrg8Ig" - }, - "address": "noble1cyvvqyhf8dge875rarlxgl04fkd3jnrtk9y6fq", - "percent": "0.01%", - "airdrop": 15970.450656264149 - }, - { - "total_amount": 449828584, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3rpynjkz6eBQxRt/tPaQP/a+j5LKKey+JUc2ZviaqHK" - }, - "address": "noble1cywxyle0mfrd5mt3tslqhgjc6zukjhgey9sywz", - "percent": "0.0%", - "airdrop": 7901.572855674897 - }, - { - "total_amount": 50802384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A40VgylFCnGY7oltiWYl3B9fClY1hSEV/DlimWJz6Thr" - }, - "address": "noble1cy0n5uwyawufqnatpaddv7f6en7v952tsru2pn", - "percent": "0.0%", - "airdrop": 892.3815708829493 - }, - { - "total_amount": 10000069753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2k1NxFaGO6O302Qrsd+PiZEQKIrjl/+eNdtg59aw00I" - }, - "address": "noble1cy06ve6mkqav0n8m8sl3hcjd4jrgk96svenm79", - "percent": "0.06%", - "airdrop": 175658.6453722567 - }, - { - "total_amount": 27329034763, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhiP3v+3EpaTOABdymPGJU7xrvqe64+ZXuVQ7zeJQo2y" - }, - "address": "noble1cy7jye9jkg6k4h9wcurdcx7q4ld03m48ujwvfj", - "percent": "0.16%", - "airdrop": 480054.7740539237 - }, - { - "total_amount": 7978333410, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnWzJ0ahQWJGu/8t2zHtEAfZYR1qxlko2sx8rMgGdOK4" - }, - "address": "noble1cy758ajmrnj4x2lj4zgq2cr65nsjcsuvvkyyqj", - "percent": "0.05%", - "airdrop": 140145.3463570473 - }, - { - "total_amount": 965453729, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4AiTDujY8NBd/6QW5DsCcFD7IgqThgftXxcxLsXLIzJ" - }, - "address": "noble1cy7eyqptf0448ghcpkufklah5x8t8r07tzmfdp", - "percent": "0.01%", - "airdrop": 16958.911127080595 - }, - { - "total_amount": 159294082, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArU9CTFP3iUL6CQ8cjSk0C6c3y9oT010daIMYvWUixxM" - }, - "address": "noble1c9rysmulm08jr32pkrl3f28f2vjccl329mqmm4", - "percent": "0.0%", - "airdrop": 2798.118748276013 - }, - { - "total_amount": 963173078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/4BlcoXg3QmW4wAbUtEprVu4TsMhW8DNXjjpiD1Jcz8" - }, - "address": "noble1c9xn2tf9pcg38ug75dsqwu3ea4j4lfw8tszsdj", - "percent": "0.01%", - "airdrop": 16918.849799997683 - }, - { - "total_amount": 56656453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6CtkRuvJV3tBJX9RYTEpokQUYaSqdwERHOuqICfd5nT" - }, - "address": "noble1c9tpvevpnknjss5vs24yanmcr9vl973mnvd0v3", - "percent": "0.0%", - "airdrop": 995.2126366509883 - }, - { - "total_amount": 109542235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alo2jA5QdkvDCxMf5E3M+kXVBp0mpEKttVrlo4zqgCXi" - }, - "address": "noble1c9sc7rpe860mwsuepu853r4etvz80amw2undj5", - "percent": "0.0%", - "airdrop": 1924.190639307974 - }, - { - "total_amount": 50058564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlRjXW5r5oYRZYLqRncKGzXS+OgDdP6ioaHZbDIXX+Wf" - }, - "address": "noble1c9smcavmhrs8n7awrlgtwyt7nt83fhpyknla8p", - "percent": "0.0%", - "airdrop": 879.3158206603977 - }, - { - "total_amount": 91606283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6cLFvj946CXHjqHbLexmzSvMb3Lmr5bArPT/cC+PM6M" - }, - "address": "noble1c95ecqwpsktagkgal6jzflsmveeemm5llwzqhz", - "percent": "0.0%", - "airdrop": 1609.1323337559909 - }, - { - "total_amount": 1101757525, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlyLQoO7pWac2OjpILgvhN5FnQfYoSjNKfZOavaiduIc" - }, - "address": "noble1c9h7ruztwgx02ur58dfxckyckn2jkp39rtg0q9", - "percent": "0.01%", - "airdrop": 19353.18844272368 - }, - { - "total_amount": 600874857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ama2DjzZn/CZlDC+NzBpZ4U4tbynJG50JJuXQ+YfHISi" - }, - "address": "noble1c9cyawq49lzmcyvxhgc6l97x6a5gnq3m3e89kx", - "percent": "0.0%", - "airdrop": 10554.812718901687 - }, - { - "total_amount": 251036657, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmVz6v3NGEcm4DMle3BlnSolXxlWZydVe/oDV9hWFkmm" - }, - "address": "noble1c9cn24rpu4g20x2dxngmdhjfed5tkse7f0u2m7", - "percent": "0.0%", - "airdrop": 4409.645152142154 - }, - { - "total_amount": 769599490, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4y0jG4aByVQys38DSLfVwaFCHcPr18o5pIoj58H83DN" - }, - "address": "noble1c9ulet2k2df2aae5ng2e3hh5v584ukw9tmazf7", - "percent": "0.0%", - "airdrop": 13518.586093064387 - }, - { - "total_amount": 54176317, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3TxcW2xvArF7qkRstIIX1inCkOI+qRnt0p6P/TFoylX" - }, - "address": "noble1cx9lf4vsz05s4h3z2fzxps42frlh62g7cuseha", - "percent": "0.0%", - "airdrop": 951.6472075230295 - }, - { - "total_amount": 616423463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxwoT0ryyGVZzEjliNeK2nfiHn6nEkQOjV4rVQZkKVmK" - }, - "address": "noble1cx8097ps0agruqj7xg2gp7nehzyvf475zcjkv3", - "percent": "0.0%", - "airdrop": 10827.935520526904 - }, - { - "total_amount": 334311350, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahj9B1UzY3BDUPCy24Xk/DXsjpw2BvSBK4Joql0+dSws" - }, - "address": "noble1cx5djnq8gw8s9ep743paul05wxe4p4g79deuqv", - "percent": "0.0%", - "airdrop": 5872.426925417506 - }, - { - "total_amount": 446595778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ald0OgBhAiYxuwUMKUJVfyoJxg+Mpdaxr995NK1SQsE7" - }, - "address": "noble1cx4xd0dyemk3cfwkyxzr6e05p9jc3sclsdlwgj", - "percent": "0.0%", - "airdrop": 7844.78621950759 - }, - { - "total_amount": 1525209773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar1OUhekPMQCwlQaf6KEA70sDa7Z3IfKYbTvTlxGzHRI" - }, - "address": "noble1cx427svzm2naasv0glznyusr0x9xh8ppf0q6sr", - "percent": "0.01%", - "airdrop": 26791.44138502962 - }, - { - "total_amount": 51635568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am+UtUvwlJczdw+jTjr1cpZwpfjK/MRY+pEG9BhuIgOq" - }, - "address": "noble1cxhz7kwcwxkfh240y5xu0zfwjn94tj8s5e9che", - "percent": "0.0%", - "airdrop": 907.0170660745636 - }, - { - "total_amount": 385692634, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApKWeJfMpIR2dr+5+X/7/tOnXKvH+xEwVTpQPOdQ10xl" - }, - "address": "noble1cxcykrznszytedcnzan5yadegxcwkqfsfqckwf", - "percent": "0.0%", - "airdrop": 6774.977304350568 - }, - { - "total_amount": 27878430851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyUg/PuGyFVZ495YWtEKqSr7sHabZtEhhPo7qbWwmIQg" - }, - "address": "noble1cxe5lz4swzdtgcq4fv2xrlwe8reh0whz4ecl3c", - "percent": "0.16%", - "airdrop": 489705.3239975324 - }, - { - "total_amount": 1661267048, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8HFcSu1VnQJBCVE8V/UTOZ9kRfoQnkFIYzpuGk5ZkeO" - }, - "address": "noble1c8zy6r2shjsaj7ujtushz3gclxgw400rhltzwp", - "percent": "0.01%", - "airdrop": 29181.38837638643 - }, - { - "total_amount": 636696475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArkbgaUymoKU83/xLjHIQgNmR4koQTppPq3xyrkpE3vb" - }, - "address": "noble1c8r3gnf64qrxnqvj73j48ykvm29h3nnx4wpqxe", - "percent": "0.0%", - "airdrop": 11184.046019102892 - }, - { - "total_amount": 121917377, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqtj3p/Wc4A5ZgFyS/QA+KpVRkUHPLOIqdbF2nPVb9gq" - }, - "address": "noble1c8r5vrr9m7l6k2puldjr65wxxw8wzpuuxuulvx", - "percent": "0.0%", - "airdrop": 2141.569191028294 - }, - { - "total_amount": 1265955383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiFf68/fR9RdE2cz2vRgTnTz0un+IGdWhdxX4bPsyb/I" - }, - "address": "noble1c8r5jpwjskale4787fnm5llrt5tgg9sdzucnta", - "percent": "0.01%", - "airdrop": 22237.445655094958 - }, - { - "total_amount": 131594014, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlrodA3cTd7DveV4S/xbrLeXL9+m9yZT/HGaxqdEVCxC" - }, - "address": "noble1c8rlyw6n273fs7k4uf27ud4kza2e9nqf5aps5a", - "percent": "0.0%", - "airdrop": 2311.546500103476 - }, - { - "total_amount": 68683257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkXR8pEJcSGgMPFUDWpyA1wKZLrFOw/exqWQ1o4mbSt2" - }, - "address": "noble1c80kd75epru2nwmw45mnjvxwkt5nu0jx34jdgh", - "percent": "0.0%", - "airdrop": 1206.4723729307138 - }, - { - "total_amount": 1121298227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aowt2mV14RE/IYzp+0f8HGdYvVRERfYs9VYgE7he6Mui" - }, - "address": "noble1c8j97rcrkvwfy0gr542ka40r97hq6xv74j83hj", - "percent": "0.01%", - "airdrop": 19696.43537276766 - }, - { - "total_amount": 120737887, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axk7sz7LD0d20bRMKEytQ26lVI1Uphtcmnj3lP+IK/wi" - }, - "address": "noble1c87djrxf87h98vffq56pyzz8q4q9c6r2x9cuw8", - "percent": "0.0%", - "airdrop": 2120.850573983851 - }, - { - "total_amount": 690635264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/xLIv3imPEYtP/81q2ymRv7ugv8MQzYcqE9IfeadP9L" - }, - "address": "noble1cgxdnt6nrwhahym2c827943y0q5v6wuhaf5f54", - "percent": "0.0%", - "airdrop": 12131.520871057557 - }, - { - "total_amount": 250167092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Yi7SoRJ407JxMGsfwHUNbC5Asp7nm3RSr3Qrd32ASE" - }, - "address": "noble1cgekxjacxnnv0lc0ddk8cduprm4wzejdpe7p5u", - "percent": "0.0%", - "airdrop": 4394.370597690441 - }, - { - "total_amount": 1036272672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyNNl73X8w2+O4S7DIt2a+R5MU/lOc96iXEr9a2OYgtm" - }, - "address": "noble1cgm5rf2fsemzkv5pjyemq26zx4xrzj6z5h4jna", - "percent": "0.01%", - "airdrop": 18202.898409303612 - }, - { - "total_amount": 2140050000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuJCqlHaI5+Okm9MEICOtb2nrtZKIDHLvJtdK28eu2SP" - }, - "address": "noble1cg79pj70mgl8xlum0rw5yy6enk9jszsrfu0lk6", - "percent": "0.01%", - "airdrop": 37591.56619043814 - }, - { - "total_amount": 1110624196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzJT8J/mWk0ABXnQtdCq62FQSi6bz46VI8ZYrKUcb0yJ" - }, - "address": "noble1cfr88ulj2gx4fdutt76rxp8f83a3tc55qetnzk", - "percent": "0.01%", - "airdrop": 19508.938098005252 - }, - { - "total_amount": 413308210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqjoJa4DJNc0QrXwXfMGn1jwySrb2fa6mNne0dYEnqyB" - }, - "address": "noble1cf8uexczdqqgfc366aldc3642j4skch6dvnrmd", - "percent": "0.0%", - "airdrop": 7260.065387849119 - }, - { - "total_amount": 965728202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay5GsVDmQrrMahrVMURUMFoRtxlcK4ubDD1FYn0R+0D3" - }, - "address": "noble1cffrhp203p8k6za80hgssxagp0dsugf48x3qrl", - "percent": "0.01%", - "airdrop": 16963.732448987554 - }, - { - "total_amount": 53633215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axie70BHqKuT2VlQEm0lv4ojn/NYvXMhgGlLX4MwMfgq" - }, - "address": "noble1cf2ea9uxa2wnrrkfd22jjqzlg2ukfukst9ukrd", - "percent": "0.0%", - "airdrop": 942.1072179054227 - }, - { - "total_amount": 102727305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0mTH7pnrA1d4Ljz1cMQY/d5WjJ6Mu180tzl5rX3HBTe" - }, - "address": "noble1cfd0n2ufjzffte4j3cvarhfcx7amz7jnvaqzwh", - "percent": "0.0%", - "airdrop": 1804.4813371055943 - }, - { - "total_amount": 60846140, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+ZY8y2jtRyDqZAy2i8h6wL/zkosSkiFwDoF9JbEVsr" - }, - "address": "noble1cfs9euxycwgkrf0wjhgq0pk22prv9smed5uxhs", - "percent": "0.0%", - "airdrop": 1068.8075975994327 - }, - { - "total_amount": 288365393, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+s7KP8stMeGO25m29dncrAaTJss7W16E7Tsd9fxEKW7" - }, - "address": "noble1cfcfj6rkhrndcdg8l99tzgh2m4uwd867yqr9pf", - "percent": "0.0%", - "airdrop": 5065.352098311351 - }, - { - "total_amount": 75734429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmW/X/sTxOVT7nx2NJBfy6ASXJ3M34YYjbT1EXHN+xh+" - }, - "address": "noble1cfckc9h9qa45u83mze4gmu5etgzgpj03248yw0", - "percent": "0.0%", - "airdrop": 1330.3314411572337 - }, - { - "total_amount": 189715066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A31pbXEyNpLpZTMWu5xOfu9dtmBaY7q0672POb6BJMdg" - }, - "address": "noble1c2pcqav042fpu7w9rvs2h6qna0hkh57emhyd6m", - "percent": "0.0%", - "airdrop": 3332.4859049378942 - }, - { - "total_amount": 1593146578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFLTV1/bpnhpYWLHLbVeC5qLVrMpYYN/XE0v2H+bXHK" - }, - "address": "noble1c2fl7azm6txp88e2mtzup084tla0769vtfxaur", - "percent": "0.01%", - "airdrop": 27984.801774704807 - }, - { - "total_amount": 2086954753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asg7jH+AzKbJuDha8cEMgfK2whWSmJaeA+KbzcxyBR0G" - }, - "address": "noble1c2va9p9al8wly2katkpn0gtpdcymyqkl6qr9dl", - "percent": "0.01%", - "airdrop": 36658.908779630845 - }, - { - "total_amount": 70344211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3mVCGSRBx3oAlfw7dZrY/ms94HeXzvpqQKCG5kI5dYw" - }, - "address": "noble1c2sxs95sn4fszap4874qcuwvewjxs4gfwrph0l", - "percent": "0.0%", - "airdrop": 1235.6482623866953 - }, - { - "total_amount": 83451830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Vj0lBTli5vriTRyzocMslFzVGaDdvweZD0V4Y4l0wz" - }, - "address": "noble1c266d45v0k7wf08t4n3xrussquh4y2nmd8m45t", - "percent": "0.0%", - "airdrop": 1465.8933161179373 - }, - { - "total_amount": 522748054, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjppdexLABAKidtaeojf2dbBTlPLQ2PwD42ZkG/iiQh4" - }, - "address": "noble1c2u5n3y4luvadqk3sll8n30ruaq2snzca9qvj5", - "percent": "0.0%", - "airdrop": 9182.457453266856 - }, - { - "total_amount": 119144274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4h3zhTWaaxJeXwtV2LKfxvwxuZYwPXQLVoM3lZXKI+b" - }, - "address": "noble1c27mav63mwcfpqzgxtuxakmf7em5yhclm8rcw2", - "percent": "0.0%", - "airdrop": 2092.8575791606263 - }, - { - "total_amount": 976032806, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A478tLPAgHsBo4Ae8+/ToYpLswVOYJQfFf4ujmz3ti9Q" - }, - "address": "noble1ct3079l64mltqutmgmejc57l08tuyf7xcxtqwt", - "percent": "0.01%", - "airdrop": 17144.7404643761 - }, - { - "total_amount": 5836599510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0U79HFwXTfH5S9Uye7ITx8VXz6tl5kJPVxdSSii3YzS" - }, - "address": "noble1ctkj6cfvrynrxuwz3kq6ayes4xt3y6c6ugah85", - "percent": "0.03%", - "airdrop": 102524.20121363697 - }, - { - "total_amount": 429712421, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsiqhlgBbSiBGTjcTBWHpntb1Gjtx2i0EreNABSvhzrC" - }, - "address": "noble1ctud95w2cjqvw8g37esfz6jcj7rtzq908h8zm0", - "percent": "0.0%", - "airdrop": 7548.217526167576 - }, - { - "total_amount": 95145262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwukxhT4p9T2jVb8zbq3T5XrWjI+FLLNk2vaH5tkc7VH" - }, - "address": "noble1cvdelk0z2l83rk903wa57t3fae306unapu9eth", - "percent": "0.0%", - "airdrop": 1671.297125852003 - }, - { - "total_amount": 2804765532, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhB45zg+r5vNcnaNYVLOZO9NpDcHkpRGeS1MNPVL914R" - }, - "address": "noble1cvh2v8e8kaq9nmxk9n22c4gksr3chtyxtad3hw", - "percent": "0.02%", - "airdrop": 49267.78773619189 - }, - { - "total_amount": 250158309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkaFtYcJ32Gs/eg+yQw2GE/mmMQmvyCHQijr9w4E3z6r" - }, - "address": "noble1cddrk3847etmu7ms63zw9uq37zr07345qjs0hx", - "percent": "0.0%", - "airdrop": 4394.21631777836 - }, - { - "total_amount": 100002334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1chVOKlp8+l0zU5j/wVtjBvn4TyoVG0i86ui+L5gCdw" - }, - "address": "noble1cdwnmtnfku79vxgc8t30ketcatzt4sgsq983eu", - "percent": "0.0%", - "airdrop": 1756.6151995323955 - }, - { - "total_amount": 103687784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmNM8YQXm7objaFzAnYVVc9uRsDM7FrJjtOtsetTnCCt" - }, - "address": "noble1cdku7k23l9cqcauxv8nktcx8d28q20luu3mmqu", - "percent": "0.0%", - "airdrop": 1821.3528634264867 - }, - { - "total_amount": 76309183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3S5xrzmABhlcTr4WYmvOmiM56tSLWSOFtAY2lTXDBpp" - }, - "address": "noble1cdezc4kpj5jv4rswyeh2t5gmc0fx4r58g5763s", - "percent": "0.0%", - "airdrop": 1340.4274216409697 - }, - { - "total_amount": 563932617, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqIUR5X8E6Y9+8cX11Yzoo9GC7V7H7BTUraTS/mk3RYf" - }, - "address": "noble1cwrufx4n25qxt0ct3nw62nes9n6awhcm78frm9", - "percent": "0.0%", - "airdrop": 9905.894861756737 - }, - { - "total_amount": 1450985226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8eO/v2sBf2oAEFcydH2HBoxYjg0cdFuiyL83MSLB1uI" - }, - "address": "noble1cw2wrxnzjzgw8rfkd8ejyrp67f3y5rg6rlyv42", - "percent": "0.01%", - "airdrop": 25487.632141551298 - }, - { - "total_amount": 161567809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2WFrHyl9Fc49jmQ+qpVn6F33+hs2wMfRP8iIQ4M0Nv0" - }, - "address": "noble1cwvarmtlcrk8fetwmskcjj3fpqhc7fvu5kdn2k", - "percent": "0.0%", - "airdrop": 2838.0584501612425 - }, - { - "total_amount": 758965803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3U8kQC1jjt4Z4crSq0K0G8gyKNmeSXhUGsSs04kPxnQ" - }, - "address": "noble1cw3dfjgpjkf5l3ahwyeaam7a5sdqlxefmswztf", - "percent": "0.0%", - "airdrop": 13331.797490597666 - }, - { - "total_amount": 233537213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiB1SOVWPT8UbHIH7U3riyld5IJ3APudhqwXWudUqdnl" - }, - "address": "noble1cwu0l38dxeurpzarq3qcuthjf52mw2er30r3vp", - "percent": "0.0%", - "airdrop": 4102.254433503867 - }, - { - "total_amount": 701561847, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AknbVXm0zqewBejJyiTPJmgV0zu4vFs/6lVse/VJ9g/a" - }, - "address": "noble1cw7hn6y8zn46mt80ns484f8kuk90aq5fyqanvy", - "percent": "0.0%", - "airdrop": 12323.4544090963 - }, - { - "total_amount": 296427929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkD+7/s+De11K2JotLnlqVaP2KJ2BSgUJz4u/gg7GYDu" - }, - "address": "noble1c0ztypyfgggyyd4rcl6skrv7tk9lqwdpgrct2s", - "percent": "0.0%", - "airdrop": 5206.976525640989 - }, - { - "total_amount": 114140120, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkgAP1umBfbNtjTPJ54GgMClJmIftdNi3ezoCt5APCXb" - }, - "address": "noble1c0zjlvt6egcx7c29v4zmy2fgxqdldh3kfpdplf", - "percent": "0.0%", - "airdrop": 2004.955901013786 - }, - { - "total_amount": 5905759018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0FsZniVOCyPPXAb8B2p+DEA+2+uv43bwak5ddvAinSn" - }, - "address": "noble1c02ur0d9x5gc7ggkwvlvjn8f8r2hfva305arhf", - "percent": "0.03%", - "airdrop": 103739.03928876614 - }, - { - "total_amount": 7861193546, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AouOG5gmmxfdNzEyWQc3eX5+VL6B6ebdotYYwiHZ6Ylb" - }, - "address": "noble1c007387yry65h9x8lfr8fxpre0k6g952e4w044", - "percent": "0.05%", - "airdrop": 138087.69772683075 - }, - { - "total_amount": 6432199009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+0HassqeYCy5B9ClgXjNlUokNgTLV/MhX28cX3/YiL0" - }, - "address": "noble1c0sgcfj6x4qh9wnz0ruzf8nhhfgpy6n83dysc3", - "percent": "0.04%", - "airdrop": 112986.34835489551 - }, - { - "total_amount": 704289962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApqvXqLM5aptMCfmUbRzQUG+6AJqyiaMvsIrOt0H9CsG" - }, - "address": "noble1c03adcnrjv2aq4tkmqc8f57gh0s0xmrfaaq5n2", - "percent": "0.0%", - "airdrop": 12371.37577336238 - }, - { - "total_amount": 74566807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApfD8loVLVdL0K8a+y5b3IaX9hNl2NunW3fb86nTNcfC" - }, - "address": "noble1c0nq06fwqp96d92vwdng43ktyxw67j7n3mmn5l", - "percent": "0.0%", - "airdrop": 1309.8212943389765 - }, - { - "total_amount": 1000442871, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7yvLfvZRIF6vcZQBaY7J5AoRotkUCh65PsAHUOuOOWW" - }, - "address": "noble1c0kve56t5ps39r29dp83sexa6jdzct448nun9g", - "percent": "0.01%", - "airdrop": 17573.52136863553 - }, - { - "total_amount": 50093694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvPI3cuN9FXzzVe3KENsRPMT7dwjvdYneS7KIrPOelBq" - }, - "address": "noble1c0cqmck4sgnaf8k2snw7uuf2husk956mdrpz5q", - "percent": "0.0%", - "airdrop": 879.9329051772407 - }, - { - "total_amount": 572529039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoj9KbKWOBPiU++h4NXXeHHkUeDY5NqjdGere6pH7exg" - }, - "address": "noble1csrpanq70pghms0yqvc3scmatdc5ya40cvrja6", - "percent": "0.0%", - "airdrop": 10056.897392825607 - }, - { - "total_amount": 314258576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az5H1/jxZeJPF1ZRS8aK8BqvNeisBjlFNDPtH2D3a9rg" - }, - "address": "noble1csxkzdzynk2sg2enasevtycgkpvwhzv7e5nkte", - "percent": "0.0%", - "airdrop": 5520.185070730514 - }, - { - "total_amount": 190088823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At2aTLo9svwme7YkiWlbX1ROZic5W/9WO5ufHsSLPtlS" - }, - "address": "noble1csfd4hyvy63m5fe9pjafx0vkanrud0d7xg66ua", - "percent": "0.0%", - "airdrop": 3339.051223974664 - }, - { - "total_amount": 11533217666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgCHZN3N1/UmZQa0T8s1k/E5aUFjhFZkMf2Kn06Iy8Hj" - }, - "address": "noble1cs59dxu5p6ljc69l03kqnfud9mys4esc4r4mz7", - "percent": "0.06999999999999999%", - "airdrop": 202589.52607657274 - }, - { - "total_amount": 223095356, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiYGOHs3+wUjxORKQEJpEWxDSaMnCVdG220wqGRWLrfP" - }, - "address": "noble1cshyyppwz6l0ez7n7rkjyypaghd024azke5cg3", - "percent": "0.0%", - "airdrop": 3918.8354673271006 - }, - { - "total_amount": 88763258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+Y9PwbdWFf9O9znzFwTmRwXilq2A4ZB/FxA4FnAmEK" - }, - "address": "noble1cs78jjkm7ra6weu7zukmjcyvvzf576pypf93uf", - "percent": "0.0%", - "airdrop": 1559.1924900754366 - }, - { - "total_amount": 3892520345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoG+tnsmXOwXY6hZFM5tPxdSUp0q9LwPQ7jxDgH58rEA" - }, - "address": "noble1csl24xa338980yckumj6k9kejyttshaakn4a9s", - "percent": "0.02%", - "airdrop": 68375.00815247056 - }, - { - "total_amount": 261330146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxHd1UI/gbR53V4IWRT1vQMhchQ8iDZAdzBhU8s5O3hE" - }, - "address": "noble1c3n8vu646ztrqhg8wkaspq870p7nq605pr8nzs", - "percent": "0.0%", - "airdrop": 4590.457924308247 - }, - { - "total_amount": 61374692, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ODglap4nakhUL1TDNymcaj4Q1GkO2PmsUTLm68gUfp" - }, - "address": "noble1c36py3de66vmdx6ss98rxwzzpw43m3f84a9s0m", - "percent": "0.0%", - "airdrop": 1078.0920056707807 - }, - { - "total_amount": 6715837741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1U9f6Lz+cUJ2MCvsQ3R1E09VBQAEiAYuU6s0noO7EY7" - }, - "address": "noble1c362wx6uzfuncgm4t0rex675pzxq7nmpe2hwk9", - "percent": "0.04%", - "airdrop": 117968.67314550784 - }, - { - "total_amount": 24804958451, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzBOt8+wBwhXyp4M3VtDg2F8d9WOy7/HVTKQWTl3S7qi" - }, - "address": "noble1c36e80c032d3s5w5nl0zwcuuvzplyq4cfsfysw", - "percent": "0.15%", - "airdrop": 435717.5007414941 - }, - { - "total_amount": 151430245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az0OBja36WpC/gmkHtHGYsZxG60cdjVxywO7MYJJuVR0" - }, - "address": "noble1c372mc5c4gtsklcpcfr723fhycxfs7hhrlt93s", - "percent": "0.0%", - "airdrop": 2659.9846163182006 - }, - { - "total_amount": 109082048, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar2/NsHa5cRyBJmDQ1AcqCZbU6tRl6yTVSrSCeoF+r66" - }, - "address": "noble1cjt2ggmaxn7hvuey2lx362p2pr0s8zqa26xysm", - "percent": "0.0%", - "airdrop": 1916.1071131892015 - }, - { - "total_amount": 1027948131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBBSnC8r0JzgkJbFmXC4lIKp3QHuqrcs2c3y5yFiaZT" - }, - "address": "noble1cjjy53yuarrck4z84ka2qme4stycjmje3nzyyu", - "percent": "0.01%", - "airdrop": 18056.671669738407 - }, - { - "total_amount": 1562817475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0k2MV6ix4QaDrBgWMKO+9L8EFinGmh5c2rmNvu6MJlw" - }, - "address": "noble1cjmdffwjh6n8nt9hc2kkv0p8ppxx26zajy23nd", - "percent": "0.01%", - "airdrop": 27452.04857598463 - }, - { - "total_amount": 449095441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8zIao8DaCxmlWe+ysDHuU8X20syirkqlvcIUDI+ctOU" - }, - "address": "noble1cj7amyjf4znx0jj7ydxayasufl8jvlrnatqc9h", - "percent": "0.0%", - "airdrop": 7888.694654879797 - }, - { - "total_amount": 1855010000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3xo+6NktMYhjC7ovjFHXl6FRpJEAZJO+fm4guHvV03M" - }, - "address": "noble1cnzdfs884uww50z3q4tnavdkw7mh60u5j04mgq", - "percent": "0.01%", - "airdrop": 32584.62708764966 - }, - { - "total_amount": 10259290405, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+bBylIga0TKrYkIr+U+SgUlWLLb1OxIacTxzulr0BGP" - }, - "address": "noble1cn9rt739qhxwtlq23khrvzpe783582ue66strw", - "percent": "0.06%", - "airdrop": 180212.04846918737 - }, - { - "total_amount": 99769823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A28rlpTeFAvAeUjzvVJK27VnTdyWqu2FB7wn1OElWeD3" - }, - "address": "noble1cnxv8ygvrjwzkxg7mpdrg8fpqv808ry6kmpmje", - "percent": "0.0%", - "airdrop": 1752.5309712916978 - }, - { - "total_amount": 1674474876, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au0tHeN/N+FTwmKXTMeCjHhKYLKnbh6h8hKlR6tcd5GM" - }, - "address": "noble1cn8xtx7jdnhssp477kt3y2882839ws64yl5d3s", - "percent": "0.01%", - "airdrop": 29413.393675558844 - }, - { - "total_amount": 231567735, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwHQfulsJNBbSEuIojYrdoJ7QloTLFgsbO/0q1FojGWf" - }, - "address": "noble1c5zre8yzq4s5c5htqffjkf6puf2mmlflj0taq2", - "percent": "0.0%", - "airdrop": 4067.6590910597133 - }, - { - "total_amount": 1570987445, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYB60CAmMt1AinyYKxsDO7Tfz+1JJ56dZ4LtHd008yP" - }, - "address": "noble1c5jxjj3vey7nv2fhf37668z3pt3qqdgzu7fad9", - "percent": "0.01%", - "airdrop": 27595.56016124147 - }, - { - "total_amount": 63348202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3WK5aqeNWv3rSPWIPONzxPaJeEnP+YKvRuk4QXIhGQU" - }, - "address": "noble1c57dvwf4sf5dwgqsnz6l6307eua8n9f63s7qra", - "percent": "0.0%", - "airdrop": 1112.7581731867228 - }, - { - "total_amount": 289752815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avo1eC/xDPX8vFV6lT45ZZt2uIcm9dC5/f+JxmtKhhWl" - }, - "address": "noble1c497zfps8ljk0jhjhnj27d0kw7mne0ua5jpred", - "percent": "0.0%", - "airdrop": 5089.723195223606 - }, - { - "total_amount": 59186106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwdYs8WcSIymu12L9omQmJFBDG30ql2i3vRqSA1OCD2J" - }, - "address": "noble1c4xwmzwdjljzr4s6s825wdx5haswhw8s7d6pwh", - "percent": "0.0%", - "airdrop": 1039.6478686261014 - }, - { - "total_amount": 311581416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNoICh14ekyCA37p9HFOViX1pEfA8xB2d4x+kBeDmoC" - }, - "address": "noble1c4f37lt3dzrrgy6dccmcu9amnudg2aethdhfye", - "percent": "0.0%", - "airdrop": 5473.158768848598 - }, - { - "total_amount": 155935386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtakAKa+eM7J06xjDF10XjwGkRVbUKu2ldFxqSxg4H0f" - }, - "address": "noble1c4sc3g26en4r8qldje4my7nz7fmjc6a8z9jyfh", - "percent": "0.0%", - "airdrop": 2739.1207608469526 - }, - { - "total_amount": 2990125552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Un5ts3acyKOsb3yjtNriOfOncBJZ0gYTVPEykbRtAB" - }, - "address": "noble1c4j287uc3enz9c6d99jpjrsevh5twmgclssmnz", - "percent": "0.02%", - "airdrop": 52523.774026648156 - }, - { - "total_amount": 10276338996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/m3vqh5vznTA7rMYbAJwdZenZHu6hZEWe+XYdailvxE" - }, - "address": "noble1c4uu90ummt06fknuxxjfu4xt7rz59585ducs3z", - "percent": "0.06%", - "airdrop": 180511.51962034282 - }, - { - "total_amount": 128798169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9z4chp5TVbKAn7speXBrjk+rJOqNWdvrvctGlrVCMXq" - }, - "address": "noble1c4ltprtwpkz6h2hefy7753ervd77zyl5nl9cjg", - "percent": "0.0%", - "airdrop": 2262.435408130996 - }, - { - "total_amount": 57439601, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgXZrIhvE6ugfbfih96OfE/rX140bzgv7oIZ8m/5eep9" - }, - "address": "noble1ckgqk0nfqaqs32rv4akjqkcl9754ylwrkg30ht", - "percent": "0.0%", - "airdrop": 1008.9692123753449 - }, - { - "total_amount": 88950142, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7t/mvnQjJo+fZf2t7Uv6cxZF6fJ31rqCEZ/M0+aX/hU" - }, - "address": "noble1ckdy0jxek92rq4r9n54qcgdslhcc7pdyyhvpk0", - "percent": "0.0%", - "airdrop": 1562.4752462054028 - }, - { - "total_amount": 158762415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqvoWLO7SiFXgVWHo+5yKn5Ti7rOHyYaxszACzQoR4XT" - }, - "address": "noble1ck38h6yme77x9j7g5x00l9kqwy6w5mmqp5r5p0", - "percent": "0.0%", - "airdrop": 2788.779622918301 - }, - { - "total_amount": 121074793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhdC2GQUMQLOzjd0UvIP5ubzz2vuhd/NLlrZZrGa0RIz" - }, - "address": "noble1ckmdermeu9kk7eknjxz2lcp46yaycygqx7ejet", - "percent": "0.0%", - "airdrop": 2126.7685778617774 - }, - { - "total_amount": 295270942, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A94fTsp3pcBSzlnV31sRKaSI2UAsrbtlGSGAtIuWLwOk" - }, - "address": "noble1ckl50svdauq72s7cqkxx03eky3gucplty80syz", - "percent": "0.0%", - "airdrop": 5186.653190489018 - }, - { - "total_amount": 144203209, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap8L5eGHPkk8AA0Z14OolYdSlXkh4vIkTchLhBxvTxhN" - }, - "address": "noble1chqhdqr450944avr870lnqtmv280y2vdhm6xx4", - "percent": "0.0%", - "airdrop": 2533.0363664386746 - }, - { - "total_amount": 113226480, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A72HHSoh0zADujXuiEzIK3WMQx2N+EZsDD2bjnKJd8wx" - }, - "address": "noble1chp9gs8vcctn6cdd8fuquvzqljtptksggycwqq", - "percent": "0.0%", - "airdrop": 1988.9071364829424 - }, - { - "total_amount": 160823318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az7/cilRz496iB2mwfmSCfk2bA3+XPtwO3qddorzSKvW" - }, - "address": "noble1chy8rhtdz9mdlmwk94h2uz3fq8phtrmv7te4ul", - "percent": "0.0%", - "airdrop": 2824.980913325802 - }, - { - "total_amount": 341691862, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5KGkuFSYfnlzbm1qlZP1NxP33zm/u6GVb+i/rfegzHC" - }, - "address": "noble1cc2y02dlxwth8vs6n73fkwzsywt934qmhjgwdf", - "percent": "0.0%", - "airdrop": 6002.071095117897 - }, - { - "total_amount": 55954077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag+x/l2qo43qw5U8xgNUIoMr2AGXjBTLcqvJu5EDc10+" - }, - "address": "noble1ccjxcmrs8eh4nj5smr4rsgrm97a0y8fzvjc47a", - "percent": "0.0%", - "airdrop": 982.8748810403366 - }, - { - "total_amount": 65275485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5JR3Y9bD21daSLMonMlCRmSf01yRgQSqO68cHP2MC8k" - }, - "address": "noble1cc60luemvme62w0mcpkdf93sjz2zcplywyax0d", - "percent": "0.0%", - "airdrop": 1146.6123291467266 - }, - { - "total_amount": 685723758, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyuNkMJzv/cNx/RmEuNmMglsghqrgpbnOMaj5F9ifOXt" - }, - "address": "noble1ce2l4tf0fcxsm82zrhca0udv642nrxceaxvddh", - "percent": "0.0%", - "airdrop": 12045.246623776542 - }, - { - "total_amount": 86549544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aujz8YTckHIEods/Quorv+1QNHNMfBTt/EQbqQaIRqk8" - }, - "address": "noble1cev6jd22r63n8ws3pw4q0cgqkx9eqv20gjtu38", - "percent": "0.0%", - "airdrop": 1520.306961065507 - }, - { - "total_amount": 173057275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avx2FhaFsTOCVJCjyKMn/63zMrbEghwatc5G55i9PJZO" - }, - "address": "noble1ced2nh9q4p5nazk4uxa4xhl7qruhwugzt3vju3", - "percent": "0.0%", - "airdrop": 3039.8794457603126 - }, - { - "total_amount": 661405367, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av1hw9ri17o6EfyAaM6FkR9tl/hFwqv+StYDXtQYMRNi" - }, - "address": "noble1cejsaan8zrn3tm9g2aw7pl7zrk4ytx0m6zd35s", - "percent": "0.0%", - "airdrop": 11618.076041350218 - }, - { - "total_amount": 90015414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AggqQGG2QIlnjN+vAon1E4RopMidEZBQY8xOm+jpE4gb" - }, - "address": "noble1ceamzpr8v3kpn3tau5rzwag5475dal47z6wamc", - "percent": "0.0%", - "airdrop": 1581.187539328844 - }, - { - "total_amount": 291230646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agv4twVWG4fWWfglAmeyJ0EFb9HWKUgif3DXYpETMPeW" - }, - "address": "noble1c692qsaemdlkchcu3ej32xdq6jz8al00ejtf28", - "percent": "0.0%", - "airdrop": 5115.682393305324 - }, - { - "total_amount": 93034582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTTB17aJVkI2dHFvZ6v3DAb3t2ybX/uo/82xOO8Ez8F" - }, - "address": "noble1c6d9327uywwwc46kw6esskyufcws375wp8dn6f", - "percent": "0.0%", - "airdrop": 1634.2214655044252 - }, - { - "total_amount": 136583027, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxMmmmJ3kXx51qF10Jq/IKXgjZvLla1D49tJUEHZuvnp" - }, - "address": "noble1c6dmcevhn88uknchw6x03nl3226el6nj2tpzqd", - "percent": "0.0%", - "airdrop": 2399.1822153505295 - }, - { - "total_amount": 386963503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqTq8+ZrudXBRf8jhg6GGQ6fdRZlsdni/ZTKtPyH5CWb" - }, - "address": "noble1c63afacux8jrv3mwgnav6xnnmqwtm3v7yg0cpt", - "percent": "0.0%", - "airdrop": 6797.301061334225 - }, - { - "total_amount": 542346057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+OvAI94tzB4sdxXBpvqFTeQ9IQ9sN/xNvGVFNfySPKx" - }, - "address": "noble1c6mmdchfhsh2wh0386fk4k6jr98uz0wnf2dr5k", - "percent": "0.0%", - "airdrop": 9526.710917893806 - }, - { - "total_amount": 1641879244, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+9I/QBH+l3H9mVOAzjxM3PrXsbM7RjkUFjT3Xo3DK17" - }, - "address": "noble1cmrwzv2fa5fs587gmhh772j7j5nnqqgxvsda3k", - "percent": "0.01%", - "airdrop": 28840.82721316443 - }, - { - "total_amount": 114914378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApjnKcpeLQZknIgjlZ91E1K12cPMSH6BfSUMpDG3bTPh" - }, - "address": "noble1cm3fg3276mtuvqpcn2q9jesn9q69tzcf8jrqvm", - "percent": "0.0%", - "airdrop": 2018.5563172916657 - }, - { - "total_amount": 232444151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6G9+UrHHMcSFUYtvfrTWhk9dg48aBkNpJS9GXJl+I4l" - }, - "address": "noble1cmjr9zjch6yyjnzaz5sgr90t3ftauqkqa02s4k", - "percent": "0.0%", - "airdrop": 4083.053988409943 - }, - { - "total_amount": 167593185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmvJ9k3tGrEd3SKeQByt3M+3/thfukXBb+kgio/x8eYY" - }, - "address": "noble1cmk6j07uhgcv83g46n9d6p04vmj79p9n3x56pv", - "percent": "0.0%", - "airdrop": 2943.8986504959444 - }, - { - "total_amount": 83777652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkMDNsTvKtNH7s6ETJy+QZjg+kiWcUBa1uBVeVZOH1sB" - }, - "address": "noble1cmeu8nw95hyfcxm5hn25vpcu3q0rmx46f6zhcv", - "percent": "0.0%", - "airdrop": 1471.6166213114145 - }, - { - "total_amount": 2019013937, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax0daJISoOY6Nw3dJO8PIUET1GSP3CUQGl+jMzPTDvHS" - }, - "address": "noble1cma7ghjj45n5r09wf3qcc4nj4jxj5v4x6phcff", - "percent": "0.01%", - "airdrop": 35465.47793376445 - }, - { - "total_amount": 55000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmcKQgLFFtgJzXWIVui/sg6wizvuKCCZxI6mY/VLQdDu" - }, - "address": "noble1curvy76u6gtq7x90sh3h4rzln5qz40l0uk90yp", - "percent": "0.0%", - "airdrop": 966.1158105997981 - }, - { - "total_amount": 438833085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzzyV35fl36qlArN7g0rirrVA5tmIwB+3/3rXEKAurDz" - }, - "address": "noble1curlnq59a6hhn63y2lhpcvfaz8kmwmhn3waekp", - "percent": "0.0%", - "airdrop": 7708.428756959729 - }, - { - "total_amount": 793477226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqJyTE6AqiTXRgKMXdvt7mXjA2f+aig09QazsdlAyGdk" - }, - "address": "noble1cu8yqx75ywdhsqu7x9cquc089ylfrpfwyw40sv", - "percent": "0.0%", - "airdrop": 13938.016243444894 - }, - { - "total_amount": 1166020245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0kBeKuSBd06tPEN5HssPFY7N2M57xXQhuUFd5DtnUIo" - }, - "address": "noble1cu89smpf8cmlctxz5y5eud6qhpsp308c4044gq", - "percent": "0.01%", - "airdrop": 20482.01080316273 - }, - { - "total_amount": 99843985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0+iuYhmAUD4uhTMN4hKQDJ3QXfqSB8z/7npUxtSC4WX" - }, - "address": "noble1cutym229kh5j8uxe9tyr5xldq750cwdg77ctht", - "percent": "0.0%", - "airdrop": 1753.8336818507105 - }, - { - "total_amount": 167924583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AudKFkbSYv+AsR4cz/uSSOcD+rPe5n4hPfoj5TwXFDQp" - }, - "address": "noble1cuwcxtjmhfmy5kncxg78lu0fs6yljvdh30cla8", - "percent": "0.0%", - "airdrop": 2949.7199022668738 - }, - { - "total_amount": 1014758903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0w2UnQEF6jGF/sBN17iqMSbb1qc/L50eF1Zo7k+VAmb" - }, - "address": "noble1cus4l0uevv9duzg8nw3z5ve078gx4k7tmfjt45", - "percent": "0.01%", - "airdrop": 17824.9930933674 - }, - { - "total_amount": 1066666888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AppUv1x4qbJej9j9DY6PcFea2jXaiTwQSbNkuuIH5JwF" - }, - "address": "noble1cuja32fg0y6h8vxw4s3dsdytvudl2r4ukcjerg", - "percent": "0.01%", - "airdrop": 18736.795366183345 - }, - { - "total_amount": 548458433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9RitHw/xOGa+Y1GK47MnBp5v5/fgQJU0kFYJJWjN388" - }, - "address": "noble1cuh9jn090ca3yzwc2cgdr25r8r0fn230zxxazl", - "percent": "0.0%", - "airdrop": 9634.079337783454 - }, - { - "total_amount": 337051338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8WJqT5miAZI+ZLbpi2BVnBMDNTprvf9DJ5Yho0/9PZW" - }, - "address": "noble1cuhvp37mv5g9m8kfzxmtupstfuv4a57520tqt2", - "percent": "0.0%", - "airdrop": 5920.556847738482 - }, - { - "total_amount": 20461557274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al7tLPjKA/Aw5bnpJUCDRyncSTyrMx/4YHdCmzn9vQmV" - }, - "address": "noble1cag3lh2x35m5e9qdphmfdgc0p93g6mss9r645a", - "percent": "0.12%", - "airdrop": 359422.4362164492 - }, - { - "total_amount": 127726907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An4aOHVwZQvLIuMr3S3wNC926Biqwd0sya33PijOyAfk" - }, - "address": "noble1ca0enh7w6xzxjdgpvwrz5qavsan2fdx7xd6gfa", - "percent": "0.0%", - "airdrop": 2243.6178962129093 - }, - { - "total_amount": 256888139, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2nW7Q0UYVTqWwDoQALR0Jt0fXQHl8/dsZHKU6cyhhbO" - }, - "address": "noble1ca5437px5grlre0smkq0qsppank6vzcq0ng3cf", - "percent": "0.0%", - "airdrop": 4512.430775335611 - }, - { - "total_amount": 281882011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3CnP+Hyv94/pAiprakY4vDkfGDQCFWSF2V58FGMdve4" - }, - "address": "noble1cak92aj8d4nwfy0ku8wd2khgrzyu3j6ds7zkkd", - "percent": "0.0%", - "airdrop": 4951.466682741204 - }, - { - "total_amount": 262199338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsbBoLf3+bbs8ie0LKSyZfgPj3qvl47VHqS2xpNGobRZ" - }, - "address": "noble1c7fs8ucwm9fjmmn4xsd52kquzf2l3qwwh3su37", - "percent": "0.0%", - "airdrop": 4605.7259267381905 - }, - { - "total_amount": 505860479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A99wsvqH3KeFEpJD4rUlfqtvvCz6JhX+ckD1en1F9SNh" - }, - "address": "noble1c70ea3cleclsa0kl5kqp6gxe52d9nk28gsq0sv", - "percent": "0.0%", - "airdrop": 8885.814667627039 - }, - { - "total_amount": 306886868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9/MNopPxMd+wwb0RLNzdW1TqVF4Ay9SvyI4y6qWZaS" - }, - "address": "noble1c70m7ssk4qqxd094px2p29y4g7666l52zfn030", - "percent": "0.0%", - "airdrop": 5390.695549822786 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArynPAF3HEUqJfnUCtqJWfspFAd2JYEAxUskYPbkzubv" - }, - "address": "noble1c7jtpq5dsc6wc8d8exumy837un4xzunccnwwrx", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 162000500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AweZO8ARIssv/HZMlO38y2IbIxkYU2ov1oXJqvzBmgO1" - }, - "address": "noble1c7kplry9aytyhg3xyfq0yquwmeshkny0ejn57f", - "percent": "0.0%", - "airdrop": 2845.6589886376833 - }, - { - "total_amount": 82169346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyG8WjeWMy1I0ae3qU8TGuh10YzZYOO0fvEWahTyNMVP" - }, - "address": "noble1c7e85p78ygwl6g4mqu58jknd36w8hf2z8f7phc", - "percent": "0.0%", - "airdrop": 1443.365533040823 - }, - { - "total_amount": 58010754, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsIf5b9NeHXbEoQ25dBOFWmbcu01TKbLm3DR8qi4x5Sk" - }, - "address": "noble1c7l0hxrxjnzqysuxv5mg2m6fem65s8hpl85yd5", - "percent": "0.0%", - "airdrop": 1019.0019386220996 - }, - { - "total_amount": 72583172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai8PGHV/npM/vrLcyS1ejozffY66b56XrWH9pBK8rRWK" - }, - "address": "noble1clxhlf5nteg0wsdxhkuxm8ssse0w25upa3xu2l", - "percent": "0.0%", - "airdrop": 1274.977273685174 - }, - { - "total_amount": 349708481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6v0GM5kCTp7mOIofbpHA5dD6n/0edX8O59eUZtE+yE" - }, - "address": "noble1cln4lrekdzpk9kvxh5sr4pdgtwvxe0xsvqfyrp", - "percent": "0.0%", - "airdrop": 6142.8889562716195 - }, - { - "total_amount": 1388825160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4DHXIL4fe0DVq7xDGBxt8k1SuGJe/+A/y0mtZRlrIp" - }, - "address": "noble1cln6zhnlga367ryuhmu669lg8e3hd6vkdusmg2", - "percent": "0.01%", - "airdrop": 24395.744458814443 - }, - { - "total_amount": 103231992, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxnJ7GU9SGD5MFzMuqkmW8ZEUcj+9D6sRuJFcvQT24yq" - }, - "address": "noble1clhy0xgqrq7njmfpzhl0g4p489wcw2waa72ls6", - "percent": "0.0%", - "airdrop": 1813.346538743852 - }, - { - "total_amount": 193879921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/LGNWXAt4jmrtwsnzRBAQ4+2jPmXpBkokBCBpLhjsq1" - }, - "address": "noble1cl6kj4mms5qjluurvma7n8kkdpll0h5v6qzd0e", - "percent": "0.0%", - "airdrop": 3405.6446733807243 - }, - { - "total_amount": 10000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7AJ2GNJ1bbkfI9qoHk93vkjD9LFCQFfzPNJsthK3otN" - }, - "address": "noble1clad8whpxm8w39tsvn8yvkhcky6h2rnkskm295", - "percent": "0.06%", - "airdrop": 175657.4201090542 - }, - { - "total_amount": 4000773821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArsDu8fDLJHSYrN3U4vpDnfaLBPQdbMwoJdO2x1DR0m+" - }, - "address": "noble1cla783cj49r5lm6z429esq4ttsxy7jhr3l48p8", - "percent": "0.02%", - "airdrop": 70276.5607836703 - }, - { - "total_amount": 305637270, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiT2tBzEmwK3hpJSxMAoQOP0XUlcHKi2AJBmVZoxdIQj" - }, - "address": "noble1cl7vwalku6auxe6yz34l3tkap7hh5gvp2njevu", - "percent": "0.0%", - "airdrop": 5368.745433737443 - }, - { - "total_amount": 50098386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7nPHQCaZ0dJexogqh64zrjLkf9ODysj4S2HmIdCaxC9" - }, - "address": "noble1eqr3a2ea2e0327eqj03haczvw07szhzvn5zgvu", - "percent": "0.0%", - "airdrop": 880.015323638756 - }, - { - "total_amount": 99159808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Air8QEKvUpOsKmUcPmg2lRxjiiX/ff8vTBz4MNnH7beQ" - }, - "address": "noble1eqguc70h59kfxyh7zj3uxt5u5arjj7a5pmme4f", - "percent": "0.0%", - "airdrop": 1741.8156051789153 - }, - { - "total_amount": 103876249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av9QtpDOpL/Z93Qo4xXMxuQfPE7yBzVJPs7rIRmrJkU+" - }, - "address": "noble1eq3e9fz8hyharh8pesrxa0uh85r9qfykw8unqs", - "percent": "0.0%", - "airdrop": 1824.6633909945722 - }, - { - "total_amount": 2044753269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsmTkxNsxilU2WXBx87qYq7pOGM4zVkXskFxzwVgxCko" - }, - "address": "noble1eqntnl6tzcj9h86psg4y4h6hh05g2h9nhs9agl", - "percent": "0.01%", - "airdrop": 35917.608399209494 - }, - { - "total_amount": 59886890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkMmvtlUCqjibc2Xz3oV1AamJQYSlR7lb6ilQGvRvn89" - }, - "address": "noble1eqhyl8zpcdwvlw4eu4sjjlq09zz9ta54x26j2k", - "percent": "0.0%", - "airdrop": 1051.9576595754718 - }, - { - "total_amount": 58354259, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuSVzWPthuWQYl6R6hRg+/Wn90TyQy2+d2emm5Yto+Fz" - }, - "address": "noble1eqhh0vghyq86uyq6e62l27euke6nyhdqnth8p6", - "percent": "0.0%", - "airdrop": 1025.0358588315557 - }, - { - "total_amount": 60471821, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6LPJQ6Gg3Qt0ZSC3AKNXi1bu3I9vWV7njIDLsvW2DAs" - }, - "address": "noble1epqp90zqx2qcpah452n59qh2z2hnz8hp99gdhh", - "percent": "0.0%", - "airdrop": 1062.2324066156525 - }, - { - "total_amount": 188420975, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A77dX0nuH+dtiS+XmdjiGmhgb1M8GsoXtSAiP+DBGdLj" - }, - "address": "noble1epv7y645rs5zt3a99amg406jpfn5qw28m3ssdf", - "percent": "0.0%", - "airdrop": 3309.75423629326 - }, - { - "total_amount": 727302200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiSL9tstfo8b+g8CyX7aRAXbQ6llGSl6S75RHbjQtscF" - }, - "address": "noble1epwr2jn409560yz0qca7xakklzzgs07kh739dx", - "percent": "0.0%", - "airdrop": 12775.602809163936 - }, - { - "total_amount": 52402187, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnvlSPkYCwXDiuF2Jc/1xeMt2rdDhmqD3ZqpmkclEsRz" - }, - "address": "noble1eps0htr0mvmddper4f77kqqutfm7y3rthghklj", - "percent": "0.0%", - "airdrop": 920.4832976492219 - }, - { - "total_amount": 10606375774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmY41SH0MGZ3RG1hD6Nz5bSd+T3Bjg+7wieHfo8eSLLr" - }, - "address": "noble1ep3hx50khntrqdyxn5xvqsjznf7ddwd6gs2683", - "percent": "0.06%", - "airdrop": 186308.8605168013 - }, - { - "total_amount": 3090536460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlY2EzHKJ3SO0FKlD+cKloP9NlM+/Id/YBLVfSXxLrCm" - }, - "address": "noble1epn3j539fmktyppz0klkhf2he7snqkdydpdqxv", - "percent": "0.02%", - "airdrop": 54287.56613165692 - }, - { - "total_amount": 1344041857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7iXmEaWsFJ1qC+JteEdvYyZ4lKdYTXtpDFgCVMaYGyC" - }, - "address": "noble1epcva7623srj2h0tvk9c2wjznnynqvgr6q4990", - "percent": "0.01%", - "airdrop": 23609.092511920233 - }, - { - "total_amount": 50659691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0lUKzS/yE366g11fSQmfjazxG5d9GrqaRHaAkfwIkTB" - }, - "address": "noble1ep7uyf6skkk8z54v4zutqtdeulrvn3dwn5lsp5", - "percent": "0.0%", - "airdrop": 889.8750624581872 - }, - { - "total_amount": 4979300000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A07ZBlOtexLaGyVRqHNJKpuTCdDPEXVI0pvszhx60NRK" - }, - "address": "noble1eplpu4nyjmq8llygfv9yqfhzk0swegxnvwsq24", - "percent": "0.03%", - "airdrop": 87465.09919490136 - }, - { - "total_amount": 17273763763, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag/jkIOpu+6Qsx7r6y/uU8MhdvPehWkxndJq0d1VxTIf" - }, - "address": "noble1ezqrqe5qe0gdte9zzgn4tzax6crcr4ujad09uc", - "percent": "0.1%", - "airdrop": 303426.47781818477 - }, - { - "total_amount": 140501002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqiAvwGE2GQS7kuU3e3QQG7mpGK5Bdi1oiLGGnRjIJXb" - }, - "address": "noble1ezsxrmtfyvyd3kexklx8h3w7cx0w2nmct7ettu", - "percent": "0.0%", - "airdrop": 2468.0043534057063 - }, - { - "total_amount": 111771689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avgfw8jBd2nP4ff8TpOX7Y+oj86Cj3zYg94krHP0HZeE" - }, - "address": "noble1ezsfl2pla4cd6caqdrexvwcf36hpqppj60ffdd", - "percent": "0.0%", - "airdrop": 1963.352653097155 - }, - { - "total_amount": 50425445, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9MXxBhgQN/5UQfLFbUat+da+Uhu3aIMfyW0zwl55KTy" - }, - "address": "noble1ezjhugkavgqqc0dsdsms22wzv4sxd0q6gztkht", - "percent": "0.0%", - "airdrop": 885.7603576551006 - }, - { - "total_amount": 2342574337, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArtGUH6zCjRLYo9ChVFbdWba8MZVAHTXfZtQL4Cud1p2" - }, - "address": "noble1eze2y03x4dddr7a9dam2rndfjshgdpdfsxtsyr", - "percent": "0.01%", - "airdrop": 41149.05644510981 - }, - { - "total_amount": 229028123, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2AQWVXXmChQY9RQC022WKD/OZLiX/z7hxI4q2bTJEY1" - }, - "address": "noble1ezlzk8wvjmwg8njg0uualwyr743ft6eammh5kl", - "percent": "0.0%", - "airdrop": 4023.048921859914 - }, - { - "total_amount": 917484918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQe22F6fjltw6HG3RS1MytCTYn8UOKc8DTuVO5yhmY1" - }, - "address": "noble1erqxl5hv55h75z0h00f7hqn0fqr5dmsj5evfpt", - "percent": "0.01%", - "airdrop": 16116.303368484714 - }, - { - "total_amount": 910075671, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6hJDUzHvEItju9qL+4xgIgHsqy8wp1QKysErLoC3V6Z" - }, - "address": "noble1ertz50lt0gwv9n7s32gxehg2jl4ahwx5tgmhkk", - "percent": "0.01%", - "airdrop": 15986.15444718764 - }, - { - "total_amount": 936439073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A74dWGmlV0Uezb1521arDXGI8wiqfzROH9FpL747o6tr" - }, - "address": "noble1ersjadtgr9g6gcj3dyzl7hdnnfucjfggu5pzmu", - "percent": "0.01%", - "airdrop": 16449.247165249428 - }, - { - "total_amount": 100440925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9s6wbPWn70ZKbMUMGQoJ8TioIjpCrHkBT6ANAykz7Xs" - }, - "address": "noble1ern6d2aw6g7cvmhzvxg4hy8hpp3dszl28sru29", - "percent": "0.0%", - "airdrop": 1764.3193758867003 - }, - { - "total_amount": 142132051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A93HdF5sbnuTBsrEcBK4GEmnVX18XNc0bZqbOX3/7KUo" - }, - "address": "noble1eyr9hrln0s3rw3hkyr8rwxqzxs2766rp74qpzj", - "percent": "0.0%", - "airdrop": 2496.6549393468517 - }, - { - "total_amount": 1281375544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah73Bd2ehSAaH+CC1/wnXbeFNLj+7PRMYNT1fdeAGnQf" - }, - "address": "noble1eytn5d8r9vd5pzujveqfudwzgyap9saq90dpwl", - "percent": "0.01%", - "airdrop": 22508.31222498759 - }, - { - "total_amount": 5127249358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aprvl2iRNWgkQ6xlkMT07+wg/8zfH7w7C5aiUmIOxIBj" - }, - "address": "noble1eydfjs6zl4rlrhk66z4lmrswat6dyv72msmjyn", - "percent": "0.03%", - "airdrop": 90063.93944820845 - }, - { - "total_amount": 223025466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al++Kx2Eq9pz+s5r0Smm4wYes/6+pmWV3c459bPfi99O" - }, - "address": "noble1eyckz279tylrh5f7dnhu9q64nts7xx6umzggyd", - "percent": "0.0%", - "airdrop": 3917.607797617958 - }, - { - "total_amount": 202827479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoWxkNC7Pgduw2au3xf7HSZMJjjmOUpb3mhnTORLneVP" - }, - "address": "noble1ey6kutj700kleklrxyts0v3lauv0u3ddq9hzq7", - "percent": "0.0%", - "airdrop": 3562.8151688363364 - }, - { - "total_amount": 389500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap7jwAoV1CeCqwxV0Vitd0gSCDj1ePgPKYrAY7H8qeie" - }, - "address": "noble1ey7yts68d0f6gc68x773xpx4x2ksza8rez0jrt", - "percent": "0.0%", - "airdrop": 6841.856513247661 - }, - { - "total_amount": 112973978, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHG7fz8gKcQTelpQ7Y4KSEbVs5ONsBs46gvxDbwSipd" - }, - "address": "noble1eylw5saxhx82ce44euy4gux6cv5aw8hvpkjntk", - "percent": "0.0%", - "airdrop": 1984.4717514937047 - }, - { - "total_amount": 80345162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az+FfPjqbjE6A3CiRkQooaWcKKAN223eJ6iI4R9PO9vQ" - }, - "address": "noble1eyl0dg2wwcvssva4zwva3t3l7nsym3cagkjvsh", - "percent": "0.0%", - "airdrop": 1411.3223875164017 - }, - { - "total_amount": 59944053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuNnHjdVTJ74WaY4yaSsPAy2f3WpjtPz1udxhrMEd6+t" - }, - "address": "noble1e9yxutvnavd5c3qc55n8vr2vhfgxqp0rahcwal", - "percent": "0.0%", - "airdrop": 1052.961770086041 - }, - { - "total_amount": 82315936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6hJyYjXD+ihYQIZImo3mXkt48EzvHxMohq1gPgw3XEZ" - }, - "address": "noble1e92trxh3x2j532unuh7pvlkzwwalfyy67c469x", - "percent": "0.0%", - "airdrop": 1445.9404951622018 - }, - { - "total_amount": 504382572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvS902LVkrkGjJy+La/HlcG28XcIBaGCHH+NbrY12w+S" - }, - "address": "noble1e9ws9uek958g6sd9m4a62pxj6xnal7gf2ns6ex", - "percent": "0.0%", - "airdrop": 8859.854134548928 - }, - { - "total_amount": 1064373753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aje7dGu/x3YevxxVNufDET7ghDbGcmfzSIrtk6xeA8T3" - }, - "address": "noble1e9szxt6r4pje206vmm7hwaeh9vt8n7ulmd78tp", - "percent": "0.01%", - "airdrop": 18696.51474837717 - }, - { - "total_amount": 167246493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgG30acaopna/lRY1Id/jGBT4t7QytVMP3fbR5mEjVmY" - }, - "address": "noble1e9kmrg932jnukv892zgtklmjz4t97cthx6rlxk", - "percent": "0.0%", - "airdrop": 2937.8087482666992 - }, - { - "total_amount": 179034965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Q3Enx9ALurG5hByC0/PwlPHjHT8BevyCC4MnR8S7Ke" - }, - "address": "noble1e9cd7ednqp8a7axy2grc6vpaynwmrj82qzzr4n", - "percent": "0.0%", - "airdrop": 3144.8820061214815 - }, - { - "total_amount": 478802074, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8i66YGT+X41MsUZeujMVwqD9HJ72OYaPXGSnEgt5LL4" - }, - "address": "noble1e9eudqs0qeen3k7edhhzmeukd5m5wk5gxcsvd6", - "percent": "0.0%", - "airdrop": 8410.513706170446 - }, - { - "total_amount": 228864418, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aph7Z1NRTCzV9Eg59VCwf091mQ8sG13qek397E28mdHe" - }, - "address": "noble1e9as76lk72ak44wkffq2xgytfmf878jee3wrqe", - "percent": "0.0%", - "airdrop": 4020.1733220640185 - }, - { - "total_amount": 51073283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtnDGN9A7EPmZfw4U/GToJ3hmTPxKd5wm/18l/XZqmLr" - }, - "address": "noble1ex8d07ggwayyad5mxt4x24fkgyj6ffnc6uqkhm", - "percent": "0.0%", - "airdrop": 897.1401128279616 - }, - { - "total_amount": 508874215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AipSRnIcjskSakLcJHTWheid1+hdT+Zn9jEtJKGab61l" - }, - "address": "noble1exgvw3x5jquuyx3kprltcpprvvfmltuavwfvmc", - "percent": "0.0%", - "airdrop": 8938.753176692016 - }, - { - "total_amount": 143211124, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4z5zNuhL2aHKr3s1M4CdPj78rxHzbAAEzjRfiSKeD4S" - }, - "address": "noble1exv9vd7mf2wme3stntvdnklx9kgph2kt50ug4z", - "percent": "0.0%", - "airdrop": 2515.6096572757856 - }, - { - "total_amount": 98223607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5BWw1ibCqPVbihGTynOs3u6zCSZInMFDLB/ohpMWe2c" - }, - "address": "noble1ex58ltuvruyew8849atkwqxr22nr8jww5dejlz", - "percent": "0.0%", - "airdrop": 1725.3705399425637 - }, - { - "total_amount": 1665383163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqraMD3RnHfD4JpCFIZ2xVykdtwvxHAC1mmes7nJIvtj" - }, - "address": "noble1excz9t598xyh57a5xlc2rh5apjfspwcvx307xf", - "percent": "0.01%", - "airdrop": 29253.690990563646 - }, - { - "total_amount": 55914562066, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8T1AZpP6NJgmARhR7nDSsT/EM9vyNMkJKf/uPle9TIR" - }, - "address": "noble1exm0hmrh0r6lm0vtrekp6w5uzwz3ej3pf53e3y", - "percent": "0.33%", - "airdrop": 982180.7719041148 - }, - { - "total_amount": 2645570070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Hn6Au8uTP92rMbYr/s/PBMt0Sg9ekhYtWo/uyO5mv1" - }, - "address": "noble1exu5eychv6r4saxh5ku5x43g8u4rwparmkssku", - "percent": "0.02%", - "airdrop": 46471.40132139299 - }, - { - "total_amount": 170159966, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/UVhpmFUYZ+9zFwI8Nx8LGPSjisrwg8zHDKrs/xeUez" - }, - "address": "noble1e8qch8fhs5seln80tz42r05q5ltsz0wvnyt7fr", - "percent": "0.0%", - "airdrop": 2988.986063340438 - }, - { - "total_amount": 502838926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0YMWVcplvyCqA75wYcCjWJGAGCAC0Kd7c7OsbyX76oW" - }, - "address": "noble1e8wyxalacleg624fqa4ak06e0737v6cg3g9txc", - "percent": "0.0%", - "airdrop": 8832.738847156763 - }, - { - "total_amount": 204105807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqKN36yo5tsqmjHrjWxkkzfRoGNQNqC3nEzm40lhfNU8" - }, - "address": "noble1e8ssvqrktcsqfhtqc5lae057qz6ev8m6xn2cwt", - "percent": "0.0%", - "airdrop": 3585.269948689653 - }, - { - "total_amount": 1932327295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoHun0Zk92A3aBdYcVKW3NLbbplXDlvEe9kP6d2Y+WjG" - }, - "address": "noble1e8j3prjlqneahq77emk8z66n2vsahz8u7dz65t", - "percent": "0.01%", - "airdrop": 33942.76274460073 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPWRP2Mi/ZWxIsr84CrVFiMz8dLITAlBeQbV8phtUTg" - }, - "address": "noble1e8mpggvydmrylgrtku7qsmyvnjk00kn7p936dp", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 4450552570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ass+n0tXnj7dTnREDSeIuNsqf3xVlJkshjIcG0+jSqX4" - }, - "address": "noble1e8uc0lkm8nh6pfhxlea7jv28q87chmhygamf6h", - "percent": "0.03%", - "airdrop": 78177.25825059209 - }, - { - "total_amount": 141413453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxjpjLXZfmX5Me9EzSZAtkLvWQB7ujD5afRZRM4DV8l8" - }, - "address": "noble1e87cnhulnyfh0fncrmfyvmd3t8ndk6p9nfk3ve", - "percent": "0.0%", - "airdrop": 2484.032232269299 - }, - { - "total_amount": 252982983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoSS5HX7cFdzqm2O0FPPrmV4GF1BWFUYl5RJy/46Gzvy" - }, - "address": "noble1e87lev7kdnmh0dh3ajez72wkwdknh45p93hxac", - "percent": "0.0%", - "airdrop": 4443.833812527272 - }, - { - "total_amount": 199199174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9iTNo377WINKi0KhWLhwn0hm/GMGB74RxbYFjizDcCH" - }, - "address": "noble1e8l8p6nd0fhekf2uxqx3lkcd2wyde3lghgvvl2", - "percent": "0.0%", - "airdrop": 3499.0812992694587 - }, - { - "total_amount": 1088933902, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjgDHuvRjnUnyQF7wiExULqt1raDrIPdahQM1W8rGY2G" - }, - "address": "noble1eg8h46824cjy9x6xdwreaezvsewv0hspxcd85n", - "percent": "0.01%", - "airdrop": 19127.931989460565 - }, - { - "total_amount": 66018775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1dvNujjNmCzUA0CVB0DLEVFvj+Q29YI9LWn1Z8rLBPT" - }, - "address": "noble1egwdped7nt98678fe6tqxfcu5kz4g5u20ejgdf", - "percent": "0.0%", - "airdrop": 1159.6687695260125 - }, - { - "total_amount": 83208567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IHaOSHCRU+gnrX7jHSD+Tj3IkqSqrIvPCDv+sUhE4h" - }, - "address": "noble1eg4q4rjac7sm07qyd5c8nzu4d2njupskxl2tyd", - "percent": "0.0%", - "airdrop": 1461.6202210191384 - }, - { - "total_amount": 513713982, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZIej/kaQ3/EoWoVm21pmJoD9XiQBkothLvjZ1HLN7V" - }, - "address": "noble1egekwuslhnmty5x8w03mc9cw9m8wl6z3tej6pn", - "percent": "0.0%", - "airdrop": 9023.76727520691 - }, - { - "total_amount": 146291136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2QOavww039UPJqScZ7nrQIqAhlIHcGfr7NpiFQUQqbt" - }, - "address": "noble1egurc9ulnjsdxtejrlkw4tqcg200fj03n8ergl", - "percent": "0.0%", - "airdrop": 2569.712353458278 - }, - { - "total_amount": 6034273845, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ZzdVDHWAJzbzseHMVS86Ge6aaUakySwfmwOzn/rMXR" - }, - "address": "noble1efzhxrwdnxvxht0pmtgv6x8n6npv2v4jfyczlj", - "percent": "0.04%", - "airdrop": 105996.49758442429 - }, - { - "total_amount": 4852382453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cchA2xduUPMzQKOI3TtFFjOTeboLTTMb0ZcW5pRejU" - }, - "address": "noble1eff0rr0ptx4hvc3cnwvm5wween82pe4hck6mch", - "percent": "0.03%", - "airdrop": 85235.6983076424 - }, - { - "total_amount": 527833391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7FmQsPqepsw9y33bSDPks0Cggsqckq/wvSC8oJoE+Mc" - }, - "address": "noble1ef22myq4q6wn0d7fjvljlaxd0mp7mtpxjzyxlg", - "percent": "0.0%", - "airdrop": 9271.785171047366 - }, - { - "total_amount": 87295632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AomEY8TFAdN7ZfTEykChEoJJHVy7pCQO3c/7COKu4SmG" - }, - "address": "noble1efjuamymq3harkpyml05dygaagz6twzv3lhf6u", - "percent": "0.0%", - "airdrop": 1533.4125503909395 - }, - { - "total_amount": 356836160, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3f1FhIV35l9keTpL/eLrUo9YB3IODMP+/vZkhHF74kD" - }, - "address": "noble1efe2vaewuack86wzumweunw0844aynq60en773", - "percent": "0.0%", - "airdrop": 6268.091926722168 - }, - { - "total_amount": 3586490000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlezML7MGmZZYQFmT359gvypNd3aftg0N/C7IrVTFgf/" - }, - "address": "noble1efmj8yyj08uae56aks2f6k5ad4hfkf7uctwk7g", - "percent": "0.02%", - "airdrop": 62999.35806469218 - }, - { - "total_amount": 132494387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9AbIH1wlnnMfScO/jC0MtGgPA5lSPB0/u1+NMP3A4Pc" - }, - "address": "noble1e2tzaaqrdmn2r9pz0huzum8lze2qxtktd8k0z0", - "percent": "0.0%", - "airdrop": 2327.362219935061 - }, - { - "total_amount": 192144414, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsIEZ+X1kXmdrLaoo0Bas/4GAHM2lpH71ZuhX0K8JLfa" - }, - "address": "noble1e2ksn2l4s55nvgfstewfcyd4er63eqz8a6qdrg", - "percent": "0.0%", - "airdrop": 3375.1592051606035 - }, - { - "total_amount": 57356703, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag3B7N3+CYq9s/a2GTRzdI3ooVYoXFmihkfo6nrGBqUM" - }, - "address": "noble1e2m5qav5hf9znj93dzr6frd7d4mr2wfw75vdux", - "percent": "0.0%", - "airdrop": 1007.513047494125 - }, - { - "total_amount": 4101809803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4C0Fchhluz+uXJbtdDcxDnEIDwZaYeT+v70stWdmcOc" - }, - "address": "noble1etry692vdstrfx0dhq46e6k4tldzff8kdhw7zp", - "percent": "0.02%", - "airdrop": 72051.33277730078 - }, - { - "total_amount": 97235851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkmVLxRcTlqwsAB2JXPCtpM66hlmY2Fi8sXz/yCnbeDS" - }, - "address": "noble1et9xy0953kgq8nhdfv354du09gjd99554fju9g", - "percent": "0.0%", - "airdrop": 1708.0198728768396 - }, - { - "total_amount": 988807306, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AizxbNiOKRksRk+rVTh3wMttflgM4jPh/HSYnXaQhHbk" - }, - "address": "noble1etx4ch6qauexs3660c7kxzegqy2r03e0wfmp2p", - "percent": "0.01%", - "airdrop": 17369.13403569441 - }, - { - "total_amount": 384181269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+GghpoVrUsQEXZ6X9l4mhrPBFR5AnBI2MTRh2c1HrF2" - }, - "address": "noble1etgdsxx28j3y7s2d0c7qwuvnud836wjw8ue956", - "percent": "0.0%", - "airdrop": 6748.429056676256 - }, - { - "total_amount": 27996568257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8v5523sXd8XKB91GCS4bIMrE3lXfqdiR6FmviZzbEsH" - }, - "address": "noble1etw22v4erc3zg8yqa4w6khj547zy4t5gnp7ctp", - "percent": "0.16%", - "airdrop": 491780.495193166 - }, - { - "total_amount": 195721983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6roTfOcV+6ORzwVN00MEOeHXFflePzWwOsRkFKYRuV8" - }, - "address": "noble1etjhkakk2zxy3ux48r6ketrnxg2rpyaghgnp69", - "percent": "0.0%", - "airdrop": 3438.0018592408164 - }, - { - "total_amount": 284567529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/uLP2rDJQ++Be4POyvbmfui/eq+KjKgAHkBRCF09TlF" - }, - "address": "noble1etltrk88jyye62lynfd8e8zhnu0lxd9unpq5k2", - "percent": "0.0%", - "airdrop": 4998.639799094847 - }, - { - "total_amount": 2003401530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6URVzOA1L40xrh2nbT3PE4ALUQZiQRqzAsFOkZD8Q8k" - }, - "address": "noble1evxfsxeutznuj06apv3jwl8s3k9phz39ysmdve", - "percent": "0.01%", - "airdrop": 35191.234420233195 - }, - { - "total_amount": 50746144, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A08qympwLydMq5S9jBauyx4zyLC58P0MsDvNqzMbb5HP" - }, - "address": "noble1evxh4cxvuh73yy7qqaytywst870gcxzta8ayww", - "percent": "0.0%", - "airdrop": 891.3936735522559 - }, - { - "total_amount": 389007981, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyzxDdxNgCiJ2FtNh5I0Qe7pUYrF3A/kvWjHw9fy3MqC" - }, - "address": "noble1evervak5gpt9w7uy3zk57en4uj90srp7yfjq55", - "percent": "0.0%", - "airdrop": 6833.213834429197 - }, - { - "total_amount": 706878010, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azo0BLTU70Zlu7YyCX3aAaml1BDwAzu6Ozq/rInvVz+/" - }, - "address": "noble1edz0jjwle27syxwr90y9vn40tt2g8wxadepp24", - "percent": "0.0%", - "airdrop": 12416.836756842222 - }, - { - "total_amount": 183910655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQdNT9AwaZyTN3ZG852QTQLWvfQSXzFB7phx+aEH/LK" - }, - "address": "noble1edyvdnflut364w0ghhnntmd7mvrvspgqdryqpv", - "percent": "0.0%", - "airdrop": 3230.527118786633 - }, - { - "total_amount": 18272480994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtCSpVHStk7qL0dFbRzh5RIXMiQkKA1F/qSNb7gRYcwP" - }, - "address": "noble1edd0xjczhk8w9wvent2pelrgt5gst03w2wk8c8", - "percent": "0.11%", - "airdrop": 320969.6870397766 - }, - { - "total_amount": 51857744, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ynkSJg25m3jqNiT851hkEfjK8l3TBcsrtHpX8Db1Uf" - }, - "address": "noble1edss2jrl9krxcxv709lc2tt2nrc849qg5prnsx", - "percent": "0.0%", - "airdrop": 910.9197523715784 - }, - { - "total_amount": 51510779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Any89hwneLy2AOtIZs45O6/rvNGHFfdf2le7KxlV6mi/" - }, - "address": "noble1edsme5gz6uzh4jufcjlm8hyyfv3ymsdd6w8zcq", - "percent": "0.0%", - "airdrop": 904.8250546947646 - }, - { - "total_amount": 739846141, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AusRz7nIMucH+DQ91aX2ZwSz0rZYEBXtT04JF52Gy0Lj" - }, - "address": "noble1edng3equ2g7rxszy6f9rdl2sutsg0gyau30475", - "percent": "0.0%", - "airdrop": 12995.946440569955 - }, - { - "total_amount": 132089550, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3KhD6A29H4lGquGCEI6TeKA9OwWBxpxYaZ6PUxiHjcR" - }, - "address": "noble1ednvcc2vnskayzxcp3xc6unaqj4nfcwmzek26k", - "percent": "0.0%", - "airdrop": 2320.250957636592 - }, - { - "total_amount": 117609627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atyxfx/lHVQ1V3l3z98MUhAIwmTzrXSfFDt8fXkdt2Yv" - }, - "address": "noble1ed5fnjgm52azg335k2t3sh245frthuw52wq2sj", - "percent": "0.0%", - "airdrop": 2065.9003658808165 - }, - { - "total_amount": 144143085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agvo06S+q99mX+OIpWDTpPLvA7b12+AyFx8eyBZDnHil" - }, - "address": "noble1ed5cazupp88j9qju5f887803lmkyfurewfdndl", - "percent": "0.0%", - "airdrop": 2531.9802437660105 - }, - { - "total_amount": 7717826468, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+RGM3pddZ9oaIQ1UT/OcAwo8M+jTDPEoNpophlb+Vdl" - }, - "address": "noble1edczwkqxqw9k50mndqx4xrlkdx7z25sanqreay", - "percent": "0.05%", - "airdrop": 135569.3486218254 - }, - { - "total_amount": 419655245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq5a5Jo5+0vhowccwgaJlhErAu+oAP/s/XyEVQ4cISTz" - }, - "address": "noble1ed6n392vsy3ka6pfqy349c4qhprt97na40ak2e", - "percent": "0.0%", - "airdrop": 7371.555767193307 - }, - { - "total_amount": 88786208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8BdL+dbkMmKhCEWefzlMD6fqQkNiKCyr3hq76xfIhKz" - }, - "address": "noble1edmlmandya3pxn00d5zm5kcj99ju0ngjeca7k9", - "percent": "0.0%", - "airdrop": 1559.5956238545868 - }, - { - "total_amount": 695722358, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqi01lwDHv8SyEU2gg2w3lAcquhOeRQfLbycsgWE3LGh" - }, - "address": "noble1ewyk73er9578gpc65pax8055ptwqnte2spa5tz", - "percent": "0.0%", - "airdrop": 12220.87945184678 - }, - { - "total_amount": 53462472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AscxLgDuIMUFN88rrhwEco+mshjd7o/oy3+04O8HD3nr" - }, - "address": "noble1ew8sx5yfgm3g2suz7gfxp5897upwe4nqqpc6ja", - "percent": "0.0%", - "airdrop": 939.1079904172548 - }, - { - "total_amount": 85138599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/GR7fCzLoiPsEvHjZb/AUq48KxEVdm2ZFbwtClidq4R" - }, - "address": "noble1ewfq37ggvmpulm726s24qzyuz3cphnex56t8w8", - "percent": "0.0%", - "airdrop": 1495.52266520393 - }, - { - "total_amount": 50012191, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At55QGelmMuRulo/nm3X+hGtMN2JK/fHLCIxwHVWq5I2" - }, - "address": "noble1ew28gktmkkakvfxjypk6kyzwxpknwtx4j89839", - "percent": "0.0%", - "airdrop": 878.5012445061259 - }, - { - "total_amount": 56779162, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhhFKoGGA8dq4AH/OIlIOrdVN1KOSI8j1lcsPsrjwL29" - }, - "address": "noble1ewvtxa3ndpj6872twmm2n5uvvrhsknv94rkzwy", - "percent": "0.0%", - "airdrop": 997.3681112874046 - }, - { - "total_amount": 1005234067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0juKEhtCvhGyEkE8xRq/Fp4BTvqftugbWW9G72mynRc" - }, - "address": "noble1ewdttrv2ph7762egx4n2309h3m9r4z9pr8582n", - "percent": "0.01%", - "airdrop": 17657.682281495214 - }, - { - "total_amount": 678159412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajk/TbNWMlU9Bx0wF8eVjRtnt8cBTkDpfUnJWY86oo4U" - }, - "address": "noble1ew6tzsrunpylvd4dyqt4p7kr46tr4uewlj2v6g", - "percent": "0.0%", - "airdrop": 11912.373273459318 - }, - { - "total_amount": 79789174, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai9xcIkHrTB5kf7GkHaVkMKVcSnyLhntwDjRqTNiuL7o" - }, - "address": "noble1ew7vk9wnce5c3fvjf3kpns4cx4yjhyhxzf4dc4", - "percent": "0.0%", - "airdrop": 1401.5560457472425 - }, - { - "total_amount": 640863439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2HtF/h+MKlssDll2mqlg3vgk32kQEMx/cOCVG0Xav2e" - }, - "address": "noble1e0d0daqr34t7kgdumgrlrwf7xye9alqf6fxccf", - "percent": "0.0%", - "airdrop": 11257.241833695623 - }, - { - "total_amount": 50089437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/mda7WAH1ppqolpBhrwYuyTrbwbFZbQji+XkKCvbWqu" - }, - "address": "noble1e0j2eklhymdqm2dv83nhldhwx3k27lcdvtc3c9", - "percent": "0.0%", - "airdrop": 879.8581278135003 - }, - { - "total_amount": 1057070531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Wm18s6CLu3Rsa7e+FIUndA9Y/DvTvLhjb2snTmcEpK" - }, - "address": "noble1e0jmf5edf52mfnwvnqlxwpd8lxm96xqj78fwd3", - "percent": "0.01%", - "airdrop": 18568.2282348768 - }, - { - "total_amount": 132680440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwPc39S9w5yJojQcUDRGfef6E9E0UrqCXXOWlUo+BreT" - }, - "address": "noble1e05v9yvk4tggyu4t7428ueav73e2t4g0rarydf", - "percent": "0.0%", - "airdrop": 2330.630378933416 - }, - { - "total_amount": 292262753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwGomBS53V5UL+M9mTQV6U9b5dxsfEbyFY2C3T3w/zJ0" - }, - "address": "noble1e047g2tpve5z7lmyv6p3n4t60vehf2zppkql30", - "percent": "0.0%", - "airdrop": 5133.812118594974 - }, - { - "total_amount": 255691781, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/ZIL6+VOLm+I4QcoEn2KaREEtHjzOZS3COgs0wvrU1N" - }, - "address": "noble1e0e0s9dmm2jlu4w2dxwk8cjza55pu08r6wh3rz", - "percent": "0.0%", - "airdrop": 4491.415859354928 - }, - { - "total_amount": 1718646669, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArdwRoHTfu3maA3DIcWAtAPLAzlUhzAxCUwGRz4Ds/3X" - }, - "address": "noble1e0mlsr7d6vxd9fg7svzwrmz6ezlajv2y5kpwsx", - "percent": "0.01%", - "airdrop": 30189.30399555596 - }, - { - "total_amount": 104846737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/DDXTCz+qq95yK6gdFU4RNQYH/B+ZKJzEkC4fBZYAPZ" - }, - "address": "noble1e0uflfzpa6ewygp6q7tfzrewwajf68vjd0xr5x", - "percent": "0.0%", - "airdrop": 1841.7107328272516 - }, - { - "total_amount": 80372877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2PfB4sHd93HQayYAw9d7N8aFN1+CPkuvR4x3JP8+/m/" - }, - "address": "noble1es0xrz8j2s96wja39f3rzg2537zlelxmg4kt7g", - "percent": "0.0%", - "airdrop": 1411.809222056234 - }, - { - "total_amount": 1211306478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoNKMXr7U/Ef0twbLybrtnNWc1oPuiCMgzX6u1yPxBsp" - }, - "address": "noble1e32x4v65anckd4j55ut56k0px8s0mfntflml3j", - "percent": "0.01%", - "airdrop": 21277.49708868648 - }, - { - "total_amount": 50057986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwFD4N9iNW4ISXwhdBdQSlh8Vo3P9aLQAB4vjgOiqEpa" - }, - "address": "noble1e3t3ued0mz86s3sdqcjtjxj9cmwtdujfpjl7fw", - "percent": "0.0%", - "airdrop": 879.3056676615154 - }, - { - "total_amount": 214939115, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvN0/slP8Bdx4q9W0M978bTDgRteDNpuxe9npm2UphhL" - }, - "address": "noble1e3wacrqre09v5uytkk0zq4j23v77gqf6xd7zfc", - "percent": "0.0%", - "airdrop": 3775.565042142331 - }, - { - "total_amount": 4560427321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoGJWmFRCfmmbmkR+n+29Luktt7V2B3f+6NjMaaKTs1w" - }, - "address": "noble1e3364k8u0vjv4mepuvdwkef5htuu6p4rez50ut", - "percent": "0.03%", - "airdrop": 80107.28978017055 - }, - { - "total_amount": 8146167015, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNNmeJ/77q5+mE8R3nfhARNZes7V+bbf0U61aJ+Vatk" - }, - "address": "noble1e3nxzrdsg9gx58s04ftwc50wy2r8jlxvvfywtf", - "percent": "0.05%", - "airdrop": 143093.4681632375 - }, - { - "total_amount": 55382537, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Wk6cgLkhxbQ5Tkq+9dQtFp1UnV2Q//fmByIslIM7Uj" - }, - "address": "noble1e37eqdsr946z7kzme7um4evxvmnsgwp632z55m", - "percent": "0.0%", - "airdrop": 972.8353568514239 - }, - { - "total_amount": 227184436, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkikyogvZfn9XLImBT8gdS+0nTkCDQiPgNt1qpw6W6rB" - }, - "address": "noble1eny29hjswzr26tkxa3krvrtc4nxgprsvwlv6kv", - "percent": "0.0%", - "airdrop": 3990.6631916690535 - }, - { - "total_amount": 657445856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjvregjOy5OOYEWhuQRqtYjUmyCnhvjeh9AcgX+ce+qv" - }, - "address": "noble1en06jd649xnl3k4jjq4dazy97tay4a0uf8dz7a", - "percent": "0.0%", - "airdrop": 11548.524292634875 - }, - { - "total_amount": 54354950, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah4qnp4Asi5VAKOPw/91VEWAs8jbys1I20f63Kx5NbOG" - }, - "address": "noble1ens0048gg7sja68nc5awu7wunjd3ewzfrhd6lg", - "percent": "0.0%", - "airdrop": 954.7850287156635 - }, - { - "total_amount": 74637567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0EUqPJqJJCTYGNzeJAG1ex6/moo0aViXxxlTfbDt5U4" - }, - "address": "noble1enk2vnsjdhgl2du9yeevqhplswpuvk8hpfccnt", - "percent": "0.0%", - "airdrop": 1311.0642462436679 - }, - { - "total_amount": 127131706, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmGVIPfTwIARpnqmxlOaTPTMAlWY5pFpjI93qGwAvz3n" - }, - "address": "noble1e5xww3turez8prt7fh2zep7xxr3mmh0t8xc7vd", - "percent": "0.0%", - "airdrop": 2233.1627490022765 - }, - { - "total_amount": 53609107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6s5leD7wS/VQShjaW/Eze4WNU3xL53KqfZ+9bQdAgtc" - }, - "address": "noble1e58d9t6l0e4wz6gupmt6w07d8qx7u8msfnv6t5", - "percent": "0.0%", - "airdrop": 941.6837429970237 - }, - { - "total_amount": 75759476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/D/WEEYvcwyq9cIgl0Z8LxcveGED8V/hZ2mfcXhEeyG" - }, - "address": "noble1e5d08mgkrmwje5sa74usfy4fhp30nasavqwnvz", - "percent": "0.0%", - "airdrop": 1330.771410297381 - }, - { - "total_amount": 345933624, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/+WxP0/3iDbXwPLUQEVYZNT3mVM7ZjipRsWcOaI+TvD" - }, - "address": "noble1e5dhcgtvf64cnl7dep3pj083f8h62g6ksw8wd4", - "percent": "0.0%", - "airdrop": 6076.580792081559 - }, - { - "total_amount": 1004486394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArqsHE98J9OhsWfysZLy2UJhO5T41kOafYYjexH62Rwk" - }, - "address": "noble1e57n2krggdkzka69489sj57dm59w6v6q57645p", - "percent": "0.01%", - "airdrop": 17644.548850468695 - }, - { - "total_amount": 82463800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMTzieQWKfUynTTYqaxdRtmU/WcemyGKLmYDiid0aD4" - }, - "address": "noble1e4qmxzlxnwmr3p6xdm4xesr2e6wq764df79nde", - "percent": "0.0%", - "airdrop": 1448.5378360389022 - }, - { - "total_amount": 2298838545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmQZ8RfSpHm3ge/0K3D/vnIp1HvHJxyT0N9Sjz/QJDdl" - }, - "address": "noble1e49cvjgtf0anp0gpdqhs3tzg24mcgse03k88ad", - "percent": "0.01%", - "airdrop": 40380.804806195185 - }, - { - "total_amount": 54287220987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq1eZFUBTO4iIIYby0IFipdboezd6ufGpH6tL6XRDNEW" - }, - "address": "noble1e4vye322gkjx8n85jgcclnc7nvdvu82atyzftz", - "percent": "0.32%", - "airdrop": 953595.3183466522 - }, - { - "total_amount": 421133751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiVaeJ+xJhQSFGt0eenXLQgDiumFmtX20UWKAfkrMcnX" - }, - "address": "noble1e4szdg39ya0c7xzpqerkcushu9uyhlerq83r0r", - "percent": "0.0%", - "airdrop": 7397.526822150883 - }, - { - "total_amount": 3000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7oulBbre82o0FBuqbm8FO9ZIOLXUxAUJ3ZXdLMzIqnI" - }, - "address": "noble1e4sw3eqsytl7fu954uzl4hzktnw09c22r0gekx", - "percent": "0.02%", - "airdrop": 52697.22603271626 - }, - { - "total_amount": 135739322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar0FQxPzZfQ7MnaIW+8s+EEqJkmwbQTUMTqUV4zzmJ7C" - }, - "address": "noble1e4mdqt8fxt3358v20c7whkt0xprnl5ngy0jcc3", - "percent": "0.0%", - "airdrop": 2384.3619109872184 - }, - { - "total_amount": 70935378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqdyV9+mC9LRjieqdRFgTBka5nr96L/UHzrj7zT0Vn/Z" - }, - "address": "noble1ekhqxv6vpt6rc99hqlnpkcyy8q5fe7e9rx6mka", - "percent": "0.0%", - "airdrop": 1246.032549394056 - }, - { - "total_amount": 72117944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amq35TjHs0oH7VJu7SLDnnAjyhfmYVa836dl1la32SQp" - }, - "address": "noble1ekez2kq0cxqku8kkgcyy6wh6agd9vhu3h3gde7", - "percent": "0.0%", - "airdrop": 1266.8051986609244 - }, - { - "total_amount": 7622702022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuaiAyQ7/WisEii81h/mQFP5CKU7tUYTEtSlR5HN6qhx" - }, - "address": "noble1ek6mxuayf030zaew7a3hcvffke7ey5rhjscf4w", - "percent": "0.04%", - "airdrop": 133898.4171444591 - }, - { - "total_amount": 453508246, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/lsnP5uMQB+KvEytW7R+Z6SHfVnldD+diKHx5E7uxag" - }, - "address": "noble1eh8kmp5g9nxkra7kmahkkngq4futqy34g5m7e8", - "percent": "0.0%", - "airdrop": 7966.20884905423 - }, - { - "total_amount": 212522795, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnOtezptq1XHDg6rWzSkodPJ+DTB4z7CZzmkNsJWBAHY" - }, - "address": "noble1ehgxht05ymwtw46l0vz8dwpryhf47stl8fsgwd", - "percent": "0.0%", - "airdrop": 3733.1205884065403 - }, - { - "total_amount": 250405918, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2KQduVVkPWRMLenzxfGN0Lp3tAuOb/ZfsKn2mUqefRk" - }, - "address": "noble1ehfk2d9jla97j84mw2qr8gh2d0yackvgpxqear", - "percent": "0.0%", - "airdrop": 4398.565753591937 - }, - { - "total_amount": 64643196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmUN56zuMK/TE0aRGDqN/W/4F2XRWIDAt50S5f7JLocF" - }, - "address": "noble1ehdn6fj04hg526s52kpvs7j26ukquz792nh6vy", - "percent": "0.0%", - "airdrop": 1135.505703696393 - }, - { - "total_amount": 221287719, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+e3k9VFDFwDTFBR8KEff9ik3/ggK/YX45WNod6nGSbP" - }, - "address": "noble1eh3r6q04sx46r8r29gl903r90ph08h0pyf8xnw", - "percent": "0.0%", - "airdrop": 3887.0829821357333 - }, - { - "total_amount": 75874663, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqeRyU8ivlPqeL/zaAtgjMsVhaUld0AilQ8uCoX/SDRS" - }, - "address": "noble1eh4cv2060tj0veyut0d8fuqk0ja0ym5pa6fjc9", - "percent": "0.0%", - "airdrop": 1332.794755422391 - }, - { - "total_amount": 122276489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMbjWOyB83n7aJX34a4js3CXBcgDtk0eKg4zh3iWZBT" - }, - "address": "noble1ehmcn2t856kn2ls2kpsr4lj6ev3unxrwpyhtxd", - "percent": "0.0%", - "airdrop": 2147.8772597733146 - }, - { - "total_amount": 238097292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak2iZk4JgfoTDyrKCm1KEXvVei97ffMnQf48kxhqMHFR" - }, - "address": "noble1ecpy7yhlaf7zfrz4zyw97vgduhyxw6xpju63n0", - "percent": "0.0%", - "airdrop": 4182.355604767215 - }, - { - "total_amount": 459082652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4udUo4oIq2/Hj0VmvNBOQHekEG7SctMq5wdL4KSu862" - }, - "address": "noble1eczjynw2d9d8y8uhuf4tdt2hs7nsuwejpnvhs4", - "percent": "0.0%", - "airdrop": 8064.1274267142735 - }, - { - "total_amount": 50191889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7XOi4TUGz+hHRP2irLJv1PIUqoRLc6JyXDc6lN/0RsB" - }, - "address": "noble1ect6xkde6msv8rajpp688wrgcy8mtjglqt5zk8", - "percent": "0.0%", - "airdrop": 881.6577732140016 - }, - { - "total_amount": 1866193422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8DPH6UR9H11JoCOirUARCleSpnxhHSU3Ee+XYl2GvWn" - }, - "address": "noble1ecvvgp7vspxxtzj05t9y3ys3awlxfwe4pnak2w", - "percent": "0.01%", - "airdrop": 32781.07219330075 - }, - { - "total_amount": 325595071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwbTGWarXqyxQcs04uH0dm/NOPTHwEZS/YKIGmFOOuO/" - }, - "address": "noble1eerm0rgs7sjdpn650x9jzskz9h7r8sqle6qgpv", - "percent": "0.0%", - "airdrop": 5719.319017208432 - }, - { - "total_amount": 396502190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A25ohtzJ9oCTvTfe18SLboTl8+UxBaIaybKc9F7hNB9h" - }, - "address": "noble1eerlmgujwpjkfrfq4s7tu0786ztmyak6wvhrs9", - "percent": "0.0%", - "airdrop": 6964.855176299003 - }, - { - "total_amount": 89725800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UV+GrG38owAROmuFppDswwOXEI4ZXLR9PpIlI42CsB" - }, - "address": "noble1eexdsaltq3y4fj9l7l4mt3v5tymskx3ecs0a3p", - "percent": "0.0%", - "airdrop": 1576.1002545220974 - }, - { - "total_amount": 61866984, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+WB6/tsMD0gQmxktBeRM1lQj7PNDDa0ZXgb1/Lo9xg" - }, - "address": "noble1ee36fhzqr3cgku40mj55fguj4v7shs5xjqexux", - "percent": "0.0%", - "airdrop": 1086.7394799368135 - }, - { - "total_amount": 2000245980, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6HTYch0+c1rSKN+CXtksvsA2EAnffBRrqiVtnARAt+4" - }, - "address": "noble1eej6rwd9u5mpy2mqtrehjt62pdh5ucgf850w5z", - "percent": "0.01%", - "airdrop": 35135.80484303068 - }, - { - "total_amount": 187345192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6wcTihlYZps4EhgLR/gXTSZ1qghtD+FjDAXmwY1toKV" - }, - "address": "noble1ee4mxencd7s5dz5t44ny96mlhmt32dg3h395l9", - "percent": "0.0%", - "airdrop": 3290.857309655542 - }, - { - "total_amount": 132632710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4x4ROhWA1EJpwmbCdG+dwkU105GcvFAaqDGGD446pNT" - }, - "address": "noble1ee76lu53ukdwjf89yussjrqkyp7qj376wqtpkl", - "percent": "0.0%", - "airdrop": 2329.7919660672355 - }, - { - "total_amount": 399730776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwUgboT+5jO9PKVQSC2ftYbzj7HxLz1N/u+2pUErTVxy" - }, - "address": "noble1e6qfz83hffdsh8atlsfdahn90qut2c9u4rc292", - "percent": "0.0%", - "airdrop": 7021.567685035025 - }, - { - "total_amount": 50300000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/s2nI/5LXuiJWCdOst1yNo1K2H+JTXlKLcYDDG5NufC" - }, - "address": "noble1e6zalyjra68kdfk3q3zyrzl5plrp47kpmh9sdy", - "percent": "0.0%", - "airdrop": 883.5568231485427 - }, - { - "total_amount": 67399158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0onXjBWj09W9qEbvUDMnIOGhNfpCFnx7T/EEGv1azxx" - }, - "address": "noble1e6nd0zn743j5w36fengsmkxmzzcnex74av7xj5", - "percent": "0.0%", - "airdrop": 1183.916221180252 - }, - { - "total_amount": 60078096, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhtEfpeAcSR6UQrwZRyBNvuFJZpVCuKGc8YjCvcSedDI" - }, - "address": "noble1e6ku9x3ewh3zquf0lnr3mtpa03rttrzean9x2r", - "percent": "0.0%", - "airdrop": 1055.3163348424089 - }, - { - "total_amount": 119496877, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax2WRgp34bugzfidiog7Bf+xfpfxlzTGA52TsVFV4+2U" - }, - "address": "noble1e6ec2n8zgx604csuzhqdm83utj8x899ve9enjm", - "percent": "0.0%", - "airdrop": 2099.0513124908975 - }, - { - "total_amount": 1645216277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A98FLuyozmLpkffULi61N7ud0Jb6p9Z7efLgoRyxwuaD" - }, - "address": "noble1e6auw65vdnjt64g2u8egky2749teqvuxdgxxkq", - "percent": "0.01%", - "airdrop": 28899.444673924307 - }, - { - "total_amount": 56624463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0A2Lvcs6BnpeifyaXvLXCshUZx2XhG+l5H//gd1SEGP" - }, - "address": "noble1emxsaa3q5gl45xfzc426ue0zn0ym35yx30f2rr", - "percent": "0.0%", - "airdrop": 994.6507085640595 - }, - { - "total_amount": 136311348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvQKab5YhOgkpNe8oaJuILzOFCcr4hAxw0IqM/EC+8AH" - }, - "address": "noble1em0wutfp4rqznr65xz8w78ecc7njvfj2qdgasv", - "percent": "0.0%", - "airdrop": 2394.4099721267485 - }, - { - "total_amount": 8250254602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aoeh2eRQyYmCK1rJSLH4Jp8nFEmsUyZqMPf0zW9KMNUA" - }, - "address": "noble1emj5gu2uq0pr5ce49d6eaykh9msk3t067spv5c", - "percent": "0.05%", - "airdrop": 144921.8438630172 - }, - { - "total_amount": 362108630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjkRpGy/GmtKB3tM7ZvZvFDRcDkYGHOZHJ41H6+H6GBi" - }, - "address": "noble1euvvhmy22pl2clu7t4fht45uewzluu0ya5fhhc", - "percent": "0.0%", - "airdrop": 6360.706774502406 - }, - { - "total_amount": 3429024305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7D4gyyrfrhHKt6KoBsQZdsNKi9bwRXX2kcNC4GBa6+W" - }, - "address": "noble1eu0qxcsf56zxzld5wnw0mtv6k72qq500mhd3yg", - "percent": "0.02%", - "airdrop": 60233.35629075426 - }, - { - "total_amount": 702972166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah8+io4dMuMqQXGTwG/NluIYQKGH5oRl9kiIJSrFNQaV" - }, - "address": "noble1eu4jckt2wpd3ndrqwyaae2hh5u8t4lzs8sy7nn", - "percent": "0.0%", - "airdrop": 12348.227708803379 - }, - { - "total_amount": 100486527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au1YWV08ky4GzqexMtcsQL0cDx9Yg/9WQ1rrPg4KkOCL" - }, - "address": "noble1euhpr3swxkqv3mwnqlv3qxgel2duly47cgswlv", - "percent": "0.0%", - "airdrop": 1765.1204088538816 - }, - { - "total_amount": 97165857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7xZSsiw9PNnE0EQ6yU37qDxqnPEpqoLGtziLM7Bns9s" - }, - "address": "noble1eayvdt885g8tnxf4ydaregpfsfqskrzdy56xd5", - "percent": "0.0%", - "airdrop": 1706.7903763305285 - }, - { - "total_amount": 86726642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmfRPD56IA865dPOYRqK0VjqvGevtuHfJ8AR5pGhHEpf" - }, - "address": "noble1easmle9uweupe525avpzjulumcyf52y68zz3rg", - "percent": "0.0%", - "airdrop": 1523.4178188441545 - }, - { - "total_amount": 127449630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AstO7DY3eUCdRZG2Qr0PmRR4LmDzGbEy2LXLGj5oZx6L" - }, - "address": "noble1ean3m8d8su56apnm0rhw47v8zp65zens7nq766", - "percent": "0.0%", - "airdrop": 2238.747319965352 - }, - { - "total_amount": 408696741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqbDnCYwzlvJ/It3dj40dq8yoCOOHgrUZavaAhI7GFXm" - }, - "address": "noble1ea42pksxl93lu5mmk60x6639awjt6telv28rdd", - "percent": "0.0%", - "airdrop": 7179.061513103832 - }, - { - "total_amount": 55761972, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvLsSK3xm+uu38zL2tp/o6BI25nypS0BT4A9ExJdJuZS" - }, - "address": "noble1eam2xjs62gz8se77x349g8gtvm5s00z5nz6w98", - "percent": "0.0%", - "airdrop": 979.5004141713317 - }, - { - "total_amount": 1930410496, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxF3lyPNDgA2KUvlxcPO1wmMnRH+Yw8ckgkklsEfEKtw" - }, - "address": "noble1e7qhhgwsdhrvrxe7c00349fj20734anjun0ntw", - "percent": "0.01%", - "airdrop": 33909.092747879964 - }, - { - "total_amount": 242280440, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArHJBPTTBsxEhjNZadz2AK9AiZ6Xjj86/8WcHrKYGf2e" - }, - "address": "noble1e7zz2ew2gs72kq7xp7t248enmtxjqnanesx4qn", - "percent": "0.0%", - "airdrop": 4255.83570332865 - }, - { - "total_amount": 52729903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhEZUEAkVD7FGYVYhXqi+2q9LDOfT+SX4zlMcJam3wbO" - }, - "address": "noble1e79eryjjx8ec0j7r4wz6xlxevlavqacmc6mlq5", - "percent": "0.0%", - "airdrop": 926.2398723580677 - }, - { - "total_amount": 1477791561, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZQbw3uW+i7K7n1ATiPnwzC5o5qXVK4qald+CsPjVxS" - }, - "address": "noble1e78zc77jlwtzulvupvun55vhvm0ruzdgk5eu3p", - "percent": "0.01%", - "airdrop": 25958.5053064192 - }, - { - "total_amount": 2016003313, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arbi/Hcv9wcDLm7vEkikp+P94/5pkHe/IfWnLRFpAwn7" - }, - "address": "noble1e7fcfaxpjlyf3h5qdpcr2qp0v5pctrqdkev23x", - "percent": "0.01%", - "airdrop": 35412.59408928861 - }, - { - "total_amount": 1777106379, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2VV+LDZ78aS5o9dWdIr4u3MWKO23yUyowUGQDnXNV3J" - }, - "address": "noble1e7dxdvgvwtlpqu3qsetyr4s9x3s4crx3xfa4d3", - "percent": "0.01%", - "airdrop": 31216.19217944831 - }, - { - "total_amount": 53150602, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHOjg+vANu2evIaSRZ5aO8U0jHZwB/ZWIQD5MrrKGs5" - }, - "address": "noble1e74la04c0544ptfv6q65hu064u27ufg6t72ras", - "percent": "0.0%", - "airdrop": 933.6297624563136 - }, - { - "total_amount": 63329336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+jOoT+vIh9kz3/SQn8OY4oora0LM8j79nEH9UrmaqFT" - }, - "address": "noble1elqv3x65tk3uclyktp03gnam3c5ndexax4eyju", - "percent": "0.0%", - "airdrop": 1112.426777897945 - }, - { - "total_amount": 2913706636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsJkf6OOSvMDWERX9JXNQ1HJHg84Re7B0gD5ogbIupQQ" - }, - "address": "noble1elr5xquvf9uk76xgeu0dktypmqv33xanrpkvtu", - "percent": "0.02%", - "airdrop": 51181.419063439105 - }, - { - "total_amount": 51447476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApU+uqKULuR5IGjVIJoTLHx4S9Zq7/zIJ2NUvRwo7RyJ" - }, - "address": "noble1elvqwnpngg53x9s5vhnuup5ax088xdw8c030gm", - "percent": "0.0%", - "airdrop": 903.7130905282484 - }, - { - "total_amount": 859070121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao3bHoj7TEkmDr1dKzeBQaZTtOOToAQHQWW44PAaVuJB" - }, - "address": "noble1el03pzqcmrnkdkphrm8nvhlzawr58988zg9f26", - "percent": "0.01%", - "airdrop": 15090.204114763303 - }, - { - "total_amount": 50156094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiFOaTrmJ0gsy/JmCuejQ5HFY8RgBxPWHBMFe5ovk8Ki" - }, - "address": "noble1elneyfk0k46g3zt26gxmakk003zd7vltd9kgzv", - "percent": "0.0%", - "airdrop": 881.0290074787213 - }, - { - "total_amount": 147179805, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+IbfyjoftXOVmRBra2h0DMIVd7CWAsUsxISkyDQRgCC" - }, - "address": "noble1elh2k56rn8sugyhlyx55kha0h5jh5u672ss379", - "percent": "0.0%", - "airdrop": 2585.3224838453675 - }, - { - "total_amount": 54366498, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuzHQllaH+rFuK/NhfIYbZLy1FnS7qFfybgenvxdEANu" - }, - "address": "noble1eletj8lt9w9zkapm3xy25ywr5hh8ka4nptnxs0", - "percent": "0.0%", - "airdrop": 954.9878779044055 - }, - { - "total_amount": 6774463423, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A97AgSLpFVR+kQGqoTSg1kHoqyDlXti1czG8WhZQ9nrs" - }, - "address": "noble16q84082ek3fknk700cz6zkvc56wlkrwu67u77g", - "percent": "0.04%", - "airdrop": 118998.47675073323 - }, - { - "total_amount": 782474426, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqXAVyOt/el0bfydPOd1XTkrD06VjKljO7dtH/pjBPzU" - }, - "address": "noble16qn9q37hc7u0faadsj43tk0hppu7cdfh8mjy3k", - "percent": "0.0%", - "airdrop": 13744.743897247305 - }, - { - "total_amount": 439019616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoCzNTJj8cK3Gcer2MUceDnzlycXUoQ915sShDiK6Qm8" - }, - "address": "noble16q52wuae5xls7262r7x876rjf20nqucq8xeqs0", - "percent": "0.0%", - "airdrop": 7711.705312382765 - }, - { - "total_amount": 50025482, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8s938+HqeZXHC6OayIvp5iD0vNfSQhant1S2a0ugLdo" - }, - "address": "noble16q625677s7t6444mcecw2yz4zgvfx4vs0zwrxh", - "percent": "0.0%", - "airdrop": 878.7347107831929 - }, - { - "total_amount": 189500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhmUDplpXcVL6VCbX4Etno/d8lMhoaUa1mSTyPsFq131" - }, - "address": "noble16ppt7p8g3whakl7u44rsg07d45ezm7melslnss", - "percent": "0.0%", - "airdrop": 3328.7081110665767 - }, - { - "total_amount": 80725722, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjWLBLPKvG+zJGluqpyrdxyGxaPqUdqpElZlLUOV5ujx" - }, - "address": "noble16pz6gzsvvhsrvkupd9qmh9ekc7x088adz7q3h4", - "percent": "0.0%", - "airdrop": 1418.007206296072 - }, - { - "total_amount": 58108955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4QTXwOtlIu3+PhKX0wNGffgHlsuNMa8k4Nm6nAuhkpC" - }, - "address": "noble16py2qafle0ujy87akqk7742wq2485yzwp2maym", - "percent": "0.0%", - "airdrop": 1020.7269120533125 - }, - { - "total_amount": 52435196, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AybuWwDn4iUXGlU+MxNThd3OGb5jhumKm/FGCVMNrjCP" - }, - "address": "noble16pyllqyq22wxc5yxms7rzw76fes4f9lx7yu3fw", - "percent": "0.0%", - "airdrop": 921.0631252272598 - }, - { - "total_amount": 189142382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amw/5yFInNAXSwXqhHQJsxzdclZcXrEWcID11Bm6Fpzg" - }, - "address": "noble16pg0x40fx469zd9jv60797cm0zqpkqdh7s6vad", - "percent": "0.0%", - "airdrop": 3322.426285540121 - }, - { - "total_amount": 1300000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuxusWwzqKCT0kpg1GO8CHe+409tr1n+zYkDK50g4fhV" - }, - "address": "noble16pnj435gr5m482k58n2j0vpud8jp65vyfg0ypw", - "percent": "0.01%", - "airdrop": 22835.464614177046 - }, - { - "total_amount": 146749323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az8i6gC9iX3h3SAXrSFWssSXSxYofH19XdOrddFwV+XP" - }, - "address": "noble16per8t6tqsz6hqd23ff0vpu989e0xmhykk9lyk", - "percent": "0.0%", - "airdrop": 2577.7607480930287 - }, - { - "total_amount": 242452668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axie1LCw+Y+vTxAApR5oNEkG2JuV/ixHB0Ug0pe9sy9E" - }, - "address": "noble16p6ld9nyn48rdq50t4hju5c9rsekx890uufuly", - "percent": "0.0%", - "airdrop": 4258.861015943704 - }, - { - "total_amount": 80098593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxkGcgLsxq7lO5kZFH9+4AFekd1HzeYJFI4ej24gsMM" - }, - "address": "noble16pln6w3g3ee96u553e7lpgrs92x3pfvwz5rsuz", - "percent": "0.0%", - "airdrop": 1406.9912200745146 - }, - { - "total_amount": 80000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1hHwuplhfbZtxJGKFQoI2BqnpT2FiPyZZK73K8tSWxr" - }, - "address": "noble16zqwqnjn4d33d2tddvsfpwpumj2xwt8ew26hte", - "percent": "0.0%", - "airdrop": 1405.2593608724335 - }, - { - "total_amount": 51958348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlmxEGrX5L8S8supJw+lXAhNdc1M7ZanviY60k6yb5/L" - }, - "address": "noble16zrul8tcnj34pymk9ryjqycl3vfatlyv0d8j4s", - "percent": "0.0%", - "airdrop": 912.6869362808436 - }, - { - "total_amount": 223222104, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1FwjRHhDnWoLLKxIxTZd2FnKQKzRYChsYQaGdUqLW1A" - }, - "address": "noble16zwt5qnhr3xu5mue737fhnlx5kxeltyuw2fqfz", - "percent": "0.0%", - "airdrop": 3921.061889995499 - }, - { - "total_amount": 103736781, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8QHG7VNFxejjPt9nIv1RYXWG06WykwgGCFO9pfL2nh+" - }, - "address": "noble16zs53whzuydl50pptd9cx8w5f22tfqa3fcc4r5", - "percent": "0.0%", - "airdrop": 1822.213532087795 - }, - { - "total_amount": 174466572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6nIMJIBRVy8StW7QkqhDdEU0ZnZ2B4OEzwbh3704kZ" - }, - "address": "noble16znshtf37723t8xkpacdgd29dt6ywfe5f5ehvf", - "percent": "0.0%", - "airdrop": 3064.634793279055 - }, - { - "total_amount": 219167869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A99zk0b1UDDnY0jUYUT5/wgIw+uRcXBdy4QziVrOI+YQ" - }, - "address": "noble16zh6xu8m42lemc456efgjqr7wcenhm4ewajl0l", - "percent": "0.0%", - "airdrop": 3849.8462439339155 - }, - { - "total_amount": 98320927, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AizbNJwKZZEymyUxbPFWPRZ+DhGh9uIODOQ+XpWGjrHk" - }, - "address": "noble16zcjxqmlt223ugt7667scgyshp5emwzcd3dwdk", - "percent": "0.0%", - "airdrop": 1727.0800379550649 - }, - { - "total_amount": 154588491, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1dGwlve0AsBFZFDrCqXK4LuBdLWTQgikePRPRLQQyCN" - }, - "address": "noble16zmfquh2p5ch7jrarh8ql7f2m6mnk5xs5xqlh5", - "percent": "0.0%", - "airdrop": 2715.4615507611743 - }, - { - "total_amount": 184052020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A58ZKSgafDPNICXt3PBhyOzNg1JfRrhWDQQnC7fUva3M" - }, - "address": "noble16r830xe7k54s7kcrheq83uwdfuxvzxnusal3mw", - "percent": "0.0%", - "airdrop": 3233.0102999060045 - }, - { - "total_amount": 1141848255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0By6GHvB/Ain/7lKsr1hVF4rMIQajUFZZD14Fv8r/Jo" - }, - "address": "noble16r86r9md5g9aw26f9yjm8z56gxe233naeyz8q0", - "percent": "0.01%", - "airdrop": 20057.411862932546 - }, - { - "total_amount": 100269665, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZSJHtMriXcIvZ27FESZz/ivyZWnMOP2y3Uz+CHpoXQ" - }, - "address": "noble16re3hggn9z925ttlgnwfvjvmulpkcs76ldt5l0", - "percent": "0.0%", - "airdrop": 1761.3110669099126 - }, - { - "total_amount": 9416968773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApetNq8hBprogP9KM8C7jnQ5PzhljY4tKlFHtMgcFjCk" - }, - "address": "noble16r6n2phn6asrn9n9efht3mrz3k2dyfw4h4aqd0", - "percent": "0.06%", - "airdrop": 165416.04399127056 - }, - { - "total_amount": 50093510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cBRCLU5ErL6NPSKAts0P+0+L8ky5ACqrPG/yfuWpiP" - }, - "address": "noble16rugpzvnt3z3a28e5j2ykyxzd2kru7mrchfcjl", - "percent": "0.0%", - "airdrop": 879.9296730807108 - }, - { - "total_amount": 16588850111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6iy2WUAqq49d24X66r3ZdyfuH1X3DndoVx/xS2H8UdK" - }, - "address": "noble16ypwt65mumckkctx60gqfswmzn6x7p2thh745p", - "percent": "0.1%", - "airdrop": 291395.4613074057 - }, - { - "total_amount": 1874729285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As2UXRvT1CJgWZSoB/ONgFvGkaflLvX8C1L5UIM0AB3S" - }, - "address": "noble16y9mlqv37ww9glvg5nfpck8wxgwukp6ww9yhst", - "percent": "0.01%", - "airdrop": 32931.01096059918 - }, - { - "total_amount": 352545504, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhgiTqV3opkykBKgTVQGql1KXQRNyGt3UXgVJEVc2l/E" - }, - "address": "noble16ygefjecxj4p0d2whggldx2r9l3sukpzd2nlaq", - "percent": "0.0%", - "airdrop": 6192.723370368624 - }, - { - "total_amount": 175111776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0VR1o/solnvQCKGKL9CYyzqXDtmij+LzDEVe4JxAquH" - }, - "address": "noble16yt5e09y8musfmdev7tckjwac44fq5cqhm0p5l", - "percent": "0.0%", - "airdrop": 3075.9682802874595 - }, - { - "total_amount": 156254111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3DN4QHtJTdxCp+M2l699LzVGzQhBheUGh5x6wxTr+QI" - }, - "address": "noble16yd52anxeved7a8l8ywjw9sh347e2wx2amuj7k", - "percent": "0.0%", - "airdrop": 2744.7194019693784 - }, - { - "total_amount": 98531702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnpR/3/vu6gJfSPgE98HplkA7nWq+zpyvAc0i5JP8oqH" - }, - "address": "noble16y3kx74263levq54meq8e2cyezamzl9akzypyn", - "percent": "0.0%", - "airdrop": 1730.7824572274137 - }, - { - "total_amount": 104424213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/97OAsz6yXfGbvm+MBtY5aCeh78H5KEV9dwY+P5ZDmX" - }, - "address": "noble16ynvfvd7putju94nhlmljq879ce6avmp0yf48h", - "percent": "0.0%", - "airdrop": 1834.288785249836 - }, - { - "total_amount": 231380681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axhj7qnoymb2K/PwMZTbqpkJX1aC76CWh1JofPAgmKyz" - }, - "address": "noble169x4f0ryz9ldspkaust7ezzrn3rxssfrd45z6s", - "percent": "0.0%", - "airdrop": 4064.3733487536056 - }, - { - "total_amount": 50085485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtknBmZunaMUUBQsTtu+r64chvLTsygiBavl/33Ng4+r" - }, - "address": "noble169g3hgkpws7ynxtrqgnj4wfx40ek57z7fay553", - "percent": "0.0%", - "airdrop": 879.7887080010732 - }, - { - "total_amount": 50059540, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av6cUl3V8LSCmhfXIkq/Y7frQLWdOMmD5Ap8fnVRtn9w" - }, - "address": "noble169v8407rj0vglgxzp9jtp3ev0ndza4mq0rtk9p", - "percent": "0.0%", - "airdrop": 879.3329648246003 - }, - { - "total_amount": 156764808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A75dzoSCjvGzhTwLpZWykfyl67AHQ2GWVUyQQIVpXuGP" - }, - "address": "noble169dr6adp9tfck7tvv20m87k06m9lr9hsytcw0a", - "percent": "0.0%", - "airdrop": 2753.6901737171224 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuirfmL9PUw6fkRq220nZZBg5NUGWB6oEBtoBpt3Yasg" - }, - "address": "noble169dywxyhn0ng2hdqen9sgxsjflme699f6t3jxp", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 18282772574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar7tYKKHKpAkZ7LeqdYDuItw4vprXT3ABCWEhqubQvm+" - }, - "address": "noble169wtfrlwcjtfksheg7gznxk5s0zp3ethczwh4r", - "percent": "0.11%", - "airdrop": 321150.4662789412 - }, - { - "total_amount": 261718895, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Ze6tnG/TIcP/8gCpH8lRITw83ibZCxXmcuill2jk27" - }, - "address": "noble169c79kz0fhwtgvpmaynach7lvuemgx4npvqjca", - "percent": "0.0%", - "airdrop": 4597.286588949244 - }, - { - "total_amount": 137575216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjqJDHN27kpDMCnm5Ze4KKSmlUqKaq1ylgqGTqueJOHB" - }, - "address": "noble169lqxnrswa4mdklcf7fsu86wedxeh9utuhegqc", - "percent": "0.0%", - "airdrop": 2416.6107513505876 - }, - { - "total_amount": 176964172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvaWB/wwgLm+SeRuJ6ZzvEg08kuqlqfxJP3BEhqeJz7Z" - }, - "address": "noble16x92yxhnej2jz049hjrzns4x202ucmz7tmj4jc", - "percent": "0.0%", - "airdrop": 3108.5069905254927 - }, - { - "total_amount": 23892936812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqs+dSspE0cZaDnH3INZrrB0gKAaKwXfVq1nzjd0XBSM" - }, - "address": "noble16xxwd8ju3zrr98suwxz5xqs33ar4kfptuwpf8v", - "percent": "0.13999999999999999%", - "airdrop": 419697.163922457 - }, - { - "total_amount": 89454124, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai4C26no08sM8wNc4qd7sRXbGCOQtexj7vYYoR9jay+h" - }, - "address": "noble16x837dtdg66kg5wvw60kssum3snx5r92y0rpu0", - "percent": "0.0%", - "airdrop": 1571.3280639955426 - }, - { - "total_amount": 175800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/kdxFfcEF1Fpma0FdDkppaA1oDh2d4TbEgta9BZWmUQ" - }, - "address": "noble16xvlzlc4jucku0s60cwvwmzdrd2wpegjgwq492", - "percent": "0.0%", - "airdrop": 3088.0574455171727 - }, - { - "total_amount": 314075007, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhhAm+gMX9vTbJvqE5fV2xvvJE2V+xbqO+09NzT7QLgI" - }, - "address": "noble16x3e5xphm302996q3ea4th5qxxlrqn5pkymhr4", - "percent": "0.0%", - "airdrop": 5516.960545035314 - }, - { - "total_amount": 339280384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApLaMac3WiWS13RilTuKhJRcShg4S7+1XzewfLXwXY/k" - }, - "address": "noble16xk59572kqstx5qwtwfz8kmrtwt02knumk66p9", - "percent": "0.0%", - "airdrop": 5959.711694704923 - }, - { - "total_amount": 301738612, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArBKrl8ZiNMmJzpgHWA0/wANwZOYQ5WQctgTRhCAWZ6a" - }, - "address": "noble168prgqylc43q23a4yxvqafgncl7vsdkpgyvk9m", - "percent": "0.0%", - "airdrop": 5300.26261312069 - }, - { - "total_amount": 1393929922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A56Ij7GxM3+jw37pFhX3aTcKuczR9oV+eSw/esNehjll" - }, - "address": "noble168rt7saxp4r59hlnzevwumkzehlt5mhy5pufem", - "percent": "0.01%", - "airdrop": 24485.413391133516 - }, - { - "total_amount": 53008595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+VWBtaqrEzR8TxwgK1vclG/c1zqBe+sdgnCPC16+hrf" - }, - "address": "noble168g9uzks5jtyavkd986scj4xz35erkd6e6q82x", - "percent": "0.0%", - "airdrop": 931.1353041305711 - }, - { - "total_amount": 50036131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aid2RyWwX3G9Rzn8StshIC3WWU6JGgEe6SSVb5/URtVa" - }, - "address": "noble168ncj2tjycky87x9u9c63gde3vf025j6pkghlz", - "percent": "0.0%", - "airdrop": 878.9217683698671 - }, - { - "total_amount": 1527795538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar159g57PY9qmEpWQPQtk/EqOXg3SpDxU9EUCBCAi4Y2" - }, - "address": "noble168c475k8jthtv5s2kt7tydmk958dwyqg03echq", - "percent": "0.01%", - "airdrop": 26836.86226592045 - }, - { - "total_amount": 965847055, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxErm4VYQGE5GYxNibjdp66Vl3n3Ip6ELIW0AZCg49l" - }, - "address": "noble16862syzdtc6h0sxz92jhnjjas5yhhjgz85c4gy", - "percent": "0.01%", - "airdrop": 16965.820190122777 - }, - { - "total_amount": 637038690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An1ncdHhbXOzR3Jj0dJM1QnrmbW+CLgBfWcuodj10m9L" - }, - "address": "noble16gx8ufmg5vtp7sdkyh6n9rlhw5e9ml0aqn7h47", - "percent": "0.0%", - "airdrop": 11190.057279505154 - }, - { - "total_amount": 231434228, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A111EakSI15eHzxlUhbTWxGIaZEDnTHoRGyZVOSfU9D7" - }, - "address": "noble16gxdwa79rsvkjaawpcpswthgahm56p4m2vxjlv", - "percent": "0.0%", - "airdrop": 4065.3139415410637 - }, - { - "total_amount": 164443712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ByT682Ql1oZduf8xCplZMCekDzRzabJq24VCpWYVSa" - }, - "address": "noble16g2vgj46qvcupamw20kgpj7acpglmc30jtly9r", - "percent": "0.0%", - "airdrop": 2888.575820307632 - }, - { - "total_amount": 267036332, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AySpqzcBTj22lXu49tJlR0jiIXLQAImBk3Y3GUiew0xO" - }, - "address": "noble16gtvas3l5jfym0cml4ghschfvahq0yfc5dnxv8", - "percent": "0.0%", - "airdrop": 4690.691315450487 - }, - { - "total_amount": 88206899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsPtg0UqivnO6e8ZPCtZF9IO2vLb4dotZbvmcQX0NJQ5" - }, - "address": "noble16gjaj9m7yvrcnwzz5w97yge9k9xja50t5xtmlq", - "percent": "0.0%", - "airdrop": 1549.4196314159913 - }, - { - "total_amount": 9395660370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwyWpVX69aC+mAG8t0b+28v10cDiH9nhuqON9Wn4HQQI" - }, - "address": "noble16g5cgxge4grxd8qm33c9gd0vxpfsdtkuqjy9pr", - "percent": "0.06%", - "airdrop": 165041.74608150814 - }, - { - "total_amount": 5376598620, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9XSMSL0ZWcNxbZBpDBl9TxKPsj3MccN9693RIKiX6kG" - }, - "address": "noble16g4qeyeaust78dmfzzmks52p2x7em9jv5rg7cv", - "percent": "0.03%", - "airdrop": 94443.94425511011 - }, - { - "total_amount": 22183356194, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/o+k/qKR5mFt46cLi/sHH0S2GKyg20/W7odLuyyQ0rQ" - }, - "address": "noble16gm3cvhluf9xfurkx9qgxq7pldvd479l4a5ezt", - "percent": "0.13%", - "airdrop": 389667.11183982476 - }, - { - "total_amount": 320588274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2yky9qpnc7oMWeaN2yUz995hgD78cDWov7OseH9LU88" - }, - "address": "noble16fxhncv3m0us7ah66l8te4z86gst8j3gvfgmgt", - "percent": "0.0%", - "airdrop": 5631.370912805458 - }, - { - "total_amount": 77288210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTP9RCtmZTCCawdjz731tnFU5B08JjLTdmPCo4zYVHO" - }, - "address": "noble16fgawpzp0mn8rn6tax9n9uu8fh83hncqp7qzf4", - "percent": "0.0%", - "airdrop": 1357.6247573446803 - }, - { - "total_amount": 649781655, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apkyh7fmX5gG4R41GwXYCEB4r8CyKjWBpkKQ5C+mM6Vq" - }, - "address": "noble16ffzuhj43nmyjmjud3u7dk9qa00wkmhrwztxw0", - "percent": "0.0%", - "airdrop": 11413.896915149153 - }, - { - "total_amount": 78776003, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmzoVE3pPeZ0/8DbNW0+3nQsj1csck0p5rM5wdFXQFq8" - }, - "address": "noble16f2xnyvfma9nhzwv4c4wpca5fvtsnce9f0vg0f", - "percent": "0.0%", - "airdrop": 1383.7589453483115 - }, - { - "total_amount": 1285828156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+oqiIwnDAkE/SQxOJefW0sQlpZS/KCo8tj/XxE0BY+c" - }, - "address": "noble16fsvaywtkrdsyk7th6ku3atkgpxvul4ctpj4e5", - "percent": "0.01%", - "airdrop": 22586.525658654245 - }, - { - "total_amount": 357480268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxB36efPWgT27/SQtRoQeHEbdjOuOrAiumNESV8aUCNk" - }, - "address": "noble16fhjcmc6frant3tj9q6lwyvdyxvvvj5hpjv3kv", - "percent": "0.0%", - "airdrop": 6279.406161677328 - }, - { - "total_amount": 50036036, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/44V0Rkir/KxogaGU7OJ/GgFBAml1A4fFbYaGLJ2w09" - }, - "address": "noble16fam5z7h6ed7jyeczun60cskay76qcsjj6nntl", - "percent": "0.0%", - "airdrop": 878.920099624376 - }, - { - "total_amount": 150661569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzEG1r0jMvnmMXlqcL/8hVoZhFTSXYC8dF8bZjM9nLpi" - }, - "address": "noble162zgwmxcw8e779a0w95yr6p2jz2skt4uet4xdl", - "percent": "0.0%", - "airdrop": 2646.4822520122257 - }, - { - "total_amount": 252156012, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwY/VyEICQFjRlKp09iHQKyvjxzGmwAGDSyxhfQjP0FU" - }, - "address": "noble162rucj986lzdymff57qp9mgfcyt6jl25qn95yr", - "percent": "0.0%", - "airdrop": 4429.307453290771 - }, - { - "total_amount": 4377797068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiOOP211+frzHw3Ap7nSYbAz3dk9SOx2B0KVlKHTXl2n" - }, - "address": "noble162yfz5rjzvglkd9yzkgtnrx86weevl4gsn5zc8", - "percent": "0.03%", - "airdrop": 76899.25387258617 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkRvfLBP+xEanpvIRSu5Xnld4XLmtSgxdPAltUWq2vWn" - }, - "address": "noble1622pasfw4umr2w098e90dzs4vuryyhqetplfmk", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 75209067, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AokppMv9kCO+evryFWPWDA0mbfmx/o1jhs9fvu3frPBJ" - }, - "address": "noble1623xv5n97f8jdcxleeksy28qvjawyagc2gtg4e", - "percent": "0.0%", - "airdrop": 1321.1030678029006 - }, - { - "total_amount": 52312875, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay4HCCUjoh6gxqAkb8GyX+uy655IBuRfdxcZO2E2VwJV" - }, - "address": "noble1623x53q53hy3surwrcvfa52l75qszffgyxrz2t", - "percent": "0.0%", - "airdrop": 918.9144660987439 - }, - { - "total_amount": 77690078, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+llhW/kM9AcpQ16UUTmdDq+iteQAofn6afpeOibGzmH" - }, - "address": "noble162jd239nzzzjd8jmsrkwq9jf4mhu0lxjl7kej9", - "percent": "0.0%", - "airdrop": 1364.683866955119 - }, - { - "total_amount": 154337140, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyvgC0H6zB5i/+vnHA9IL7fbkjEcnU+6haJHOXvudhTf" - }, - "address": "noble162nn6mrjrs9v9h6pm0easrp54rtavesxgfxwhe", - "percent": "0.0%", - "airdrop": 2711.0463839409913 - }, - { - "total_amount": 11057593870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkGA/tQOSbzWZvBKYmDThlmkNkEHzDedcw9MPyTJGALt" - }, - "address": "noble16tz3zjch9xpxkkh07758p0kpy2eag4vh08elzg", - "percent": "0.06%", - "airdrop": 194234.84118178926 - }, - { - "total_amount": 759228840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwPwqjTYlZ9NWoCtg2W4EEs6Ij/1hkfTOyd0nmN8CAU6" - }, - "address": "noble16twpp8xmsskfqx874e5rx2f86n79agmf6g6vt8", - "percent": "0.0%", - "airdrop": 13336.41793067899 - }, - { - "total_amount": 433457159, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax03Ox4khKBdbPj+APw4Wf8AFoV9/OdUCKEhYwnLE+4E" - }, - "address": "noble16ts29nj3qr9sf3k9wl8gwmd76evzdlhmnfw6za", - "percent": "0.0%", - "airdrop": 7613.99662777401 - }, - { - "total_amount": 3835778475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ivjMtwRocpScPco/AsrZMDpWdwZ0z5ezvc7t/tzyMi" - }, - "address": "noble16thcmsjnjujuf6r3pazgk90acd3arhmnyk0g3s", - "percent": "0.02%", - "airdrop": 67378.29510283422 - }, - { - "total_amount": 78042630, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7MCS2X2TOEE8kRJtu8WdeYKEJcyJ3Vo3cD5/AFJJwy5" - }, - "address": "noble16t753lgn43q5dwtcsr9ka08x3m98cskkyxwu9g", - "percent": "0.0%", - "airdrop": 1370.8767044325475 - }, - { - "total_amount": 308339512, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/oFIXjP+hd24LM3wqehbDn0VoCxjK8ZkjQ1jdzg0Kcu" - }, - "address": "noble16vxwaqkezu73svm4jqufhyy0exw65snk42kc5y", - "percent": "0.0%", - "airdrop": 5416.212319560476 - }, - { - "total_amount": 233441494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiMkxL4hbflPf3v/F3Fsjx3uKCK5jadDv1zttEk3B4gE" - }, - "address": "noble16vfew2gxmvk9ys3hmjz86yvu03fk0e756krl9y", - "percent": "0.0%", - "airdrop": 4100.573058244326 - }, - { - "total_amount": 114634156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37Pc+8IZEWw8OBanIRwJt4jvGaiWylKHkyiGR32j8mo" - }, - "address": "noble16v0te6swvsr0xpzp35js8l9mal3tculykpenz4", - "percent": "0.0%", - "airdrop": 2013.6340099338856 - }, - { - "total_amount": 196279387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApM5xTFt1eCjgD/TkjeQ2JE2afcncuPUYic/XzmVShy8" - }, - "address": "noble16vjcp065vsnkpuqswfjaxcegmxmxw5agu8tcgy", - "percent": "0.0%", - "airdrop": 3447.793074100663 - }, - { - "total_amount": 2308134265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3e5M1gvIkHdKxdf8/Y5CNZUyi0kZnfbipYg4aOZLznm" - }, - "address": "noble16vn4u3jrfntfpjvtsywzlkszuncccn7g08wlg6", - "percent": "0.01%", - "airdrop": 40544.0910255208 - }, - { - "total_amount": 216386731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az7V+BKfVidswF/zOdM9GXOwTFxzDQwtht7HLDqIpF23" - }, - "address": "noble16vm4seekhewt738t43w0emva0t2fqczsmnksmn", - "percent": "0.0%", - "airdrop": 3800.99349132919 - }, - { - "total_amount": 64000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayi8vTlc/PsFIKJPGoecGDyBJvq5H677tg9kK4Pj7YKW" - }, - "address": "noble16vllgeuqvaplvfdm598a2442uwzq6lxhrq6rxd", - "percent": "0.0%", - "airdrop": 1124.207488697947 - }, - { - "total_amount": 800711702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjHX6TXZ0au0HMhnG5HF2pb2s8Yfr/ZbO1z+tBHW9eWB" - }, - "address": "noble16dyfc744j0lrhae0xpfjxl5cnx2hu80h98wzcl", - "percent": "0.0%", - "airdrop": 14065.095182444982 - }, - { - "total_amount": 85735919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhJBErpLckU3HArX0P39WZvwBKq4BlUgpAQrfrN94Xk6" - }, - "address": "noble16d9s55zzwu7983zkahky9yymaj3hy4xhqy539q", - "percent": "0.0%", - "airdrop": 1506.0150342218842 - }, - { - "total_amount": 163161689, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AluyJbOaE9k6BFpjZe921RwUSLnao+h9rmtd62k7qYpW" - }, - "address": "noble16dxe7lg4ac48nq80awawue3vt2z4x6kakqxg4y", - "percent": "0.0%", - "airdrop": 2866.0561350375847 - }, - { - "total_amount": 54253542, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ciXPsc2Foesne+GAUHKbaKCru4iamCmvXgL6zl5XYE" - }, - "address": "noble16d8xaq4nthvndt3fgl7euwj0nrs48t82vfvv60", - "percent": "0.0%", - "airdrop": 953.0037219498216 - }, - { - "total_amount": 14963341994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alum72WvEi/yro7s9w4gU7wK/kaHMJQoVNS/00YFYDDP" - }, - "address": "noble16d22lexqhvjg3lxgmp6wlr0rfs95cx5dkxn0w2", - "percent": "0.09%", - "airdrop": 262842.2050875511 - }, - { - "total_amount": 83504507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AubI7sooZ7YFRHkaF6a5XGXZXhTf6E8HbYxP/50FewpO" - }, - "address": "noble16dt6rmwedk6axqm3g6z5ev87ah5alzzt3ayu3q", - "percent": "0.0%", - "airdrop": 1466.8186267098458 - }, - { - "total_amount": 255620547, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtRt5c7yJPrWZyG8ZmLKRtvGFmPp50kNm9KQyIvb+6vW" - }, - "address": "noble16dd4fvm2ej2dl52w4ugyp8y69rvrk4mysrtlqy", - "percent": "0.0%", - "airdrop": 4490.164581288524 - }, - { - "total_amount": 158308365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amg8wsGdGaxwDFuVGYRhKjuWWQgZGq+l046hqRi4U48h" - }, - "address": "noble16d33ht6cwcl8hy62jy542pn2q637xzg537laqr", - "percent": "0.0%", - "airdrop": 2780.803897758249 - }, - { - "total_amount": 555086298, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av3rrNivbouwWZW/TUZzw++hddDCm6SREuqfR2wGrX1J" - }, - "address": "noble16d5yh8k8ggw6zcfm9h28p7zvefw2rywry2n22k", - "percent": "0.0%", - "airdrop": 9750.502704456565 - }, - { - "total_amount": 337747132, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzRbSdUg57ZQUlEJGXDPGvZziuSYNWrbHe0K2LB2JCFL" - }, - "address": "noble16d4yj9k9n44mwyzx4yxr0le5wv0xe6pttmlavh", - "percent": "0.0%", - "airdrop": 5932.778985635218 - }, - { - "total_amount": 1172731995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtEYE7+5qKu+PTnMRh34RlbuSPPRKt6E5M8nCaHEUT12" - }, - "address": "noble16dh2qvf26n82dxzjkqn7qjv3g5x3azql2jem3a", - "percent": "0.01%", - "airdrop": 20599.907672104426 - }, - { - "total_amount": 60315688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Dp3LRZXgjoJuPJ82cBni3f43W2/thTXouYSHM72jz8" - }, - "address": "noble16wp947n6f3057m4ltddcreygn3lwtau56fp8fc", - "percent": "0.0%", - "airdrop": 1059.4898146182638 - }, - { - "total_amount": 201984595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzdoOWEtf3zBhHkgTGDosEGumib91cYmUO+G9yvYgfef" - }, - "address": "noble16wzpsxka50570f3fn6hj64c77ecvktng8tusu3", - "percent": "0.0%", - "airdrop": 3548.0092859472165 - }, - { - "total_amount": 135644325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5KkhIkynHK11HIaXBWOLEkR+ChjdHxNofPbm4UGEod9" - }, - "address": "noble16wsydp83qqc79degnn2u87p8k0caw6qqxup38j", - "percent": "0.0%", - "airdrop": 2382.6932181934085 - }, - { - "total_amount": 3520494398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyBAGzAUG5mcI5kiNLpdnNY8tzUk5+MbmFMcYAfVc9xf" - }, - "address": "noble16wsu6a5e5fusnpd84j2hmra60psct94zzhdnd4", - "percent": "0.02%", - "airdrop": 61840.09634610579 - }, - { - "total_amount": 649341235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkJIx01sb7I+8QcyhA3L9NBHX2JoJSFOU7fTNlxcDUIg" - }, - "address": "noble16w3p4ajfpgtycnf259c6j4ntwqdfqzta88nrnf", - "percent": "0.0%", - "airdrop": 11406.160611052708 - }, - { - "total_amount": 152036409, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkUcGmwD2VNacSk7M0rh54miw0HOY1b04HAYlvrSqA//" - }, - "address": "noble16w7090ntsyyg2g7xuex2fuhrazzvkppjcsj6rn", - "percent": "0.0%", - "airdrop": 2670.6323367584987 - }, - { - "total_amount": 189577366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7IFjn2lij0uqYHUXdhJNmUEne2A8eG3D/uL6aLepSK9" - }, - "address": "noble16wlzwxr2c9h056j8f26wtkv926ltpw0xtn6pza", - "percent": "0.0%", - "airdrop": 3330.0671022629926 - }, - { - "total_amount": 52664338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0LbLKm9tUu07p3Im8rwSIhrfnFt3ggOlQEeCQ4XAC/F" - }, - "address": "noble160pcsd32g0d6m9tw7aqwz5eqm90xegmq6ae3xf", - "percent": "0.0%", - "airdrop": 925.0881744831227 - }, - { - "total_amount": 225725394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzxxQeTk4WZ31RzOevEexXNXQb5OwivXvy7HZs2Ktz6Y" - }, - "address": "noble160z3kvmglylmfyxd6m04nnr2te9lcrhdyjkhq8", - "percent": "0.0%", - "airdrop": 3965.034036313978 - }, - { - "total_amount": 51220641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6lnd4/qNYFmGz7AAqUXYHES5nxRj8fkJC3/8Jmg84yl" - }, - "address": "noble160y99lqls35xnsasx7mszzzc3gv2zgwyd325nn", - "percent": "0.0%", - "airdrop": 899.7285654392045 - }, - { - "total_amount": 3668604893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8DA7qNtHryM0a1TTIiwnA3cIGS/p7OxX5byfImHdtUL" - }, - "address": "noble1602shymstyydhyyzxug89vetaa2cfz59tc8u0l", - "percent": "0.02%", - "airdrop": 64441.767090383284 - }, - { - "total_amount": 84369390, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyOn6s+luJHL8PX+dgCdgP7Wv5uiKKB7VtdU8iFVCzq+" - }, - "address": "noble160s097nr7nddlgw3mdwzu6zlt7ju9ntqmmufwn", - "percent": "0.0%", - "airdrop": 1482.0109383574636 - }, - { - "total_amount": 73572748, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqURtU+hmp0yZcSamrbNWVRmfoTXcVOfnbJD8M81/ILC" - }, - "address": "noble1605wr007gxez7fly5udgzzxq5dc7p7qmpd6ft0", - "percent": "0.0%", - "airdrop": 1292.3599104013576 - }, - { - "total_amount": 57153600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw0+Syl0i1M8eH2/LwW2ZGpTRjYzI/PXxDfBsHuc5XxA" - }, - "address": "noble160eggj09v7z0k9v8f6xmqgym9utvqzrckf7s0u", - "percent": "0.0%", - "airdrop": 1003.945392594484 - }, - { - "total_amount": 243618728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al08YpoKH8qbJEOEklRoE93pz188gJVeb88xMigkOZMw" - }, - "address": "noble16sq0a3y9hwn5le6urpmrd39ap25wujkmlqy3p9", - "percent": "0.0%", - "airdrop": 4279.34372507294 - }, - { - "total_amount": 1001340959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhEbE1nsSlgTE1AFWqeLaebnuiKfQk9g39GzbhR7VYYi" - }, - "address": "noble16sr7wcttjj377r666y2pl5vjqkg8wn3kg9d695", - "percent": "0.01%", - "airdrop": 17589.296950746622 - }, - { - "total_amount": 2649055898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/uGZRjp2QH8MFDcP1FiY4u9/UIyqSJmEBsZf3PZlYfy" - }, - "address": "noble16sw3enjmxnfwuz46tfz9zfu8vh4kjay59pdf47", - "percent": "0.02%", - "airdrop": 46532.63247673539 - }, - { - "total_amount": 82095813, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/fmY01WZV6A9Dg2yx9IY0fnYgf6KGwvZrMiLd4O0wZV" - }, - "address": "noble16s42wu02al9uq9vdryk4zg2gjhxf0462vhxw5s", - "percent": "0.0%", - "airdrop": 1442.0738713335352 - }, - { - "total_amount": 157381781, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxzIx4mrwTHVu3+1aL7apkccTXyh4IQ7UfQls+DT59uo" - }, - "address": "noble16sk8duv8cywzvcrqxpqcyelr4v0upg03ds6yrx", - "percent": "0.0%", - "airdrop": 2764.5277622628164 - }, - { - "total_amount": 84037099, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApnKZseI8Bpm+/maXqWChDShrOSWYAxHJNMMH5/368nF" - }, - "address": "noble16skvnpt8uuwl2r6k7szyf6c55rhak9szkxva2n", - "percent": "0.0%", - "airdrop": 1476.1740003789178 - }, - { - "total_amount": 66143899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyVCNieHgfaEqi7v+mJX+91a/0D2t9lCCGfpJkTlpks0" - }, - "address": "noble163zhn7pqhd7u70a73agprlz0qjqvz4wet3f6pv", - "percent": "0.0%", - "airdrop": 1161.866665429385 - }, - { - "total_amount": 273905956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrKxp9vSS9yQzYH43k0tod8N7AUhI5f2IFPbvaCMQCN" - }, - "address": "noble163knhspgqcmlccst8yqnz8cq2zrwq0x25c0n48", - "percent": "0.0%", - "airdrop": 4811.361358346412 - }, - { - "total_amount": 6755742315, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoxltMyfnkiEm14y6pjmwTYMdbIm81btofV2JecFVX27" - }, - "address": "noble163m56em5g0jfjj5gkz5gd4cdkjju7r83wvtqt2", - "percent": "0.04%", - "airdrop": 118669.62659744693 - }, - { - "total_amount": 554438646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2f7LwpUMypaskjA9OzPM6GRW771h9UInenG4nHG9tsE" - }, - "address": "noble163amvkyvl78khrlun7jxfuk3v3vy92nwxzw4l7", - "percent": "0.0%", - "airdrop": 9739.126216511719 - }, - { - "total_amount": 60686647, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3u5C3EdCL1yMubDNNzOxvVGkvEw4LnA5fLaxm6QH24g" - }, - "address": "noble16j98pq72qdfugsdx3hfd6a8hpd2wvyxss003nj", - "percent": "0.0%", - "airdrop": 1066.0059847088874 - }, - { - "total_amount": 51179919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmlbGKVzep/GkXHOkVPvHA73ccF3dkIOwLh6+wnNl7SJ" - }, - "address": "noble16jlwaeazuk3pka7270rqqmpjdalhgsnpdsy8af", - "percent": "0.0%", - "airdrop": 899.0132532930365 - }, - { - "total_amount": 61163682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0vhBlPQ9rwISgFYigH2o6AKP2MP4HR7rjOP25GF9W+T" - }, - "address": "noble16nz9gyncnt5u5l4y53pf2x69dtfc4mjrdqgza8", - "percent": "0.0%", - "airdrop": 1074.3854584490596 - }, - { - "total_amount": 381079724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuEXpR+qpzdraO1iZb5JYI3OFkarWgvvud5d9BLbPUjd" - }, - "address": "noble16nru4qkcz54wgp7t6ce4r08uqc2nfttp2hzmm5", - "percent": "0.0%", - "airdrop": 6693.948117371043 - }, - { - "total_amount": 422156740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlkXFjeyWXp7uuVAbUbjgZp1OnmB1P2MgOCigpuUuNun" - }, - "address": "noble16n9zy7fv4t3ne950y6cr9m66p72z2djmwwwq0e", - "percent": "0.0%", - "airdrop": 7415.496383004876 - }, - { - "total_amount": 81791749, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/nNwZ6qDvm3VY3d8dV4R9bouaRCjMp4Ov5UB89M4Ciy" - }, - "address": "noble16ngy6n3kp8p0vk4hknfr4uuwzfsjt44evadr79", - "percent": "0.0%", - "airdrop": 1436.7327615547315 - }, - { - "total_amount": 562218578, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkwGs8nckYivXebU+RSLA/g5Pb97+f+AxF1XsqE4M0r6" - }, - "address": "noble16nd20t2rrhzcqhjxgk5cf5wms7p3zq2gzxckts", - "percent": "0.0%", - "airdrop": 9875.786494886106 - }, - { - "total_amount": 1373042461, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhyF9+9/9oTVZLs6nsXh2b6wwgEh8GUTticMxpI1a2Iz" - }, - "address": "noble16nw6sf9467c4vrfvhyy23ml2yvjhudm8jtcr5g", - "percent": "0.01%", - "airdrop": 24118.509639944667 - }, - { - "total_amount": 516636604, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQVkycofLl+czRMtbYx4HWNdAjGMQF5vgk/UplQyrER" - }, - "address": "noble16nauzvzdj0889g9mcwn8p4ktjsnnpjvhej5s3y", - "percent": "0.0%", - "airdrop": 9075.105299254308 - }, - { - "total_amount": 75990840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AumQXXwOEfU7DWJixbptEzh4OshQzlX4zwXnclS9lTls" - }, - "address": "noble165pgxtmkadj5awszdz0v4x77re2zy87ja2s3k4", - "percent": "0.0%", - "airdrop": 1334.835490631992 - }, - { - "total_amount": 92733425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ytw0YEej3HRaw06Lyx4TfaazjzOT59Aea/Jc/o/dDW" - }, - "address": "noble16524xp6jaxdpkg6ttllverm8f3r4q3lq0v533k", - "percent": "0.0%", - "airdrop": 1628.931419337647 - }, - { - "total_amount": 68448265589, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AomOwPGGeG5b6LuOyIoekKWlmJ4eYn9ViE0Uqs6r4wvq" - }, - "address": "noble165wp0mrd27hvkmty8djmv48zytdf8kwxp66vn9", - "percent": "0.4%", - "airdrop": 1202344.5744303092 - }, - { - "total_amount": 821377033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArWfsEG8JAUooOowamVhQXjdt8+Hs/MrHlNxEfhs1hKd" - }, - "address": "noble1653qj2994hwrsssegwd5xf7mxyja54j7ahtd5m", - "percent": "0.0%", - "airdrop": 14428.097055360948 - }, - { - "total_amount": 1507875809, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtXcIxS5nHKTs0G+qLLLGrB7ga7bqzD2sxo4KVca+TiP" - }, - "address": "noble165nlg6gf2d2cza94cdsykqfjwvzcmkdzx90nxe", - "percent": "0.01%", - "airdrop": 26486.957445379296 - }, - { - "total_amount": 155118401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj4k5pAmBglw+c0AqscOJiC8Qq0rHCoR9rEbJL3OxHoI" - }, - "address": "noble1654xwrat3d0jc3tpat9fv8rj3mue4j4l9u7krp", - "percent": "0.0%", - "airdrop": 2724.7698131101733 - }, - { - "total_amount": 3348403312, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArQ/pTBvx/WBoAYOeCRmKv8dE6TiVgDvsgwD7xCGdtxR" - }, - "address": "noble165htj8zsdlrhjp554f55k0a5ldmuyslsm0jje5", - "percent": "0.02%", - "airdrop": 58817.18872705325 - }, - { - "total_amount": 2308040609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuutX1C9ANvH0gNsdP4UgUf9i6PAptBF4ceZXyyMVLqx" - }, - "address": "noble165cd3yca8g93nln800vu27tv9xp0y7qpffeaf0", - "percent": "0.01%", - "airdrop": 40542.44588838703 - }, - { - "total_amount": 487692217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al24U4JNNTVE7etJ/rOg8qMr/IxDC0Z2pAcK85Zbxn/4" - }, - "address": "noble164043vywyla0gqvpll7ng5lrtawhmklml04llc", - "percent": "0.0%", - "airdrop": 8566.675664548502 - }, - { - "total_amount": 51879837, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyePUoXsxRFEA54T73b9T7ys8crWVDCGdYlNxN/9QJBP" - }, - "address": "noble164n9eqsua26aw5edaylaalkreft0rksj3jffhw", - "percent": "0.0%", - "airdrop": 911.3078323098254 - }, - { - "total_amount": 167306746, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2+TM4bNaaasSlQE2mCjv+h6w5I4P9+VeBQhQb0X0Vi5" - }, - "address": "noble16446ctw4slln2xs5r595h0uxmf0ll2gqusu08s", - "percent": "0.0%", - "airdrop": 2938.867136920082 - }, - { - "total_amount": 382692916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6VLpeSZxtTxZDQo9i4gs85vrt9bsktkAoaEkhDxjPKN" - }, - "address": "noble164kdj2mwffyfqpj6vmctzgggs25zpseg9amenw", - "percent": "0.0%", - "airdrop": 6722.285031857099 - }, - { - "total_amount": 124509230, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fBC27KbLS7O1IS6S0EQ7ym29HwSRiKU9i2+dHTxdVU" - }, - "address": "noble164chz83jhuwtxn98p8nz39rrr580dqp6yzufqk", - "percent": "0.0%", - "airdrop": 2187.0970121564856 - }, - { - "total_amount": 170233201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/CENaQva9iogL1GDYUNnCc4hDnJ/j3LZA3lrfDNZUpY" - }, - "address": "noble164cmxh737ys6nyaas8ctwa85ejzmf52wv7zffd", - "percent": "0.0%", - "airdrop": 2990.2724904566066 - }, - { - "total_amount": 55719449953, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzCIL7pKRVD2EnAWVom3Llo9d57r3lW2FFe49oMRWmxv" - }, - "address": "noble164a9t2pjjxgu47tx5w45j6czm3075v0yqed4tz", - "percent": "0.33%", - "airdrop": 978753.482863954 - }, - { - "total_amount": 50500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap+hY93sL4bJu2M/vuHMwqjm9dEyw/GEf1iuDXt0a5I7" - }, - "address": "noble16ktxpejq2wxxy9fjjjfpaf4cfges7v0nac873h", - "percent": "0.0%", - "airdrop": 887.0699715507237 - }, - { - "total_amount": 866959090, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/grujZeST7wpj9sq+xay/jxRmNwW/8+E3h0ZswHroI" - }, - "address": "noble16kmp4th343nv9r9kgh66vkctuf3jy4k3dqae8u", - "percent": "0.01%", - "airdrop": 15228.779708949332 - }, - { - "total_amount": 2143361731, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlxO+iC9PisUiFEFylvUn5fLgVYonFx1kG5mv37M79+r" - }, - "address": "noble16hqxxuld63j5vxdd4t2pmdnkg8dfhkwwav8wwt", - "percent": "0.01%", - "airdrop": 37649.739202793666 - }, - { - "total_amount": 534907743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au5ItLzcjXrDF31hX8g5DdZmyu8UuOGp/oime6Tzf/ng" - }, - "address": "noble16hrv6talfkdcrq2yqzvphd4hfquavrah3e8az7", - "percent": "0.0%", - "airdrop": 9396.0514131737 - }, - { - "total_amount": 57008566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwK1PkeaiC4bm4/LQ6CsVQjtGG5A4OCpAvHpUtiFtYJr" - }, - "address": "noble16hxf3t3ce4xxzra289dej0spgnn33lhj6gnhly", - "percent": "0.0%", - "airdrop": 1001.3977627676744 - }, - { - "total_amount": 94834094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap2KK/FAUZlL+njGuEL3/3VPWd+97x16VDdg1MqfcMbH" - }, - "address": "noble16hgcg596hhmvj3ddyvu2lzsljfljmrclqkl505", - "percent": "0.0%", - "airdrop": 1665.8312290419535 - }, - { - "total_amount": 123070685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AougvHeR+4DgDTG5rLG6faaCnSKggfG2cAbNifsfw4j0" - }, - "address": "noble16hvfd54uj3ygqnymxa63c20s6t4pq8svc2qpv2", - "percent": "0.0%", - "airdrop": 2161.8279018154076 - }, - { - "total_amount": 150437857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoXyz6jMFPTdPIHu7v04YqPHpL4NALiUxSsCKAd8grtK" - }, - "address": "noble16hjhwwql0j48egks6jkvk6mnfyvrtzmu8uu7ec", - "percent": "0.0%", - "airdrop": 2642.552584735482 - }, - { - "total_amount": 8806987527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8FyIOjA16DhHYKvN+3dwULLK3bIStklj1OHuR6WM0d6" - }, - "address": "noble16hn20rk34m4acvtzen5sp0859mpsps7n73jvsr", - "percent": "0.05%", - "airdrop": 154701.27079254392 - }, - { - "total_amount": 790102847, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArJDYTXmSE8V77wOPBR/77vFSXbqI0RYmW7XDr/C+HM+" - }, - "address": "noble16cyrapn4udh03r54mznsem8z42vhdksxyslvsf", - "percent": "0.0%", - "airdrop": 13878.742772483878 - }, - { - "total_amount": 430878477, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0AKVSfhiQ3t8K6rfPlNrHfyHYVK5qvenq54Ybm/bw8c" - }, - "address": "noble16c8fzh6v877u3wjndrd6ryac6sv5c3pt4ml567", - "percent": "0.0%", - "airdrop": 7568.700165033845 - }, - { - "total_amount": 1546446754, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8LQrp3MJfPUrSwE2+aHeHq9s87K1sPVR0onO1P1A6be" - }, - "address": "noble16c8cm0f3j82exfwu8tm0snc9n3qw6cpl784gvy", - "percent": "0.01%", - "airdrop": 27164.484714366117 - }, - { - "total_amount": 1440912860, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awp7xoR9xN1hYet8cv/JXmQY7PB/LqEfOFoDRi3W4mFx" - }, - "address": "noble16c2f0av9pjc4revpwn6hlxd6ll6w0a7sxuhcqd", - "percent": "0.01%", - "airdrop": 25310.703558955876 - }, - { - "total_amount": 333065149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/R+ILYZpW31t/GXBgL7lJsXvynv6o6ViSMcNd0VrRd/" - }, - "address": "noble16c582tvzntez8erkw32gm7u6h0uyeeg2sl8jy5", - "percent": "0.0%", - "airdrop": 5850.5364801577725 - }, - { - "total_amount": 63310776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtzmjDbwkpOUQJc9g+Y/vB+3Dw6w8lS58ZpzqfVdTd++" - }, - "address": "noble16ch7h3t94ts232tz9wt6gpgy43ncff5zeh6cnn", - "percent": "0.0%", - "airdrop": 1112.1007577262226 - }, - { - "total_amount": 14489031695, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvdyS+8Cp0UoqC3Lm+dq7utozMVjEOU0ycQCjyaUdDqP" - }, - "address": "noble16cmu5jru4znwf9fkyux5mr9ry003wpsdf4k4az", - "percent": "0.08%", - "airdrop": 254510.59274220167 - }, - { - "total_amount": 2389823464, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At6oXA/x0JswuCZc+Cqbve02W2qi0hdKPiEi182MNryr" - }, - "address": "noble16c7zdkt07re6rwjsqx88kn8n3dhd9ukaxqaufn", - "percent": "0.01%", - "airdrop": 41979.022420232315 - }, - { - "total_amount": 51539500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AslxLXAo6vH/y9e1y8toYMiBnFucIwHCpGbYTj5qzqDM" - }, - "address": "noble16ez07y9saedze52fr7qazwvq2lpt93rl42ppw4", - "percent": "0.0%", - "airdrop": 905.32956037106 - }, - { - "total_amount": 253680673, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhiTmFb/snhEn/gOMEvUPmPEIXzNrtXkAmzvkogCeqTP" - }, - "address": "noble16erhqkh70vsksmsztu9594aclc4gp5tuv4ds8s", - "percent": "0.0%", - "airdrop": 4456.08925507086 - }, - { - "total_amount": 58252957, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuD0/T2gL0PCA/0t4n/gDeJrk7YWe30jssRP1BEQR2Bo" - }, - "address": "noble16eyk7rzqg6x68fk6uwaff3pscuxul7368pmnev", - "percent": "0.0%", - "airdrop": 1023.256414034367 - }, - { - "total_amount": 170394890, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Zf2a2Bwxaeu7i0oY7mmP2KVVXlGd3JObOAkuQgM1vy" - }, - "address": "noble16et8l2g6m4lf5a4px09gc87qvdlml6krnwphdt", - "percent": "0.0%", - "airdrop": 2993.112677716608 - }, - { - "total_amount": 507281945, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlzPcAv/1tv6pnPk8E0gqq7TcgePSoZIZHioykVkSg7P" - }, - "address": "noble16ec0mfj9tdytnsy8defjghfnpaw3utu6wrmham", - "percent": "0.0%", - "airdrop": 8910.783772660314 - }, - { - "total_amount": 621793901, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgAynZUlFnU9P6YO36c9GmdCT/0ZpLOeya9QSlKtf5pg" - }, - "address": "noble16ec467nvthhnq6s40r33a7c50deguuhe25kcle", - "percent": "0.0%", - "airdrop": 10922.271248920466 - }, - { - "total_amount": 54044745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6kR6GnYhfUImCHBf2J2cpIZ8Ni9lmEfGStnHMV/CuK/" - }, - "address": "noble166p5d2xlc2cv758929g2zeu5r7c6g36eg2sx99", - "percent": "0.0%", - "airdrop": 949.3360477151707 - }, - { - "total_amount": 282805987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asdw4H/RzQREDz/9JlOk5eRmtZD8Ksxkjytl3fbXPkH7" - }, - "address": "noble166p5shcsjenk52tng7pxdd7t3hdlr6zsr5m6yx", - "percent": "0.0%", - "airdrop": 4967.697006781472 - }, - { - "total_amount": 280935277, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxCzn1SSTr3MAvT7scZa12RveN/Q7G5QsFir7a//gAxF" - }, - "address": "noble166xsmqarxfzjgevt566ya568mcejtqlsp3f47r", - "percent": "0.0%", - "airdrop": 4934.836597544251 - }, - { - "total_amount": 220284691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7sDguuv1yocFWIvhhCVw8Jaf9yPG2JaX/yKc22pslNM" - }, - "address": "noble166dpfaws7mt59dd9jp9r4mfl7rlxyjzxmhyd03", - "percent": "0.0%", - "airdrop": 3869.464051058019 - }, - { - "total_amount": 587332682, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5go5pX/YgTnFdDzCIAVS6UHyprpjDkjf+V4t3vlmXL5" - }, - "address": "noble166dfc3jcq2arfwzcx32ft92uywtxwgqtwanv9h", - "percent": "0.0%", - "airdrop": 10316.934366585154 - }, - { - "total_amount": 12888032076, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvI0UiYzgHbdwcB7yc4BolSn9TADYrTFZ9nvhA83sxU/" - }, - "address": "noble166w7ced38gmq5p3aqt9x7jh3sptannpwlsgelm", - "percent": "0.08%", - "airdrop": 226387.84647528979 - }, - { - "total_amount": 399831650, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap4byKf3mBWtXqBVpESFkP6kvZHRLUVPvpOamI7SIUMU" - }, - "address": "noble1663tg33u9nstr8mtflvfpd4478a4w0mlrd9qmh", - "percent": "0.0%", - "airdrop": 7023.339611694632 - }, - { - "total_amount": 9567516279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax7cvPH70f2hC0eyRCyZom1q2fcDGDAdHqFeZWtkNVXj" - }, - "address": "noble1665spwzxzfty2zqwsy99qq7xw4k0urlu82nvqj", - "percent": "0.06%", - "airdrop": 168060.5226420518 - }, - { - "total_amount": 161784322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5WkKpjyJiDPqAlkJ9Y/GYMCUOirhC/2+wOyt2uwVJrH" - }, - "address": "noble16665y36255y965ggs7srjnrhz636rskndcfpct", - "percent": "0.0%", - "airdrop": 2841.86166166125 - }, - { - "total_amount": 141975544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiirKqFuXoDDb05N0CpwhZb/SyaB+TysalA/GXyDbf6t" - }, - "address": "noble16myxgya53vn9tsmc47tr97e63a3dvmdzxfq0a7", - "percent": "0.0%", - "airdrop": 2493.905777761951 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awk7MY/pjUa0eBJ15APaIxRi01DVpb5Eh+3wITEeQfCP" - }, - "address": "noble16m8qclzfeqkl63dux2lc2sfdnxs43q5r8xh85u", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 117962043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsA9++8SWWw5xI+/Wke7H6HxR9UOwVQHH6ABuLuxF09W" - }, - "address": "noble16m8vq2h3f828felr0dy58h3x2hv07ux99txpal", - "percent": "0.0%", - "airdrop": 2072.090814417332 - }, - { - "total_amount": 1080296956, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A82p90xq6W+CB1NUbK3V2X0HYz4jZArZLLDmCZ+qyKhx" - }, - "address": "noble16mg0qrs0uj9rqefjpde24qvjelxk6sgfrmau5e", - "percent": "0.01%", - "airdrop": 18976.21762426244 - }, - { - "total_amount": 66591917, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDk0/f4b7Dmjhol4PesdvYqGdD8ZxnE91obFYlYDLm0" - }, - "address": "noble16mtrmqv4sktaek54x5gkk7gcwpqpv89lf0tkkd", - "percent": "0.0%", - "airdrop": 1169.7364340336267 - }, - { - "total_amount": 50060018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0VyB9KSIhjBFdjD77YcG4VEGuzg8Z4LU2Oj/WNeYnNX" - }, - "address": "noble16mthx43cx9padnc3cemlltqvjsyracn7wkdk07", - "percent": "0.0%", - "airdrop": 879.3413612492815 - }, - { - "total_amount": 123162658, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmFXa7/qRZoK/Eq2aqoRDIayDOBzM8t10NWQEqE5ff+S" - }, - "address": "noble16urgxjv3dtrfuv27385c6uml6lssxxesemsk8n", - "percent": "0.0%", - "airdrop": 2163.4434758053762 - }, - { - "total_amount": 141383666, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyrJnWkRpfSREXDf47uZfPkK69t5DsnjgqlXQVfy0H4I" - }, - "address": "noble16uysc9kt3uqekph22yv4vx4765y7mxs23lsvl5", - "percent": "0.0%", - "airdrop": 2483.50900151202 - }, - { - "total_amount": 311565893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0aYKg8QwXBaSYvT2UkuT4c5+nXMWMqfHpmbiWh1IO9r" - }, - "address": "noble16u85uk5mu285xqandds52cckkvjnkqr5rs9hej", - "percent": "0.0%", - "airdrop": 5472.886095835363 - }, - { - "total_amount": 86565581, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9LgxTIMUjYS8i7ByirUgBF6oq2qZe8Kqn8hwa7qpbYK" - }, - "address": "noble16ufg6u3frupvd88agkxqm5tukrh4jvmplff3h6", - "percent": "0.0%", - "airdrop": 1520.588662870136 - }, - { - "total_amount": 73318168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkDIxqhWK4cnPXd0J/v0xeUVulMVzNBJ5QppTSEG4p6R" - }, - "address": "noble16uw5ua4ytm223q2vywe6tk8q5hnszp6l3xrfuh", - "percent": "0.0%", - "airdrop": 1287.8880238002214 - }, - { - "total_amount": 57438973, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am69j0gVPC1yY607NAvzFwt2g00BM7SfUeVtksPicl9F" - }, - "address": "noble16uurut3pfj44t6myf0e4dj3gcyp4l5f64p4e6s", - "percent": "0.0%", - "airdrop": 1008.9581810893621 - }, - { - "total_amount": 59096129, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Y4dAku4lVt3VGbFE8LY0W6b8iRhPJPR94Z/bJt7Nrr" - }, - "address": "noble16aqhazk96f8hq0r2mw9krlsnyf07nxdtkc2357", - "percent": "0.0%", - "airdrop": 1038.067355857186 - }, - { - "total_amount": 574269073, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao0m7otXQpn0cjam+xwbSjZuS4+3N1kJ4X/dhxnYYERR" - }, - "address": "noble16a878rv42skrrh56qatfg3t4vpkjcvdqwz8ngt", - "percent": "0.0%", - "airdrop": 10087.46238115981 - }, - { - "total_amount": 169158783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A26c4B9b2EN7A8+BgSBhzTRNhvA43zPE4bzfF3hKaNth" - }, - "address": "noble16a24tysqtre4234lafk75ptawyr4yqwp3fyltg", - "percent": "0.0%", - "airdrop": 2971.3995410567336 - }, - { - "total_amount": 507876291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkkLYdrpEMP9EVbhOd+ZjV2WhE3lkZpGiWG3cukc+aU5" - }, - "address": "noble16at95zmfk8xymcldqtshjsvfd2wzjk2udefukq", - "percent": "0.0%", - "airdrop": 8921.223901161526 - }, - { - "total_amount": 461814412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxZo9NEkIrxFNmEP1H5FAwJKc33QK9EAoeppo+6L4j11" - }, - "address": "noble16a3qrz6yp4ka4ygszuffx9nkuv3t3fwkftwyn0", - "percent": "0.0%", - "airdrop": 8112.112818109984 - }, - { - "total_amount": 1187754345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5VXK7AHLPBOFV0D7NQlALmb1lqwL06DnQ29rikX2y1Q" - }, - "address": "noble16ae7l2gyq6vcwgyzc5fv2t7eskkcwgcf85zg8c", - "percent": "0.01%", - "airdrop": 20863.78639660195 - }, - { - "total_amount": 6010931592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6LFz9yC0jpk8zyP+fD73NmsTZX4slsSq1uyDJtoUB4l" - }, - "address": "noble167437hpqszaszqje74qrly0x5a5u2r69nuqd35", - "percent": "0.04%", - "airdrop": 105586.473590273 - }, - { - "total_amount": 116332941, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxRgzgfBYDO6Lgp+6CtdaTQrY9ZXHcxPMeIJpTSmvLux" - }, - "address": "noble167esvg3wz6dd4e0c6t45a9w98ugy47gqyn0twf", - "percent": "0.0%", - "airdrop": 2043.4744289758817 - }, - { - "total_amount": 847460891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiVMKxRcx7MCFjUMrokexVN0sG0SCzJe8XH+/4HPdCRM" - }, - "address": "noble167u9jnz9k6x0tr82cyf96v630pt2rgplmz2wdk", - "percent": "0.0%", - "airdrop": 14886.279375638038 - }, - { - "total_amount": 511238955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxrIPH/6F5r5FGZNv0JfP1tHSCtrN6dNUtpBhqfsvgBC" - }, - "address": "noble16lxlk2zvcvjeyqghqvt85l3yaayy85xzv5as5z", - "percent": "0.0%", - "airdrop": 8980.291589454886 - }, - { - "total_amount": 144873259, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2UrXaoNzx1g6uvNJOmFnNqaW53z48jdWYCmHFkYfTQE" - }, - "address": "noble16lwqmekdu8gpcnhcatq9z5xhh76re7hlr5d02h", - "percent": "0.0%", - "airdrop": 2544.8062918730816 - }, - { - "total_amount": 72911576638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgsELUNAg7Rv9qYzBd5pd/WBvfPO1s5647d6D/fjhrSQ" - }, - "address": "noble16l5s86t4xrysu93g0r8q4kf838ys3au9zyllrs", - "percent": "0.43%", - "airdrop": 1280745.9448314668 - }, - { - "total_amount": 439485275, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhgCLENcFdj2fbZ56MX8u5akOJfXrB6o8mrE5EIYOEZw" - }, - "address": "noble16led6c7r0lnjlnna0yjzvug5k3k9uy457s8jaw", - "percent": "0.0%", - "airdrop": 7719.884958241822 - }, - { - "total_amount": 104505753, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+J99pP48e1BWX6ULK+B9UADBAcAyPMkXragTu4q4unl" - }, - "address": "noble16lmmqufzgyqea9xv3p94zekxk2dc2fhuvw49rn", - "percent": "0.0%", - "airdrop": 1835.7210958534051 - }, - { - "total_amount": 1029261574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6RJGIOEkeMsfhFriSVo3BmapldyonqjuflWdiF6n3fV" - }, - "address": "noble16l78jd88t6phup7324wlcl0kgvvc9c8cxrsyt0", - "percent": "0.01%", - "airdrop": 18079.743270622435 - }, - { - "total_amount": 400000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkOUNAuzbD8rmdeZwE1G37BNMaVTwTEQpa5a6sbbcMJa" - }, - "address": "noble1mqrwvh02vhxpka2r632ypdj9yua8a9ehg7m36j", - "percent": "0.0%", - "airdrop": 7026.296804362168 - }, - { - "total_amount": 294995762, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7kinXI/US8mRm9pNM6reCpeo5MZ+wgm4Dg9H+HWj+n4" - }, - "address": "noble1mq97600s0nq07e86358kcfvdedmux36gqy3pgp", - "percent": "0.0%", - "airdrop": 5181.819449602456 - }, - { - "total_amount": 517275549, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wBg/KjOsqNSTuQPAlFI3NmaYCBIut0j4/1X9/O3eRn" - }, - "address": "noble1mqtnspwqmuqpwera2p24j0gy0v5ajz9kzvael3", - "percent": "0.0%", - "airdrop": 9086.328842283465 - }, - { - "total_amount": 135941412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7LhmFZS4GD95/U5kIZIazYIcLSdii2iRgqSPTSBxJD3" - }, - "address": "noble1mq3pezd6fxvp6yddtkc6aywcmm4lq6l4muafwx", - "percent": "0.0%", - "airdrop": 2387.9117717902022 - }, - { - "total_amount": 508550891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Q7a/WBttECx/NN5d7N5uaMfAD+UaFBNUKPgkyvVZ0b" - }, - "address": "noble1mq5h3eqqv328ylxevst4m6ugjgeqpm7y0hylf0", - "percent": "0.0%", - "airdrop": 8933.073750722082 - }, - { - "total_amount": 1256944229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArY1EmyGPydQnYqscAyVdSqvG30OpOjJE8cpUvd4RckP" - }, - "address": "noble1mq4tfqktdxshlg3v696w96f5m7q88q2aj2d2ra", - "percent": "0.01%", - "airdrop": 22079.158048710422 - }, - { - "total_amount": 1017307046, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6t+JOXBg0XvpYOaRR614NOy+zKhbi4fauS1wVoA7V/l" - }, - "address": "noble1mq645v06dxvtaxvzs4smga3w5r4nkdne8e0e9e", - "percent": "0.01%", - "airdrop": 17869.753115912292 - }, - { - "total_amount": 76581389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AshGTZu7xOOctYaCDGV67qsXMwKKYRpBq1YvGJpsGGdx" - }, - "address": "noble1mpqmxrdf7rgxlrqaszyyvz03nx4cx4rjumnxtm", - "percent": "0.0%", - "airdrop": 1345.2089220107903 - }, - { - "total_amount": 50156201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcxnnE7gINSPAFgq0Utd1vXdznRzfr+7rdupZKIFxh1" - }, - "address": "noble1mpyk75q5yjfe4w0vavj7s5he37n8uht528uw7g", - "percent": "0.0%", - "airdrop": 881.0308870131164 - }, - { - "total_amount": 125415387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8CGk2Dn4GVz+bzhkq91zry0aSHQuzisXnXunkgYIuTA" - }, - "address": "noble1mpgv5kh8tyfrmgvdvv4vuekr3c43cf0zx4lht2", - "percent": "0.0%", - "airdrop": 2203.0143322398612 - }, - { - "total_amount": 459846144, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8m9T7Lo+SQKtVp5LjS8s6N7e1063kd9DXr0DYG0RtVm" - }, - "address": "noble1mp2fgy5csr8yu3rurmjt9j27pnkdsruygt9g5z", - "percent": "0.0%", - "airdrop": 8077.538730213663 - }, - { - "total_amount": 274516941, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvNquNeldfyc+NV1g+7i2Edkaq0j2M3JwnMUgkPkMFGJ" - }, - "address": "noble1mpww2c3t4apdepc66azqgjm0tksxufg3hnrket", - "percent": "0.0%", - "airdrop": 4822.093763228944 - }, - { - "total_amount": 523594098, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4iQV8iBQxFTS6CyDLnvOVV2umWXDOF/aRs8sfPh+C+L" - }, - "address": "noble1mpjwj7mrusar49hz0gdqvgv8vlwxguyz00k3ea", - "percent": "0.0%", - "airdrop": 9197.318843900728 - }, - { - "total_amount": 808848060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An+DRljvXjZ99gTX+IDdaVYlEVpmPNOekcbNHE3053+Q" - }, - "address": "noble1mp4fc4ke30cskspu2z58d0vnxdnlcj9egqugrz", - "percent": "0.0%", - "airdrop": 14208.016347981347 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axpl4apved7gsaRcRfeJgLvSAeVACqRSpU+cYGZGlsKg" - }, - "address": "noble1mpuj8wcp3nm462q348m6nmntl975mh8azujuhx", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 147106181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhTwkB8UyKyaEz+eWObX49Zvj7bXH9k22AtAqbYiO6iB" - }, - "address": "noble1mp7yhfha7c72s35y5rexeysmjra03vajjs8eey", - "percent": "0.0%", - "airdrop": 2584.0292236555565 - }, - { - "total_amount": 51358644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtNkpsIwR1Bmxocf5IJS7QmAWBySC6t9E/cizwEejXr+" - }, - "address": "noble1mpluc007lgggm3p6g3fywqpdge60jnxkf9uns3", - "percent": "0.0%", - "airdrop": 902.1526905339356 - }, - { - "total_amount": 210234485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7wHSvt+QFSHpADL3y8W5DaP+/SePBXRbO3eRAqzMeG1" - }, - "address": "noble1mzqqrctm0hvkghf66jruxjtggd5j447d6sg7te", - "percent": "0.0%", - "airdrop": 3692.924725305565 - }, - { - "total_amount": 132919822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRsV/j8XWY0LqjPPmtHRf09sdntc1kOuzbpW5rS6VO7" - }, - "address": "noble1mzjz3jn0wyfqwl0gk86u0k988gh0ee2nt8dnyx", - "percent": "0.0%", - "airdrop": 2334.8353013874707 - }, - { - "total_amount": 1003144907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnRvalJmqjCR6PevZ6RPvf6hEHsNH2wy+8hIRBLQjh/v" - }, - "address": "noble1mze8h4u9kwnd9ja77fwps078hwcsrsk882cn90", - "percent": "0.01%", - "airdrop": 17620.98463591571 - }, - { - "total_amount": 656868359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai7Yh+/vu2SaR+l90bjXasI34/vmgt5qAYBdhTE9OYVM" - }, - "address": "noble1mzuue4g9t8sacnfr484jqs4jtfgkll7slz8c6n", - "percent": "0.0%", - "airdrop": 11538.380129320802 - }, - { - "total_amount": 924186672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyZrEl7fLNl4cGxHDuky/h+0X0Y2T9PjYattvbsizuoC" - }, - "address": "noble1mr9zmv67e6w0pc679jvyrrp9nzpz256w3lm76h", - "percent": "0.01%", - "airdrop": 16234.024650269268 - }, - { - "total_amount": 84848278, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4X3teDyO3x++9gCd6dibB4U7LSC8mF08nKcD3qDqpf2" - }, - "address": "noble1mr8444gvez2p934kzzz96thr6freyfgx3uxu32", - "percent": "0.0%", - "airdrop": 1490.4229614175822 - }, - { - "total_amount": 1952516484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ABk4kZUH4fIqRmj4IPk69kKDAXl5OETZKzEaRFaB8V" - }, - "address": "noble1mrf0kts4vdr92f7cymrnn27qemu0sp5z2uxu66", - "percent": "0.01%", - "airdrop": 34297.40082998414 - }, - { - "total_amount": 1082783493, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5kTpORuTtnMXaz7LdYYqgp6xxLe8ARYNwVEwqWXm59d" - }, - "address": "noble1mr4p8fspc7j9jnxz3rv7qzaxwxajn0qqqjenvw", - "percent": "0.01%", - "airdrop": 19019.895491705018 - }, - { - "total_amount": 773756778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A506z5/RyTpWnxEFcElhmnKLnKyK5VJ1zLRqAew8rPe4" - }, - "address": "noble1mrm47n7v5ehktslprgahpuqzdj8scklxcxr8c0", - "percent": "0.0%", - "airdrop": 13591.611941537418 - }, - { - "total_amount": 50063826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6RxXN0OIqSD0/p13uTfIN12tJoHxPaqxtk4G3d6500T" - }, - "address": "noble1mrlqplht0l7je587589uz5svpead4paf4hf5zx", - "percent": "0.0%", - "airdrop": 879.408251594859 - }, - { - "total_amount": 391692326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgcVWt1TFQw6Gl9ZLOh7n9He8qLMRTY7fwCvA/VfKwjE" - }, - "address": "noble1my9dcx8nuk99l72rwkuj0wqdvcxu8jngfrvqp7", - "percent": "0.0%", - "airdrop": 6880.366346167461 - }, - { - "total_amount": 7034109307, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtxZMZuBgs5KFMvhfoH4SXEqzE5kAFLzf3c4eWR/js24" - }, - "address": "noble1mydfrd3fj99egej262mp4da06cgvf7dmudzy7t", - "percent": "0.04%", - "airdrop": 123559.34936327071 - }, - { - "total_amount": 572601820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApS4aMI0nGTNOZKmtur+w8dgas3NOjuOFXw8w6OAgEPB" - }, - "address": "noble1myukz9tww9kv69t2q539ss9u4ky9wee5vgpdhf", - "percent": "0.0%", - "airdrop": 10058.175845094904 - }, - { - "total_amount": 53842374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArA+i2QDQqHTfVd32+6/88qwBJ6eiC1Q2+82X6lKsXZe" - }, - "address": "noble1m9fh09h7eehq220xqeeauufr8zhx8yjdgg508y", - "percent": "0.0%", - "airdrop": 945.7812509386816 - }, - { - "total_amount": 846286654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmTwRM1huq869a5eKs6OQ4HkIS09RuUk6uL5f3/FKQ5w" - }, - "address": "noble1m9v79dyd0zgchp67fkxa0x6ncyqejr7hj4arhg", - "percent": "0.0%", - "airdrop": 14865.65303143638 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlsX+kCdGMWzJiup1Gk6TVxgaimsp6ZnO3uNqPoQYCoS" - }, - "address": "noble1m9evf5gzmk2v43k0mhwdrka0cnz0hs6y6drl56", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 52566093, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArYEKP94L8JEXUzGGiprwEODRmUeW8xbJo/0nOqZerxe" - }, - "address": "noble1m9lg0m24ua807v87w034jpx8vsf6xf9pum3m55", - "percent": "0.0%", - "airdrop": 923.3624281592613 - }, - { - "total_amount": 66732138, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A58Nag+hzXXRmpqq9R2Da7wNaFcJ6V/uQfcKC+fXe1z2" - }, - "address": "noble1mxtp9zh8wh0wet0cqhh5fty3qs4prplcrwauxq", - "percent": "0.0%", - "airdrop": 1172.199519944138 - }, - { - "total_amount": 72629924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AohvosiA+EZNc7WctphS6bCrX77naAKF2Ymcyvj6eg6I" - }, - "address": "noble1mx03wyt2zt364662nsjfdrzj3e4gk0z4l2a84m", - "percent": "0.0%", - "airdrop": 1275.7985072556678 - }, - { - "total_amount": 1247770694, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4RQap1VipZz4SYacb35gNaZsn62HtcE0iMMntqIyleP" - }, - "address": "noble1mx33ee8plkt9zxh30rd7rctwfjh52mq0fe34y5", - "percent": "0.01%", - "airdrop": 21918.01809957241 - }, - { - "total_amount": 1318302939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axj9lPJNlwoTdr7tWU3J7+KNc4XotXMrSnm0tJbqxsF6" - }, - "address": "noble1mxk8hsjtlx59jm2aw0p4nvzypyp70rwe44ghsf", - "percent": "0.01%", - "airdrop": 23156.969318692387 - }, - { - "total_amount": 3000339559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmPi5I8ZdukN4pPAjgzS+HznVdwFw7TyVvUw/OiymopV" - }, - "address": "noble1mxh0tjk8a27p03c3rjkp68dqrfe9n45802mu8g", - "percent": "0.02%", - "airdrop": 52703.190638507745 - }, - { - "total_amount": 171643252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AheYSk1ctrWLOn5N+v4+MAOpn3oNa6NL94HyrRDr5V4l" - }, - "address": "noble1mxhj2nrknn2nk82n6uc4xn5asxjsptu02x5c6z", - "percent": "0.0%", - "airdrop": 3015.0410825448257 - }, - { - "total_amount": 51163628, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay8ViTx4PH+nEa3O2naOKXSDKAC3sOOy7QEGKYefzbz0" - }, - "address": "noble1mxal30zmmep3629tlwqxc50cd5fkt2l8nlfssv", - "percent": "0.0%", - "airdrop": 898.7270897899368 - }, - { - "total_amount": 107005457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awc22rUQIQo1mqHMxR4GpKra8N/hGhNsLdmM+R7eMvaQ" - }, - "address": "noble1mx7tmcz7kp5pk5xz2sylvr3n6n7tmqx5ml8s8g", - "percent": "0.0%", - "airdrop": 1879.6302514210336 - }, - { - "total_amount": 994750000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1Z7jI79CJRAcPB3/C2HMlByB5hIDd9fKn4i9aMNxUaD" - }, - "address": "noble1m8qzgww63lqkecrp2eut7e7g9mhuuj5unutf5f", - "percent": "0.01%", - "airdrop": 17473.521865348164 - }, - { - "total_amount": 585600428, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah5S1cdVXv2S707vdz41Zx90/WL5kFycFbNpFRqjbUqw" - }, - "address": "noble1m8rwaup0774h3pj0wrlk53cwd44jrx6nsm8ys6", - "percent": "0.0%", - "airdrop": 10286.506039723794 - }, - { - "total_amount": 90983375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3QjB4wrOukzitRR8hE87W8fiwFCrBKtGVOIB79Gs2yD" - }, - "address": "noble1m8yqfmh5hzz8m3dr8uuqghquacl8sjjrwc7t0f", - "percent": "0.0%", - "airdrop": 1598.1904925314618 - }, - { - "total_amount": 1754947644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A36Wit65ceNCx9VG9vdrthvfRoSMBrLoi2NC7hPP29T2" - }, - "address": "noble1m8296ef3w055lqx6qu0nlpvfnyn6myr97aanwr", - "percent": "0.01%", - "airdrop": 30826.95755715029 - }, - { - "total_amount": 75953856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmxHq2HotAsK8SXjipzWSDaq/U4rHj4NPfyc3ET4NchJ" - }, - "address": "noble1m8du4mehzfl0y8ps72a6fzazjgg70af0hjfxqt", - "percent": "0.0%", - "airdrop": 1334.1858392294607 - }, - { - "total_amount": 640631570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An86HSnmoWlHNT6+33iummQF+Mw3aos/V6+n7gy1GhZb" - }, - "address": "noble1m8syyg0ugfxlyyfyp36npn33tdfrpatg3gcn73", - "percent": "0.0%", - "airdrop": 11253.168882661295 - }, - { - "total_amount": 327409696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxKhS09V62TVDZSiLUXF+TfauOrzTw2eCr+KjvSIJ/oK" - }, - "address": "noble1mg39qwr5eqa0ef2ps2hw9j7pdrcyltvf032pk7", - "percent": "0.0%", - "airdrop": 5751.194251804972 - }, - { - "total_amount": 58698500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArCO8ThkhYIvbOZkn2k6q2NcQSABq53BdlI0NgiGyPle" - }, - "address": "noble1mgjvfyujqp3vundd9utcqx90eldda3yhcngwky", - "percent": "0.0%", - "airdrop": 1031.0827074271317 - }, - { - "total_amount": 190614478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvDc0RyfLESEq8r7A3x/yz9eg/w4wRmdnFOgkOEq76Y+" - }, - "address": "noble1mghqsyfj2esuxzdjmdk822pkzf5xcx535kgafe", - "percent": "0.0%", - "airdrop": 3348.2847440914065 - }, - { - "total_amount": 1186881402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az784+YkR6TncoiOjryPv/nF1ZjNAZ3m+N19/6LhF9tJ" - }, - "address": "noble1mgcmc5222rlz6ap6r5793404f3m2ctk0t8dntg", - "percent": "0.01%", - "airdrop": 20848.452505073725 - }, - { - "total_amount": 4458424401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7rIUyXivibnv5csibCNBpQeMz3eU4WAy5tRuxYH6g7e" - }, - "address": "noble1mgetrnyp23shf8szhj8hsp94scu99r0pym0gq6", - "percent": "0.03%", - "airdrop": 78315.53280309153 - }, - { - "total_amount": 105000086, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4ZyEOoOr0p/lpaEM5YznTWJdlvUGa6bIvGRmU2JuAKn" - }, - "address": "noble1mgmtcxcxwfu6j5chf4mseyejxkdyhfmu5wncpp", - "percent": "0.0%", - "airdrop": 1844.404421798882 - }, - { - "total_amount": 52880000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apexqh9Fdra9UtYnVfxfWc3S1bDruzwrC4Z9kkzmW16m" - }, - "address": "noble1mfykhpay72fwnkgaldyxjdrnejt8f6aal4xg7p", - "percent": "0.0%", - "airdrop": 928.8764375366785 - }, - { - "total_amount": 6430707936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8cpo1HpWPVEpc20a1PRsVyCIvEfmW7Z+6BPnlwr0kJB" - }, - "address": "noble1mfxzwjyamzhf799fc2pshyhxvf9a42fn6edazu", - "percent": "0.04%", - "airdrop": 112960.15655125807 - }, - { - "total_amount": 79346406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax1muDi9Q17oqX7RtLiZ9ppFp5+hW+hz8LISCN669RxS" - }, - "address": "noble1mftkgrww7jtntxkhjks7tnsehculdzqvd0jtdu", - "percent": "0.0%", - "airdrop": 1393.778497288558 - }, - { - "total_amount": 50320764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvR9CoxbmtfUhuogH2r/sEGtpayiDwfhOztSSjj4SVBz" - }, - "address": "noble1mfwapy4vp2h7lddjdepupxgcknvc9t8a2h9l49", - "percent": "0.0%", - "airdrop": 883.9215582156571 - }, - { - "total_amount": 61224430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah6kxKMIeO2bAlaJMO5148/p8Amnt1ML5Mko/dyilhFE" - }, - "address": "noble1mfs5yx2m4as4zvtuj7lwg0ax4z8pd9uaj6zrjs", - "percent": "0.0%", - "airdrop": 1075.4525421447381 - }, - { - "total_amount": 102275897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq8HqbD8qNbAFZSivIf/z/ewbyA0A33kGBpIzwM2quHC" - }, - "address": "noble1mfhc6gktjvc6twsyg0kz3efcwwg3dyfxw269ds", - "percent": "0.0%", - "airdrop": 1796.5520206359356 - }, - { - "total_amount": 117382864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0LzetssBigX1opQY9YAq+97Krqbxmc1pnznrfra9QlT" - }, - "address": "noble1mfuzvqfc0f8dc3szexz7wh97wd9wsu75g6fkgj", - "percent": "0.0%", - "airdrop": 2061.9171055251973 - }, - { - "total_amount": 3026343304, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsQSOvh+sMxxgKvh2ezZLyyYXLF6KDB0MMnpQf86TlPK" - }, - "address": "noble1m2tyv7ajtkqduqazxew95xmzjveht6apvvyytu", - "percent": "0.02%", - "airdrop": 53159.96571449511 - }, - { - "total_amount": 149137935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Q843alID4fTsvO+eWHmCgq0RZ9iQReVsx+KaMJsANm" - }, - "address": "noble1m20wmdlscsyplz44s96kcy28rx05ufmn4znp6z", - "percent": "0.0%", - "airdrop": 2619.7184902491817 - }, - { - "total_amount": 280000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9WSOv8qGt7nsM+GHj/mhGg6jJGiDZiO++jv62d4rd+3" - }, - "address": "noble1m20lcygz6fptz4nq3euxh5gh3x469ac0h2jcxn", - "percent": "0.0%", - "airdrop": 4918.407763053517 - }, - { - "total_amount": 643387587, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvcSbi+10Rrh3Oo+wVWCGSdq2O4ntHngLboBFq1E08NN" - }, - "address": "noble1m2nq9lsfhjnryg3c5gesu7j3acea4nhc9srfa3", - "percent": "0.0%", - "airdrop": 11301.580366260965 - }, - { - "total_amount": 160910593, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A23LB2VsRmXxdo4Ij7gFVqcLSetdD2ehaQwqeuqZXHim" - }, - "address": "noble1m24myfazvstzpctefvp5zh6lphemhknzr2vkmu", - "percent": "0.0%", - "airdrop": 2826.5139634598036 - }, - { - "total_amount": 2476111985, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Y+8tJLGqZGpW7SZT9h3iWiZXZroxy+L5/Iny6mey3F" - }, - "address": "noble1m2hk0hwl6fwqmh7dlsdxrqsh77weng55fw0glv", - "percent": "0.01%", - "airdrop": 43494.74431862091 - }, - { - "total_amount": 53310351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5G813oqxCsgnKcwgpvIJx/esW2zZ5w2PZ+/M8gGyJz3" - }, - "address": "noble1m2cj8tpcy2ch0809ddtky90khkz8z5eev5p34y", - "percent": "0.0%", - "airdrop": 936.4358721768137 - }, - { - "total_amount": 88434182, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJzbtaznudowdSetDv5nJ8QhX4LTfeGxPHFn66H3Yk7" - }, - "address": "noble1m2uq7v48rdn0gytfradyfg3vpd27w3xjkp7f23", - "percent": "0.0%", - "airdrop": 1553.4120259574559 - }, - { - "total_amount": 64869544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApV/jfakjF93KCmumPDsf6pPrGTrmZh8geWQTZ/aVqsG" - }, - "address": "noble1m2am7vwgtvmc3qafceu6uv52leedspv34famq6", - "percent": "0.0%", - "airdrop": 1139.4816742690775 - }, - { - "total_amount": 62872459, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AztqjdHoBf9YxEZPb3SKqrWDzHfMQgwWKStksi7qMjBH" - }, - "address": "noble1mtz620ufujrngv9v6ytd30pgkdfr93z2vx9uq8", - "percent": "0.0%", - "airdrop": 1104.4013943852285 - }, - { - "total_amount": 84795643, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6bdNSb0/VH+lq1HypMaTzv17ZR+BM4BrP+pE50/sVrO" - }, - "address": "noble1mt4kcamxjedv2vptgmurc7y4hu4s2adr7h9udp", - "percent": "0.0%", - "airdrop": 1489.4983885868382 - }, - { - "total_amount": 656880592, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1kEHze2AJ5RIrvJEbuvX9GBdnhuvv1FZn2hMii1poxP" - }, - "address": "noble1mtewg5ypsfe725edwcncgc3t7kcyq38lt9t3zc", - "percent": "0.0%", - "airdrop": 11538.595011042824 - }, - { - "total_amount": 155209815016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6f4lJ+LbUBQkM+rzaX7CDgQ1oAX5UVYunly4r0zYaJm" - }, - "address": "noble1mtmyfwvu3tsrdynmahpzpsdatxm2wg5wuljdx4", - "percent": "0.91%", - "airdrop": 2726375.56813141 - }, - { - "total_amount": 50922154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3kqyxVPvK8bw5vPyseTaYU7cxOFYqIq6A+EcJOeKNUe" - }, - "address": "noble1mtuqw37mt0rrp3dm004uw9v4hnwrjmxyzewl5v", - "percent": "0.0%", - "airdrop": 894.4854198035954 - }, - { - "total_amount": 60535764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwaBL0SyFNyrepwSF81/sz2DShBW7F2yHE8JdLSuv6b4" - }, - "address": "noble1mtav8n8j44dx2ymny35ydehphtwt7kutues5t6", - "percent": "0.0%", - "airdrop": 1063.355612857056 - }, - { - "total_amount": 112361744, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alidc/1pQUdm/sd9P/l4A5PWduBBhf6LgvjvP9CODsZH" - }, - "address": "noble1mt79je23y0za837jedv796jjvxysuh4x9uans3", - "percent": "0.0%", - "airdrop": 1973.7174069994 - }, - { - "total_amount": 215869564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj4xC2F7BNsSk2JZQsLT+WpDWvmo2q0RB+At4aZLMrLS" - }, - "address": "noble1mt7wn9rtnmlv474656glwyuvnyacvuj3gsz0um", - "percent": "0.0%", - "airdrop": 3791.9090692306363 - }, - { - "total_amount": 1279158707, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtlvXm+F6ftqHDH+Iy68JqhjfS6hhlMhB7ly2Ha0cdu7" - }, - "address": "noble1mv90nr4ttpzylx57l4gpy7r087y367hsru3hwt", - "percent": "0.01%", - "airdrop": 22469.371838165356 - }, - { - "total_amount": 809281690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlcYEDcGwEw6Ug27PQLmjPQ8otoY3CzJHD5i9l2/Dx8k" - }, - "address": "noble1mvfehk2smmhh2373wjvqlt4c8l6tca8654uncm", - "percent": "0.0%", - "airdrop": 14215.633380689536 - }, - { - "total_amount": 450024296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/NRz/oyoR+Sq9Ecj4I2iybT2d+KxRCcJaW7szi+EsiP" - }, - "address": "noble1mvdxerywl5d950r99kqx8ul3vmtt5jfjmx5tuc", - "percent": "0.0%", - "airdrop": 7905.010682175336 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkksLs9bEuLdDnCwdvFcnWUPz/oQ1NO8YOfgBm8m8iQo" - }, - "address": "noble1mvdc057nuluhtscuwmncuxtptw62hu0va93mam", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 1336784192, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AycxXcsamTXL4LT5Xydc6AIh2Pti3Kooo24juL3Rnp+M" - }, - "address": "noble1mvjsn6d7enn9qfwggxdn0spy075fjp50r0qkgw", - "percent": "0.01%", - "airdrop": 23481.606240928657 - }, - { - "total_amount": 50261556, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4MuEyTaIt03tRYV8Uap6bDNtFPuIMc06Z4aJ/0GTyvy" - }, - "address": "noble1mv55pwaxgzldfksfdq9tmpx0v5ywmq925r99rr", - "percent": "0.0%", - "airdrop": 882.8815257626754 - }, - { - "total_amount": 1827803080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApWxiqJn6IDXtmxAuH6NkHb3gUeFrrgURJfQBWV0FOdH" - }, - "address": "noble1mddm4h20x6swptxjgjry6lu3kkdxz8udk6k84c", - "percent": "0.01%", - "airdrop": 32106.71735001832 - }, - { - "total_amount": 112865103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHPm/4OfzI5G5o4TSvhNMUvycPHCtSw6Eq8ZixbAPNR" - }, - "address": "noble1mdwz5mrgtchzetvky3kywfc26r0ql7jndq4n4f", - "percent": "0.0%", - "airdrop": 1982.5592813322673 - }, - { - "total_amount": 703414849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al6JZacpKEVtBgh7EvIx6oI6bLexe4/OivpVhjrDgbFL" - }, - "address": "noble1mdsku4csjmh20u4rfq0c2psqhd5p7ftu0y0v5r", - "percent": "0.0%", - "airdrop": 12356.003764173991 - }, - { - "total_amount": 216889594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArYWiFDT1WrpDoMJPkh+xunrZlwopR6bltQ7kABFNaZy" - }, - "address": "noble1mdjdalu8n6uexfv7988des39kl5ah9uh79x7c6", - "percent": "0.0%", - "airdrop": 3809.82665305402 - }, - { - "total_amount": 146818798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgcKpVuP0Y8yTxYutyWjpbYQtqVIhqUV8dtXGI7ZF0WD" - }, - "address": "noble1md4w2hwldy0kxmcfrzgr7umpcmd2le5cgqz2u0", - "percent": "0.0%", - "airdrop": 2578.9811280192366 - }, - { - "total_amount": 252957840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A79mKv1PgnfX7HmAJ8TcRbp3wQxWYg8IHKzKNaGBsUsw" - }, - "address": "noble1mwz4k6gehrvvw0r8gkl95yl8gc2vetjmjucss7", - "percent": "0.0%", - "airdrop": 4443.392157075891 - }, - { - "total_amount": 158210947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmOPzsyPDE1f6ter/ShCeRjweryFq0/rlYWJyKKHF4R9" - }, - "address": "noble1mw9wckjvpxvkgxhr8dxk93cmudpc9cw3eza3k2", - "percent": "0.0%", - "airdrop": 2779.092678303031 - }, - { - "total_amount": 159358466, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AylfsDFIDk3An4Df5onlzhHzkcPS340ApAqsxROQ316b" - }, - "address": "noble1mwf0pvag0pqq237j7q4yxe3tjlmhaxgldgy874", - "percent": "0.0%", - "airdrop": 2799.249701009643 - }, - { - "total_amount": 436115040, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Fnr3tZukN9MUr4IZ70X2Ck1tSC7yw7Yn43tMVeoRXs" - }, - "address": "noble1mwf35tgvyayhcpxnf8hquvwq6a45f4sg4pxtcw", - "percent": "0.0%", - "airdrop": 7660.684279715697 - }, - { - "total_amount": 57982571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap4YqiN0q0tbD+36Q2UeD0HEIP5HtZp1ErIhP5Va+I3Z" - }, - "address": "noble1mw504rz658pxfxl4qzy2lkl4vxv2zq7mdkyhqj", - "percent": "0.0%", - "airdrop": 1018.5068833150063 - }, - { - "total_amount": 118986931, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtuopIgTO35w+hCPu6fnzHIirU4aC4FKKfLhbz0aj2jU" - }, - "address": "noble1mw7laufa6p0h0amlqcqlup8738k0m970qy8574", - "percent": "0.0%", - "airdrop": 2090.0937326154044 - }, - { - "total_amount": 90366782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtI/zmSdi8cY6yO9QkxwUnrsapuCV5rLk0sfyqTZhduQ" - }, - "address": "noble1m0z4hnmlu4cy6c7hruahg04x57w6cc3da7zfnc", - "percent": "0.0%", - "airdrop": 1587.3595789677317 - }, - { - "total_amount": 531517365, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnDUfhikcJU0m3JTeNxhaKftQ8N5kCEe0r4jYMObQ+/A" - }, - "address": "noble1m0x2h87zcmrd2ynnura2kvdkwy52n8zx8z6nnr", - "percent": "0.0%", - "airdrop": 9336.49690790625 - }, - { - "total_amount": 975111233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2SHhDGU8rBW41NzUcAeX2sLJ+L/6yKUd70RU2TY6Mn2" - }, - "address": "noble1m02wp4qnqv88nkxaf9pxjy9ej035t6wrr5mtwh", - "percent": "0.01%", - "airdrop": 17128.552350813883 - }, - { - "total_amount": 1867444521, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akw89EfGvWBO4gQ0cLXDCWSPEIuQC2YaUjBmGIxNWYbi" - }, - "address": "noble1m0t6a2a7jr454dfx3p50au6d4wh6mezf5fydl6", - "percent": "0.01%", - "airdrop": 32803.048675564845 - }, - { - "total_amount": 369224940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azo2oEHUHgxxG5Y2mHTM0RumrSc7Smn4WyS4ABZT7iLe" - }, - "address": "noble1m0v7sea2p7nryrgjkq8cs8pa8j7c03ncmrc90a", - "percent": "0.0%", - "airdrop": 6485.710040032033 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Pzp59+9Sh92dqibzVolxwe+KTSMdfC99OPMFLtN280" - }, - "address": "noble1m033wtzrcu6w9cw0m2mx4qyh9m9wydvn4e9uk0", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 5653640016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Ce6Ki7+sgzrk46vPAI2p6BV+Y0jvHx/GkwFbYwq6Gr" - }, - "address": "noble1m0n7rtun4sqy7armc8nwu7a3evhu3x9mlred9r", - "percent": "0.03%", - "airdrop": 99310.38194358718 - }, - { - "total_amount": 2000000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhSvM7xKMPtRVJhpfFooR5vGNQT4cP2aEtWee3jcZQPA" - }, - "address": "noble1m07e4tsnt5tr8dsdtz2l6ad4yapat73mzukztv", - "percent": "0.01%", - "airdrop": 35131.48402181084 - }, - { - "total_amount": 757247801, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlXzV3Cgnr7YAXVxQ+YlwPsd0GPw00iQpxSAKt4mojC8" - }, - "address": "noble1mszqfjrh2af5k3jr4r3deukgrzdylkr2cmjfsy", - "percent": "0.0%", - "airdrop": 13301.619510691447 - }, - { - "total_amount": 344157022, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3VPmEz1sZm2fpjnVGPZXojW+vWD83UjdFkqvIGyDn7p" - }, - "address": "noble1msycheygr5m3t2frfudkf25yzpu5urhxgp7hzn", - "percent": "0.0%", - "airdrop": 6045.373459693501 - }, - { - "total_amount": 50122152, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqpXIhajFSACb4A3zFs3ZRjDDyCR0Uvo8z/Kr/TJ2tHh" - }, - "address": "noble1ms378sarc3w8mhvnwmhqy9uukl9uea80p72a8l", - "percent": "0.0%", - "airdrop": 880.4327910633871 - }, - { - "total_amount": 156546799, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsiQfqm8Yjte2lZmQezTnjvXG+mnvpopYGtJAdx6zoCt" - }, - "address": "noble1mslujpu77jmtp4fd8ed32xmj6c0h3q6etyyprn", - "percent": "0.0%", - "airdrop": 2749.8606838670667 - }, - { - "total_amount": 196921427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AymTZqC2IGfTxdZ6kCZPo8p1KU6FfB4Xdxbf2PZsQeOk" - }, - "address": "noble1m3rrjdwxgwemanuk7sukhckl92u8pzy59nulmk", - "percent": "0.0%", - "airdrop": 3459.070983101345 - }, - { - "total_amount": 2649681986, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4KpAi110XWv1gtDwj+lf6z/yx+dtS+Qa7xwkssocU0f" - }, - "address": "noble1m3x4hct90pgskylcc7lchm892079w4e2rtg2at", - "percent": "0.02%", - "airdrop": 46543.630177019506 - }, - { - "total_amount": 530615424, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aibx2NoPsQDtZoS6+5WSl/nNyMi+3meyC/4v8JqWrzp9" - }, - "address": "noble1m32h85pcvd0upjny68u99qftleqall3zparhrt", - "percent": "0.0%", - "airdrop": 9320.653644991193 - }, - { - "total_amount": 504849599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+9giymNRHZ/22Xn6OtDW0nvi7/OCyIUghk9E4LfrRRW" - }, - "address": "noble1m3d7jqtjnhuevkxg6t2xzk2cfzxhc80atryk6w", - "percent": "0.0%", - "airdrop": 8868.057810343054 - }, - { - "total_amount": 355036844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2RL2BxJl+SKVfDOwIYvaSQN2jhgttdPosvXGnVYIryH" - }, - "address": "noble1m3h3gtkhx8rt7hm4fh9430t083v2uxjjg7c5x8", - "percent": "0.0%", - "airdrop": 6236.485606070073 - }, - { - "total_amount": 1220634497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2KDE7Hu+Vdw9QdFGNOb5ECQHkPntGfgisusI5goWDFx" - }, - "address": "noble1m3mf2t06jz8u5vf9zx8rahwfdnes9x3n7fp606", - "percent": "0.01%", - "airdrop": 21441.350663913305 - }, - { - "total_amount": 61659900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1mTKGP52V8OHy8U4Sr+gt0jqtJTJjMAta2en68xC6A7" - }, - "address": "noble1mjqf35c3ax4xh3hdqx3yxlxl87czvdv8c3d06s", - "percent": "0.0%", - "airdrop": 1083.1018958182271 - }, - { - "total_amount": 109000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag7iVOvgWCohbCFjGmfRxJGwNCLpkZJqW5mqVv8iI5NX" - }, - "address": "noble1mjq48r6435aewerpruwc8up3tz3rzan2y6tlem", - "percent": "0.0%", - "airdrop": 1914.6658791886907 - }, - { - "total_amount": 1610997215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5AtBiqCJPMglt8E9/PcaKcHLy2lMQjf8csg40LB/GxM" - }, - "address": "noble1mjp88d4dx7t76kesf4patplr0g0zhzdku6rsal", - "percent": "0.01%", - "airdrop": 28298.36145897713 - }, - { - "total_amount": 89810416, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRjJpYclBoo85tPhvZBWLzAXPS7HuzpivMIfjMJAZbP" - }, - "address": "noble1mjg3rc0cxfyeydf6yl0kwa5kzzcysc6ajgcjm7", - "percent": "0.0%", - "airdrop": 1577.5865973480923 - }, - { - "total_amount": 52033200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiLggRNKLG0HADkHWbcK98V0iJOxP0f9KGuk6nrMKGOl" - }, - "address": "noble1mjt4vpkfvfwz8gl99xl30m6zx0rfar8kk4mwmz", - "percent": "0.0%", - "airdrop": 914.0017672018439 - }, - { - "total_amount": 455437442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjKgTFAgDKrfiJZ24YXx2GZw142Vn8swfZ2RR9VrAk/y" - }, - "address": "noble1mjtc64a7wexuq252ljnd5nddjwstmaptkklluf", - "percent": "0.0%", - "airdrop": 8000.0966082787 - }, - { - "total_amount": 51729529, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al90kJf8MuBVqnF4oqv8i2NiAD95c5SynZ4svBkrbqxE" - }, - "address": "noble1mjt7j5a34yn2085qx5vdg5fgelu4s973c60clr", - "percent": "0.0%", - "airdrop": 908.6675607596502 - }, - { - "total_amount": 157313700, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkOk9SNsKVkx3MTcYSa4i7BU0Y7hhmM2GUDzuuwcLe+l" - }, - "address": "noble1mjd4q6c2cqum9p4zav079rhlhuwtu0p7qn9czy", - "percent": "0.0%", - "airdrop": 2763.331868980972 - }, - { - "total_amount": 92899812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A949yn/W4//PoZ7ANEMpt4RVmw8c3CtVZPcMWfC05Glb" - }, - "address": "noble1mj4qphzu27qyjjplnjh9v9zn8zzshjecvttyth", - "percent": "0.0%", - "airdrop": 1631.8541304536154 - }, - { - "total_amount": 777336267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvbaDr8b5vRoWQ3Nnro2YhN0ajib+ACBFuRhhrYRry1w" - }, - "address": "noble1mju6zhafyt7ef5srr9pcg2jjtndkvcq9rd793r", - "percent": "0.0%", - "airdrop": 13654.488321842291 - }, - { - "total_amount": 2038750199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFQV9SHGCGpdERS/LbYFK23naw0PrmNIvQeJKyU7C8G" - }, - "address": "noble1mnqus86q60drc240hr85evqdztr8j9yxyyasqw", - "percent": "0.01%", - "airdrop": 35812.160020316085 - }, - { - "total_amount": 61007798, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar9qUVHBXbDCZY3x0QsMc7tdYfxBEoRwptALhTF6SXTT" - }, - "address": "noble1mnpfum0ev78hd08fww3728zv46g5fa00dnazcn", - "percent": "0.0%", - "airdrop": 1071.6472403214316 - }, - { - "total_amount": 36839347404, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzQ/3m1NcAJw0vNpBa662TPYbJvT8GCVsp34+h1CJsWT" - }, - "address": "noble1mn99qmf7pm7uerlex2hkq0fjp354kvccga5652", - "percent": "0.22%", - "airdrop": 647110.4723487824 - }, - { - "total_amount": 51783646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArzX8Ab3VSggCXxd/93HAPeGdQ5xkKSewAofYfiwQzTg" - }, - "address": "noble1mn8rn8at3f8jtvztqfaxzxe49fqcs0fxwrr79m", - "percent": "0.0%", - "airdrop": 909.6181660200543 - }, - { - "total_amount": 132141149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgOlhk79gl2j5ZR89pIFTq9ale0p2uJ4jZSbRtXsMp0K" - }, - "address": "noble1mn8k2qzz0gcspghsua5d28amy270htk9spj3x0", - "percent": "0.0%", - "airdrop": 2321.1573323586126 - }, - { - "total_amount": 10468139936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A44AeVaSZolQBMsW9SK0X2HE6o0MOwY4RT8HqSikiD6F" - }, - "address": "noble1mngr6pakrjkd362htqwlhdd7y2l8edf3uka4lq", - "percent": "0.06%", - "airdrop": 183880.64544983197 - }, - { - "total_amount": 846646541, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axjcs5Jjrivo5nq1Izhmb5JLZCt0Q8gdJlTGyxsw9PnN" - }, - "address": "noble1mnf0nxkkyd7kuurcmazmd4egjm0x67kwh6lpzx", - "percent": "0.0%", - "airdrop": 14871.974713631456 - }, - { - "total_amount": 39519751499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao3pOvdR9dJ7ksKfepLvXqVD/MQJb7DcEba1J7AwSKlF" - }, - "address": "noble1mnhr2duc8cgv98q622rjxpegx7cs9u2g5q6lsx", - "percent": "0.22999999999999998%", - "airdrop": 694193.7591665267 - }, - { - "total_amount": 915461274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A71SrhM56UIXCoadSrbkDiAqbZsgC0i956xB6FHEjAZy" - }, - "address": "noble1m5xtg6evtcw3s9qlchhd9ua98rmd7ed4glqglf", - "percent": "0.01%", - "airdrop": 16080.756560058797 - }, - { - "total_amount": 9558352688, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1sjbjx4QlECFxj7US3bu6NTebCW9Bu+LSPuIlNHi0tI" - }, - "address": "noble1m5fhxgsec7pj2f8jt9cn37xypsw0e99a3jm2vx", - "percent": "0.06%", - "airdrop": 167899.55736665236 - }, - { - "total_amount": 1900044492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4mztOAgARmRsVCuGBbo4FtsMSDePSYF2W83dvL+xn4A" - }, - "address": "noble1m5dfxd37j9t704cd3vj3fm5dx0udlwtqklafvr", - "percent": "0.01%", - "airdrop": 33375.69135571385 - }, - { - "total_amount": 154849829, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3A6TrOEuWSv1+2ioNARXyDl7mXRb22cVyMKr6yXrEGj" - }, - "address": "noble1m4fwz97und87a72faamap6n3fvtakgxg73eqg7", - "percent": "0.0%", - "airdrop": 2720.0521466468203 - }, - { - "total_amount": 65569077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak4WmkPTxEPqxiJe+XwBfovO//2QNJkuj/eihkRcsjHG" - }, - "address": "noble1m43cv73deaz4kesmkav3v6s0jq7shydeq5te4q", - "percent": "0.0%", - "airdrop": 1151.7694904751922 - }, - { - "total_amount": 85000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8I73lRf7zBv0CNH2ciB22adjgsNcG5JBPT2lqubUnbz" - }, - "address": "noble1m44urk8k38tcfxg4ywzrgq2fl9s2jvprm7aev7", - "percent": "0.0%", - "airdrop": 1493.0880709269607 - }, - { - "total_amount": 50457922, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqsb+dXXyrMg+UWEU9IYviI7TWFEaSQGbMvsNEJTR2pV" - }, - "address": "noble1m4msvw38rrstkapmevd02ys6nkppd2wskzva28", - "percent": "0.0%", - "airdrop": 886.3308402583889 - }, - { - "total_amount": 210280962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4sP1+0lOgp4QErnn1b+R82rSL/wmJnxWvo5hosN3L8G" - }, - "address": "noble1m47mjnfufz03yea08srdmyvd3xd3c8annkau7r", - "percent": "0.0%", - "airdrop": 3693.741128297006 - }, - { - "total_amount": 342141375, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6H5UEX1AgLeE6Pb54mEgPmb82TjjfzwhFZ1M975SNW6" - }, - "address": "noble1mkqz0kqrvv97k34fufle9rx7fvukze4pntv46w", - "percent": "0.0%", - "airdrop": 6009.9671245064455 - }, - { - "total_amount": 148392839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A93Y2CnY50AUCnjmiNHW6dzPCuivq+4bSgx1Ie41gG3F" - }, - "address": "noble1mkzr3e3l96f4vvjt6gdy2079u3rvzvt7en4dcd", - "percent": "0.0%", - "airdrop": 2606.6303261398243 - }, - { - "total_amount": 5853122707, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJMv2E4MgvfKR8U94um3MeC01C3hjI39AHf4aVC1l0u" - }, - "address": "noble1mkrmf772r68qy8gp4mhtuzny63yq238mna53sl", - "percent": "0.03%", - "airdrop": 102814.44342933435 - }, - { - "total_amount": 327913131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5wVcfpu+yVFLTq2DGTvk5B+Pk0UBtOqulwOT6IJ03bG" - }, - "address": "noble1mkv8v38kx60ll23r9wf2cs38x3qzu78culhl2m", - "percent": "0.0%", - "airdrop": 5760.037461134232 - }, - { - "total_amount": 309666338, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhA7XoEaqPf9hEzXbII9hK9AIv/cInu3mmInIRF8gNhc" - }, - "address": "noble1mkdel7hjfw2ngc03ds3z97lfmfn0fq52qcvxd3", - "percent": "0.0%", - "airdrop": 5439.519002769837 - }, - { - "total_amount": 51251999, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+j3XrecBx9+GqEOHeSl+jDHjxEz9d9uF2PSHIcqeMdW" - }, - "address": "noble1mkcdvldfj2fthpy4uxj2hpq86rxyqhm34tny6m", - "percent": "0.0%", - "airdrop": 900.2793919771826 - }, - { - "total_amount": 184583785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0ChgusSDrj83D115rTNO9SOM8gTWqPym3oqEnJXQDq0" - }, - "address": "noble1mkeumd8v8n9a408x5fhelxx793n0qcahpcgmvx", - "percent": "0.0%", - "airdrop": 3242.351146706434 - }, - { - "total_amount": 259992792, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5cSHHsRmXl/GiApP/y2EvxMcNXjg7KFv7uP0H4Ul3Sx" - }, - "address": "noble1mka93qr7h0n7clrq7yqwhwwrfev9r88rsq38u2", - "percent": "0.0%", - "airdrop": 4566.966308966994 - }, - { - "total_amount": 97132299, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Z66PKT4HR8iDqhc5tokh9+BU+AQSynCpEuOAkOQ9Kj" - }, - "address": "noble1mk74f0fl4jmp4xah9lyzw9jts5dx2whrc3xl5m", - "percent": "0.0%", - "airdrop": 1706.2009051601265 - }, - { - "total_amount": 55167820, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw/4nocHrNjzB6VxQ29ZwqF2wnDIN1l9gdwT7gJc6qPt" - }, - "address": "noble1mhq5cc524fwpwprtaru63y2aa7jm79cd42hnvh", - "percent": "0.0%", - "airdrop": 969.0636934240682 - }, - { - "total_amount": 53553398, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsAaXD9u6MCVj4Hv7MjK+klWm0NZOe0cH37FIjEdWuG4" - }, - "address": "noble1mh8sks7lc4m8rvnkr6uwyca0jt0xrt7l3gafck", - "percent": "0.0%", - "airdrop": 940.7051730753383 - }, - { - "total_amount": 59390734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0f716LIhxsxekQ8uBu5LMjd1ar7fTx8DyldPDk87GeW" - }, - "address": "noble1mhgj3ke6dlqf8tyvqx5ea9654xx6ccwetw4rxu", - "percent": "0.0%", - "airdrop": 1043.242311282309 - }, - { - "total_amount": 4179825897, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkOgUHEZQXLK9NhMKdaBwBifg7co/EYKh2tm5pQKzsBz" - }, - "address": "noble1mhd6m42zs7vxtcfjrquz99szd4sds5pc9f54rz", - "percent": "0.02%", - "airdrop": 73421.74335720333 - }, - { - "total_amount": 1008459690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9EArBC03L+Bu58j3F5VFInBBUDlvU0cT3U3KtxhbTyG" - }, - "address": "noble1mh6zd2rd7gu4dlvjfgtap2skmk0fal75v8g2rl", - "percent": "0.01%", - "airdrop": 17714.342742937657 - }, - { - "total_amount": 51358362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7sL+lBgps9l1I5oWzbr2OSA1e9UUzM3hTt/GmJjnXeY" - }, - "address": "noble1mcp4s2gztp7ke0r90rfmmqknst8jmtpu02ldqv", - "percent": "0.0%", - "airdrop": 902.1477369946886 - }, - { - "total_amount": 501668158, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoruGQlAozj37SkmhQKJ5bomnRxXOK3TkARcvh1zI+e8" - }, - "address": "noble1mcsf9z6hlezw6w5aawqrwv4ywraqr0ef6f98vf", - "percent": "0.0%", - "airdrop": 8812.173438514139 - }, - { - "total_amount": 2105883167, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjlZ3iQfAaH+1qrykboNfbkCra4Y6R2b+OJGrmqQMb0e" - }, - "address": "noble1mcnxp2lc33kh5n6suphs3yrulnkxx7thx6hggu", - "percent": "0.01%", - "airdrop": 36991.40041663045 - }, - { - "total_amount": 69404926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Qgp8tmQhuVKSmLZUiicAD91Dh3X+PhMqRcbOs1IT5d" - }, - "address": "noble1mccx9ec03xzjdulgj9uzqrh930dhh6px7dpsq0", - "percent": "0.0%", - "airdrop": 1219.149024401982 - }, - { - "total_amount": 213666642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3GKzyfGPB4d2WdQRQSUtTQMU/dPTy7lC8w3cFY2/PHR" - }, - "address": "noble1mc6cc50jryq7p897cm77gd2v7dpgpgp4t5rltt", - "percent": "0.0%", - "airdrop": 3753.2131097084884 - }, - { - "total_amount": 350680472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3J8ZtKaEK9Ds7IdiSYUe3vrm4EpvynRUwcn8rBqutHZ" - }, - "address": "noble1mcu0zukn45m67n035vjw8g3fzayg4tz3n0nz8n", - "percent": "0.0%", - "airdrop": 6159.962699414542 - }, - { - "total_amount": 277132772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjfTuQ7sBqQnSiN5bIT8XjFzfP1UKhlubUYuVZjsk3q2" - }, - "address": "noble1mclq0fsdleypy9qsz60qfywvzn3par7zg24w6j", - "percent": "0.0%", - "airdrop": 4868.042775719074 - }, - { - "total_amount": 28957420772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4fIPWLYdAfk7DKcJET/6uwCMjJQ4gD4d7mYKaGhBssX" - }, - "address": "noble1meqx24mankklnskpdyud29wx0p8cqmh4xym32s", - "percent": "0.16999999999999998%", - "airdrop": 508658.5825821856 - }, - { - "total_amount": 407443395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiUE0V88V2kGm8snQIheeyo0qy2SK+6rtufLK2bnBufs" - }, - "address": "noble1mepe63psxml9fgn68jpxqk802lhplh4pa0sl89", - "percent": "0.0%", - "airdrop": 7157.045560617431 - }, - { - "total_amount": 1076295366, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhbJfRfWujKyjf4XbbhUic6RZA7JGGGuzsEnzGncpQcZ" - }, - "address": "noble1me8y22wkqhxqlvzu4trlrdl564csmtvk9yawnv", - "percent": "0.01%", - "airdrop": 18905.926726689027 - }, - { - "total_amount": 51813420, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al/dW/s2txsO6bGFCXbH+vjU0keVMpOJMPRwESXly606" - }, - "address": "noble1mef430cukp8uq20ydlcuknrwtc6jssukukt9sz", - "percent": "0.0%", - "airdrop": 910.1411684226871 - }, - { - "total_amount": 3029215397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw3rGu1YiCBhK055qhRhTZdlSAAY/xOHGxUV+jExQVRt" - }, - "address": "noble1med25crkv2wdf7hm9vx5ku8gs9wtgv7n3ftaqr", - "percent": "0.02%", - "airdrop": 53210.41615916444 - }, - { - "total_amount": 14669322288, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyySiFMpMwV9VhCLu0Aa/7AaXN/B77CCSGDIFKs4WwPg" - }, - "address": "noble1mehxywkd56k9422er9lltwvsldgly29zta8pxw", - "percent": "0.09%", - "airdrop": 257677.53078583282 - }, - { - "total_amount": 5379815401, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A07oUd5VEbNBor8By/2ROFRHzBvSuc9+Vyg+F1F51xy0" - }, - "address": "noble1me6xrxj80cp4smrmy2mwaan67spnsen9cvnrsm", - "percent": "0.03%", - "airdrop": 94500.44940026168 - }, - { - "total_amount": 12881804939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnUx4PB/rUA97Pb+aIxt3DP3KOSLbXZT3fa1mVHu3kc7" - }, - "address": "noble1me7ar8v4a7h4q3tl8cygnzxa8am2s5ke32mc9z", - "percent": "0.08%", - "airdrop": 226278.46219328124 - }, - { - "total_amount": 559338336, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxdmKXN/2ekrD9MROWcPe+lrhA2Odjwbmkv764Irf4th" - }, - "address": "noble1m6v6y5ets0ma8nt0mul76fvmpj0qz7jl08qess", - "percent": "0.0%", - "airdrop": 9825.192906985132 - }, - { - "total_amount": 304238063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq2WVtNaRGW5TLXyYMyoUTuVW0qJZKAk2BsDY88kw2f1" - }, - "address": "noble1m63f9yhwp8z6tqv5vluneeyc7gx42a69mygftw", - "percent": "0.0%", - "airdrop": 5344.167324555589 - }, - { - "total_amount": 8597747199, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2vc65fC1uS/hXcpDgLOX8ItIUjbEgRyyBc9t775zORZ" - }, - "address": "noble1m6jkgwxj35a77k7n67nj5susc84m5n6mfuhwjn", - "percent": "0.05%", - "airdrop": 151025.8091726187 - }, - { - "total_amount": 1003475771, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/MbGWHasYE8XPVZ7wSvat4SWkTWNADNZ/zCfQBa52Jw" - }, - "address": "noble1m6nzh5ah2nlt8mlxpg7fkdnq6djwm828r26fnw", - "percent": "0.01%", - "airdrop": 17626.796507580406 - }, - { - "total_amount": 2083016118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+3FPrRRAEYc2oSMEvjKICQ5r9zQ805csD2WmYznVPyU" - }, - "address": "noble1m6ey4dvk8j520pwfr4d573cqdqcfyhakzf6u47", - "percent": "0.01%", - "airdrop": 36589.72373334572 - }, - { - "total_amount": 971002492, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvCVHSue+c9jdYZGdHdNL5g0u6LgBPSbOg23SP7t8X/G" - }, - "address": "noble1mml5lr085dwyzlvz9s5meq7q5zc3defqkg52dm", - "percent": "0.01%", - "airdrop": 17056.37926641825 - }, - { - "total_amount": 150774072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/MRPali8OvbpQWiwHaKIPWvFbngA8xn7hldJhSEr3q8" - }, - "address": "noble1mupt2dd70d7esxyt3k7xxgtglz36uv46vcnk0r", - "percent": "0.0%", - "airdrop": 2648.4584506856786 - }, - { - "total_amount": 954041369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axk/SuVQ1aH+ezCwB2kRyVz0rRWJdEjfFqMW6nko6zWm" - }, - "address": "noble1mur54mj8n5f2spfws3g7jl8qrc7pslfm5tzeuc", - "percent": "0.01%", - "airdrop": 16758.444555585018 - }, - { - "total_amount": 116591422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtXjO8aFOFixuX8Z6g5AvNk8QEGQoPZnKYBFG600AgEK" - }, - "address": "noble1murcftrxg04pu7mhpeme96jtjutcrpul3egjdt", - "percent": "0.0%", - "airdrop": 2048.0148395366023 - }, - { - "total_amount": 55614089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Vcy4WJzCVp4UjlA3LWVf2SJRlHWtoC2YBE5QEMXU2L" - }, - "address": "noble1muvnvcr33t3qfs0m52hx07jdt6mqqnmlcanetg", - "percent": "0.0%", - "airdrop": 976.902739545533 - }, - { - "total_amount": 240363543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsZ+3tCG6q9c39LGMO4NcpqrIcFF76Hlck3FG+Xl2RFH" - }, - "address": "noble1muwsx0j9n5z6qc243ldqrtneykyqv8apm08dqn", - "percent": "0.0%", - "airdrop": 4222.163985165172 - }, - { - "total_amount": 899834856, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arhh+NsPRLCtjjfV+6zt2/NO2iZi01cXoIMgGMcaN3an" - }, - "address": "noble1mu34sjlx8hrhujhd2m2dkd6ekng29m3h307m2c", - "percent": "0.01%", - "airdrop": 15806.266932916229 - }, - { - "total_amount": 50058476, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRsNo+INk0+FeTt7lOfHa/Th/V91rFbaieIZMMxH0RL" - }, - "address": "noble1mu3hyjqpr5h839q9k2effm5rlj9d0w547xcslf", - "percent": "0.0%", - "airdrop": 879.3142748751008 - }, - { - "total_amount": 3002332670, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av2rHBBHqJD6B3Q2a+avucFhdrFrwJSmvCHkhLWTsHz8" - }, - "address": "noble1mukhgx7s4un7zul96gcla7gt7vg5mp5gj4v4jt", - "percent": "0.02%", - "airdrop": 52738.20111213284 - }, - { - "total_amount": 99454720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahsv0zkGH/MMy4eCuEYtUtkZvBNg/qRTZYEbv1cZI0uT" - }, - "address": "noble1ma63qc5a3z6tjh70av7hry9d2xz7jaj7r37q56", - "percent": "0.0%", - "airdrop": 1746.9959532868354 - }, - { - "total_amount": 128585511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1/WnMtUhB9VAO+zjOQZTL5iwyhiqwd9lM+neThwMJmg" - }, - "address": "noble1ma75x8lutctsh05emalhnskn6324aazj6fdua6", - "percent": "0.0%", - "airdrop": 2258.699912566441 - }, - { - "total_amount": 20057467478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A90xL683ytSd55dnLur9TnGVfZQ1mfJmcmFJ5SNHPROO" - }, - "address": "noble1m7r6kfuarry09427lhgqgckflxztd3a6nn90nf", - "percent": "0.12%", - "airdrop": 352324.2991106738 - }, - { - "total_amount": 50156702, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A30saTWk5smgh8tqIFcQ04XOB7MnsuFDyFTsAuRvyYQW" - }, - "address": "noble1m7vnfqadv0s80js26u53xqx79vd2xwfe005cn9", - "percent": "0.0%", - "airdrop": 881.0396874498639 - }, - { - "total_amount": 9530626117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoQoBuY4YBGnzE1pgTUcf3zn0W9zNWXPVv14hvtpwqM6" - }, - "address": "noble1m7dzuhupzzkylc6v63n5kv2unfkvxjyvvep7yw", - "percent": "0.06%", - "airdrop": 167412.51957361927 - }, - { - "total_amount": 103020465, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al15z9L07gmYOe7aQhSLnEwGZAwDALs1xnpS174UruCF" - }, - "address": "noble1m74zj2duq6aqunjz4syec6wtquxygrkp990uq8", - "percent": "0.0%", - "airdrop": 1809.6309100335116 - }, - { - "total_amount": 10860893387, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AudBGeBtP1pxUpMhxKaZ+VPGtj8FrC/10ZQv0jtkJt+F" - }, - "address": "noble1m7ejk993nscuqmxs6tfh4clzalpnkds47xdeag", - "percent": "0.06%", - "airdrop": 190779.65124399075 - }, - { - "total_amount": 21022447009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An3uzokDEJLIa9TlNozah8MOe5KesNA09dNt6ssLT2pq" - }, - "address": "noble1m7a7nva00p82xr0tssye052r8sxsxvcy5aznag", - "percent": "0.12%", - "airdrop": 369274.8805980243 - }, - { - "total_amount": 328765774, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1pVYpKtc3PXW4UkFm0o912Bi6YeQti6hjQQNlQxdKgb" - }, - "address": "noble1mlqtm276f59p04vuptdnqst3u78rnyj8r4k889", - "percent": "0.0%", - "airdrop": 5775.014768099637 - }, - { - "total_amount": 67166185, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au7+aXI9RukN7sqNxUjTb20o9eb7szOtXK3mdYnuPUK8" - }, - "address": "noble1mlqnzsv78jy9vp7e2v0643z3jyr0cflvx0u3my", - "percent": "0.0%", - "airdrop": 1179.8238775667455 - }, - { - "total_amount": 167532720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5gtx3XlqPgz1HSudJoA3aI4g+MzprVPPFXeUPMyrdQZ" - }, - "address": "noble1mly9kn5rdj9h3jpwkapg05v7mpjm6t3l8tylmp", - "percent": "0.0%", - "airdrop": 2942.8365379052548 - }, - { - "total_amount": 484075163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ZZ4AzW7K16O0B2ZkFSJwHaYRD4w8Phh/pZawPu9pMD" - }, - "address": "noble1mlx3w7ft7rhwcr95u4y6hzs9346krylzsdhckc", - "percent": "0.0%", - "airdrop": 8503.13942714499 - }, - { - "total_amount": 3428518859, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvuQUI5mONE9z+Nd4L0f0bp+obxVkG81yfbwssmAbttp" - }, - "address": "noble1mlxn58365hh46s6v60tfyy8vmmykk2nzyrcwdr", - "percent": "0.02%", - "airdrop": 60224.47775671781 - }, - { - "total_amount": 145372528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3IW3aQ+9oBYV+KC4/l2aimPMNEKg0XFqFb5/+e/0EPr" - }, - "address": "noble1ml3zavqptf707edcn02v5cyfhv2q9cd7uaz4ve", - "percent": "0.0%", - "airdrop": 2553.5763223211243 - }, - { - "total_amount": 106089420, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApN5u+Urbm0k2G7KjNlvU+Gz0ckacHsrF/hOsFoBiO+1" - }, - "address": "noble1mlns7wskpcqr6rmpsgzkfnzc0mavccjel50fda", - "percent": "0.0%", - "airdrop": 1863.5393818065897 - }, - { - "total_amount": 219460638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8vSWy910V3svqMcmA/OXzRPq36zJj43Fh1m/DZErIY5" - }, - "address": "noble1mlncmvwy3etceyzs8fljrhc4g739g0f6492ftr", - "percent": "0.0%", - "airdrop": 3854.9889486567063 - }, - { - "total_amount": 2106796791, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7o+/NMPuNedi7ryzys08Ed//VseY6V1gLER1NCJmdGu" - }, - "address": "noble1mlk4ad74smg4xqylq0zcwv7cg5dylr70q7e75c", - "percent": "0.01%", - "airdrop": 37007.448900109426 - }, - { - "total_amount": 85303899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9m5hEDq8+pfwOF5tRJ518zYc799xmj+ctk7ifUCY2ei" - }, - "address": "noble1mlhzjcf3jdsrv6lnlvdjcf02azusuvcnhvgmne", - "percent": "0.0%", - "airdrop": 1498.4262823583329 - }, - { - "total_amount": 362674924, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6CqDklhNXsyOk8YQ1jzIpMGX/hlc9pcieq9P4i3yIBB" - }, - "address": "noble1uqzauyy0m0n9l92sddtrmldz9ancu3p78lk57t", - "percent": "0.0%", - "airdrop": 6370.65414880873 - }, - { - "total_amount": 655605925, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azb4VpEkoaA2VULp79ys6EZq+zLUHHzX0y7tY0QMqIfu" - }, - "address": "noble1uqgvxtd6uwcdy8gh9fdc6gsevx2t4swvwlnm4z", - "percent": "0.0%", - "airdrop": 11516.204539371009 - }, - { - "total_amount": 1400000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0DqTvld9wt7G0Q/IBzmSu8dHPdl3lyaTsKVGePRvVhC" - }, - "address": "noble1uq035g50zcyzzqkuk0h2dst5sh7gcg4rxr9v8v", - "percent": "0.01%", - "airdrop": 24592.038815267588 - }, - { - "total_amount": 62638169, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8jVfzlr6WAMsU4qQwuZ/CHkO+vjDY+IenCDevGSlkIo" - }, - "address": "noble1uq33muz05esk64pf6g82sqmwgls92lh8m9wuu2", - "percent": "0.0%", - "airdrop": 1100.2859166894937 - }, - { - "total_amount": 2607673018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asx+WR81/PhYMHmlEwrONJrWW6ULf3u1QB67HLFWD6pt" - }, - "address": "noble1upyaj356urv7e5syye2vftel4nf6hgahlrd9l6", - "percent": "0.02%", - "airdrop": 45805.71148298712 - }, - { - "total_amount": 305115785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuImjc5tiw6rr2XZlu5TdHX7S1xvDuSmwpp4Zb4a6kkj" - }, - "address": "noble1upvghq3h0ljhh8e4w6wmdss5j5n09dc9x449c4", - "percent": "0.0%", - "airdrop": 5359.585162764886 - }, - { - "total_amount": 58947696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjhQ5Hg7EqoO0/QTsdvM5nKRoog6pJhujUprd3mld9Xe" - }, - "address": "noble1upjh84nm03gp7kjgu24sy6qp6569vyqm934vlp", - "percent": "0.0%", - "airdrop": 1035.4600200732814 - }, - { - "total_amount": 54642125, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+JLwf/Jt3xpSCnRq9T7A3s/i7rol2HJ+QveKAELqz6b" - }, - "address": "noble1up5cyethay8ace2kfp87wznrq24w3w0p0ajakx", - "percent": "0.0%", - "airdrop": 959.8294706776453 - }, - { - "total_amount": 771473778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6y7P4JnbHia4308BKvD2WXeZEeRTvT2kdg70nWd9ORZ" - }, - "address": "noble1upatkxqm8ndf5eghq7psl7ylvrclezx29ecuns", - "percent": "0.0%", - "airdrop": 13551.50935252652 - }, - { - "total_amount": 146933699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AltRkKnYmp+yRXtOsljpbe3SpfhTh4MTeHlyi/Ga/mv2" - }, - "address": "noble1uzqaxhxx0qdnm7e8kk5pvkps5s5u4hk6ynls29", - "percent": "0.0%", - "airdrop": 2580.9994493420313 - }, - { - "total_amount": 98360509, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asm/JbtAMbQUtcV2C0tty9oh9KLCwiec9/Jt6sVT1VFV" - }, - "address": "noble1uzy4az5323lvv5ceg4r3lyenta8uv8vj34hm94", - "percent": "0.0%", - "airdrop": 1727.7753251553406 - }, - { - "total_amount": 476683616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUNmSiV9TY+ZbZGDuVQgYceQZKPPXeqUxHhY0VaAdla" - }, - "address": "noble1uzw7ly99nafkfha7lfl7d422229gleca8vmkes", - "percent": "0.0%", - "airdrop": 8373.301419481506 - }, - { - "total_amount": 308080763, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7GGkbVmMcgL1GkctpuOWMlPIJ1yCikY4/RFEDvmW2LS" - }, - "address": "noble1uz0yejlhknz8n7xtwfdakth3u2m8gv0ta2jv3s", - "percent": "0.0%", - "airdrop": 5411.667201380896 - }, - { - "total_amount": 5283689533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/8LB6i8/eoT9Foa6cq1cYu7GW0y8icFw1yj3ELvwjfs" - }, - "address": "noble1uz0nr9czpj7dv8szvat7g0ahn7lqr6tazxpx29", - "percent": "0.03%", - "airdrop": 92811.92720239933 - }, - { - "total_amount": 6281777417, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjkArxaSDsZk1ps7eBrrCrmemrYzJeNieI8ahwQ70+5U" - }, - "address": "noble1uzjfr472rzu98sfshwl57tap2dzpywznc8ztjv", - "percent": "0.04%", - "airdrop": 110344.08147695384 - }, - { - "total_amount": 187747008, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Avnrs8eDYQbEbcH+ZZ3RGuW5fv48vrMMLTffBMcNL8sG" - }, - "address": "noble1uzm5zgz3rwltf6hj54rwru8g73n8tvv8hdnjr6", - "percent": "0.0%", - "airdrop": 3297.9155058473957 - }, - { - "total_amount": 60000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxA9M6I4MugOU2s3kdP6JWcU8nbQ89he21HV48R0wIbc" - }, - "address": "noble1urtkpz2adymkvm9dw3yg6sw8lmucjnxtsyuppd", - "percent": "0.0%", - "airdrop": 1053.9445206543253 - }, - { - "total_amount": 72461176, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwMcYJy+Wdb9ILoSUskYHoup93WkE+PyD2YZeu4qNfEE" - }, - "address": "noble1urvweuc48h8e5h593p8hvpz4v3cp2trg6fzcy6", - "percent": "0.0%", - "airdrop": 1272.8343234228116 - }, - { - "total_amount": 250332460, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/V49/ixKAxK7wa49dbk0uDUeCTn9bC431Kx5eR0taST" - }, - "address": "noble1ur3hly2c92q8x96y9le9qdt7ttfcsgamkcwg9g", - "percent": "0.0%", - "airdrop": 4397.275409315301 - }, - { - "total_amount": 591860691, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0UyrKi5BhzS0agcGY9nsh4FihiGbm6szAVGKt8yXTVn" - }, - "address": "noble1urn0pnx8fl5kt89r5nzqd8htruq7skadcjq4cd", - "percent": "0.0%", - "airdrop": 10396.472204502212 - }, - { - "total_amount": 256087697, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AovcQUsT3yCEBfQu5R7MYaHM8iZB+6JWhRCUCSsoU84s" - }, - "address": "noble1uyyzd0p2fpegwjf29tcrydaw93c42rumrzua5z", - "percent": "0.0%", - "airdrop": 4498.370417668918 - }, - { - "total_amount": 176797513, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgJavuEWF+k8oBjdDPCfV6LxXcMuUfOmyCH1EHVGpTF/" - }, - "address": "noble1uyh0rgnar36cvv4qknuqmwewutc29deknw78pf", - "percent": "0.0%", - "airdrop": 3105.579501527697 - }, - { - "total_amount": 50552552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvRE1U+4LoOJS8xlg4FPwoPP5HS2HN36basgQYN2do7z" - }, - "address": "noble1uyuhe5aeryexwnf5emu45xfz32ew37rd2lxtch", - "percent": "0.0%", - "airdrop": 887.9930864248807 - }, - { - "total_amount": 102314180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPBZmz+nnNzu6D517nU8SQKTKQLGh+FwfQj5u0V8tSx" - }, - "address": "noble1u9ygw646ur2j2fymjuq0vq8l3jcff3ngzu69cp", - "percent": "0.0%", - "airdrop": 1797.224489937339 - }, - { - "total_amount": 1974300041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwlrFKO/v/u47pxqugIieKwx36HJFFb8iROcfjUaRA1f" - }, - "address": "noble1u9j5ldhqzy8myzw77789gqhuy6mz59d8ju9k2m", - "percent": "0.01%", - "airdrop": 34680.04517232599 - }, - { - "total_amount": 267696495, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw88R4JAXn1kbST4fQ6LUx0MMHjfU2rtt345Jgw7x5jv" - }, - "address": "noble1u9hpqcz90f9q8eqjgp70yca0k4nmeyz2ye4qw9", - "percent": "0.0%", - "airdrop": 4702.287568393634 - }, - { - "total_amount": 8750008354, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auh++vWIAc4ubjFeDuyw7WSoFZGiOYV14XFOcCZEs6bB" - }, - "address": "noble1u97lkjqammjv2xxzwsxn5avrrhx0czudqf39a9", - "percent": "0.05%", - "airdrop": 153700.3893396312 - }, - { - "total_amount": 58480396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRvZ8bAKl5BDZX30+5vXRfIDxNfcvD2hpR6b6rCsXw+" - }, - "address": "noble1uxfjmpdqjzaxph5nxtxh6trv2xnr7uhppujgu4", - "percent": "0.0%", - "airdrop": 1027.2515488315853 - }, - { - "total_amount": 101087520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au+GUtwO3LSQ6HtMPjImR08PsFIFoHENPKwfY9qHqy31" - }, - "address": "noble1uxnjvt5myz5ahrjtwkzms8ndk66s0arrnw3ydg", - "percent": "0.0%", - "airdrop": 1775.6772968422417 - }, - { - "total_amount": 59076364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At9RskOKUTqPEtwH54qn2KNMUaaMyGA1boMoDJYDCtnk" - }, - "address": "noble1ux5mcvmemy3sz2288zfrt5at3uthknl59093n0", - "percent": "0.0%", - "airdrop": 1037.7201689663407 - }, - { - "total_amount": 1699942265, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2+T8fqVurV1iru1TuT/+8w92DEkYx2EeGM++3OD0Clh" - }, - "address": "noble1uxur449jyxrygj74rx9afjkp6wduqtk06qm0mc", - "percent": "0.01%", - "airdrop": 29860.747260424214 - }, - { - "total_amount": 1539063329, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjMNazI7dxmKspn9HuGXEOvuaBA0hsMcvTulnbUZMiYW" - }, - "address": "noble1u8p5gz4cht0n889ecazyg5u776pe73fn7y5hxa", - "percent": "0.01%", - "airdrop": 27034.78937565925 - }, - { - "total_amount": 51739577, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7V/N69yk4eKdSGVHvb1gcY1EHmh4HtXLosZvPDX0eMZ" - }, - "address": "noble1u8xff6p6p4uunrpha6m7fskv6j5z49qhyp689c", - "percent": "0.0%", - "airdrop": 908.8440613353758 - }, - { - "total_amount": 305689472, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqtKZDIR3xdAIEu9Tu5nSrHhpwYyp8xFYd+XKFj90+7z" - }, - "address": "noble1u8dse8c4a5cr8te64andehhwlxw498n845vudw", - "percent": "0.0%", - "airdrop": 5369.6624006018965 - }, - { - "total_amount": 88209984, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiV0xFWNzmPnlHztT6KYSAmTz6JDhopKB66cXV/sNb7Q" - }, - "address": "noble1u80z4rms8x7gs8lxhn2x7nnx4nwfcnkc5mx6cu", - "percent": "0.0%", - "airdrop": 1549.473821730095 - }, - { - "total_amount": 87387846, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak4pTSCoq0TIDpmRB1Yr9AO4ENCBwy0wfcAhPEpXa1F2" - }, - "address": "noble1u85g58kmmkmq8faeasdvdqgt00sjfrvgf0gyta", - "percent": "0.0%", - "airdrop": 1535.0323577247332 - }, - { - "total_amount": 2858344580, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDHr4oLcn/cqVzdWjwa/ASYHdyz5M4/GwEMFLTimfLV" - }, - "address": "noble1u8k7fjl9fe5yds79nzcw8mlht28t0wevkvwrrd", - "percent": "0.02%", - "airdrop": 50208.943470549806 - }, - { - "total_amount": 1608800189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al2UHgLCV7hEI4FU9W5hLftsKfjKno44sN69hu0iwGRs" - }, - "address": "noble1u8hhzsg9zsn73w66gu4lx547fa9yf67z6d5eau", - "percent": "0.01%", - "airdrop": 28259.76906706988 - }, - { - "total_amount": 50325745, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzOT3mEECLr+UxM6TpdriHkzmu2C4OPwh8AtYg7s2xQJ" - }, - "address": "noble1u874q0nu2jgv85220jl423cs7gt4fn8lk6s8e0", - "percent": "0.0%", - "airdrop": 884.0090531766134 - }, - { - "total_amount": 893240242, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A45BKd1+T+Gu7QGe7EmKUil8LdzqgEqi9h3eU29gfZF3" - }, - "address": "noble1u8l9c0fdp55u5z0w3d7newhy60jpxsfgrqzxgs", - "percent": "0.01%", - "airdrop": 15690.427644730724 - }, - { - "total_amount": 50063106, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3R6hGHFp7Bi+5z0ChbzmqBkz+BP+R2evM6WIduUkzxw" - }, - "address": "noble1ugzl6dpnp4zuglfac5a7r3aykh6qsnl3dls7qt", - "percent": "0.0%", - "airdrop": 879.3956042606112 - }, - { - "total_amount": 3927450983, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArPxKqWiDds7Yo996inJWbSIe+iIDNy9ziZ+8jFjjk/2" - }, - "address": "noble1ug9j0n4c77xplv6rpyq90hr7r3ywp2hrllmmr4", - "percent": "0.02%", - "airdrop": 68988.59072785488 - }, - { - "total_amount": 128047777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A72PbfRTXtXOVN4rwPagbm9pw6UrjJrb7IgxTNNVXaYD" - }, - "address": "noble1ugxkhjzaexe39rk3e4ka7aca2t5d6wk5xs4u9t", - "percent": "0.0%", - "airdrop": 2249.2542158519486 - }, - { - "total_amount": 835308557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1OIimkPOmSWgbIKRGRFcTd2AX+61usRBKXUKvgP4fKv" - }, - "address": "noble1ugfvcy5yr8jngm7kkxkf2n0acttpn9ur7t2g06", - "percent": "0.0%", - "airdrop": 14672.814611763684 - }, - { - "total_amount": 2175256314, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auhp36U+dijfhPZrVKV9Pn/ZbaDi/7E1MRxuT5Oretjm" - }, - "address": "noble1ugs6t3rsj9rq6c7clqwraunrur7nvqn3fvyt0u", - "percent": "0.01%", - "airdrop": 38209.99121931707 - }, - { - "total_amount": 75443651, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8lN+xqLQqwR6lJubdA1LCbb28MtfTJ5aiRl7Laj13Cs" - }, - "address": "noble1ug3md7958xxqw2630w0sgv07uel2tpq2y76ck6", - "percent": "0.0%", - "airdrop": 1325.2237098267867 - }, - { - "total_amount": 262000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzTkzGPzFkK75JLT6dzBXc+nQeMADTEDVCDkjFo7Zm+6" - }, - "address": "noble1ug55de9d6a7p8ada3y7rs44t4kvf5cxrvm0869", - "percent": "0.0%", - "airdrop": 4602.22440685722 - }, - { - "total_amount": 82415921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmuvMyIij4z4Ae2KIDEgEK+GWwBs1T9Qa2U7E0oN7lWr" - }, - "address": "noble1ugefc5xtkunfr2sfvcq9czjemhdses6jtz4n34", - "percent": "0.0%", - "airdrop": 1447.6968058771622 - }, - { - "total_amount": 7975099481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0oldnhxd1inI6lCQdZiJm0Reafv1Q8yae1NUmFbq1/H" - }, - "address": "noble1ugewpftcsa0zmdpgyf40evu5dge7gcdxfm00zc", - "percent": "0.05%", - "airdrop": 140088.5399945517 - }, - { - "total_amount": 1031000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnaOzLfAE/13LkjTLNv16CBg8tQxEFSetgkHmFZV9Jik" - }, - "address": "noble1ug6twhurfzhvyw2nxscv0ke6wncvckksgjum54", - "percent": "0.01%", - "airdrop": 18110.28001324349 - }, - { - "total_amount": 50093195, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2eEX0JIk+Bnn3anhYQ5d3AKq9sDG6wPiqz67t2ahK6L" - }, - "address": "noble1ugu7p4t8e8vyz902q7k8wdla7redzh6xeq0g7d", - "percent": "0.0%", - "airdrop": 879.9241398719772 - }, - { - "total_amount": 1580373651, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRiJS4dfKzDs4pOesqVbYxZEwFCwZFV6w94n3Znf1Kx" - }, - "address": "noble1ufphzqrxd7065n0p8x9cs5uv844vyxdnwavqen", - "percent": "0.01%", - "airdrop": 27760.43583429868 - }, - { - "total_amount": 1721901572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av/atqc1eNmXV+WCdM9ApOfYzTaeVeDx490N0+HdnPc4" - }, - "address": "noble1uf9n4eacla05ewyy4jxhw3swemltvkuw43rv7k", - "percent": "0.01%", - "airdrop": 30246.47878192448 - }, - { - "total_amount": 170331135, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw116YlBDVXQZfqcOnYh2j6mECjEuK04EcARJprFUMyZ" - }, - "address": "noble1ufvvk8tyc8dmffytmamuhndcys8y4ezuqve2mq", - "percent": "0.0%", - "airdrop": 2991.9927738347023 - }, - { - "total_amount": 701014787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/LkKr3keO4shKEqcKYHewGd+vlOB1uPwP0cONDVf9h1" - }, - "address": "noble1uf693etwywvjrpphf8vwp79avmamdul9x5da22", - "percent": "0.0%", - "airdrop": 12313.844894271815 - }, - { - "total_amount": 127844959, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxwtvjH8oylMg0G2rQariiD4i4LrFiWLHt4GGkVE6G31" - }, - "address": "noble1uflgy0u7wy773l5v2z5rcjkyueklwcke65f740", - "percent": "0.0%", - "airdrop": 2245.691567188781 - }, - { - "total_amount": 1365485394, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiYeoS5uX5muZkLF/wawSnZoRgDsQ6eo/t/86hTFV6ni" - }, - "address": "noble1u28p5cvz9smxl3tldz2wsymk5u52l70ewdw5zj", - "percent": "0.01%", - "airdrop": 23985.76415066354 - }, - { - "total_amount": 976443921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtZC9YTtxVyfNfLc1gt7fmBaNIxlzm7hvR8jybFrqqfC" - }, - "address": "noble1u288tpmf9ymtdsguue0nl89ls4grmf33se3da3", - "percent": "0.01%", - "airdrop": 17151.962004402914 - }, - { - "total_amount": 583380101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al6Ep5R0Us7/AX3YZfAAueMETB8tZuhHOpiHzON87Opb" - }, - "address": "noble1u28gse508qdgs5qdcaau2xmhy843g7tskj8fru", - "percent": "0.0%", - "airdrop": 10247.504348461947 - }, - { - "total_amount": 399238050, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A52DKeAZEQby9GjW6fEXr4Jx4+6bqfjdL9Zc11RTSuvF" - }, - "address": "noble1u2ghpeqk655uk3qf0t5xfl6ch63l8wfnd8wqq2", - "percent": "0.0%", - "airdrop": 7012.912587236958 - }, - { - "total_amount": 171246698, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+hWD/xkezM9ystcdOyTMzr4VwnbOC2agBQoRC2Kv+j7" - }, - "address": "noble1u2wpyuem4tuj22tajan9cjn5npcq8syvkhjyys", - "percent": "0.0%", - "airdrop": 3008.0753172874333 - }, - { - "total_amount": 933659808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4VBZ9tqiwBhOCFoa6Z87f1jhvl2yWpfeTLVVVOJS6GF" - }, - "address": "noble1u2wnjkl6g4v4wcyw4nzdt03zjpz5uxc6tnlx2v", - "percent": "0.01%", - "airdrop": 16400.427313279488 - }, - { - "total_amount": 1201517544, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuA69tr713Hl3rgz+yvaMyVm8PcC0iyiKmnfAFIlS/OL" - }, - "address": "noble1u2efvnrmzv6d7qcyltns2a3ua0emt7xvdvwnu8", - "percent": "0.01%", - "airdrop": 21105.5471994807 - }, - { - "total_amount": 237646991, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlGVo8Bd8a9GqMrU0q2syGT9C7A8QQQvb5+uIfCZPsMb" - }, - "address": "noble1u2ewnx6lfnam8l624t38mmalumzfuja2093wwy", - "percent": "0.0%", - "airdrop": 4174.445733573963 - }, - { - "total_amount": 358853548, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq+2AqU9/Q/jIeIV4g1fmvl/KC6p39mcEZKY13ptgktf" - }, - "address": "noble1u2unp9zh3mwqqu8lpd9wcxh8u2ughc7m5pgc9u", - "percent": "0.0%", - "airdrop": 6303.528843866065 - }, - { - "total_amount": 10238369279, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap8z+0HRV7qnFEtp7VReKmC36qZNE73o9MMiGK7OTt08" - }, - "address": "noble1u27fjcawtxsk58axf8fr69t4thd77ydkf8ufh6", - "percent": "0.06%", - "airdrop": 179844.55336729373 - }, - { - "total_amount": 13389250685, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvBruWzMyMSM/ihEiei4grt8JRCwcYLkbL1UOwrkWhNP" - }, - "address": "noble1u2lun32ev56ce7dg4t3947dhavnkuwlezwpnug", - "percent": "0.08%", - "airdrop": 235192.12325204868 - }, - { - "total_amount": 526846258, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwNP6aqn1xSK7DUumh014w1MLMZMTD9eavG6d9NsRrVm" - }, - "address": "noble1utqs76g5k2enxv3xu092eksf939v6tlfmv0hrm", - "percent": "0.0%", - "airdrop": 9254.445447438915 - }, - { - "total_amount": 199245035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AngIjZ723xqVxdHMDeuA0bSdUgI+iYyXJbd1kX+mTa6L" - }, - "address": "noble1utfcddnfz6nacflpczvs7lef48mr7q27qultyj", - "percent": "0.0%", - "airdrop": 3499.886881763821 - }, - { - "total_amount": 279672649, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyYIR88eYxoSk9pHsEYbMiBkzb7U7/QdrY4mOtchhuf/" - }, - "address": "noble1utw4m7hsumu2t823tkknvqw9zsulmls9jutayv", - "percent": "0.0%", - "airdrop": 4912.657599840506 - }, - { - "total_amount": 854000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3FBkwv2eFqkM9c0ZjRR/BpJykLDw2allOucQwhY6OAU" - }, - "address": "noble1utsp56kls0n0f3hl99ed3dhpdmxxs65xqrn4xl", - "percent": "0.01%", - "airdrop": 15001.143677313228 - }, - { - "total_amount": 239783017, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9lcBfhFy948CunWIOTQxB84+tWafeeExvUWiQYpnJAL" - }, - "address": "noble1uts30auphrytyu44d2mzvs6v5826ad6xpxls7c", - "percent": "0.0%", - "airdrop": 4211.966615218548 - }, - { - "total_amount": 177522262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9D2KWqMkbmfCajBhTkP3xvlMnNE1MhyA5MWwJpJHlCe" - }, - "address": "noble1utnuck20zyxpa0g4z9qg5lt7ymhztkqslg32ec", - "percent": "0.0%", - "airdrop": 3118.310255484359 - }, - { - "total_amount": 334175851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/RD+qo1Y4n7WL8Sh1fl23t3VvOxQa8MX/GMT4agYuMd" - }, - "address": "noble1uthafmyylf9zk6n04y4s79alyp2r28dm7y6wpn", - "percent": "0.0%", - "airdrop": 5870.0467849407705 - }, - { - "total_amount": 251031208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlG4cQxKlFIeZwOBmC+5sqE6j2VXXRT5YGIFlYxybVjN" - }, - "address": "noble1utmrlmtls05ulnpad7er8yjvnedduzlec3qftp", - "percent": "0.0%", - "airdrop": 4409.549436413937 - }, - { - "total_amount": 1017761934, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak9fAGxYBgIRzlOfSd6rKYWqEJE5wuarg+EHacfC7BKV" - }, - "address": "noble1uvzs95cg543dzcnjua29p4c7xkmlkpf6uhss4v", - "percent": "0.01%", - "airdrop": 17877.74356116415 - }, - { - "total_amount": 56497712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/QW8oTASrkVCC7+jyC+A4+ydOgW0/MJGxeWL3pY7QSA" - }, - "address": "noble1uv8nc6wa85tunctuhu2jellvma7dz0mj8q475h", - "percent": "0.0%", - "airdrop": 992.4242331984352 - }, - { - "total_amount": 53097079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzhVQifpMeSv3X59jdlzc8DRQvSVz+DazObR65CfHJWk" - }, - "address": "noble1uvkwef43394s0g4gd9lg3uyqjvyphttxxpt3ug", - "percent": "0.0%", - "airdrop": 932.6895912466639 - }, - { - "total_amount": 1500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoPBxEraHnKDuNbX6exWltk+dfVGfFjAll9JVB8sZs+X" - }, - "address": "noble1uvkmmjtvzxtn9cjhd2c9kdncjfslnql8xw7f9q", - "percent": "0.01%", - "airdrop": 26348.61301635813 - }, - { - "total_amount": 8715562909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4BwlDeFnIXvGmGK6o3yS+1TlrJC6GwH5C6M9HXFwpoW" - }, - "address": "noble1uvh6tw6d60cgjk90648mzrhzj430vc426m48rj", - "percent": "0.05%", - "airdrop": 153095.32953931036 - }, - { - "total_amount": 642506223, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A75gIPZhNZDeb5s/DYqcPJIDbIqpjEPiHoNrN4m6DMX1" - }, - "address": "noble1uvm6s53mff2fkzgukljk9m3c7rzvvvqrvlervj", - "percent": "0.0%", - "airdrop": 11286.098553619266 - }, - { - "total_amount": 50009654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2PDRwert2Wx6wKQQSTYzHE7mteDA/SeAdy2o1tTblfz" - }, - "address": "noble1uvay4nxlvy4uud25dcvdmruhl4n0zg0dyv9gwy", - "percent": "0.0%", - "airdrop": 878.4566802186444 - }, - { - "total_amount": 2214660396, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AubfmQeLZlP8m9rg0rMyB8KQVa16APueBDUiwXqPcC+Z" - }, - "address": "noble1uva3qnrt4qnhan0t54zqadmrpufmznz55upsw3", - "percent": "0.01%", - "airdrop": 38902.15315790563 - }, - { - "total_amount": 52757693, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alnaf2EoquJj4Jknuxv8PYczQMATbEcTxZ3Nocw/1DrA" - }, - "address": "noble1uv78axw3cqtgjk767uwhta98smhjnu06qmxqxd", - "percent": "0.0%", - "airdrop": 926.7280243285509 - }, - { - "total_amount": 127654323, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7uz6iOxi4DwmO6eRXL0f0/r2fVR+EhKL9lk5a2he6A3" - }, - "address": "noble1udqtcja3mq56hqg28d9czw90g523t3pr4nlsnw", - "percent": "0.0%", - "airdrop": 2242.34290439479 - }, - { - "total_amount": 273733879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ItlUPSZUYuOIylHH7MePazHi9SgJ93S4uwuy6DmRuY" - }, - "address": "noble1udp85edtx7fpaae80tpnm9wtaysksjspghtsjg", - "percent": "0.0%", - "airdrop": 4808.338698158401 - }, - { - "total_amount": 940006642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayng69BzMwAs6ZWrFxoFuqOsK84cNKuOk/a4IDdQyGY8" - }, - "address": "noble1ud56galdsfr4nnv5g69308zrcd03fldfkuxqpt", - "percent": "0.01%", - "airdrop": 16511.91416190953 - }, - { - "total_amount": 100006605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiHjqXN3UeU4JiR9sm7r6Bq/GxL5VFofbdtfo1aJKfyr" - }, - "address": "noble1ud4p9cf427hh0aw4tyt02ghprsl7zjtpaeq504", - "percent": "0.0%", - "airdrop": 1756.690222816524 - }, - { - "total_amount": 165773543, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArcBJN8/0oRq1f6uTJ7s+Tu/uJ52GfIGvTA+d6J+z0LR" - }, - "address": "noble1udakveqv0eefck9kjqcmvprrvjdfh6m69ypflu", - "percent": "0.0%", - "airdrop": 2911.935288571736 - }, - { - "total_amount": 141372184, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiJOyUbVFc2wYehWXHGKr8htHCNiJDFnm+rdflmhJjfO" - }, - "address": "noble1ud7hxl0zrstj0avr3egrmvwfmlw93tfv25rj2q", - "percent": "0.0%", - "airdrop": 2483.307311662251 - }, - { - "total_amount": 115766830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A87oXF8ameafNJy+Nwd0p1UP8Us9tnJCpJnJajV/LFxL" - }, - "address": "noble1uwpk44vqrhaa9pflvuf0e7pqvyzusdxrge5m5d", - "percent": "0.0%", - "airdrop": 2033.5302692003459 - }, - { - "total_amount": 341596722, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A52bJJwRwUWifA1ZOUNzlaje6r2cvSOo5GjePBrGV58g" - }, - "address": "noble1uwrrgk6r3q30nmq7mq8jwhtgtesc5st7ctju83", - "percent": "0.0%", - "airdrop": 6000.39989042298 - }, - { - "total_amount": 239752156, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmpCOIgfedKUaZIgqWFC9ptc/uXNVe5p9Fb1W8ikawta" - }, - "address": "noble1uwfytt8savpvdl6g842d7v7xulw9s0mmdhwq8g", - "percent": "0.0%", - "airdrop": 4211.42451885435 - }, - { - "total_amount": 313714285, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Jyh5Jn4P1enXKoU8wskzmCq8e9XZBlQ9Z8wgauD5B3" - }, - "address": "noble1uwvq7559mu803xlk4clsrntcytx3tagss22fer", - "percent": "0.0%", - "airdrop": 5510.6241954456555 - }, - { - "total_amount": 66052810, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A573UPjIOuagjcarIBwpGcRN2CsPiNPe8zXEU6Q7yk2o" - }, - "address": "noble1uwwglctpxpmuswpnpy82uh29s3c9g2ywfy2q08", - "percent": "0.0%", - "airdrop": 1160.2666195553536 - }, - { - "total_amount": 99544796, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amr25Sq/fD7uK5gVL9F+kqKUgN//SKmPdGUHiy/L2/lp" - }, - "address": "noble1uwns9rkjzpagxfafu0fufq0knafktqhp6ww9q7", - "percent": "0.0%", - "airdrop": 1748.5782050642097 - }, - { - "total_amount": 78827936, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5SgUGUTdFlgQn5Wb2JrpbpR//CgzqpAlbC2uW7ho8Et" - }, - "address": "noble1u0rqg9xta7qdvvmrmgw423ddw5575zymv78n8c", - "percent": "0.0%", - "airdrop": 1384.6711870281638 - }, - { - "total_amount": 100157782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6bx0HQZ/kpdemvTJjMQKrxQkHh9hhfEweJmDW/naZoV" - }, - "address": "noble1u0tm88syvt6qcaw7jrr4z4a4q2skl4c2u9ucmg", - "percent": "0.0%", - "airdrop": 1759.3457589965067 - }, - { - "total_amount": 469612292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqcKnqawl6QWduTPuUrPy4bh7I7gslVL9B6X3y+f8Ijy" - }, - "address": "noble1u0tlth96m4aj55y5eg883vsj0e4h4aqs48zwd4", - "percent": "0.0%", - "airdrop": 8249.088366421984 - }, - { - "total_amount": 102445334, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AruPZGuTewEhIcCG1yVZcm0oQVEImjXkOni76xw/YqWt" - }, - "address": "noble1u0sl2uv66r0ul9nw038udjtmvexs2lxerkylpa", - "percent": "0.0%", - "airdrop": 1799.5283072650375 - }, - { - "total_amount": 348872954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AviP7CuiwQKNMpc5nlzKcZzrLmrT1LK9dQ2/CpOIOpsA" - }, - "address": "noble1u0jtk323h5dfhhkejwxnutzay5w3mxn8tfm49w", - "percent": "0.0%", - "airdrop": 6128.212304546474 - }, - { - "total_amount": 318390770, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3P8vXYuoyYZLqgR/OPGgl27ogmTdhhXNV3hFUnp0Pm9" - }, - "address": "noble1u05gu68e9xkp2jhgq2792arkqcla7dwvs3wcj6", - "percent": "0.0%", - "airdrop": 5592.770124473525 - }, - { - "total_amount": 3370435628, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZID6cfPYjQPxGkVJOu2BAAaiS58HwHAkULZ/F5sB3p" - }, - "address": "noble1u056rct93dhfdwqx9k7eplhrdf2mqu0eqaxfsm", - "percent": "0.02%", - "airdrop": 59204.202705811986 - }, - { - "total_amount": 942044828, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Xcq+ahiwn5RcVaC7Hc6TnG0OdPe8f3pV3jn7Z0NeMk" - }, - "address": "noble1u0hzyuxd8tnr0ff34tdswtjec2tn7seny30xrt", - "percent": "0.01%", - "airdrop": 16547.71641135577 - }, - { - "total_amount": 399560717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9AJIThfAUgAznoZu/UjwdO8u/svaHAX8BgYLnHym8FK" - }, - "address": "noble1u0er34f0fz7utsrs3l2yw8tly30gn2z9frtg57", - "percent": "0.0%", - "airdrop": 7018.580472514391 - }, - { - "total_amount": 211231094, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A13XvZlWS14aoLNbY4xyo1QCH/bXIsRJkxqs9MG4s8s5" - }, - "address": "noble1u0e5y7lma87rqnhwvrflq8wqgr5vqy7d3umr90", - "percent": "0.0%", - "airdrop": 3710.430901885312 - }, - { - "total_amount": 492927720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apo0S67dHAWzkBlRRnwqsYJFweL2Nc8XuWiByjqQXXis" - }, - "address": "noble1usvtp8u73nzw93c4rq3j78zdwjcvkhvwkex7pe", - "percent": "0.0%", - "airdrop": 8658.641159543824 - }, - { - "total_amount": 243696605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvU0fuunAKA3CFWKSQEghApuBHEPZP7K4mKRu7Y1gEMt" - }, - "address": "noble1uswpnlp3ms6t7efd4kgacz4ma9x77220y4z32h", - "percent": "0.0%", - "airdrop": 4280.711692363524 - }, - { - "total_amount": 111154013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnsmxCmE43suIk5NVvEbt/OjeuYt05D+nA5AUdFTtF5M" - }, - "address": "noble1us3q2ytkn9zyn99gvf66u6nsn3wnq0n3jg654n", - "percent": "0.0%", - "airdrop": 1952.502715834827 - }, - { - "total_amount": 87497168, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6qK6H9+l3i6ePcK0d9NnP5pPk8UGZ06sK+FxS5w1fGj" - }, - "address": "noble1usn0psmcfj65j4am3hr4wstrx4wxztayyqfvkh", - "percent": "0.0%", - "airdrop": 1536.9526797728495 - }, - { - "total_amount": 61698211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IZHosl9sXI4SpQp+h5JJw4BK1Hai03DNXTSWmeMaeT" - }, - "address": "noble1usenq980ttga2tz0x7j68vrh5a09wzxsuleh5x", - "percent": "0.0%", - "airdrop": 1083.7748569604069 - }, - { - "total_amount": 75277894, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiIxf0V+VL7QKlptzeXiyHioC4rTLBjhoZmSxRb7L7jC" - }, - "address": "noble1u3979l46uqes7alnwhstmrhl8v20jglhjluzmr", - "percent": "0.0%", - "airdrop": 1322.3120651282852 - }, - { - "total_amount": 4316974195, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amh7VBli33sSoaG6wUTpwOVDl3Zuzvhi67TsEOSbO88c" - }, - "address": "noble1u3x5wdd9zesfu98yhvex9t38534ejaznrylpwq", - "percent": "0.03%", - "airdrop": 75830.85497710611 - }, - { - "total_amount": 69161768, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyKslW+aWHLcnnJYB1M5Pk9H7EzUUJsyto1CapW8OZNk" - }, - "address": "noble1u3thxsaujvqfn3nu0e048gvyytsj26v3pyw97n", - "percent": "0.0%", - "airdrop": 1214.877773706094 - }, - { - "total_amount": 56472353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuZOjA2xak7XEqgE0wZcWz780dMjTo9vLx1mYIBXiAJj" - }, - "address": "noble1u3v5y4ntqga37w8zksdmjff7nz5rmq6lntr9h4", - "percent": "0.0%", - "airdrop": 991.9787835467807 - }, - { - "total_amount": 5002020814, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YlGdzAI9KPxqGtIdo4zUH/uoW16Oeim3QGNUlvZ4EN" - }, - "address": "noble1u3d32djpejap6hf3ry7jlzeh75a8vyzh8hty3g", - "percent": "0.03%", - "airdrop": 87864.20715190313 - }, - { - "total_amount": 50135600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7CSauCI9YcclGzrjDdvD+4rElvqMMHqPkmjFix+rU/w" - }, - "address": "noble1u3sp049zukn2hl5343yu70t2jraghekx3zv6nv", - "percent": "0.0%", - "airdrop": 880.6690151619497 - }, - { - "total_amount": 857354506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aui7G827byD5YW/Qw3Fh9q4cBwkARTcxxLPdL8NN/foQ" - }, - "address": "noble1u3czw59ysyu94lgr2cmhm06vc9ttz64wdvt5hp", - "percent": "0.01%", - "airdrop": 15060.068064283263 - }, - { - "total_amount": 79869615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhP3n2PNTymvxLUxAynpUpRKMX4qOAwB0ohAcHcVqLYd" - }, - "address": "noble1u36ya62c9jklc5xjpnzmm3wlpfnd69cay80peu", - "percent": "0.0%", - "airdrop": 1402.9690516003418 - }, - { - "total_amount": 68044582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AufKNnwKt3zc195FMIay5A5YgnDVNOBrwZkt5zI4dRNK" - }, - "address": "noble1u3mxk2qz07uen5yxe6n87p2qch7tsc5nz7rsj0", - "percent": "0.0%", - "airdrop": 1195.2535726518986 - }, - { - "total_amount": 52175611, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxBfkxGTEaWfp5LBScAfwgV2iGK0TCB3aTGy+2S2Dave" - }, - "address": "noble1ujpuz73eva7gx8qa8upqpw97yu4qn89fftlacg", - "percent": "0.0%", - "airdrop": 916.5033220873589 - }, - { - "total_amount": 67073717, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwwgYwshpCW2kCxKg0bbQu+N2l2sY8Am4UNJEm/2cdsW" - }, - "address": "noble1ujdrt93dp9m4g4wqy06afvxvu73u6jqxr2tzkr", - "percent": "0.0%", - "airdrop": 1178.199608534481 - }, - { - "total_amount": 174282361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqNCAFas/S7HOjNlyLwjZKdLmzAXigWqMtfISOCFo671" - }, - "address": "noble1ujdtl3kk6csxe4qeq0n7r2f9jchq65fhn4fw85", - "percent": "0.0%", - "airdrop": 3061.398990377484 - }, - { - "total_amount": 419642091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7LM5yl3LYM24fBkT1ZD8vmNQACc8dH8dc6Eh+PV7S/v" - }, - "address": "noble1uj36hcqjgm72wx8snlkpwwqhhck289h2ysl985", - "percent": "0.0%", - "airdrop": 7371.324707422896 - }, - { - "total_amount": 72283051, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A90VXfQVnEKBrlT+LIyJajS1rR2HqNhkbRQvH5KplskT" - }, - "address": "noble1ujj0t7w0eace3k4t0k32twyhh5f56uq4pn7umv", - "percent": "0.0%", - "airdrop": 1269.7054256271192 - }, - { - "total_amount": 417397561, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgkVDF9Lu6N2R8obEJ1Yd3Be9EQJ2d9uDboLLhu6uDK+" - }, - "address": "noble1uj57chsrrtcpsgua0x7tk2kf7nkh2hzyzuwegv", - "percent": "0.0%", - "airdrop": 7331.897872507157 - }, - { - "total_amount": 113695391, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/re7xkSDA3XQ3g21wQv5pW41kopdz3Rp6XjrEv0cjXt" - }, - "address": "noble1ujc2kt26d3a0x7v92e5acfu952j228f2rj2g8a", - "percent": "0.0%", - "airdrop": 1997.143906135018 - }, - { - "total_amount": 51290248, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgGOhPCMLjoLCkUjE411STQaziwJPp5j6cZ8ic6kFfIb" - }, - "address": "noble1unz456phd2gen5n5uy77hy7x6t0n24yrhyegca", - "percent": "0.0%", - "airdrop": 900.9512640433577 - }, - { - "total_amount": 5001599149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhDL7PdGyo8u5UrrlT2yZV1Jsrots66YnGhq8lIsV+KT" - }, - "address": "noble1un2sm0pxgzauhgpk07zgrupzmdvm04zu8th9c3", - "percent": "0.03%", - "airdrop": 87856.80029329809 - }, - { - "total_amount": 603251672, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjE0n4IFOeWpb0/0AAoLV9aWpKy5t0sgj33VkZ8Z+jcV" - }, - "address": "noble1unvmlzec4fsuug0xryvkj4y45s4qam3h24pee2", - "percent": "0.0%", - "airdrop": 10596.563237999337 - }, - { - "total_amount": 712595330, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/cxXrMGQz4WXLVudC3T6quAU09cl+mSUYPsBM1LZjC6" - }, - "address": "noble1unazqqwuz3hwsszcnngqckjy0q4qct6fz36nlw", - "percent": "0.0%", - "airdrop": 12517.265724956012 - }, - { - "total_amount": 375736374, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6X6K3X4iPw69P1dwDV6S/5DxwWTCsdHcSx5ioJEWOsy" - }, - "address": "noble1un7d4ecfel6tecskyefc2tae5nt2m8qy9mmxyu", - "percent": "0.0%", - "airdrop": 6600.088209797071 - }, - { - "total_amount": 334698892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8CiMxTmeDUMs1OgJxf+m8ID3FKj3TVyPM1+l0QAj+RW" - }, - "address": "noble1u5p5z0s2d76mkmzdrsu23y4vcslsghht46kqqj", - "percent": "0.0%", - "airdrop": 5879.234388207896 - }, - { - "total_amount": 1461462636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkbOl8slzuRfSlPjUX5cMfZ8rCUEHM0yLvBM7pcbmfSC" - }, - "address": "noble1u5rczc2mk0kxdejqu8ps49sh46q2ensykzdgjz", - "percent": "0.01%", - "airdrop": 25671.675622553776 - }, - { - "total_amount": 57176929, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApxhG1pag37YfScD1cDfE7ljj+PXcPLi1t8w0VfPoOvK" - }, - "address": "noble1u5t5wuyx7vaenk5085la0ptycd6f0mt5exwrne", - "percent": "0.0%", - "airdrop": 1004.3551837898565 - }, - { - "total_amount": 154577320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1D87qfYKzgJbCgjYVK7cZIJwp1S49LFs7Bi7jCYrQZG" - }, - "address": "noble1u5n3hzap00fjq6etv87vpd05w9zmjzydcytxkm", - "percent": "0.0%", - "airdrop": 2715.26532385717 - }, - { - "total_amount": 324018788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6X5j33+qHxByr6czl/lqLpQp30eR8x721klSAY5XEXu" - }, - "address": "noble1u55hrat5xgjd2dam6xq0yrcnfhuv23s07u6vq4", - "percent": "0.0%", - "airdrop": 5691.630436694257 - }, - { - "total_amount": 528623485, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoOjqKqagfWtpqAikzNW+NZInpdtFoFDVolTnqE6n/yl" - }, - "address": "noble1u4gefum0d6cvgrz7mvk4s2fh7tzttu6zjl3064", - "percent": "0.0%", - "airdrop": 9285.663758415732 - }, - { - "total_amount": 11269162920, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax++dIiL15w/R5wSJFt1Szq7pmXAIW5utDhxkJpM9LCc" - }, - "address": "noble1u4vy3clfxqtxlkylllfd0j9e9g23dsvkf2x9yp", - "percent": "0.06999999999999999%", - "airdrop": 197951.2085315816 - }, - { - "total_amount": 141729136, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7NVBkE68M7J79VYv0g5rbA1QSpeppJbYuok0/E8fs1o" - }, - "address": "noble1u4vharqdvwjnfrzyah0flagtmkhth2p3g42aku", - "percent": "0.0%", - "airdrop": 2489.5774384045276 - }, - { - "total_amount": 134033038, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoPNyMX295L5b7wUvAVF1VwaA4OCrcDLY2otV828Dq+m" - }, - "address": "noble1u4w9uz54yjzc8cd0hnzg9kr02fjgxjnnu633zr", - "percent": "0.0%", - "airdrop": 2354.3897664458827 - }, - { - "total_amount": 4988196670, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+pZf5T5YFuRI3R6OVFO/1EYQSQYW/94nXiTOK0+yIk2" - }, - "address": "noble1u43e9d98g7j6msnesp6qfhzk8xqvss6l7amdt6", - "percent": "0.03%", - "airdrop": 87621.37580487752 - }, - { - "total_amount": 278370668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8A+XDVcXlDSUVhEElyxQpdZ5uLgRwopHuSMh6qxA8y8" - }, - "address": "noble1u4k3k7rgr0wfx7v7frklfhhfl30v53nyf5gaze", - "percent": "0.0%", - "airdrop": 4889.787337491405 - }, - { - "total_amount": 132157107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag54JoWLCpPJAS/jrabMuj/Hhwto9jdyFeq6Dzy6qjSC" - }, - "address": "noble1ukrnwy9epj8gh3qln0yqvndnz2clnp4emvk8rk", - "percent": "0.0%", - "airdrop": 2321.437646469623 - }, - { - "total_amount": 293069453, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AikrNG1mEwGUuny36VYphBevYnR5ZSoKvCy4bHMRgNy9" - }, - "address": "noble1uky3m2aqxks4rg3hzmk5qtm9xlnmqwah4lqa95", - "percent": "0.0%", - "airdrop": 5147.982402675171 - }, - { - "total_amount": 202134481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5C3/5u9GktTW+mC17D2aQbLZrjth9RAARjaH9Tr9pcQ" - }, - "address": "noble1ukw0fr5lrjs3rym48j67dg4f4qvr4mwl6svunl", - "percent": "0.0%", - "airdrop": 3550.642144754263 - }, - { - "total_amount": 555000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1jqsR6i3MXsN+L9DV6qaHdF6k/8SZPb2ibSOl2F+8r" - }, - "address": "noble1ukkx6f5vach3xmjq5fsdcesr3k8f0kqpy8rt96", - "percent": "0.0%", - "airdrop": 9748.98681605251 - }, - { - "total_amount": 279965885, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq65QzHDRBBT+djsO/008zDXvAcOwVR7g/Pi+DWJ2zxN" - }, - "address": "noble1ukexhtndv6u82nn0ycn64pd5vmv3frhqyljp5p", - "percent": "0.0%", - "airdrop": 4917.808507764816 - }, - { - "total_amount": 455277790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/HOrP00OZ0azMybnmF3bQWzfoUyLd4K0lHdT+jucLDJ" - }, - "address": "noble1uk6dv0s6xaxnk4qhdszwj2fqg0wvmput3f4ah6", - "percent": "0.0%", - "airdrop": 7997.292202435176 - }, - { - "total_amount": 50309016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahr1eetotm6QLvxB0W4RVso08BiA8SRGx1orzgVB7GZI" - }, - "address": "noble1uku8j8d8edtw0wdm8gnrmcrhq30yt55wvhvsnj", - "percent": "0.0%", - "airdrop": 883.7151958785129 - }, - { - "total_amount": 13460985935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aigfs41cuC/uhqeOg3Pb+vZ8+9dEcIFwMG1sU/f8Xa68" - }, - "address": "noble1uklgppqgh0umvnn7quvtcget8ktnd3kkpkpyrd", - "percent": "0.08%", - "airdrop": 236452.20614663648 - }, - { - "total_amount": 111482225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av4WruzzEJ8/YBn+8GBuY+a3E6wiwrz70QmYDoiqbi9W" - }, - "address": "noble1uhqwjwdwwtlhnmxg4qlakmmpyzxwpz84f6vnkf", - "percent": "0.0%", - "airdrop": 1958.2680031517107 - }, - { - "total_amount": 381945324, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A42c7gXiYC7UvgdPFsatLB4XjcM2enNY/2CYpFxI1FFd" - }, - "address": "noble1uhxl9vrmcrz44c5zx5tc3pflvfm7ez5jldcylm", - "percent": "0.0%", - "airdrop": 6709.153023655682 - }, - { - "total_amount": 1971389339, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqEFaYMl6zB5Ej9DeCqPROQZRXJ8+sozcdKKwP2XCvh5" - }, - "address": "noble1uh37d22nnaaaf2wzwhundhh5rp2mw0zd98vvh3", - "percent": "0.01%", - "airdrop": 34628.916531923365 - }, - { - "total_amount": 100125465, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A40sOrhE3bg08LPfNyrhrbgJUI4PvBCxGPqhuX8g1Ouv" - }, - "address": "noble1uhc6wj0jypa9nc6qns44u690k4hdahgw687nl2", - "percent": "0.0%", - "airdrop": 1758.7780869119404 - }, - { - "total_amount": 72622641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anz/1Fd7IAOKwnqQSZcy1K/ASvMo5bZiHmJXsYt+A2Vb" - }, - "address": "noble1uc32nsr5ya4lwz5j5tpj459tg4ktqpu6pt5yv9", - "percent": "0.0%", - "airdrop": 1275.6705759566023 - }, - { - "total_amount": 88343455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A72LuU6f58JnMSKLwIyb+yy2BTwyhj12r/cViLZbF1c8" - }, - "address": "noble1ucnghqn3pfje9vkjumtrnk0h6a9lmzmul3qfm5", - "percent": "0.0%", - "airdrop": 1551.8183388820325 - }, - { - "total_amount": 458028023, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au2KG2yQ58fG6j1d5+PI7jICjby9Sb/gKQbU7AjaCDtj" - }, - "address": "noble1uchgj87zrksqma2gu5je7g3azpkazqdnfajyuc", - "percent": "0.0%", - "airdrop": 8045.6020857830545 - }, - { - "total_amount": 250111967, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiRUeV81bdy66tmT9VxUUkN5RH4tLXFCOxTT1DiG9Vi0" - }, - "address": "noble1ucexv9agj0zhd2dffkg006l3jzaxxgfd9ua7wc", - "percent": "0.0%", - "airdrop": 4393.40228616209 - }, - { - "total_amount": 100532508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2JQ0A1YI65N4za6aufbMqJWH6qQEvNgQiJ0XHnmLYch" - }, - "address": "noble1ucegjhtsgt528vu74sltnr4x2533n675dgk5g4", - "percent": "0.0%", - "airdrop": 1765.9280992372853 - }, - { - "total_amount": 337474216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjFUZsN2X+c0xoWu2Z5+F+NNbMuzBSb3IAupZQBLcqMW" - }, - "address": "noble1uca5envdq6alnj93qx0ws4sjdux4t2r8v9weul", - "percent": "0.0%", - "airdrop": 5927.98501358857 - }, - { - "total_amount": 5950754471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4yeEav+9asRjJk6YK+aXvXqOTU5S7Qs4blvaHRinJQV" - }, - "address": "noble1ucahc5head9ly74ancj33ehgg5qyf0fsttd5n2", - "percent": "0.03%", - "airdrop": 104529.41780782795 - }, - { - "total_amount": 67195268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvCzGLjCvMqcTnDeN5UY8KVuGuhLXPzREVDsBXDZ5kZ2" - }, - "address": "noble1ucl2c39dpwqm9pp6cvmlazn2tkwavszhm6lfrn", - "percent": "0.0%", - "airdrop": 1180.3347420416485 - }, - { - "total_amount": 135653091, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoklbYSTIUegylt/543rTJCJha1KBsFpELssNKJ0qjtA" - }, - "address": "noble1ueru6yr84jayuak8e66fv2cphgmgct79cgvjsk", - "percent": "0.0%", - "airdrop": 2382.8471994878755 - }, - { - "total_amount": 822059210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArzmG6m91zX5asS06FDyCuQt08p0weMNLvSyqdtu04yo" - }, - "address": "noble1uevvmc289fxq2zk0kr6nw3acuxsyzw3uc5xsvw", - "percent": "0.0%", - "airdrop": 14440.080000548722 - }, - { - "total_amount": 80612893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq+hY1TtjP5dMyxFI1NI6ZJqITI2Jlw0zhP3GN42j1a9" - }, - "address": "noble1ueczdjadxvcx0xj9m2vwv6sxf4yp8e76qx9hng", - "percent": "0.0%", - "airdrop": 1416.0252811907235 - }, - { - "total_amount": 418068949, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap8VHQGzpHtVmpUYanxmMoBDYHZQv6pYR+zwiWgI2/ca" - }, - "address": "noble1ue6uxhflywusvdmp6u769wpzcr8qla4f2hdcqt", - "percent": "0.0%", - "airdrop": 7343.691300904376 - }, - { - "total_amount": 158185234, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuA9zDoKyH/5WVoOMSKyn9raXEQF9RRCf/VD5u0YJsqW" - }, - "address": "noble1u6qq3ge8vfplqnvtfhqggzpaft4m9rw472uz5c", - "percent": "0.0%", - "airdrop": 2778.6410103787043 - }, - { - "total_amount": 2435254068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A90HBSmzytzIZkpeDt/EsN9apPuJ4vm157KibSnsdKpJ" - }, - "address": "noble1u6xhu9csah04gwape3jrr0mvaup7hgfnuwufr6", - "percent": "0.01%", - "airdrop": 42777.044689495924 - }, - { - "total_amount": 100996678, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwoogisyPg1J3FTD606mHgQIg5U3Zv0usocL/1Ica+Dk" - }, - "address": "noble1u6gljyt7xxwr4fgwavcwfnc286m7up97f0t7va", - "percent": "0.0%", - "airdrop": 1774.0815897064872 - }, - { - "total_amount": 668844385, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxdwzwVzKiHWOW+8tXOBI8/49GpNZYz/W97QoR2BDUSP" - }, - "address": "noble1u6jnqruta8rmwxpvu3wajd92k6cdqq0f5cssrs", - "percent": "0.0%", - "airdrop": 11748.7479123527 - }, - { - "total_amount": 51475910, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AskXf3eqae2mZbN7aM5lhlzG87K3UsApGBihgHGJZMV3" - }, - "address": "noble1u6jc0sdp9nczcm5yd50snwypacmxxgx4xzq5nl", - "percent": "0.0%", - "airdrop": 904.2125548365865 - }, - { - "total_amount": 374875516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ePj266ZOyk8c3pya9aB8rpWReY4KbnpxqPa4yVcF5J" - }, - "address": "noble1u6k5zk9n8h5dnprd87qxa3gwytd6gxardwhwr2", - "percent": "0.0%", - "airdrop": 6584.966600261047 - }, - { - "total_amount": 187445488, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak3VYJI7rhna0Tj3dQ7CPzEzJjv3YBPomAOdQKiO7jMq" - }, - "address": "noble1u667gphejhat3eacrwvxun43kvldhs6awpqym9", - "percent": "0.0%", - "airdrop": 3292.6190833162677 - }, - { - "total_amount": 940148888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkCjJwVDMi8WQ8TbNVJGRp7K3gdKWOoMeTOb587RnNG6" - }, - "address": "noble1umgfmc69nrk9xkzuy9z2l8d2czrv5lt5kzfv88", - "percent": "0.01%", - "airdrop": 16514.412818447614 - }, - { - "total_amount": 53342378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Ia2J5F/+9DAjVQV7hcQ8+KGUYb/mR1RGNflBjIiBSs" - }, - "address": "noble1um2fp8trfrczynapymtryf24j2lx472yjpne7d", - "percent": "0.0%", - "airdrop": 936.998450196197 - }, - { - "total_amount": 71401950, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8bL65DVSkdjBF+td5PhaT9t4/qqLpa8Df5DVsPo9Rk" - }, - "address": "noble1um2nscv4xr5upungjl8f5uk0vl7g2wkazq9xp6", - "percent": "0.0%", - "airdrop": 1254.2282327755684 - }, - { - "total_amount": 1827944609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/0rjQKMteKCeDLLqVW5aVOlD8drGTyTMfDX3bhfajV6" - }, - "address": "noble1umdt85h89ujaartttm5jt0eh9vkkjnefnuzqtd", - "percent": "0.01%", - "airdrop": 32109.203411919378 - }, - { - "total_amount": 2158477089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/fojyTkAc0jMLuQ+RfoPkVvixMTmbZcKdSpJKdw8kJQ" - }, - "address": "noble1um066t8h4g6cc3rvwywnup6w0sf4rnf2ecrgx5", - "percent": "0.01%", - "airdrop": 37915.251681824135 - }, - { - "total_amount": 279525539, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ap8obfiuk1hpApNMJJDF3yHx1nPImOSC0YrV+wMb1ZEp" - }, - "address": "noble1umnr7jq6hn8zqe78u370eyazxl4l6re3073hm2", - "percent": "0.0%", - "airdrop": 4910.073503533281 - }, - { - "total_amount": 53958605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AheTQqaP0fc6qkWbsSZFf2+pBU244DfhLrOWH3w/1/PK" - }, - "address": "noble1uuyug2ufy3hqlme48jkydzhkdsu3glvl04shct", - "percent": "0.0%", - "airdrop": 947.8229346983513 - }, - { - "total_amount": 50092849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzYdEF+SPUnnFZtYdAQ+2B6lWc6gd3aCZTCH+C/kFp3f" - }, - "address": "noble1uu9t3x0x38j6v69ctym5wthvk2z48mxfkv2m5l", - "percent": "0.0%", - "airdrop": 879.9180621252415 - }, - { - "total_amount": 1193866134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag3fLPhw05f/Rw2b2Q8h/exkJ/sKjxsP5AeFPLgpDvNV" - }, - "address": "noble1uuxcscf2cj29wlct0ajcar52e9z3l84ee3ymt3", - "percent": "0.01%", - "airdrop": 20971.14450540104 - }, - { - "total_amount": 2258224622, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4a0OGymv7ltGZhKwC9Yf+vxPFSSf4+T874O0xLJ6rRA" - }, - "address": "noble1uutcekfpfjyd226u4sjgu5rst8vfaywjf6e99q", - "percent": "0.01%", - "airdrop": 39667.391112726415 - }, - { - "total_amount": 156508201, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3PSBrfuje9SikEF3Mw3dZ0EsS12iwJZy2f9qJVc1fpJ" - }, - "address": "noble1uu3wjwm6z70txxd9p74k0jdjyesltp953suwd7", - "percent": "0.0%", - "airdrop": 2749.1826813569296 - }, - { - "total_amount": 427439552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At7e/73nLs75Vww5fDEtC/NZymJi1DUJz0UKUg5ctEa9" - }, - "address": "noble1uu30mnsm88c6yjue4gxkwa388hr5rflqvu0qjy", - "percent": "0.0%", - "airdrop": 7508.292895688992 - }, - { - "total_amount": 50215852, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArXJJo/k21oOfORNivsdviqXhxeo+J3G0XYGszjmx4y/" - }, - "address": "noble1uu5jmtlh2rmswmnm8lglkdcg4wj9452ayr9rv0", - "percent": "0.0%", - "airdrop": 882.078701089809 - }, - { - "total_amount": 732490783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A63UgV1OrgS4O6Yx5f2HrppCmoCK2zJp+lA0MW9mzrhD" - }, - "address": "noble1uaf00np4upqhmr3yjuvau26h2pxr6d5wvenmdp", - "percent": "0.0%", - "airdrop": 12866.744119544104 - }, - { - "total_amount": 181031533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3fM/lzZToVJWU55nLiIlRkHrlLfWaF2MJggkZWYDgTu" - }, - "address": "noble1ua2g809knm9dtv55f952u6w2sae5x2tlt7fdyw", - "percent": "0.0%", - "airdrop": 3179.9532045167107 - }, - { - "total_amount": 962484255, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1e74eJwxgZv6x9BpImxRKNwzFsvc433Iz1FPSuRSlxi" - }, - "address": "noble1ua4pjlp3d25wcnfv7y3wg65s05le6hnygeaeuq", - "percent": "0.01%", - "airdrop": 16906.750112888505 - }, - { - "total_amount": 452214178, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkWg9z647oljdtUzyX8JdW1VBZyxdrdvFy0J+eAgWwKY" - }, - "address": "noble1uaeq3cz37yvcay590p6a55vq6lj6tnmsuy6pwd", - "percent": "0.0%", - "airdrop": 7943.477584421662 - }, - { - "total_amount": 53954710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnX4ksGReogD+yUuG4eYV66yH+iqI3STj4PMgReZzNTX" - }, - "address": "noble1uamn4ktpmes2efdf6qfh78m5cedkfctg4g035n", - "percent": "0.0%", - "airdrop": 947.7545161332188 - }, - { - "total_amount": 70408102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Nwds3dL6RnAiTGm54/blZBQ4598ADaUmAR+VmSMDgP" - }, - "address": "noble1u79w9ye9a274yy5cqkk9nh5nrvl5rpe4cm69u3", - "percent": "0.0%", - "airdrop": 1236.7705552095138 - }, - { - "total_amount": 68782369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyplhBA22Dj+03Ewm+cFLAVIGQE7I6nFyjgr6R9NQBn2" - }, - "address": "noble1u7fznx25zrfr7nx9eugqu3v260w43mfccllthj", - "percent": "0.0%", - "airdrop": 1208.2133487528988 - }, - { - "total_amount": 113932489, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A57IBgQZNAoR1U0HE6iKyODPQT1zT4hRfVlkiM9P8r4q" - }, - "address": "noble1u7trzn57xtjynzu5r07r95tp60zchfltt08xhr", - "percent": "0.0%", - "airdrop": 2001.3087084343197 - }, - { - "total_amount": 50000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ACGXc6ZZZ2VhaTTRYf2KVgNC3YOfqs0dieSJxoDdaI" - }, - "address": "noble1u75hcvzppcdw0przk4ak8a9zm460n37kxprkfl", - "percent": "0.0%", - "airdrop": 878.287100545271 - }, - { - "total_amount": 401117594, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkvLNdbuvRYxHo5srLJ/I1+wV0hP+M7Pkt72hosQ22RN" - }, - "address": "noble1u7hvj2a34tkx3uk8t9l3ytxxx7p7hc2ms3t2v0", - "percent": "0.0%", - "airdrop": 7045.928172239104 - }, - { - "total_amount": 219725756, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ait+/OuR5Njc4CB+mGFTeFKhaMRhLRO4b2DfD9fm8dk7" - }, - "address": "noble1u7my8nvc6nj5evchnq8msuk8ywfu790cyfyf6z", - "percent": "0.0%", - "airdrop": 3859.6459430471537 - }, - { - "total_amount": 260244079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArgzfGC14CPhOV5K2AdelY4DncrjHyQzQlR4N77k2VWV" - }, - "address": "noble1u77d2m73l38xxs863ku353sfn3lmzukkc84juw", - "percent": "0.0%", - "airdrop": 4571.380351579689 - }, - { - "total_amount": 309050011, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3EJ2CdeoqPHY3l4GVtmyEdEUyMST8STf0QdJq/hqTs5" - }, - "address": "noble1ulrg3ul7rsdk8yaln4gtvnr5g5t8judqa7u0y4", - "percent": "0.0%", - "airdrop": 5428.692761693482 - }, - { - "total_amount": 200393637, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmDGga51rXS0ZK2gbJIGlagC4HDan/eV3VU987oG8Kj8" - }, - "address": "noble1uljezepw4dk97qq5uqgy7qqttnqkkvxutws09x", - "percent": "0.0%", - "airdrop": 3520.062928169031 - }, - { - "total_amount": 851178955, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3+f30EECoop1N5ESAvFzixbzi62hunWFSbNlnX7naU2" - }, - "address": "noble1ullxuzcrws4e2nn4h57g48ds3u3pcfdcvyvj9n", - "percent": "0.0%", - "airdrop": 14951.589928642074 - }, - { - "total_amount": 6360150268, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahze23+d73hwsrwv7xPFBfhz0KE0zM3x8rXkXcCQfzUq" - }, - "address": "noble1aqqctdntkssvkfhp24dsaz8ylsk80lrx8n02ym", - "percent": "0.04%", - "airdrop": 111720.75875827896 - }, - { - "total_amount": 63244570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8JWlnDZQJVe8BdRVxrsoqvqGMmYJ6gVMO9ccHb2bh9k" - }, - "address": "noble1aqf9qsc2qrudlwlgclgragujhqsns8cp0dzjxd", - "percent": "0.0%", - "airdrop": 1110.9378002106487 - }, - { - "total_amount": 186613070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ixgIOOMEAMBG2sWi9DeTtfV52WVEE6V/iczRhXzr5k" - }, - "address": "noble1aqd4pmpwk5rjtzjeawwlghkte0ualwd7uqwv94", - "percent": "0.0%", - "airdrop": 3277.9970434830343 - }, - { - "total_amount": 600010938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApXW9eiphzZkfFA6VDLCbGe5u7ibceG8OhvPChKABPQO" - }, - "address": "noble1aqnz63exkftuy9vw5aujr7zwxjxkrnk6cc7336", - "percent": "0.0%", - "airdrop": 10539.637340629366 - }, - { - "total_amount": 225343233, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/x7hJFrUyV+ls1S6QWneqnkF5Oe1ngzO2lpEDThpidG" - }, - "address": "noble1aqkmqh28zr3ennr35mvyskllgutww5h8a7uaad", - "percent": "0.0%", - "airdrop": 3958.3210947813486 - }, - { - "total_amount": 115848061, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7qaM3z+0dSAO4TXWK2FIocXbjh+Vynv+g/Omwet9QOq" - }, - "address": "noble1aqmfmzwmnqyv3f0tr43xkppg5mc28m5a4u5c0l", - "percent": "0.0%", - "airdrop": 2034.9571519896338 - }, - { - "total_amount": 116392987, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvE95ha8qOz00jNL5+m1KlS1/7NX/NVEomKBOIGCIYgB" - }, - "address": "noble1aqlfe72nretynzfm63fy775u979a5u8ja0tw80", - "percent": "0.0%", - "airdrop": 2044.5291815206683 - }, - { - "total_amount": 55159484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9/Wu2fvekAHhz0XpcfrH2k18bzZ/6MYS9ON/buUbqYx" - }, - "address": "noble1apfp7w8p4hw6nw0m7hh8ykxeanp98fxkgrx80m", - "percent": "0.0%", - "airdrop": 968.9172653986653 - }, - { - "total_amount": 415951305, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/8OZ22g1IB5/CdQYCnh8i4yzVhgSmSCUsqKI3Nmxk+E" - }, - "address": "noble1ap5m3nw7rd3f5pfc38cg3vwau5wz98adg0kdv5", - "percent": "0.0%", - "airdrop": 7306.4933127294335 - }, - { - "total_amount": 1781420236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AntaatgP6NBMk+MpsniNtvWiM+841pRrpHEYHKnHiBeX" - }, - "address": "noble1apeqqzaxm076g6c3d3q7a74z3esmdv0galcka7", - "percent": "0.01%", - "airdrop": 31291.968278582248 - }, - { - "total_amount": 88197227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak7W5NzjaOTj7xV30ICaSjhF9tm9grF4EX0KwSOTTcvH" - }, - "address": "noble1azrhvf7sz5tf8etgnu4d8gmyr7chykvx00c3uf", - "percent": "0.0%", - "airdrop": 1549.2497355592618 - }, - { - "total_amount": 299191267, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj02qqFQWtGrFIMu2aiTwglsc2oIdzchFWBg+OXFeY1A" - }, - "address": "noble1az9jgt55uhagur64vms8l5uzf895rklddzrmpx", - "percent": "0.0%", - "airdrop": 5255.51660803792 - }, - { - "total_amount": 96432640, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwdPLEIDSQYAqicacK0vHe6Hj+BgBxJar+lK0AyWzjFR" - }, - "address": "noble1azwxj7u7mcuzmq436erlks9su85m7vkydgzgnn", - "percent": "0.0%", - "airdrop": 1693.9108756705184 - }, - { - "total_amount": 7241205183, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az1V7DJN4XlGFlGEBr7Dcx0/jNhOlmX3cmEmdYnqhl8U" - }, - "address": "noble1az4rwl33h6c3t9xmzx7d3j6vqn9jwy259h4z48", - "percent": "0.04%", - "airdrop": 127197.14209260917 - }, - { - "total_amount": 12134311703, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwwmhPAPMo3YMj5DJKaNZpdz4z9sHAY3zpN5HsKdoNGP" - }, - "address": "noble1azexjk8ksa9qut2a4cya6nhey8ye3pfwxzhu4v", - "percent": "0.06999999999999999%", - "airdrop": 213148.1888548084 - }, - { - "total_amount": 325070842, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atn7T9RxuUilkxzwnlg8PygwfF1dAWp2HZY8TcZ+LVJk" - }, - "address": "noble1azmq89mfjmkp74fzle4uq4s28emcydn06d2hjg", - "percent": "0.0%", - "airdrop": 5710.110545839798 - }, - { - "total_amount": 60305800, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am/MKr59M2B/w4qjVlvKpnUFkkA4IXmLXJD8P43JlCf9" - }, - "address": "noble1azars7gudgghwr5hufljgngmmhtnvh35k7r2hw", - "percent": "0.0%", - "airdrop": 1059.31612456126 - }, - { - "total_amount": 63468538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtQDlIg3HiyhiqP+BEJlRcAz2yTD14aVZiYq3NK33nIf" - }, - "address": "noble1argljw7h7jd9ye7gwqastgwq4st8lek6kxyhmq", - "percent": "0.0%", - "airdrop": 1114.871964317347 - }, - { - "total_amount": 160144450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6RhpPAWgfde9Hs94USADtWKshkmKRpYi2kwgAWjeyG7" - }, - "address": "noble1ar3tcy3mjxr5zuywg9falcrwn7gd5gwhkysccp", - "percent": "0.0%", - "airdrop": 2813.0560931783425 - }, - { - "total_amount": 1141857827, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A08Q4BNzaeWcw8lpN9UYpE0Cu9zMC9kklk/vp1WNYV05" - }, - "address": "noble1arn36yk8lj9jyzdlkrcrayd9d6870ul7nvjaua", - "percent": "0.01%", - "airdrop": 20057.580002215072 - }, - { - "total_amount": 901069722, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtrjjFRK1QTNjVYNlxkPIIm6pfEowe3gGvdv0R4bxZ2w" - }, - "address": "noble1arleup56y4vmu6wv80r0z049dnsugvgd6zv57v", - "percent": "0.01%", - "airdrop": 15827.958270490266 - }, - { - "total_amount": 1380430787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3s7oqp1Mk9k+ih749ghUDhUDq1STvS6QHTH5t210xDS" - }, - "address": "noble1ayp70xl3jz96mkdhl5f72s2vcmeky9m3qew6u9", - "percent": "0.01%", - "airdrop": 24248.291068353134 - }, - { - "total_amount": 592530616, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjjR3+wxqpXQAkBcTBfwnB1pGT+awE4mLPOPKjWj517t" - }, - "address": "noble1ayy534ngmwghz72m780png3kvzeg9spe4xnqk7", - "percent": "0.0%", - "airdrop": 10408.239934218866 - }, - { - "total_amount": 1017728208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Ng0WRN2rCSsUC5Huu5BEvWgnbPXdpneFg7S9Mgsp8p" - }, - "address": "noble1ay8ff88dewjua28nrsxgezxzj92nxw9rcdpzd6", - "percent": "0.01%", - "airdrop": 17877.151138949088 - }, - { - "total_amount": 618358291, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtgSzGb4kfL/RiqSjtKXGT6m8IRYh8JUhKmqUKJb6/+Q" - }, - "address": "noble1ay20244ypp3h7n9eact9ldnzxmq6etz4ac3rl9", - "percent": "0.0%", - "airdrop": 10861.92221001038 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiWfNPD8xbk9pB5fhfcgc6JGviDXDS5YHdR9odRWFUhw" - }, - "address": "noble1aydl9yn57a0hwjre98q7rc30zymeks7jmh5v4s", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 724447213, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Ub8/UanBVwlWav6qyprRnkOU1LST8pSsiWzRokc+hv" - }, - "address": "noble1aysdvrm704ujywrrxxayhlkemndla3a49m8fa4", - "percent": "0.0%", - "airdrop": 12725.452844077447 - }, - { - "total_amount": 1705709993, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ago8y9+yAs+P8OORn/v57gNUQU9eQybBsJZwjyejaOtI" - }, - "address": "noble1ay372nh5gh0w8tpzltcn9acenk0al3pz4d0mp6", - "percent": "0.01%", - "airdrop": 29962.06168246129 - }, - { - "total_amount": 1016388321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoRnUWKUl+9gDfqhENCHCVAc/lUIND0FNcOp2np+YYbh" - }, - "address": "noble1ayj98pnxpp6fnus7m574zt5yxzy9c4t5ectxlh", - "percent": "0.01%", - "airdrop": 17853.615029583325 - }, - { - "total_amount": 140918342, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7GOnVu/jsg6y42RGS0bLvYHPHQCP679bs/u7uiZg6/I" - }, - "address": "noble1aykg44m53s7lc8e3es8wzq8fk6hcylctrlu28a", - "percent": "0.0%", - "airdrop": 2475.3352401765374 - }, - { - "total_amount": 119909200, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsxqMUZmDFTqx9iGLKzRm7KmWHdEvupJxDSHrAYqvlfO" - }, - "address": "noble1a9yqnu5yvds34em8d57t4q2vd2xgw588w48j52", - "percent": "0.0%", - "airdrop": 2106.29407193406 - }, - { - "total_amount": 411025913, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arwpgwy9aZeWfM5DwFYg5xbJINS4J355L6Ks45we7gbA" - }, - "address": "noble1a9xk0qftlgyez86a6dvn38f7hf8e9tykdgr7q0", - "percent": "0.0%", - "airdrop": 7219.9751475548555 - }, - { - "total_amount": 151794067000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjrKYAGhaoTZNUop8bFO030YWAmO7hrEJNOflmKqu+mi" - }, - "address": "noble1a9glne50ljrdxxm07nlg3xjrgx343e9zeeqjjn", - "percent": "0.89%", - "airdrop": 2666375.4197080918 - }, - { - "total_amount": 92739212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ayj+BZyVrfkY57j4WW9vZQrRJ6+vn/hUgbCwTFhV9hhB" - }, - "address": "noble1a9fzsszllgx33u7wxg9ew5rkhnz2latn3rlkw3", - "percent": "0.0%", - "airdrop": 1629.033072286664 - }, - { - "total_amount": 1074121294, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiPCF8ZUKal7jVCNDN0CXEpaLl2rerf+yT1ENYsvQWP4" - }, - "address": "noble1a9fzkadrn347lzwr2wfzn9mvg4a5m0quvhu50r", - "percent": "0.01%", - "airdrop": 18867.73753882389 - }, - { - "total_amount": 300578166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgRdK2zGuzBDOLS4VT17YyaCGg04VcCNwqDbWdwpnAOg" - }, - "address": "noble1a90easejyw26a6f4wgq3n9unn038sz0yhz6lsq", - "percent": "0.0%", - "airdrop": 5279.878518067103 - }, - { - "total_amount": 263894627, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuQav24PQI1LFRnOzRiCootUjUZ+5fxELktti721skEM" - }, - "address": "noble1a9hk3p9g7g8m555htyv2pyx7v68yqwza6uhv6e", - "percent": "0.0%", - "airdrop": 4635.504935946115 - }, - { - "total_amount": 3595704348, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjKo8hdkzzWc7XShbDHKLTfekPNN3plEHKVlJGJ4qN/c" - }, - "address": "noble1a9cg254k5ktvma07n8knde3chramwu96a5d8lu", - "percent": "0.02%", - "airdrop": 63161.21492445889 - }, - { - "total_amount": 138204557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6L8fHfli4tAF9ja1+UcHjnnSTC3Flp8VBP4DuDJzE3E" - }, - "address": "noble1a9mye0lvsc9mmtecatguxdlcptctdw3vyw4pfx", - "percent": "0.0%", - "airdrop": 2427.6655929934727 - }, - { - "total_amount": 5493972804, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArtJSL/EkuU30k0o8m2zaZ3SEJ4nS6fXMwZ7t1k/IReI" - }, - "address": "noble1a97lyhjuxleyszx8exgn7yzdjzgqdyq84j42l7", - "percent": "0.03%", - "airdrop": 96505.70888999465 - }, - { - "total_amount": 68791904, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A096fV8hV8a8+jBs8QCdLKih89ieRdB5zKchfB/68YtE" - }, - "address": "noble1axzmw0sup3dp6lvjh344qm2dlhpahaqr00vxrl", - "percent": "0.0%", - "airdrop": 1208.3808381029726 - }, - { - "total_amount": 79098940, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AohQEuRx1Ts01PXORcWBw/TrpOM2q3Q0e7Nu2smW1IQK" - }, - "address": "noble1ax2ckjw7je59pl6rwsfsaqdgenpvmt8e4esnp0", - "percent": "0.0%", - "airdrop": 1389.431573376087 - }, - { - "total_amount": 17141151794, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0EZ1PLbLppQ9KEk3bYy2zSsSKRrwkLs+RBOMm1Dr4F5" - }, - "address": "noble1ax27vjjd56lf5zatq2j2axahgqgt9dlmvuskln", - "percent": "0.1%", - "airdrop": 301097.05018317257 - }, - { - "total_amount": 138206502, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyJ/QOCuywUsNPKZgSsg9HcUFIQAed9eWjfmxnnZ3jOX" - }, - "address": "noble1axvj50lun0cag5cze0h54tz92antl7e639c3s2", - "percent": "0.0%", - "airdrop": 2427.699758361684 - }, - { - "total_amount": 482267607, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6h1DL+b0MOM91VNMpX0gDEzD9iLCEjs2U0Umemw/ELu" - }, - "address": "noble1ax04wdglkan96c92mh6m3x3rwe86966zu6gz90", - "percent": "0.0%", - "airdrop": 8471.388364778724 - }, - { - "total_amount": 139189565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhhLdthnzfyLoFmfYsovYYAYASbm29GSMGyF3xYlDpna" - }, - "address": "noble1ax56tmjxwey2gf2ltzjxlh2n8unh6d4avxkul6", - "percent": "0.0%", - "airdrop": 2444.967989400151 - }, - { - "total_amount": 651506996, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+Mhqx6AsaaSlmJPYtjfrgt+HI0jR7zKmkhkfEuC6RaC" - }, - "address": "noble1axchcp8tnnpx72mn7myzfj3q8w9mu53xzg7pdg", - "percent": "0.0%", - "airdrop": 11444.20381003599 - }, - { - "total_amount": 230473378, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9rt+KHdU0zvzo/PG+7cC1ViRJ9A9L7mQ/l2DppdnKlJ" - }, - "address": "noble1a8rajrqxjpymle2ul477x2muuqlecmupk0qk77", - "percent": "0.0%", - "airdrop": 4048.4358983298853 - }, - { - "total_amount": 51654210, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoIq/VGF9nxy7BEjrUoRuoPSNYSTksc7LhhuPjfhJ63T" - }, - "address": "noble1a89chpfgppllafptht8fygj088m3wx2cweq7ec", - "percent": "0.0%", - "airdrop": 907.3445266371308 - }, - { - "total_amount": 379477517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkgTeR+OXXdeDW2OLz2UPiwJXyd3sQmjHSSyEQe5VAzy" - }, - "address": "noble1a8whrtlpjev3umht2mfgdav70zgwnly9ulgy4h", - "percent": "0.0%", - "airdrop": 6665.804162560976 - }, - { - "total_amount": 1263063442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8rKbv6O0ROMbnJ5B8mTHY6yOLF9+K2bUQGra2SPC9tg" - }, - "address": "noble1a8c5pex75w8wum7hk8unyyd9g7uxmyqrx5wk6h", - "percent": "0.01%", - "airdrop": 22186.6465655782 - }, - { - "total_amount": 151446252, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwSnnTcOXJjNazsgbd1jzySau9pChqRY5VheoUAMTIOW" - }, - "address": "noble1agq8gylgm73taagpzyhkwa7ngglfhyzfyxaj8p", - "percent": "0.0%", - "airdrop": 2660.265791150569 - }, - { - "total_amount": 69970226, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Of1Dvxd1SmmuiAaU3KNfUqVKIxtSQhpbcatYEFdk8X" - }, - "address": "noble1agxpa7a9cd7kzwt99ss43jwzsjrsgenpkeacjq", - "percent": "0.0%", - "airdrop": 1229.0789383607466 - }, - { - "total_amount": 68500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnlOZI2EJGMIJJRBEuTPn1sgz5P2pF07mGCS7E/Fy2Ct" - }, - "address": "noble1ag2mctnvgwqea7au0lh92xd4ncfysw8g0gdafx", - "percent": "0.0%", - "airdrop": 1203.2533277470213 - }, - { - "total_amount": 667121406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjSCI4VbJTXVasPdUKMtpB7dpgtzMwoRm+VY/st9Iew6" - }, - "address": "noble1agufctlukyfujnnjwlk83xs00w20j0hypphg5y", - "percent": "0.0%", - "airdrop": 11718.482507748491 - }, - { - "total_amount": 109017165, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar0P0UPifJe1eDeMawgN2jyV8e4tbyHwMvBU0O6PY3RF" - }, - "address": "noble1ag7akwwh5adl6hl5grw02rjjl4j3p3hypldlqc", - "percent": "0.0%", - "airdrop": 1914.967395150308 - }, - { - "total_amount": 269482002, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvHK7ELFMRhjdGvl1b1qcfJEUwKIl0Wzbc1rZmvdsCS/" - }, - "address": "noble1afpxffem0adxjuhdca37pwejhta9spl2lm88jv", - "percent": "0.0%", - "airdrop": 4733.651323714299 - }, - { - "total_amount": 19425513948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmtrVSNRPYl9ax/jSZKx5uKW77SExR6Otp1b11RLranC" - }, - "address": "noble1af29tfgwf3e5clcc23rmldvs6yw3vuq786s4kn", - "percent": "0.11%", - "airdrop": 341223.5664398128 - }, - { - "total_amount": 210443202, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5FZpJQF/AfqstZG4Bvced5kz/q6YEHSaOGHHOR244t2" - }, - "address": "noble1afhsmfvrmu5fkza2rd8yeqnhq8adexzrdwavg8", - "percent": "0.0%", - "airdrop": 3696.5909942808553 - }, - { - "total_amount": 527895236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5tiib2FR5zJmHlWgmmbN6/4utRBBQyZj25OoNpImLA" - }, - "address": "noble1afcc20af85s2mpv6mnvy99whl7c76palv0pdt2", - "percent": "0.0%", - "airdrop": 9272.871524362032 - }, - { - "total_amount": 86136740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A91l8sk1pfTHFHP2fix/NY7Eal53FVOe6MGEuDq+qfQs" - }, - "address": "noble1afudctugkhapj7zug8tg07la0cafefcm3vc6qw", - "percent": "0.0%", - "airdrop": 1513.0557525004374 - }, - { - "total_amount": 660323849, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApO5UqGHcovG0BL+NTrzHpltJ+21YSHfQd3sytyiRIS4" - }, - "address": "noble1af7uht99j0s7aq963p55mux48cck64euctw97v", - "percent": "0.0%", - "airdrop": 11599.078375182067 - }, - { - "total_amount": 231499947, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHiUiquv/DxIygZ977otCh9L1MMlsxCpd8FAeIh+6Fh" - }, - "address": "noble1a2zwjvetkqavejdh3nz4cdmccfqq3n6gs5z635", - "percent": "0.0%", - "airdrop": 4066.4683445402784 - }, - { - "total_amount": 74812530, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai5DfhFbTJF15Bki2VGPQEnQ4e6NutFZQWhuxMijltpb" - }, - "address": "noble1a29njd50w7tvgxz0xr4xqjgwapfxlx0pczjnta", - "percent": "0.0%", - "airdrop": 1314.137601163122 - }, - { - "total_amount": 78987322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A39h0tuYpdsobkxlF/j5G/s0KFx19h2Q5FRLmqDm8JyS" - }, - "address": "noble1a29kzgdc7vng8jhv0nnduxvjy5v99jslqhv9v4", - "percent": "0.0%", - "airdrop": 1387.4709203843138 - }, - { - "total_amount": 170108935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjNNQbKLX8zkAMrcqNkrQOPCmy35m693H+sAJHqdvG3I" - }, - "address": "noble1a2dvz3c9r9dn77lcxen0un9r2rjwtcgu4xv2yv", - "percent": "0.0%", - "airdrop": 2988.0896659598793 - }, - { - "total_amount": 125187500, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvlbDJEFg8LtPeW8b2cfn/eaJhchU4NGMJ64oT4mTr/8" - }, - "address": "noble1a2w9dw0hujy3wcp96sk6ezppy348v2q73k9cws", - "percent": "0.0%", - "airdrop": 2199.0113279902225 - }, - { - "total_amount": 196877894, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah/pphgUbvJuhv+O8yIjHmwumJRextMi5246xZHuWxS1" - }, - "address": "noble1a2sujy3c7lwdjq2wgmevq9wa23ek3pd374w2ef", - "percent": "0.0%", - "airdrop": 3458.306293654384 - }, - { - "total_amount": 113012576, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmO88tZxspYbmNBUphxR1zQOj5QaRYOhL3isvkf6TSBa" - }, - "address": "noble1a24fguh7pnwheucn734qzem55rqh2efjfcxgne", - "percent": "0.0%", - "airdrop": 1985.1497540038415 - }, - { - "total_amount": 131455320, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak4gkKdBqd7jT4FvdRZeGJ0TwCCXe+NXqbYhPk7seIBs" - }, - "address": "noble1a2hmdvahe6zuqt5cfupknshqr9z9cpq2ngzu3n", - "percent": "0.0%", - "airdrop": 2309.1102370810154 - }, - { - "total_amount": 53000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3BdwRFByzth+1HdoFu0cM2DaDgeZaKmh9jgL4MYhN/a" - }, - "address": "noble1a2crl0lwjg36ke8vsu0zzt3jfw0wd85khpyvj2", - "percent": "0.0%", - "airdrop": 930.9843265779872 - }, - { - "total_amount": 1948555568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1ZMYt0gUtlkSi43NpDunsSKbf/rgRQYs8/miet3VC/E" - }, - "address": "noble1a26hdmm0gqdrl4nxrvx4edvtsx4lg3w5qhat8w", - "percent": "0.01%", - "airdrop": 34227.824401401274 - }, - { - "total_amount": 152784116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2eBHm8kN1okpIds5Mm9NEg4DI7RjgzSbHTaOBIman9U" - }, - "address": "noble1a2a3q447729yurjxn6npejye62u8kl4v3spzyn", - "percent": "0.0%", - "airdrop": 2683.766365020247 - }, - { - "total_amount": 101602938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+K5WsV5Gt4BN1WwA1PELjpMrWJrZNV9OL1LzAlJD7C" - }, - "address": "noble1atpxm5rneelfle8m2mn574372jkzc3rnlp6qfn", - "percent": "0.0%", - "airdrop": 1784.7309964580188 - }, - { - "total_amount": 473068016, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0EUaBRJDtLw/uVddcEjywi5okL0uFXgJ+oYd822k02r" - }, - "address": "noble1attd9nejd9vdphtxzq490wzjn4avhn9w02kj7p", - "percent": "0.0%", - "airdrop": 8309.790722666878 - }, - { - "total_amount": 219182506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A566syXW3Fn3J2lNpFB8FYBvJB819MjvSn4KtDexlyKP" - }, - "address": "noble1attd7x5y2alk60h2cm9k483g5uhcxny38mjmvc", - "percent": "0.0%", - "airdrop": 3850.1033536997293 - }, - { - "total_amount": 217262781, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awzeo3yYKjY/UL5nhxDXBX4lQ55LfXdtIinRPSIrdE8w" - }, - "address": "noble1atvlsyqpj3evec9zxjyjvz7pzj7jrvjjgastge", - "percent": "0.0%", - "airdrop": 3816.3819596178437 - }, - { - "total_amount": 189121381, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhaAdo3KBAKAAQaPtlGdQH/ebdxpnBbwnqK9ETD2AKR4" - }, - "address": "noble1atdnr0dhseaxehchfcqpffs9u33f6n04qfzlkr", - "percent": "0.0%", - "airdrop": 3322.0573873921503 - }, - { - "total_amount": 146239888, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4i9H21nZgmzVE0sFhkqElcf4LgACbey8201Q3mtL0Po" - }, - "address": "noble1atkskd87jxhzhwurs54fxl2alh3nzmuu4qjaw7", - "percent": "0.0%", - "airdrop": 2568.8121443117034 - }, - { - "total_amount": 500669070, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxwhDlQUo3x8tLGplfNDgBHXiEuvOiXz+0LtTwD145HP" - }, - "address": "noble1ate9ea9zsne4wtzkh9439ceneg4w9sj9ze59xz", - "percent": "0.0%", - "airdrop": 8794.623716459946 - }, - { - "total_amount": 117103534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A59d7dQ4sS3FGsOxOMx5dGVVyo7/0Trz+0bWBILmNMzM" - }, - "address": "noble1atuvsc0k6jw56pzkm9z729wkxrtwe0gh3hgvdd", - "percent": "0.0%", - "airdrop": 2057.0104668092913 - }, - { - "total_amount": 139834151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxEcSf+Qj9wQrqSwN48dz/ZtxVUl6uve6U03hwOPXkWi" - }, - "address": "noble1atl2xz6w2lpt7v7xm5xh9lj0rdxvgav2x8k8vt", - "percent": "0.0%", - "airdrop": 2456.2906207799924 - }, - { - "total_amount": 68319292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw3HWqgzqphctq6jdV2/9xcp2rWTvNRKM0Ab31OmNjwA" - }, - "address": "noble1avqu6uvcvvdwj6jctds66l6xptmhh7qc7r8dyk", - "percent": "0.0%", - "airdrop": 1200.0790576397144 - }, - { - "total_amount": 357495503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkSYEq/DzQqMGyPXqXd8wTs+XgP70MOWTSAq6wkrmVPn" - }, - "address": "noble1avpkvz0ztml4y3m35gwfax9e8lfqynsym7cz6a", - "percent": "0.0%", - "airdrop": 6279.673775756864 - }, - { - "total_amount": 71381346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6ljtvhhe+f/l36QLSFeydgf4t8t+R0kM+jY9gQlR67D" - }, - "address": "noble1avrl6ngf884mlceeeucj4k4pl4c8sfxcg6hzya", - "percent": "0.0%", - "airdrop": 1253.8663082271755 - }, - { - "total_amount": 85044517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4/zgPV9FABejuweB0wtaj38yipV8YyTnwQNikBsWfrb" - }, - "address": "noble1av9zsuw7gxvteuzradpzx5p4nn5jgnl3vmyqfv", - "percent": "0.0%", - "airdrop": 1493.8700450640602 - }, - { - "total_amount": 52523900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7J7bcbI1DSNfaezAqX+pt+0oOKaQqTqpPGtn7KH11qX" - }, - "address": "noble1avdgv7zxu73rpy4f2dc6e7krtc7vnhs9x53svd", - "percent": "0.0%", - "airdrop": 922.6212768065951 - }, - { - "total_amount": 198290790, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsSVOUMN5AH+LedaKa6YT9kYEbA5FoDis3rspkXz4Rl4" - }, - "address": "noble1av56f9umwh4aktx8le7y7vtnfdekrz7jmmcc55", - "percent": "0.0%", - "airdrop": 3483.1248602786245 - }, - { - "total_amount": 200187249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am8JBK3KOblvVR/Gud4dHCU8FagKjmoVCd7Mvct1PgFo" - }, - "address": "noble1adr72atmnzzvqlfe574c3qk5s9zxk0l25lgk3t", - "percent": "0.0%", - "airdrop": 3516.437569806884 - }, - { - "total_amount": 359862782, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3sou/byJVezzQqkRPQe42Fi+kmzn5c/EOScSybx3UcR" - }, - "address": "noble1adylt57cw5pzu9zf8ctkp7xldm6v0ngs92cmyf", - "percent": "0.0%", - "airdrop": 6321.256787938699 - }, - { - "total_amount": 135420411, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApNKzMKgOCHvcPOvZ4UaftHs1ebR0HAIZlLEVWUiS/4e" - }, - "address": "noble1ad3mswe39tfvpnf49ewtakcuqrzz42y53l0kdd", - "percent": "0.0%", - "airdrop": 2378.7600026367786 - }, - { - "total_amount": 93537935, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiUb3T0i3rKvhjIuHeInQAd287m1JRnKz/sNfM6LOU7n" - }, - "address": "noble1adnj08fy57u8z8vpwga9lt4rhufrrp9nyx4xax", - "percent": "0.0%", - "airdrop": 1643.0632344428404 - }, - { - "total_amount": 416699074, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq7sSl1qXB4qvPfnoOMlrJbXNuRV+XQtur348E1Glv4O" - }, - "address": "noble1ad5fwpzehwzmqqncrk2k9dmjehzatka6m0ylvg", - "percent": "0.0%", - "airdrop": 7319.628430067186 - }, - { - "total_amount": 588053150, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9RLYfOZx0pRqnHpYprYO0K780rbgbJSSQJKYyhLEnbF" - }, - "address": "noble1ad4ncxlwq0jkj0nz8046drfkz0c42zq6a89x94", - "percent": "0.0%", - "airdrop": 10329.589921600265 - }, - { - "total_amount": 299398906, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgWNGOe07m26zVw5M9aVUHsyINAgoYCqaX9PWPVTJy+Z" - }, - "address": "noble1adk4lg8sk02j4nkegkvnjnpz30ex9tyqdv4dhj", - "percent": "0.0%", - "airdrop": 5259.1639411433225 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6JWaxQP4IerZQWeGufM4nZDGTLedulHfMy/984Zxko/" - }, - "address": "noble1adh3xrf60hj9aulg692mm7zfc94pjac6083ner", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 111806816, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3WrRSekx+ZyHDVRmSDCnNQekTcz0iLcnA5OvXBwKPT" - }, - "address": "noble1awpd2j7en946wn6rvljydxwgrawmn9mryg8kc0", - "percent": "0.0%", - "airdrop": 1963.9696849167724 - }, - { - "total_amount": 121529644, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvlssvKHtkT14Ns8t/+zK1pOxveRzVgElDAI5abtSw68" - }, - "address": "noble1awrxq5f02nc9axpsdvv5k8pm4pdnjx8gggrv2w", - "percent": "0.0%", - "airdrop": 2134.7583731811796 - }, - { - "total_amount": 53420251, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1eNb0N1/u/oRcqqtMh3jZNppjRbzyCXgp4D7Cchp7Dh" - }, - "address": "noble1awdsm4qgd64hl7tqggdr4k0nawhfd4hcvakxk8", - "percent": "0.0%", - "airdrop": 938.3663472238122 - }, - { - "total_amount": 360777216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atw3xM8/RDOwhZvif0eK4aib3mbwmqDgHFpHIWx4Xb2b" - }, - "address": "noble1aw3f6mj305g5tluxcrxwu9hqta2n9ltgszemde", - "percent": "0.0%", - "airdrop": 6337.319499668699 - }, - { - "total_amount": 3039259316, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al5WftEnEz9AmFAhlC0erZ6d2JMfU+5MHWjKGh35qr6Q" - }, - "address": "noble1aw786447yqd7zsxfus67u0k5s9w2ycfpgjjefc", - "percent": "0.02%", - "airdrop": 53386.84504909687 - }, - { - "total_amount": 633804475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxdNjYYo/plQHhtN8M2d2F/hapVNzVBZ3mH4/z/i0oaZ" - }, - "address": "noble1a08f2aha8t592c05lpsmln3dtcqldk02mg6xpw", - "percent": "0.0%", - "airdrop": 11133.245893207355 - }, - { - "total_amount": 127459441, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay48ljGv+OIQeCDHX0et8aqNuWqLvDsSGaeLUhRxZs4U" - }, - "address": "noble1a0c3lsv3x0847ft74gulwzlrsd8q7u229qt2ct", - "percent": "0.0%", - "airdrop": 2238.9196574602206 - }, - { - "total_amount": 1067352370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajx0ZEdJkMpnIw0FbFK7/1VcWEpUn+5HNnIFVGl4xUxM" - }, - "address": "noble1a06r6p3vnv96nmxhma5el27qkumllggfw38yjc", - "percent": "0.01%", - "airdrop": 18748.836366148465 - }, - { - "total_amount": 61184124, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwXHT8HBuldZRYVgZLQaPjDUEYD1rYCpDMhPPRovKUGc" - }, - "address": "noble1a0arqepe0wk92q7yw90ayfka9928gxpvwf3hzn", - "percent": "0.0%", - "airdrop": 1074.7445373472465 - }, - { - "total_amount": 372438346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au7hhmxv1wN8Km2HWaiiEvhcdeIj4jDAf9ygVA+6cESN" - }, - "address": "noble1asgwz8qq0640nlqzgn08aetp8ryswnuf64cmfe", - "percent": "0.0%", - "airdrop": 6542.155900804329 - }, - { - "total_amount": 94674092, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkTCZc8m9JBiNbwhHZ2erYM/lmnnZIkCnZ3jvRa8KsIr" - }, - "address": "noble1asga0xyxt8rmtz5tzxz35gd3aw9t9k8x73mfr9", - "percent": "0.0%", - "airdrop": 1663.0206751887247 - }, - { - "total_amount": 72141727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+5pBVzvXJEolf3ABSlEDBNYPbpM1b1TWlpTXBmtvF3p" - }, - "address": "noble1astl66nhdv0kyj4f4ptldr6awu2s8tj92avtke", - "percent": "0.0%", - "airdrop": 1267.22296470317 - }, - { - "total_amount": 2916824321, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai3LEbDVn2O3UyRUpvtv1iEuBSFtrl2/fDOTiIoDawoW" - }, - "address": "noble1as5u7u59uylu8uz9ynqfene5qyz8fdsr3v4uul", - "percent": "0.02%", - "airdrop": 51236.183513820375 - }, - { - "total_amount": 240558105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahvqh6UKxvkgHzV2LTuewxR+auEWSxjoDEZDfQKrsNHj" - }, - "address": "noble1ask8x8anxmdg9ujwat43dfdhmkx365scjeesnx", - "percent": "0.0%", - "airdrop": 4225.581611062297 - }, - { - "total_amount": 888751395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AteHeD491jkbjAKuCxXIT7QJ2HG02LaY5ES7X7AbAbP7" - }, - "address": "noble1askv9rljtr3c830l06qd9hy8658veka0vdef0t", - "percent": "0.01%", - "airdrop": 15611.577716402297 - }, - { - "total_amount": 4432241815, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7+uiYKaK3io+D0mwYqOIMhIfmmovkCCdTFOsB0Dqk8h" - }, - "address": "noble1ascfvlvq4sjc34457n5x6nuy688n4z8la2363z", - "percent": "0.03%", - "airdrop": 77855.61625223719 - }, - { - "total_amount": 1636302555, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuTsQoT4FUuFwKxzO9uPp3egtCh/a0FRHbtKAmY81blf" - }, - "address": "noble1a3rw6cej439e96jxtaylg0cw6k8cem3878t969", - "percent": "0.01%", - "airdrop": 28742.868532915374 - }, - { - "total_amount": 70947681, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al03TSI5UdySgeD2yPFfXUjfP4YJGgemvfYqiWXq4zgY" - }, - "address": "noble1a3ydxgunm2cyr0sp7k2d4ja9q6vyjrthy203mm", - "percent": "0.0%", - "airdrop": 1246.2486607180163 - }, - { - "total_amount": 1001769625, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6T/ytyyDR/5EsCe4GTrXUrfSpT3GMN2Wh2pEWd1zGni" - }, - "address": "noble1a39xew8vtvg6xd84zp0l0mvxg8fjlncsua3dsz", - "percent": "0.01%", - "airdrop": 17596.82678711147 - }, - { - "total_amount": 5678552645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aylw0Xyo5KZYkWcWkbdWI90UZhhNUnHF/4yzfzTwXddC" - }, - "address": "noble1a3xe2j8vpy36dthq8ux0d9zdyazsdyn3q2n8a9", - "percent": "0.03%", - "airdrop": 99747.99075741459 - }, - { - "total_amount": 198336506, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apc6I9k00gn6OGpQ9F5VRWEpBqFEGHBSdlVV9b3mqQN/" - }, - "address": "noble1a3t0u8h2fesepe39yvxaqpdqwsytykhjxwq4gj", - "percent": "0.0%", - "airdrop": 3483.927895740395 - }, - { - "total_amount": 136140652, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5ajifdX71Xwi24bcAlLW/EmRt14likZ+9rgvedYRjLU" - }, - "address": "noble1a3vyjzlg44elu68j3vk82zskh6rhrlwlsq9fkn", - "percent": "0.0%", - "airdrop": 2391.411570228455 - }, - { - "total_amount": 73953764, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApebBXUuZC8cclm2TttvQTJa9V02VKBPcZOr/CgckL4R" - }, - "address": "noble1a3m5v3a3ww7f0ay7tgegynar2667eagrvqnwhw", - "percent": "0.0%", - "airdrop": 1299.0527391593848 - }, - { - "total_amount": 174411914, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As7bQDtBONsePQiMElrGD327bTlG78sP22IfZDlp2mBc" - }, - "address": "noble1ajzc05ajmepsyx4tyl3z2p6cvu33kwk5mckyfv", - "percent": "0.0%", - "airdrop": 3063.6746849522233 - }, - { - "total_amount": 131206793, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9MjtoWo8l00i8EDxWFcxeQMWM6uGZqvWQQCN+O3vpVZ" - }, - "address": "noble1ajr9ewskt037hsuxslms4r8pskq5n88rttt7ls", - "percent": "0.0%", - "airdrop": 2304.7446759162713 - }, - { - "total_amount": 172689362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApFv/FzOw+osvQlmz+YRv/JTQKmA5LjfbIWF18IwtwwP" - }, - "address": "noble1aj89axa3p38454v4gj4xenshqra6pl2qlxjwft", - "percent": "0.0%", - "airdrop": 3033.4167809198543 - }, - { - "total_amount": 255110565, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjIiZQ2YzDQ0xApgk9UtTV++OJLY5BcZ7vWMiB7AsMYf" - }, - "address": "noble1ajnk5yngy7nm20g2an6eyj8jaxu92t6lns5jn2", - "percent": "0.0%", - "airdrop": 4481.206369046317 - }, - { - "total_amount": 86462406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1RwaU7Mp3cwsaVKEFS3294WN+yx/1Ww15i8rg0WiGyW" - }, - "address": "noble1ajece3twhac5ud56y85qmefvghvv2vpm0mzfng", - "percent": "0.0%", - "airdrop": 1518.7763174381607 - }, - { - "total_amount": 181575869, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4SNd3l94x1aE4rAMlms9vHmkf/RKAgstaY1vrUSw1uN" - }, - "address": "noble1angmz8mqnucyrfllrdfwv42434w9n6mw02pph8", - "percent": "0.0%", - "airdrop": 3189.514870259959 - }, - { - "total_amount": 2058814087, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar17ujFr1geiopniZ8bF3GXjpyGlECKoeiWz9FB5hca+" - }, - "address": "noble1anwg3jlrykvchfpk0mdel8apwhawtts8jadtfn", - "percent": "0.01%", - "airdrop": 36164.59710065978 - }, - { - "total_amount": 71947903, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak1ZdKMACFO8tPWwvB/EthkwLSQfYbB5JS+FYTW4ah/h" - }, - "address": "noble1an0hjz73n2q665nsa2wnzyrfry2e4fgmk76n27", - "percent": "0.0%", - "airdrop": 1263.818302323648 - }, - { - "total_amount": 1112495346, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/6c8sR4uaQrxclzS9fuIA2/7K+4m/UCDTpsEqoyb2H1" - }, - "address": "noble1an4hh2qclgtd93myh5darvav8ce95j9pkeys7d", - "percent": "0.01%", - "airdrop": 19541.80623616896 - }, - { - "total_amount": 976296561, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApLaIFKhkF5P19XFJNeqaSSSivV0orY4VrsKtx9aNbe3" - }, - "address": "noble1anatveesfgdlazv793m4vx9dlzgjksshmxkffs", - "percent": "0.01%", - "airdrop": 17149.373516660187 - }, - { - "total_amount": 457208520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5WWGLWp2hD+m/YWj7ZBuOjGNcnUgQ0sS1VmOiKj2FfC" - }, - "address": "noble1anadq9sd6z6xp8xkz4z7r93ayrdcp8ar0k686m", - "percent": "0.0%", - "airdrop": 8031.206907507891 - }, - { - "total_amount": 169436523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArdO9xRDfy9POZjBSF2e66dyeK0PV4QX6NrqnIAkZhxy" - }, - "address": "noble1a5pnvy9qme6c23zc952hjfld5tkhvzez6mqr0g", - "percent": "0.0%", - "airdrop": 2976.278250242842 - }, - { - "total_amount": 945076166, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A97OB7cSuq76cX5hizGC3vzXjUow8HPRvhPWdxTkZx81" - }, - "address": "noble1a5zkdv7aw6ed4vkumhtd49juvcxm325vz36dkj", - "percent": "0.01%", - "airdrop": 16600.964112611626 - }, - { - "total_amount": 112897390, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An1HkGoygjSYeVzB3t6kk8hgbhrRUUFvNQ9yX9B9OeWJ" - }, - "address": "noble1a5gygcvswyhp8t0ndt292jf2c96jdl6h3ryaq5", - "percent": "0.0%", - "airdrop": 1983.1264264445736 - }, - { - "total_amount": 255404823, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8x/OdDqcEvyVFpgERD/qQGNzlwuFKbTbK7oPMNf1EST" - }, - "address": "noble1a5vqcg0wf7hz2kp9mhqskuc82wff6u3pkj3h77", - "percent": "0.0%", - "airdrop": 4486.375229158963 - }, - { - "total_amount": 151967171, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A570IK+fxZsVQ4jKXmuhF+RuU4Wmyx/7IZUsZsLVDbDP" - }, - "address": "noble1a5dhaw2ded7ckc7ymrf09fsmz066vmknhzgcau", - "percent": "0.0%", - "airdrop": 2669.4161199131477 - }, - { - "total_amount": 117727830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzAt9o1DDRvkkOOX7ST7BK4dN+bViH4xHJMBGt5zprDt" - }, - "address": "noble1a5hterkmwx4fjc85vfeuczmpn59jc4m8vah9nu", - "percent": "0.0%", - "airdrop": 2067.9766892837315 - }, - { - "total_amount": 840225397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah9LxxW5j36ntB3hofm8pkct2VEhqaXS7c+AsSaHo5D7" - }, - "address": "noble1a5huud06dgyqx6a9xhfyexvl3d4tl47qk44mfj", - "percent": "0.0%", - "airdrop": 14759.182554712585 - }, - { - "total_amount": 106008257, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2xZ3MZ3i+yQSJC0xt0jIPZm6xta7z2MynEek8QCLGIO" - }, - "address": "noble1a5emvmup4nkxpcrsfnt6mxkn9pykf62w8cpqlf", - "percent": "0.0%", - "airdrop": 1862.1136934877586 - }, - { - "total_amount": 2697500364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7pKlmNc0gzhGNDZCm3x+mMpftGJ9O8lvRFhfw0KAH+Z" - }, - "address": "noble1a5mvn6077km3lyh4ev5j4pjtnvy085dakhwe8d", - "percent": "0.02%", - "airdrop": 47383.595468347456 - }, - { - "total_amount": 136844880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlZjH3YmMd4JEoeoeDflARaUWFzhzAbfRoq6JfPkL/03" - }, - "address": "noble1a48mlmcxc4p0shju3gfdruln330ctk9j7uzgrz", - "percent": "0.0%", - "airdrop": 2403.781857593311 - }, - { - "total_amount": 7942039737, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqc4IqG9+RBJKdAlhRsYwrh2zDl6OiRqJBlvcFTXyguT" - }, - "address": "noble1a4kwtxjx5g3hqhmt9wssnkd2lfcl6eandmcetv", - "percent": "0.05%", - "airdrop": 139507.82106050113 - }, - { - "total_amount": 64763324, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8TZINhuKCyPysQ1J9SbaARqs32sPjb1bFL6Z8nHV565" - }, - "address": "noble1a4ca2ul2ndfdly0wthrl27vlprxqqw6fcgjtn7", - "percent": "0.0%", - "airdrop": 1137.6158411526792 - }, - { - "total_amount": 369405197, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Wg4T6qh7yig1JjPpd8acyJhIDXz7z12SHPJ7EvCnaj" - }, - "address": "noble1a4u43pd9z7d23kvfkw5n53aeteyx2qzaw8xdpk", - "percent": "0.0%", - "airdrop": 6488.876387989692 - }, - { - "total_amount": 1190711709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkXt2jIRtIglm4IAuO6tN+P2HB2zGVO+xOtfH6oJZdqw" - }, - "address": "noble1a4lz2egwd9l3m7kjewswp06txk8zek0le4jy6w", - "percent": "0.01%", - "airdrop": 20915.734689658286 - }, - { - "total_amount": 231221527, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8h6hZRs/qMjOV+ov0W0eKIpQLxaIl//cLzaVlsE+p5i" - }, - "address": "noble1akz8xvzdjazlw4lgxmq2mm4r9el5mlhq7f59z6", - "percent": "0.0%", - "airdrop": 4061.5776906496017 - }, - { - "total_amount": 241328709, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Xlyx8G8OgKBNpyD8n07ZjzX1zxBKq3VuMhi97+d1wh" - }, - "address": "noble1akycgh6lwde0eh92mjlq5knks7n677998jdt9z", - "percent": "0.0%", - "airdrop": 4239.117842118869 - }, - { - "total_amount": 597217454, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnyKVE57jVIzaxjMXJpm7DphIoNT6MSwW+D/36w+tjCD" - }, - "address": "noble1akg3shqk0ls5qe7r6x3pchpznn42u68m2ddg5w", - "percent": "0.0%", - "airdrop": 10490.567721373774 - }, - { - "total_amount": 208074324, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqQhCb7d/8LJlE7opAc/7bVCIQM14eP+aB96sw++MPCr" - }, - "address": "noble1akflwg2ctsxucgtfqakq6eyx2xnc76c3f25t46", - "percent": "0.0%", - "airdrop": 3654.979894477546 - }, - { - "total_amount": 444542755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArwXDYhopdVXapfI/Q1kIAFzY6zKlk5kcB6CULoOGDiK" - }, - "address": "noble1akwavr4cz4j66gtfnuw029ueuaa2gz86v2eft8", - "percent": "0.0%", - "airdrop": 7808.723347147135 - }, - { - "total_amount": 725462134, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq9aCeJx8k9UTKVcASztrcFG0Nn4WkwIyvauJQ3WfC2X" - }, - "address": "noble1aksct9rrjujk9fnanfutesgmdat2naxk4xzatn", - "percent": "0.0%", - "airdrop": 12743.280684524896 - }, - { - "total_amount": 141651125, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhGdyZ0dK4bcQnWzkTKNU9fEqY+hwMFgkfIiwYapZ0vq" - }, - "address": "noble1ak3s9g052z5fnvh3a9vq6gdcfz6rctsqn435ne", - "percent": "0.0%", - "airdrop": 2488.207117304515 - }, - { - "total_amount": 50095880, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArfW2LouNVMR7fkVbnk9ARDoylL2vIamxl32AB44to91" - }, - "address": "noble1akjdcl8ghw5a5e620dry0uzqym0jrsjkd9024j", - "percent": "0.0%", - "airdrop": 879.9713038892766 - }, - { - "total_amount": 517459976, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgZGGxCp0jy+6heACxFlDnO4RTB3XA0PlOa9ruyVfcmd" - }, - "address": "noble1akj5qw8ua697xtgp55g3gqtgg9ferpp3vrvptv", - "percent": "0.0%", - "airdrop": 9089.56843938531 - }, - { - "total_amount": 109469571, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ea42n+gt0H3+cbzGRfFYCFctDiQGQYPnUc0Yp9Hred" - }, - "address": "noble1ak5eyv0r25jzqh6g3h2502x6t7g27llgc2tlgc", - "percent": "0.0%", - "airdrop": 1922.9142422304935 - }, - { - "total_amount": 6254984382, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArA9yKTZ0BeyhiGxWPj4mD6vfBCCZyag4ej1ovuCleX3" - }, - "address": "noble1akkq3jk8k4tcruhzam9pascuve698zuckze6zz", - "percent": "0.04%", - "airdrop": 109873.44193645468 - }, - { - "total_amount": 300000004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhzUGPcqKN1/cNrgOXxOByDLzvN9GRBcOE82ofG45Lsn" - }, - "address": "noble1akezpnygljj8yqz26nflv4g8uzqcr0a44uqakn", - "percent": "0.0%", - "airdrop": 5269.722673534594 - }, - { - "total_amount": 525806475, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmRGtG+qyf1OedkAaUT+flLyPNTKIgOff4zrpmRpW4+Z" - }, - "address": "noble1ake6tdjytpdnc45d7kklgrmzuaz2773szj7g2m", - "percent": "0.0%", - "airdrop": 9236.18088751359 - }, - { - "total_amount": 594253661, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3SPB8KDbyze0A5IkgEGvQQyJXbmfwj2Oo+RmTOqfXZY" - }, - "address": "noble1akamtgd6fvycs9a0teq0zsw35dysne549wprv0", - "percent": "0.0%", - "airdrop": 10438.506498162047 - }, - { - "total_amount": 716114812, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+SSmOj2gqRYawkkwpVF09dR7je1EO+S7oWYj//pj7uw" - }, - "address": "noble1ahr3enczwfyj3pazeaq6kf63zt52dj5wshauep", - "percent": "0.0%", - "airdrop": 12579.088037780037 - }, - { - "total_amount": 53654568, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1fqWSS1N56MOnVX/r3Uyrv3TES/rb/1Zb/v1mpK2Yjw" - }, - "address": "noble1ahr4zyswcjhq3jleftqq2ankk9rhpa2h4dq4g9", - "percent": "0.0%", - "airdrop": 942.4822991945816 - }, - { - "total_amount": 251459151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0NZb2y0zcTfjtpvsyqXRd6Yl5Zs55EeW8xeTAn/Zr2d" - }, - "address": "noble1ah9pmhxzwdha89ukq2qphf05y9rtzrklfjv6kr", - "percent": "0.0%", - "airdrop": 4417.06657274731 - }, - { - "total_amount": 3056963354, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A789EwZ0Q0TTyBn1+oNJB9LdETVG8+3JOdydgpzOQEFW" - }, - "address": "noble1ah8yklwulhcvjkprzncwjc7yp78gh3p9s3z4w4", - "percent": "0.02%", - "airdrop": 53697.829613156144 - }, - { - "total_amount": 241383808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+tOkgK9YDZQIhVJfhl9WrmS0PRTbB5+SK4g4h0K/ovb" - }, - "address": "noble1aht6vwd63wj8cg8gk2se0wgt35htd6c7tpt70z", - "percent": "0.0%", - "airdrop": 4240.085696937927 - }, - { - "total_amount": 83290322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5HTVKsbYOI03yM5mkBAPrWsAceWx64aXgWk5816S1La" - }, - "address": "noble1ahslqywkfft4v5h0e0np82ychqjkwa0d3nm4wz", - "percent": "0.0%", - "airdrop": 1463.0563082572398 - }, - { - "total_amount": 152122250, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVivyZPhbpJ7rqwzFQcfhUBEPjMI/F7vyV3Dx8mS8L2" - }, - "address": "noble1ahj3sekdd6js33f45lqfr88ny7vmsczt0mz9wk", - "percent": "0.0%", - "airdrop": 2672.140197618457 - }, - { - "total_amount": 560609446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6g57xMXIjW5xuVkLD+NVIyXo9HSM56gzSIftHNXoKby" - }, - "address": "noble1ahn0mdyxws92wa4dudc97x975vyg0knyv52kpa", - "percent": "0.0%", - "airdrop": 9847.520897312614 - }, - { - "total_amount": 2276037948, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnAdbAV3NT9bUuNG4xGyEqIlL8Mcy8SbFC9o5ZOjR2/C" - }, - "address": "noble1ahna99xw2vn8yntz3zx7xcghezuad0hxj5r83j", - "percent": "0.01%", - "airdrop": 39980.29540159857 - }, - { - "total_amount": 2506537846, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8QR5Xz2osYJzAw30hjg1y4lEbZFGu+zYKjzDctC+iBh" - }, - "address": "noble1ahlyh6yz9j4rf8ns4cqctypc5sdes5jt5m3kqh", - "percent": "0.01%", - "airdrop": 44029.19714340658 - }, - { - "total_amount": 130661253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkrWgg3aGlvPPbufhAFiyQMj0u02f8OhYu6ix+3IXnW0" - }, - "address": "noble1acq4553g49pfrnl743rdy86hzltkgpyjthdmaq", - "percent": "0.0%", - "airdrop": 2295.161861019642 - }, - { - "total_amount": 62478092122, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar+GXQd3tFWuPCocxAsYQbXSIM+SVN+G/oDHcXJek8Pk" - }, - "address": "noble1acszd5jt3ky65zlaej83lm36f6lu9tw7q0v62v", - "percent": "0.37%", - "airdrop": 1097474.0475486342 - }, - { - "total_amount": 718646779, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6RVQYdjHcwtqN7c6hAfTs6QSrTppuDLH5LemrsuAj+y" - }, - "address": "noble1acsk9s2sfner7mcv8lmyqe265vnwtw80la2duh", - "percent": "0.0%", - "airdrop": 12623.563916882164 - }, - { - "total_amount": 464287223, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqwEK2xFQ9oTXa+j38rgEw7NkST5JsF5XHT4kEkHsJBI" - }, - "address": "noble1acnflgfx5fl74qyjl3atgtpc0dt79smze6dzh3", - "percent": "0.0%", - "airdrop": 8155.549578177713 - }, - { - "total_amount": 122256170, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvZBqc7Og79Dgd3c2/hljoQUYUV1uw19Z5QY1V4MagPH" - }, - "address": "noble1ack98txtxx4gcz3vaxwpdaqgrfgxzrmng32rl6", - "percent": "0.0%", - "airdrop": 2147.5203414613948 - }, - { - "total_amount": 90000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwApbcCFbcscHNDvDvQzGqAt2SY3Y/LuPTXrCVEmmx9s" - }, - "address": "noble1aev29094r5xf3naep3n0acjld8h38400g6k4vy", - "percent": "0.0%", - "airdrop": 1580.9167809814878 - }, - { - "total_amount": 146218245, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4uCREq194nQ8kdpS/U9G32kkiccKdbd6mDPtWnc5Ew9" - }, - "address": "noble1ae3pahxaz2rmwecr4n2mwnqlqlz0zjxql5kdnf", - "percent": "0.0%", - "airdrop": 2568.4319689573613 - }, - { - "total_amount": 1411186822, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A132yCzmJGUsgkv06otM6DR8AVwpcplyGHTtL84qrjqX" - }, - "address": "noble1aehjfgex6ruj9duzfnts8aherf5nfdkc75dyse", - "percent": "0.01%", - "airdrop": 24788.54364444151 - }, - { - "total_amount": 65391150, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AudBTuofZdtG9jcayij3oCu/S0gALA4kAENSVi3bFNaN" - }, - "address": "noble1a6zxhmdmtarpdezsatu5jnt2sl57p7shlw3cwm", - "percent": "0.0%", - "airdrop": 1148.6440706964179 - }, - { - "total_amount": 50558944, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A++GJvbVqyO+ehVk1rgOTdoBwUu1HU4iqkpr7KDcwNoC" - }, - "address": "noble1a69tcfku9y2qxdgkwfuwfhh8s7v7kuav9tthjl", - "percent": "0.0%", - "airdrop": 888.1053666478145 - }, - { - "total_amount": 12330618450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/2ehPiD7dDg5fs/kir9WBKExpQZREL77N/qa1nQ+2ij" - }, - "address": "noble1a6fpcve6wdlwwryzt8kue3nes6e4nvhs7qquyn", - "percent": "0.06999999999999999%", - "airdrop": 216596.46252761048 - }, - { - "total_amount": 602986557, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkTeDe/NUaIbxbgrugZedJikLOcICMXD9iFvM5VBM5f4" - }, - "address": "noble1a6wfx5ak5tk4sgd8hfvcp7tk3x0mdfj4v0r2z9", - "percent": "0.0%", - "airdrop": 10591.906296306115 - }, - { - "total_amount": 589776953, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+MWEicAOttSuepfAWOWCZPqFFed54nNeHsVZIfPY6uY" - }, - "address": "noble1a6nyg8aytqfcqewe5y4raxh0sl43f2hmsyevuu", - "percent": "0.0%", - "airdrop": 10359.869800375891 - }, - { - "total_amount": 80776035, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtYVfvFx4fQO0QZN0Ldf46VJfIzEAKoyImlXAvj+06SE" - }, - "address": "noble1a6kfadt24cgm9fy8z564jrglc27vtfz97l5l28", - "percent": "0.0%", - "airdrop": 1418.8909914738665 - }, - { - "total_amount": 72131803, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5zlSGr/urJASKCt5xKun7QgFyV8hdWEuYjzzHICatMS" - }, - "address": "noble1a6uf64sqw99re8dm2denzekc2ldkpnh0ga44wz", - "percent": "0.0%", - "airdrop": 1267.0486422794536 - }, - { - "total_amount": 628417629, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwfOXJBxWfx3itFjA608hQcROEpjF+Lx6y/aQWbW8jwX" - }, - "address": "noble1amqn44je3wzgn5et2sla8zlcdx5jlmpwgrx5cj", - "percent": "0.0%", - "airdrop": 11038.621946118876 - }, - { - "total_amount": 90783353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoDGne15l960WGAP6xmVa6x5IV558n2VJn7HZ9lI3SOQ" - }, - "address": "noble1am4nacempkfnutwhu5geyyq9dqx9snz6efqpx7", - "percent": "0.0%", - "airdrop": 1594.6769576829565 - }, - { - "total_amount": 935982282, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzrznekdPYejl20JI+19D1xaqsNrAfQmCUQOLdxaZ/7e" - }, - "address": "noble1amc3npn88eug3pdw25ka2mvvpg5shmzsk9n3a0", - "percent": "0.01%", - "airdrop": 16441.223292390525 - }, - { - "total_amount": 913476004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao7EI9GLGVPNWu9ZVWuz6JZKT/4DrFzIlWKzUeoOxGAJ" - }, - "address": "noble1ame2j4xqpenzt40hq97rdfkmx477cap3hy3vfc", - "percent": "0.01%", - "airdrop": 16045.883819416807 - }, - { - "total_amount": 68168879, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao57FBXG3EGEMuunUjaNBGPFU9ZKcxEk84Y4mtzsK4FH" - }, - "address": "noble1amlwz6kgdn3klt6lwv0jp46gpvzrn33spwhxyu", - "percent": "0.0%", - "airdrop": 1197.4369416866282 - }, - { - "total_amount": 12666380389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Al23rx7eAZQoYgXo9Dd/h9ELFFrkLXCZbbFG8tMMmFN5" - }, - "address": "noble1aml479qvg88w05me69g2mvhevt9jzhz2y85sz0", - "percent": "0.06999999999999999%", - "airdrop": 222494.37012516582 - }, - { - "total_amount": 1236968523, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A40d7KyVZktV6304vxUAxFLna2eFAcSP90O16P0ulOER" - }, - "address": "noble1aupefhl6zxv7s8wthulenk0etrd0xnlqgy2yqx", - "percent": "0.01%", - "airdrop": 21728.269950628724 - }, - { - "total_amount": 1174118755, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq++a3rnnAFP7Sa9lprfMnjjTAw7jYgf2ww3jsqX4c/g" - }, - "address": "noble1aupmua37rrdjt5rywzx2tz5kljjl4a6a2ehm89", - "percent": "0.01%", - "airdrop": 20624.267140495467 - }, - { - "total_amount": 99377582, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmajIV41Fnk7b/52EZqAVVYvSJX+0i4UglZ+rK2GkTP7" - }, - "address": "noble1aux27jlja78tsy088fetfyza723ujuer5dty5x", - "percent": "0.0%", - "airdrop": 1745.640967079598 - }, - { - "total_amount": 131876295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiK6K9T+obmG3SjkvtNI/l8rV7ux/eI763DByGuc2wzR" - }, - "address": "noble1aud87v9cv5m28cw0nc3kmkzaahnr4d45unqpph", - "percent": "0.0%", - "airdrop": 2316.5049753240564 - }, - { - "total_amount": 97296978, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Jngh/FK+4h5LuarYT4IrSO14XUy2bPc1lu6SQk1AFG" - }, - "address": "noble1aus5hwx438h5e0txjk2reyfscgu392av8aqqd4", - "percent": "0.0%", - "airdrop": 1709.0936139887406 - }, - { - "total_amount": 64216105, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvLo4bx0vZ/KQv/+G2UFzs9A/hRpAW2QyBuhzZtFpP80" - }, - "address": "noble1aagv9gjknjuude5vaedyl9qwprvx8xcv4r0xxy", - "percent": "0.0%", - "airdrop": 1128.0035333752135 - }, - { - "total_amount": 822206916, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6NZr0FKlRTsJjJboZteEQlXPcvLcVTK2ta03RLNwSD/" - }, - "address": "noble1aa3wqxtpuxl8zpjnw9g6dl25e6gj5xr5v42h2x", - "percent": "0.0%", - "airdrop": 14442.674566038184 - }, - { - "total_amount": 217102423, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av+Jn/Eyv8QflNb2KOa3tUEvdoze1VeSk4elqAm20uwR" - }, - "address": "noble1aa33yq7znh6qcfgr9fkv7xp9e0u7yrap2dtm3q", - "percent": "0.0%", - "airdrop": 3813.565152360459 - }, - { - "total_amount": 1700006734, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ZIOTKAftGxgkqNw6KF07UncxO5lyhKRU/BukpRAKMJ" - }, - "address": "noble1aakg8cq30w03xn3gldaf9mh04sr6wumee9djtc", - "percent": "0.01%", - "airdrop": 29861.879706245916 - }, - { - "total_amount": 53849600, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah3idGHvfZtmsYs/LsPFXhPrzW86A09YKFW4hqnyHktZ" - }, - "address": "noble1aacx2tzt2556awcmg2quns7s4c5ennsgav772p", - "percent": "0.0%", - "airdrop": 945.9081809904525 - }, - { - "total_amount": 1288275656, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At/7yw4o5lalNsVIF7dx0idRX9CEhdXsl5m1ZsjUCo1T" - }, - "address": "noble1aaeey2wyajeydwrmxepl78fvtadcld4vstderg", - "percent": "0.01%", - "airdrop": 22629.51781222594 - }, - { - "total_amount": 2300000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjUnrXeQADExg8GbB6Epn+pxOj1HXuaLUYS5c1YeFHTR" - }, - "address": "noble1aaa4ascwa795e6xs6jhw0nw3wfwdewa5y8lhq9", - "percent": "0.01%", - "airdrop": 40401.20662508247 - }, - { - "total_amount": 581055350, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai2+B/NbIIyDIsG9Njny0VYIVbWHvbE/LSa3t0KKElH6" - }, - "address": "noble1a7q459qyv887hca5u4xl07q3q9v9d5qc7w50cd", - "percent": "0.0%", - "airdrop": 10206.668372156351 - }, - { - "total_amount": 248584677, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzaF2CM/XxZdrk9wI7VUYrbJJ2l+4j7xmggtl2EvKPXH" - }, - "address": "noble1a7pnxqcesc5t436kwx6rsnn5m73ksgw04p9rk8", - "percent": "0.0%", - "airdrop": 4366.574304046255 - }, - { - "total_amount": 59539787, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An0j/BX+2Kha9nke6YfODIX7qJYHsQ1BnqJBY2KXi9Gx" - }, - "address": "noble1a7rpk6tj5ltwu9synzw2h4eqes8xjqc534pmmx", - "percent": "0.0%", - "airdrop": 1045.8605378262605 - }, - { - "total_amount": 147022583, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtxadCcp4mXzScW1pHx5aa6QyzPjk/hb7Uh6+F533/pQ" - }, - "address": "noble1a78epu4p4pmfdcmeqw6z38tw4gxhk7ytv27lt8", - "percent": "0.0%", - "airdrop": 2582.560762754929 - }, - { - "total_amount": 465631102, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah+HtyChuBbVH0yxTy9yYytRk9dIOPiRxuyvdvI1R5ig" - }, - "address": "noble1a7dknt6q2djh92pcflxpr2fak4utgfag7dmy83", - "percent": "0.0%", - "airdrop": 8179.1558099855865 - }, - { - "total_amount": 156698531, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+y+vJ7U3g/ZmUXh4cNSo9snzu/wvtu+nq8/t1w856qa" - }, - "address": "noble1a7m4uyt0jtwqzt45qqpjaxx8en90htu2dhj4xl", - "percent": "0.0%", - "airdrop": 2752.5259690338653 - }, - { - "total_amount": 1496339109, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ak6Ku1iYR4jbhYtNS+B49Za7geMbAd1LLm4gFDBFVSun" - }, - "address": "noble1alzu9edvpg25c5y7qhzffcva2djqqpgxvtv3xq", - "percent": "0.01%", - "airdrop": 26284.306749522086 - }, - { - "total_amount": 3175022039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7pL3+KKRZk9g3XTMWDo5mEM2qJX1jSvDo+0rnZG6ijR" - }, - "address": "noble1al8uh6seup2czxwyfh5k34l57d2j53mjepjqg4", - "percent": "0.02%", - "airdrop": 55771.618016012886 - }, - { - "total_amount": 89028253, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9eFtbDUoSCYg4J19mskf56W0QPvy9Y2VX3zagW1kHOg" - }, - "address": "noble1al579yqrczl3l2vsjmurx6ay9l5pgxwzxa5a39", - "percent": "0.0%", - "airdrop": 1563.8473238796166 - }, - { - "total_amount": 70091163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A71eNpLu7w1bbRDL94oGCRhmqUy4Phg6rUg7WRQILWh4" - }, - "address": "noble1alkhmshy49nf7h0yw8whuyy3fqqxv4qnsn0h6v", - "percent": "0.0%", - "airdrop": 1231.2032865023195 - }, - { - "total_amount": 73292785, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuykWNW3Sb1GtwVvYB9Re1f/BtEdYmgPlOJLgXvzDiv4" - }, - "address": "noble1alhuer5ma9sjquznk52df9u9p5w9atrw23dlrj", - "percent": "0.0%", - "airdrop": 1287.4421525707585 - }, - { - "total_amount": 135570533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwYlqkdtkNoCLlEDPtfwKF01Z+AFuKwdqrwmiNgLWUoF" - }, - "address": "noble1alaq3havngy0h5sezl98a8xc0jx7xhadajylj6", - "percent": "0.0%", - "airdrop": 2381.3970069589395 - }, - { - "total_amount": 100247446, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsadOi3G7iIbvTRqh1XaAU6JqsBG/DtgzUo6zNyH28yo" - }, - "address": "noble17qr0vlvngjkplazcpya6mkwtalgkm6lxegvl62", - "percent": "0.0%", - "airdrop": 1760.9207736881724 - }, - { - "total_amount": 454417638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/XQO23agU/g7lOvBZYIE/V4ZC4NOdgUI3mV3rLZpyMZ" - }, - "address": "noble17qslqfg6e4jf5hx0gde37hxxe8082fz2py6hcz", - "percent": "0.0%", - "airdrop": 7982.1829943130115 - }, - { - "total_amount": 59595052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHDTTFCADO7ta1nS94ae6oZU7fUybzVixBuYmMKn7eQ" - }, - "address": "noble17q5weyq0vxlpaxfs254yyewv4j9l8s0ydcs9a7", - "percent": "0.0%", - "airdrop": 1046.831308558493 - }, - { - "total_amount": 68835425, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjyufXSyIgmmf5EBu1J067mLTh5FqNc1dEHNTHYI/pr1" - }, - "address": "noble17qkz8gr0v78r4j5500wh67m83ztaw4gcdy9ae5", - "percent": "0.0%", - "airdrop": 1209.1453167610293 - }, - { - "total_amount": 71074724, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ag7zrtQ9sjMLR1DR/JWafwFgnpxV3z17xPohml1n40dv" - }, - "address": "noble17qkxn5ypufpml7k63vyav82lam63ndlgf5twy7", - "percent": "0.0%", - "airdrop": 1248.4802652803078 - }, - { - "total_amount": 2143702163, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/d8TrswJr6AOFOXhYtaLHWTZfFXMvNwpsWRLKvYfMCZ" - }, - "address": "noble17qmy32yf56f6kkcln2xakr62c36nqm7ztatk7e", - "percent": "0.01%", - "airdrop": 37655.71914347792 - }, - { - "total_amount": 580363617, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApuNI2P2kjppCicJiqd8Nn05WcnTdDkRvuLBCULWNtzf" - }, - "address": "noble17qmd82fg22a2knj0ync5tqtshadal8x09kv97z", - "percent": "0.0%", - "airdrop": 10194.517568737923 - }, - { - "total_amount": 482776499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5TcO1lkMeHx+b4ufVw0yn240bslipNkV1XOTcxRO3dF" - }, - "address": "noble17qu8c73xgncr0kwunawfwfux3rutr4wvu53k7l", - "percent": "0.0%", - "airdrop": 8480.327430362138 - }, - { - "total_amount": 58507903609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axbfxn/dDpKOhJE2O6NS23/C3A/msMpDLtDokrLCnA/X" - }, - "address": "noble17qushcdp622jq8hj0dkgcz8r9lpp8ux8h6kdct", - "percent": "0.33999999999999997%", - "airdrop": 1027734.7403946162 - }, - { - "total_amount": 136168511, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtUOSdvkzzOsuBSWnqNpqZdAW9cVYm0RokJgIHmuuHKF" - }, - "address": "noble17q7ps7pkhh7u59meewme3rc8humyf6ru76u03u", - "percent": "0.0%", - "airdrop": 2391.900934235137 - }, - { - "total_amount": 55005707, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay9pDCfiefmV7oylXWluO3X4fUQAS9z3F6npegYJOCd3" - }, - "address": "noble17ppa4sx4nqsue93v0cagrrwgjtwh34eg9egzdz", - "percent": "0.0%", - "airdrop": 966.2160582894544 - }, - { - "total_amount": 191823775, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuY+FcemKs91k3psZT1zIqSRNXlrjX9W1bRtZlDpUs10" - }, - "address": "noble17pp7ls3wnqz0j5zk7cuneyr6zp52az8uuwank7", - "percent": "0.0%", - "airdrop": 3369.526943207969 - }, - { - "total_amount": 361496566, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3OjSCZx0S7Uwx+8dBC2E1iUxjT3zTjp/oOyX5Sp8NvN" - }, - "address": "noble17prja9d8xvk8f8wened36yw52d8myzf6hv2vtm", - "percent": "0.0%", - "airdrop": 6349.955416184243 - }, - { - "total_amount": 775013690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2ct5Bvw0aFGRuJizql0wHo6txANG6ieG/Gf0dEOaz36" - }, - "address": "noble17p3qv3t3ln6axazq5qwkqagr3yx3ya9afrah00", - "percent": "0.0%", - "airdrop": 13613.69053345983 - }, - { - "total_amount": 93804359, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwLWDdJorTfugmj3zkS8/PEammG1B6VnYonB8CZYnvaP" - }, - "address": "noble17phs0a0gwxuyu4yaagwkpgamss9m2ckc4nx688", - "percent": "0.0%", - "airdrop": 1647.7431696923538 - }, - { - "total_amount": 63239851, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuwClHbw6NIaq5zE0+d02SBIz0PCOHUXPmoh1iq9N5VZ" - }, - "address": "noble17plphwzhcelfymc80mv77xwsc4lmyg3wv6ye4r", - "percent": "0.0%", - "airdrop": 1110.8549074740993 - }, - { - "total_amount": 68989059, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aok4xBV5H8jSHXP4mT8UWAtvM6HZ+sz5gUI2n0WOSRRU" - }, - "address": "noble17zslffduncqhkckunpztx0pczxmdayczcdv0gc", - "percent": "0.0%", - "airdrop": 1211.8440119691327 - }, - { - "total_amount": 66064212, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7RJKDbwM8sHrCyBupwO9b67UlyYC2K6MquxeCrWrQ+P" - }, - "address": "noble17znuj5xwx27qmje9np2paee9gvrv094rs36m47", - "percent": "0.0%", - "airdrop": 1160.4669041457619 - }, - { - "total_amount": 60570507, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvLYEGATHp2ctuTCaQtzjAknuJ5TqoJF/swqGJqDfFZj" - }, - "address": "noble17ry2hplzzvsjuhdpq7mj2gejvthkhhcj7utj77", - "percent": "0.0%", - "airdrop": 1063.9658994317408 - }, - { - "total_amount": 122771989, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2tUskHnqbFzGDJhFwu2FOsD6fmhPTJUYOPQ1ctTBhW" - }, - "address": "noble17rflsxj0m0a0xxzrras3tnvll2st9f2cctfavj", - "percent": "0.0%", - "airdrop": 2156.581084939718 - }, - { - "total_amount": 745314907, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyzXhGf6ws1ObujMY+nUpTPOxoemGgYLdepYPkS6FSAl" - }, - "address": "noble17rjmf8q7senka2cmu3nhpxxns9wx97mf3zw5tj", - "percent": "0.0%", - "airdrop": 13092.009373243965 - }, - { - "total_amount": 1242500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzAfkS3SIqb/S4X8yaKPMhCG6yVRUEIqm9oNI03TS0b4" - }, - "address": "noble17ra93huwzn9rvgvtnkwfg4zen5f53assrq0x0f", - "percent": "0.01%", - "airdrop": 21825.434448549986 - }, - { - "total_amount": 2604148609, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am2OLW9CsgUekGBzbNo2bdpzLNuKNXZjmW8nQ3tIiusD" - }, - "address": "noble17yq8tstqg3hnykv3k6gq44fh4fv70wk9t88qud", - "percent": "0.02%", - "airdrop": 45743.802623752206 - }, - { - "total_amount": 120283646, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiKuXp/QAfrDIytUVIQwMkhZ0ZDXXcHewLaGNYVCABxK" - }, - "address": "noble17yfdj6gdcjw5328lk7vwufm2n9d4m3g05v6d3k", - "percent": "0.0%", - "airdrop": 2112.8714937670757 - }, - { - "total_amount": 189144430, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApFVMz2ABRKE5y5jjU2UxaHAS3sa7buYZGIS3E2oxOz6" - }, - "address": "noble17yv90xl0gh8fuvtsztl2ke2q6c45yxulpsrccc", - "percent": "0.0%", - "airdrop": 3322.4622601797596 - }, - { - "total_amount": 641965325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj0nYlERgpWHrmpAPz/7n5KEYj161DhYHz8bX0+zBa4K" - }, - "address": "noble17y3wjy5t7cyz30g7d4t2ex5czl5ker9qfefcrt", - "percent": "0.0%", - "airdrop": 11276.597278897052 - }, - { - "total_amount": 333739642, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvKJvr5Hvy0QaiGpl3aN9yHsjneQYHwMT0X738dDnKpM" - }, - "address": "noble17y7ag3nlds82njehgdw3thrvm6jx9au5vy4l04", - "percent": "0.0%", - "airdrop": 5862.384450183936 - }, - { - "total_amount": 52484704, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmAuw4JldZYLjbUl1UZvdA1oJgMxLJ5I9ZueGTQOfbTN" - }, - "address": "noble179rj452m7a0cct9rrj0mpqxfmdt0qs8zx0ew28", - "percent": "0.0%", - "airdrop": 921.9327699827357 - }, - { - "total_amount": 95383006, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A04L+3CnFzW4haMdvB8gDgAPo8L+Zw7sfFTmnqu96y8Z" - }, - "address": "noble179r7qhw7dy045mrxah7cd25ykqeud3n9myjqgu", - "percent": "0.0%", - "airdrop": 1675.4732756206438 - }, - { - "total_amount": 502519962, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvrX2sXXeTnxDhzumG/t/+bmvRv17R/LGHgbFD0D3stY" - }, - "address": "noble17923vhhrd6tjg678wsfzdg7hjpn2xsyjugkqpw", - "percent": "0.0%", - "airdrop": 8827.136007821995 - }, - { - "total_amount": 1690853470, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApvpfwHnXM2QrugXu2OSSj9uf2lK8ELR+3/sQ0dJfiGc" - }, - "address": "noble1790jdelwnxkmfyqvggth69wc2jy7vcgnpcllch", - "percent": "0.01%", - "airdrop": 29701.095832264207 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AutjmI4p3k3zrvJng+8pWslEXptTH4GRmU/jIwoDZC7o" - }, - "address": "noble179msu5nqa6afrdafue60x68d0p773xfd6nlhag", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 84079057, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao3UpAt3YgvMUta/xBuRzVTdYtHtxPoA45sIn9GdkJw0" - }, - "address": "noble179uzazkecwh7pcgq7u82hav54p8y0wnax0vr6x", - "percent": "0.0%", - "airdrop": 1476.9110237822113 - }, - { - "total_amount": 913130370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0NRBaUIITYX8oy/YF2HT6XONVx3TtiuS1VTn8GYbxlA" - }, - "address": "noble179u9fjwnv2kwjctcu079mmtk8et0rnsp0zjzqf", - "percent": "0.01%", - "airdrop": 16039.81250174261 - }, - { - "total_amount": 227248932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjZCGzSb9ape0hEupFlxhePaOlz4hG+M50eU3fIMXgTY" - }, - "address": "noble179uman8etlv020gzwj5w7kcrwr0cvpn83pn4cj", - "percent": "0.0%", - "airdrop": 3991.7961117657887 - }, - { - "total_amount": 75273659, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2YSrE3VTHrgjROCaLCKDiTu7NTDjm1iQwZYQphvj73l" - }, - "address": "noble17xguua9mr3572cywcpplpylmyflg48j40qm28m", - "percent": "0.0%", - "airdrop": 1322.2376742108688 - }, - { - "total_amount": 29979555572, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApxORy+wUDv3OcjIVHkujb+xTp6PAOTbPLA5arj7M80u" - }, - "address": "noble17xfxz0axs6cr7jejqpphuhs7yldnp295aqaytp", - "percent": "0.18%", - "airdrop": 526613.138779354 - }, - { - "total_amount": 5377454648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8q5gtdn87cYiSZ2r6JuVdelPy2MhTUasbA9sVRONyqJ" - }, - "address": "noble17xvjkmkxew35a6yts0ge44c00evhxufz6rqd34", - "percent": "0.03%", - "airdrop": 94458.98102211222 - }, - { - "total_amount": 55165068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqH+aI1o3Dq4TAN/VlJZ0yO2jipuPjzsRhE122K3/LQ0" - }, - "address": "noble17xnaphhjt6lstsdqpuwny93kwlg4ltenxrtv88", - "percent": "0.0%", - "airdrop": 969.0153525020542 - }, - { - "total_amount": 163340217, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgF+RGa9WpF2qiFsGsU9IxvWinblUnPs6EpbY8IzTWcg" - }, - "address": "noble17x5esgmlw86r6j0jt960mkuhw7pk3mn8d3mwxg", - "percent": "0.0%", - "airdrop": 2869.1921118273076 - }, - { - "total_amount": 110726857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2Le03UMyguZDJpi6TGKoyDlxLGSA6lNFPXs1+DVJFjh" - }, - "address": "noble17xkulynfgg0deaxgewxq4tzv57slmuulqdadmz", - "percent": "0.0%", - "airdrop": 1944.999403740417 - }, - { - "total_amount": 553304807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+O8yJLysmL/1BMSJoifNdUL31ThQ9JjhiwkqAvdCaLq" - }, - "address": "noble17xhgjqrsz5r60h42l4qztxsvv6fshk9e6hg58h", - "percent": "0.0%", - "airdrop": 9719.209493155815 - }, - { - "total_amount": 2878583954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Axbfc5CR4kTAeDPEwj2LB9ei7+TF+2byuHT8JXjWaG1i" - }, - "address": "noble17xc4tztgzh5z0q7eqjvam86wkp93rgmlyxm0ka", - "percent": "0.02%", - "airdrop": 50564.46309269603 - }, - { - "total_amount": 144821439, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aqa+eEb27vdp++1eWwhKFK6P++qyj8zDAi7STAHfAo5F" - }, - "address": "noble17x7ydgjmduhzwyg6q8nvfn9dqtyne2qzajg3dm", - "percent": "0.0%", - "airdrop": 2543.8960351220762 - }, - { - "total_amount": 50233264, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8w0qwFjUrs5Dd9WhzGDICzl8QfsrOhgSvy8LowvhW6e" - }, - "address": "noble17xls50atekgt8ttd3m8mrhts9npv6gaqcwrnze", - "percent": "0.0%", - "airdrop": 882.3845557897027 - }, - { - "total_amount": 597456725, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlEhRM7Yvr2FVTYzckZnHCASiO1wa54vZ2UgSOuEo8BS" - }, - "address": "noble17xl3e3zywm760h84du3al2jrfu4dcxsmhkr2xq", - "percent": "0.0%", - "airdrop": 10494.770694030467 - }, - { - "total_amount": 127069559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0482gRO25TIXHvZb26/LPrz3T9RgG2cYk3gGRBW/zW/" - }, - "address": "noble178ptzgrnk9z3mug5fum2p7ndhpg5vjdf6dse8k", - "percent": "0.0%", - "airdrop": 2232.071090833525 - }, - { - "total_amount": 2916318433, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtB7axm4By76ZF5txg4yiliFXVj4zUFTHiaWUaMu80+B" - }, - "address": "noble178ykdxzs6ezd7xfrl5tq7w53fhedctxrgt40ml", - "percent": "0.02%", - "airdrop": 51227.297215725965 - }, - { - "total_amount": 376785889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnUOsiirTHA61B7eEoKAVF10ep4u0hI35BK5Kk1CiJ9b" - }, - "address": "noble178xnp3ldxtdxa40ms2vmt3l2p74s33ewthm738", - "percent": "0.0%", - "airdrop": 6618.523719523646 - }, - { - "total_amount": 1598911036, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0X6WxisXLTmWs8LEihANjfso0BeaTKzWbBt8aLmqBnI" - }, - "address": "noble1782rh6p4z5mkrr5u7nam08gkr6mvjthte34eh3", - "percent": "0.01%", - "airdrop": 28086.05875676551 - }, - { - "total_amount": 103345839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwBy+d7ZbMJk+l5yis1Suzyzu+/w8HyDy/R2Ahfv6Rx+" - }, - "address": "noble178dcdmhlsqx2nlku2gkjvnmnxkltzwqehy2c0r", - "percent": "0.0%", - "airdrop": 1815.3463457745677 - }, - { - "total_amount": 300086891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkglLBAk3R/u+ZmPk5saJd/U88x/QQWp9qSN4kmRUI3K" - }, - "address": "noble1785depelc44z2ezt7vf30psa9609xt0y2lem90", - "percent": "0.0%", - "airdrop": 5271.2489081606955 - }, - { - "total_amount": 74428932, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnQ+HHYcGN0Adr8jFaLxrMCoBU7vlvY1gOeW+M9UdNDZ" - }, - "address": "noble178lwxnm8z2lppzedvshdrus8zr0jqfts2y6ay9", - "percent": "0.0%", - "airdrop": 1307.3994176592228 - }, - { - "total_amount": 54500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtbmVKZ7/0Jh6DKYdLb/+P5+LTwKg4UHqRwAhESuPcfo" - }, - "address": "noble17gqdjphvet8ppa5ncftlexzqzetjpaplxhdx8j", - "percent": "0.0%", - "airdrop": 957.3329395943454 - }, - { - "total_amount": 106800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ait2AuDFDuDnN9janGr/+X2tChS+TOAs2PWozI9Uy6Yt" - }, - "address": "noble17ggx7q9gzuv56ayf52u75scs7neuqrahdqe4k7", - "percent": "0.0%", - "airdrop": 1876.0212467646988 - }, - { - "total_amount": 500179777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+rZ/MyiW63TdeZsz5uGJ+sBWPwjrHVUxEbEeEQS40r" - }, - "address": "noble17g3wxjfy0sjr5elacp9c2p9m2wm00xntdqchtp", - "percent": "0.0%", - "airdrop": 8786.028921854204 - }, - { - "total_amount": 5374916632, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At81hbuI/fSQgQXED6pO5HulGNfh2Qkqku2KmJQwQlDL" - }, - "address": "noble17gnkmmekgu9m7qks00fcy3rm0qwvfdgp0crs5x", - "percent": "0.03%", - "airdrop": 94414.39888783667 - }, - { - "total_amount": 2150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0F1HDkuvPm7mX4XprF+q4TkS0RlJ539GBNx1oZLHciH" - }, - "address": "noble17gcjmzpz2sfjj9waa6f2e8pr7s70v3hce6hzdj", - "percent": "0.01%", - "airdrop": 37766.34532344665 - }, - { - "total_amount": 1280654921, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnuhNQv7g2CvsVy4zHrZudrQjU2c73W+kITBM3LHg0BG" - }, - "address": "noble17g6mg355z39pfn3ej5j462ffddt6ycj5wfkk60", - "percent": "0.01%", - "airdrop": 22495.653947282462 - }, - { - "total_amount": 289398101, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8G9/TcKyJ72el2WqdImPCFNMw8toZzX+FCjCCtVpz+h" - }, - "address": "noble17frej3gp5kkdzgq28gkalcs3xmwdcqj5zeks0s", - "percent": "0.0%", - "airdrop": 5083.49238061195 - }, - { - "total_amount": 150000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4MM7bPBnf3xCsgB1tWePcieb1B3XYFBvamtDeNBYOJL" - }, - "address": "noble17fyp03fqvanxw93ekl2mnh980f7aaupej2jrdk", - "percent": "0.0%", - "airdrop": 2634.8613016358127 - }, - { - "total_amount": 1692892494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AknTU8NiSnxyz4nrHF82LEQDDkSo5XQMFEg4JkG/pk9C" - }, - "address": "noble17fff5fzv9zrx2uyv9qzk96c936sy3zxafwulh0", - "percent": "0.01%", - "airdrop": 29736.912801802253 - }, - { - "total_amount": 51563954, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8wCTBW5kGItpC+fZhLreGn9gn5J5JsNcMNnQEzpgUVu" - }, - "address": "noble17fnkgky00329ms37500ugshs3v8esxzl8ptcm2", - "percent": "0.0%", - "airdrop": 905.7591130261945 - }, - { - "total_amount": 50167783, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjCskTqUszpi/Efq+94NpOmnY3ZjgDmAb2v7YysT9jDM" - }, - "address": "noble17f4sa27uh3uxnu8t27ye0lhzkx04qqpxs3m9mr", - "percent": "0.0%", - "airdrop": 881.2343334370867 - }, - { - "total_amount": 298340079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anyimp0JatUD3Pwdww4xotkNn7ckYOZFOPkwG3GPCIQ+" - }, - "address": "noble172zf5cvrj4ykle8wcvg8qw6speew67waazvrfd", - "percent": "0.0%", - "airdrop": 5240.564859227141 - }, - { - "total_amount": 653406873, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvOECc4FgS0Gh+//cJgH8eJZNilHmEktOk4/fQq+FgTP" - }, - "address": "noble172r0fzjgsyv769wj8h8fx34p8grx5t72gcc9lu", - "percent": "0.0%", - "airdrop": 11477.576559270443 - }, - { - "total_amount": 1207577415, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1z3RoyOmb5R9wQx2fttirSk4fkR/6bozc2kwJKFSIbf" - }, - "address": "noble172g5z3fa42xkdxpth7fmx32nccjpv7jh4978zn", - "percent": "0.01%", - "airdrop": 21211.99333008607 - }, - { - "total_amount": 96175574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A37CB3b/2P1RN+RrYVp/JTq6MwwxkZJPeyKOcWkfBUiJ" - }, - "address": "noble172vntlu8j4rfe35uy65lngkgcgj5jtpnl3tv2y", - "percent": "0.0%", - "airdrop": 1689.395320634743 - }, - { - "total_amount": 492552034, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiF454r5WSneCxqaxuFyKvMD4GtxUKmls4FnN5+19hON" - }, - "address": "noble172j0nzts5kdrvwcj2766h806vhxngh69xfe6uy", - "percent": "0.0%", - "airdrop": 8652.041956190715 - }, - { - "total_amount": 1248414909, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Apg+F/tyuwNB/zK9dQHxVJ4KsrQiRLAyKSomkTdB2H9a" - }, - "address": "noble172hxdt6we3w7qmjelxyf7ul3xuq0nntcm4afqh", - "percent": "0.01%", - "airdrop": 21929.334214061964 - }, - { - "total_amount": 336002189, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7Jr7k8uFl6iS7+BX7wS6r5Z9/Xo7SpnqA1dA2W1VtqZ" - }, - "address": "noble172mqr5gxyeuh6w90mm73ap5mplrdyw5waplt3e", - "percent": "0.0%", - "airdrop": 5902.127767073483 - }, - { - "total_amount": 100917121, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8bY/O+ktArX6zIhzVXhqLdjtVitWa38GSClMMO7uHm2" - }, - "address": "noble17trpg0urwecm8wv929d2u0ajapthnaa63806px", - "percent": "0.0%", - "airdrop": 1772.6841119693256 - }, - { - "total_amount": 989958484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApwRAdstuUuKPRlz8Jfbh+5lpw8wIKcxX+brh3i6v6r0" - }, - "address": "noble17tyuhx8m9e8aqkkpx75cfm97v9ug9t2ygsldyj", - "percent": "0.01%", - "airdrop": 17389.355331451043 - }, - { - "total_amount": 164775227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxMhP8j1+OYDDqkv6dI8HB+WIRZ4pLIvM+UjbPoB5WBo" - }, - "address": "noble17txy9ndvv94q32qlz523wzgdd7t4mkknl2x85g", - "percent": "0.0%", - "airdrop": 2894.399127270377 - }, - { - "total_amount": 209311743, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ari3lZMAmIElPzv+tsh2oIKVBdSr3IGFckeaD4k7jBlr" - }, - "address": "noble17t8pkvmg5kfleku4w4lpscgermn5gf7tyumyy7", - "percent": "0.0%", - "airdrop": 3676.7160773909386 - }, - { - "total_amount": 56936839, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao9bR7O4/6YI5OZHDOUGE9vIx2U2dug8lbz37Sd6VAaZ" - }, - "address": "noble17tgettsfhyhlu2qkuwtlx7tvqxne8lk6yyh28w", - "percent": "0.0%", - "airdrop": 1000.1378247904581 - }, - { - "total_amount": 575974220, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AquAmMgaiQpl3OMbGCjxbOnwqkUkwUVfpDFCBdStSXrj" - }, - "address": "noble17t070yftl309juaau2tngd4h497sdadq3f0egc", - "percent": "0.0%", - "airdrop": 10117.41455345248 - }, - { - "total_amount": 234488618, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6tyxKPy6BOm7HE4OHWr1Hrzqug97JtrmWJIqgb6rSBT" - }, - "address": "noble17t3csjyejneqrp3cvczetdl0d8p82s0j4ptwxx", - "percent": "0.0%", - "airdrop": 4118.966568281753 - }, - { - "total_amount": 287719423, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At3BeWCjkK+XcPHRJvJpLkKKTpKioHtBxbLH4iulbuXM" - }, - "address": "noble17t5tmt7ksluxku8y3t9eslm4q0wgx8p57p4qll", - "percent": "0.0%", - "airdrop": 5054.005155944567 - }, - { - "total_amount": 58415463, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+g/C9NHoUDnKfTM1DLqHPEWmri+O2+kR6JoO2bT1uXn" - }, - "address": "noble17tek7tc3223a957fe73zxh0n4ap4ld0lg6f8k3", - "percent": "0.0%", - "airdrop": 1026.1109525055913 - }, - { - "total_amount": 307837155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awl1nNZciMLf37nZV4YTcaFS/9JuHBiNy08ObiMeYY4R" - }, - "address": "noble17t7evffnrjcfdk9e2kz3zk9rh3dhxu97sfgzeg", - "percent": "0.0%", - "airdrop": 5407.388046101103 - }, - { - "total_amount": 1654731740, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+FLT85Hs0gEQgtVy2Y45TJxlwszg6nNKtT0sMWVDVri" - }, - "address": "noble17vqcum09r9a3tqhjhzd9x595g7u5ytq3x6j5m4", - "percent": "0.01%", - "airdrop": 29066.590842096626 - }, - { - "total_amount": 62478106471, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "An7pWxt05tB6dvDP6Df62ZNcvjgPfBw7WaT5UaAzuFQV" - }, - "address": "noble17vxxyg4tw3rmut5ge47lfugmgfkz74q4jftsjx", - "percent": "0.37%", - "airdrop": 1097474.2995994664 - }, - { - "total_amount": 131840899, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2CNY0i3cnKtNSfBYq0qdk2H+9oV3kfqck4aHkoTLuxg" - }, - "address": "noble17vxf0y0x0gkhan33yhpeuxhyzd5069vnq53ggm", - "percent": "0.0%", - "airdrop": 2315.8832183198383 - }, - { - "total_amount": 63210262, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlmbVIFD99aYSu40QG4bsfZTceMmxVVoQkpF8mF2kC6c" - }, - "address": "noble17vffvqwqjugzfydkmhyq73duj53pm0l5qhgmph", - "percent": "0.0%", - "airdrop": 1110.3351547337384 - }, - { - "total_amount": 79643328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As/JxlpBwlrKeLj5rXX4lzo4v3hDNiS/riROuyI6oXW5" - }, - "address": "noble17vdxx6xfmv8tfpuvsmarsa2qemfzk6wq0hs3wf", - "percent": "0.0%", - "airdrop": 1398.99415253792 - }, - { - "total_amount": 703472457, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtAS2kgzcUpNRGjAWJAxJ19lJ3d0STWtdLqFuK6x4FK4" - }, - "address": "noble17vjqe5zmqajqwgpf6v00a0hryw4n5c4c8ud5cr", - "percent": "0.0%", - "airdrop": 12357.015691439756 - }, - { - "total_amount": 5009122938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9Leq+I24rgFNPglN4X1WRJOg5D5EXAYSq5HVzHj49TQ" - }, - "address": "noble17vk3n942q39wun7avth88qgxtpuk9fwyfn6ewr", - "percent": "0.03%", - "airdrop": 87988.96122981657 - }, - { - "total_amount": 95475900, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzMF0EeK2IjxOE9IW2bFeYTTpJ10VT3v8IU6g8Mb2JcF" - }, - "address": "noble17vmvgfctggqn5s20jfzutcqn6nkdupuu6c0c2s", - "percent": "0.0%", - "airdrop": 1677.1050276590047 - }, - { - "total_amount": 1003446444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5H6xkWCCOmssLBEOSab4iQhpB23ii6rBv2/v86azi1A" - }, - "address": "noble17d8vuc5h5ck7rfj60f2zkd67jvysnct855hruq", - "percent": "0.01%", - "airdrop": 17626.281357064454 - }, - { - "total_amount": 125512429, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6KYxjvVRbQhdlSU+JUIQdUJnz3V3459dSgU7KcCbe4l" - }, - "address": "noble17d2nvl4u06t8vqrfa8g8xadw73zptftt7w0xs4", - "percent": "0.0%", - "airdrop": 2204.7189469760838 - }, - { - "total_amount": 78005266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwKtddo9yQAmZSWgOvbKE14ozAJO+OE3q1FTBx9oCx/e" - }, - "address": "noble17dt0mtpq2859k8h5gdmnynzznuwc4du9tqreks", - "percent": "0.0%", - "airdrop": 1370.220378048052 - }, - { - "total_amount": 179874118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Anfdpf/PE/NrwYw3h56JNtPTeaGjQ+lRtzCmT9vI12Ug" - }, - "address": "noble17dnv8nflp4q8gvknm26u9v5wpx8htxypsw02d4", - "percent": "0.0%", - "airdrop": 3159.622351227159 - }, - { - "total_amount": 57568013, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkkxpdowrQFl/Ef3RaTIZgrnCnY7ufiiFRosRmFX2KbU" - }, - "address": "noble17dhuy8g7e58evnxtrqkzsmwvvp9w95xe80qs36", - "percent": "0.0%", - "airdrop": 1011.2248644384493 - }, - { - "total_amount": 839719817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Arpx5uJWw7MLyUg9WxsP+YpzGy3MJRnmnDWOfsHaNAyu" - }, - "address": "noble17dujn7lcu3yqw9hhswtu4a5cw63cx52k29s9xe", - "percent": "0.0%", - "airdrop": 14750.301666866711 - }, - { - "total_amount": 61708994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9YB88pbO+DKIBeYQy8nK6bCFRA9BsPu7uiDkbFSmOlR" - }, - "address": "noble17d78xv05yj0awy6u5v0zw9wkmrl6a5c78sdy20", - "percent": "0.0%", - "airdrop": 1083.9642683565105 - }, - { - "total_amount": 50085991, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuVTugpZa/oaYD8OnUT3WsdF+NYpYEIfjL1ah92nqz2I" - }, - "address": "noble17wz8ekx4zzckndda5j6s5dae6ukmn7vg5vesxc", - "percent": "0.0%", - "airdrop": 879.7975962665308 - }, - { - "total_amount": 100356389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsDOHychJqXX0k4PGIifahggsovHzHLsPpFHGBDRnA0r" - }, - "address": "noble17w8z056ah5u0gp4ty3jw8jz802aqe7cwyjlvlv", - "percent": "0.0%", - "airdrop": 1762.8344383200665 - }, - { - "total_amount": 50963397, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvvoRIO1GgDZmSnd+3LGXI0RYPqfWZmAlXttdTnT67Kk" - }, - "address": "noble17wa29pqch34v38yr6acrepzwa4ghkr8trsekdy", - "percent": "0.0%", - "airdrop": 895.2098837013513 - }, - { - "total_amount": 138895009, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtPFLXiv+VicLFryL33bmIReHMnoC79+Lr61/u6mO/FC" - }, - "address": "noble17095drz3ef4vwrak9vwsw9v35z7jfh6pd62ea3", - "percent": "0.0%", - "airdrop": 2439.793894696387 - }, - { - "total_amount": 637560127, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmAkqnjg5bx63SdaxnxTiz1BoY0JiHtC7CAYe73Lk/W" - }, - "address": "noble1708y7tzt7aqkfv9ffspdfsjwvz6k8syxsrm7nr", - "percent": "0.0%", - "airdrop": 11199.216707322095 - }, - { - "total_amount": 939814668, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjB1DInaChLmP9VKYKzHaUPpRRDTkZCgdn3IJNcZSFuE" - }, - "address": "noble170wf3ptnld8q4aerm76xtpldn7daezlulsptg7", - "percent": "0.01%", - "airdrop": 16508.54199615273 - }, - { - "total_amount": 2356562891, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2xiHw7UQMmO70M6kkRl1hQ+GVi9jKGqAq07Fr2EllhL" - }, - "address": "noble170jr068fr90jsayxxrezf7a0uuzerfknk32mhw", - "percent": "0.01%", - "airdrop": 41394.77577577943 - }, - { - "total_amount": 1409085227, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqDCd5TLZ6Cw8N0b8nLC1r10KgoZvWCW8nRdIGoCS4JA" - }, - "address": "noble1704l9slj8ywv3exe73z4duepne95na9pevxenw", - "percent": "0.01%", - "airdrop": 24751.6275688601 - }, - { - "total_amount": 91775407, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtsM/XsZwcChX/6alqUDTfCK91u0mWeDtgtlo0E4RUjV" - }, - "address": "noble170hl9gc6xvh2mzl5m3ntgkm7wd8jl6pnsv3z7j", - "percent": "0.0%", - "airdrop": 1612.1031223078433 - }, - { - "total_amount": 158902190, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+LAnj5w7s1j43lwZcgiuOwWjQZlnK3+QotKCE1eVOxh" - }, - "address": "noble170mq75rfpqs255hxc5mtp64vwautxjzchssrw3", - "percent": "0.0%", - "airdrop": 2791.2348745078752 - }, - { - "total_amount": 319008369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyGbzc9c3uZkuXJ8Q2DFHDGbLdBC8NIDplO5NxjF7cvz" - }, - "address": "noble170mnvq98tc6a46sckduss3qeu8n9683k3xmp9r", - "percent": "0.0%", - "airdrop": 5603.618709173718 - }, - { - "total_amount": 4908268552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8p3BpJnv0obvf9CBdFtdaBeCW2KhedGsJzfY/zngK2i" - }, - "address": "noble170ljulwum0caxq03vrwrfmryy99shm7ywmrrw3", - "percent": "0.03%", - "airdrop": 86217.3791046723 - }, - { - "total_amount": 374131605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6OQsz4ri1wno1ZE9+y4cwSrgoPu4LZ2jRjGVeTR96ou" - }, - "address": "noble17sqge4sxzuhgjdhh7825unsrpqrudx0vwqas0h", - "percent": "0.0%", - "airdrop": 6571.899251555972 - }, - { - "total_amount": 98790261, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Atz5Yg2APquOLzEvC6aMdkZuXFwm0gJwdLLZ7Wu9LUWS" - }, - "address": "noble17sgqafax5x0vn5xunckhp6v55vlzdv9uafm06n", - "percent": "0.0%", - "airdrop": 1735.3242379160113 - }, - { - "total_amount": 2435208103, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "At1r4p5NIKpY/MoFE008sgV6e41hULT8xHe7fxQ2ws63" - }, - "address": "noble17sf97quhvvhljc0eungq6t64h7djte58lxqg8f", - "percent": "0.01%", - "airdrop": 42776.237280164394 - }, - { - "total_amount": 102769269, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8tsBaUFhcVA8ENzx29a3yB1q4VUhf4LNpRjKCBXyrKP" - }, - "address": "noble17sd8s08umw53jusewe64csdesascxpxwxyl3zd", - "percent": "0.0%", - "airdrop": 1805.21846590334 - }, - { - "total_amount": 171146388, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6Eo5/yLlOfeK3FWxTt+/TrkCp86ncnBiAij81mLYwmi" - }, - "address": "noble17s5d5zkedv0l87ar80ds537gj5seznx7djlrwq", - "percent": "0.0%", - "airdrop": 3006.313297706319 - }, - { - "total_amount": 53132308215, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au3fnTa9oqGLesXH/Z8bvZexo5vZQT/vwATQIRk4G/bP" - }, - "address": "noble17s5cerjzptgq5h7jyv9ezx6stdjcek77l8v6uz", - "percent": "0.31%", - "airdrop": 933308.4185486007 - }, - { - "total_amount": 161128079, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3h736fo1L9sH0Iy00TrJ6ad5UpJAlwfybvw4bQk6sGe" - }, - "address": "noble17sua6gthrc8w2awntx5gllcc0286qk7hyffxlr", - "percent": "0.0%", - "airdrop": 2830.334266426787 - }, - { - "total_amount": 671807518, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A72KRunrVEMveQjtvL5FG6M7T1eATUmdNnhn8buOsmf0" - }, - "address": "noble173p8dk40tpfhhtuw4naue7d9j0p4r3704k7zf5", - "percent": "0.0%", - "airdrop": 11800.797542174698 - }, - { - "total_amount": 893888597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApwbHJW9/XgObPxblwfthvK4RdhJEpjrryFMsy+VnL6O" - }, - "address": "noble173dkxc0zpt8f2cax9memzf2x9m8uh3pwnl96ja", - "percent": "0.01%", - "airdrop": 15701.816481392203 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnS75w2/DIucJsKZ4B5PGIQ6/XLDaxCbu90QQbAKGNDL" - }, - "address": "noble173wrklp669kapdayf9g3v2fy0shnstn86t2e8q", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 309008648, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhRONOSFFph+0D7eIcGTqHjpJW4eQTtXvORwuP3JByHz" - }, - "address": "noble173mgjzm3sulpvf0n65k07sfud89qjkeqfvz94s", - "percent": "0.0%", - "airdrop": 5427.966189906685 - }, - { - "total_amount": 188540020, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiZo+ywgPLvR+dvOM8ChOioUTRMWCpe2XMq8N/HU9uC7" - }, - "address": "noble173mej7crezqh9jh9x38emdwls5a69f6wqqyth6", - "percent": "0.0%", - "airdrop": 3311.845350050948 - }, - { - "total_amount": 50107633, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsCJGMbwUaoV9dhZk96Ld+UL1CNoleBOBGy9tijg677F" - }, - "address": "noble17jz5xpeekavh96fer2wxaya2gjapv5m65m7skf", - "percent": "0.0%", - "airdrop": 880.1777540551308 - }, - { - "total_amount": 50273372, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwVrtwdi1lJ6bXwz9+XjAAtoJVMpy1MG6OtAZiuZhcI1" - }, - "address": "noble17j9y7xmxsjz57xxvxd4crpnfmsjnut0am3sxl0", - "percent": "0.0%", - "airdrop": 883.0890825702762 - }, - { - "total_amount": 654435892, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzgTEralPc5p9mvr5Kw+4Pq2+OIY6J6tcJ5MJD1HTiJ6" - }, - "address": "noble17jf8payknn870ylhykkrjcch6ma29zvj7wpd6t", - "percent": "0.0%", - "airdrop": 11495.652041548763 - }, - { - "total_amount": 218373831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8uCBzeIgJTOAhdUf+QYY7156IKSfCt/TBWbDUDEtwHF" - }, - "address": "noble17j6g2708lrl46zkxaq3knq79hheks8t3lrzp3t", - "percent": "0.0%", - "airdrop": 3835.8983772790602 - }, - { - "total_amount": 1020481503, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkniR7zcaMK3A0CpIdtQtq7vbxs/hBjgkWY4hW12qCKH" - }, - "address": "noble17j73lm3aze5qqtvf55yepzjw2rl6suv3pqxdyw", - "percent": "0.01%", - "airdrop": 17925.514808599004 - }, - { - "total_amount": 267645216, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aw+QxpDtuZbIOCR/rz5QQKuQZZODu5pA3eNug3zsLgIa" - }, - "address": "noble17j7u2z748es80z5ayuxa79nm0hzhs2nsk3fwe2", - "percent": "0.0%", - "airdrop": 4701.386814709055 - }, - { - "total_amount": 5421770757, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+pWP/nAaXPOe3ceSxv2V2sMvAOMEiJVRIgXQPptxcjA" - }, - "address": "noble17n2de80m3mtz7yheygggqw2wnta5665t8vf0lm", - "percent": "0.03%", - "airdrop": 95237.42635973338 - }, - { - "total_amount": 466421551, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3HC02jp15utJ+riWVmzTFmqPZFSF6WGtNxWDVfZxDtJ" - }, - "address": "noble17nwcuu8j9p6uyjkg5djwj6lrc9zyme62mmuuww", - "percent": "0.0%", - "airdrop": 8193.040633192364 - }, - { - "total_amount": 61000058, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhSpekIWcDi5FtP0RabmxPYE8hMHegFPraJNM+limk2m" - }, - "address": "noble17njltaalp752jp6d9lkcc5l865ffv4ff4hqnhm", - "percent": "0.0%", - "airdrop": 1071.5112814782672 - }, - { - "total_amount": 311974680, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/9GefZDtM3qVRAkd2xkUom7rPzqyA2SAtzXRqRQUL5I" - }, - "address": "noble175rsvtf58mh8hprz4ua49ehz0l06wgz0428e3m", - "percent": "0.0%", - "airdrop": 5480.066742814775 - }, - { - "total_amount": 201079177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+SPGqE7XiapFCL6F2tgmhV2uR8JjG8D4n/3+3t+ia3Y" - }, - "address": "noble175ra9r4r632c4dhd9c60sey09vsg78xte2emtl", - "percent": "0.0%", - "airdrop": 3532.104946947187 - }, - { - "total_amount": 1186626599, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Art9jTyJRl+isYE589xX7roXMfmM12I6S08u2wwSt/OF" - }, - "address": "noble175ynzjsusla0ksa3jppy0c0wqjq0h6nynx876x", - "percent": "0.01%", - "airdrop": 20843.97670131212 - }, - { - "total_amount": 613557386, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ngEPdEFOz1j/vAsctnV484PemIGEf3YjOfZD4Akbb7" - }, - "address": "noble175wmrgxf60qn8xdwx44e4hd2k4434y4epw2pk9", - "percent": "0.0%", - "airdrop": 10777.590751361513 - }, - { - "total_amount": 1059368369, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A44Yf1qKRHr3Rnre6ktC1iJifkqgjEHnE7IjTZWOg1Xl" - }, - "address": "noble17508d7lssdzw66ktwzh9x607yejwexj4cpjlzk", - "percent": "0.01%", - "airdrop": 18608.591464367655 - }, - { - "total_amount": 951819303, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az0Ejn87hR5UTHQj3hh8SzprDDKxaxUQObaZmPfbFgEk" - }, - "address": "noble175se8cdhhhcq3z8h5p4xgp52j6m6psreffl7ju", - "percent": "0.01%", - "airdrop": 16719.412317497816 - }, - { - "total_amount": 173168063, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtMdNr74zSmZVIcqOml7nb2+aiCnAlhy2wAFOonQ93tE" - }, - "address": "noble175n3nqp7x9lv96jr7rplkhlxwmkraw6zqhgpx2", - "percent": "0.0%", - "airdrop": 3041.8255191862163 - }, - { - "total_amount": 87829928, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0NB3MJYMdc9yd2PPcNBegtgnqGhdybqvAF6bNXqfc4s" - }, - "address": "noble175hcnanmepmjlzc5n58vcdh34gn9j55t5lurz2", - "percent": "0.0%", - "airdrop": 1542.797856084398 - }, - { - "total_amount": 54170292, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A21Jq7Vz2ziZf5v5VjX8iigJ2CGzgWESLamONj9G2ao2" - }, - "address": "noble175ugg2pwq4vanqwqkc6ppakd027dwq7cuvydyk", - "percent": "0.0%", - "airdrop": 951.5413739274137 - }, - { - "total_amount": 104494494, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4BbfmSxXqzwHFdSnr71kedjnc8vmr4XyU/wQPshAQS" - }, - "address": "noble175ad0gdquu22zsqxsngv9ccyc6qt3kjt6v4ep0", - "percent": "0.0%", - "airdrop": 1835.5233231641043 - }, - { - "total_amount": 59909155, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AljT7gVw5e81FzWvD80a9h/g9Js/g+p/YAdJmrjjaCWp" - }, - "address": "noble174rt83afzprdw0juhahpvrc9gsdcqdew9c8vwh", - "percent": "0.0%", - "airdrop": 1052.3487608213445 - }, - { - "total_amount": 178302296, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Azw0Udo6fa9t2X24gdHtaN1+xbGT/Ccl5Me3HmxkGeLp" - }, - "address": "noble174923zsng7yvshc0798dg52fg99wzrspzuly2n", - "percent": "0.0%", - "airdrop": 3132.012131488093 - }, - { - "total_amount": 83559728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6O+Z3iP4IgufeRYam8kTWlsReW1yRC8W6TOB4LsGT0V" - }, - "address": "noble174gzy05mpsjp24l9dhsxw46ga39h5e990ahjm4", - "percent": "0.0%", - "airdrop": 1467.7886245494299 - }, - { - "total_amount": 397521035517, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AggDH8RZnZPQa+9g7m2dogLRByI7EbMBE32XMSj7nv0f" - }, - "address": "noble17427hahurwq4w7rt9hvvver9qpdh8ja54nzggj", - "percent": "2.33%", - "airdrop": 6982751.953799592 - }, - { - "total_amount": 1468500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkwruXxFSXwDPzD3U3ZvsQwpvpMXnQii0qEFnvS1vocO" - }, - "address": "noble174wdq55gjaryryjlwew0s2wurssrle4vt0sdxr", - "percent": "0.01%", - "airdrop": 25795.29214301461 - }, - { - "total_amount": 1114884615, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+uj4l5NOk2rccxQYLaE1AlBXuOxP96t2ADjOP61WouP" - }, - "address": "noble174whkg8ydfvy6gceecgreyprrm97daf90t3jgm", - "percent": "0.01%", - "airdrop": 19583.775519017614 - }, - { - "total_amount": 52000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2izUrEBQ16geF5POHO007sYn/5PMbnMIEsO0NdoKMtd" - }, - "address": "noble174wuecaxmeklrmasg2xa4yjytg28ery6f3d23n", - "percent": "0.0%", - "airdrop": 913.4185845670818 - }, - { - "total_amount": 149242605, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq4l3GyXrCrYtCtg7ZWtb4+Y/Y9k4qMqqP+tw8WHFafr" - }, - "address": "noble174wanrx0e6l0n9gwnhkqcv6qqvxhygchddyand", - "percent": "0.0%", - "airdrop": 2621.557096465463 - }, - { - "total_amount": 64845636, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhrHnZARrAmZhaRHLPwNGz2+GZAI5j+c1eqyN26XGulU" - }, - "address": "noble174jrteeaujyaxzt58qcu7jqcf2y4mcy2ezhz8f", - "percent": "0.0%", - "airdrop": 1139.0617125090807 - }, - { - "total_amount": 1038310742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AscaeAMjzYCaiPhD6w0e6UvqwRK51HgVd93V2HVRr3sT" - }, - "address": "noble174ksrapf67rw067rn2pktkv9a9j8nh0820z8wz", - "percent": "0.01%", - "airdrop": 18238.698621123778 - }, - { - "total_amount": 68527701, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AySg2j9pw8BHa/Hq2lYxtOUyuaBn7T+2tIJmdYyJiE0A" - }, - "address": "noble174up7k22f687qr9srwmct9wtc326kc80lr3lgn", - "percent": "0.0%", - "airdrop": 1203.7399163664652 - }, - { - "total_amount": 139414089, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHUo7WTDDu2HTxewYJiepZMYSOEvtVk60BwG6QRtikr" - }, - "address": "noble17kxtm0ezwulcayg2cp265xcp0senfl8ww85dlv", - "percent": "0.0%", - "airdrop": 2448.9119200594073 - }, - { - "total_amount": 99774406, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5h28jBynLWJKIaoaAMpNSS0avBY3Xrj7HuwNLBJRfMy" - }, - "address": "noble17k7wk96elpf34vrwsta5rurlsnd35jtrgzlmch", - "percent": "0.0%", - "airdrop": 1752.6114750873337 - }, - { - "total_amount": 41628570811, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am755Y3nNet24mJ8UxW2002Ab9e0Ky7B+RcywGZbR8Gm" - }, - "address": "noble17hpg0ekmlv7q3qcrzkc0gkrrrytzfpays3v85f", - "percent": "0.24%", - "airdrop": 731236.7351487337 - }, - { - "total_amount": 112664553, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az2CaAK62Sag7gGOWtqnUtWgDvh3vwvgg47cTefkzt9R" - }, - "address": "noble17hzt96awnd7tdevmzw3w3fc0ahjr8kdmy2jcyf", - "percent": "0.0%", - "airdrop": 1979.0364717719804 - }, - { - "total_amount": 71323085, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmQ8Q++ZhvciEd+OdBGXBW0ko7V+3Hz/lP/f54GXcvr0" - }, - "address": "noble17hy8zm58qlf3t9xvrtp9ncf8xun06dfgh99dy2", - "percent": "0.0%", - "airdrop": 1252.842910531878 - }, - { - "total_amount": 546967597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am531Mg21NfH7vjb//4hNf8ZDl0l1Jx0VYzO/uB0rdAr" - }, - "address": "noble17hg67dtreg5xlgxks6jn7924f75txkndn9whj3", - "percent": "0.0%", - "airdrop": 9607.891697226885 - }, - { - "total_amount": 60841533, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkI+BnsFO9L6f+jEcqDnXO9NZYyULrI2Y8oRvm7voknV" - }, - "address": "noble17hf96du6n2t7xzcv5ykaqm5s80jwfpl6y72mql", - "percent": "0.0%", - "airdrop": 1068.7266722259885 - }, - { - "total_amount": 50139114, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/n5D9im79Ao7UtxlsaEGssS83MFx3wUdth6eydeFSwz" - }, - "address": "noble17hw274uxfene4m8cvkupahkhj37thd937j8rvd", - "percent": "0.0%", - "airdrop": 880.7307411793761 - }, - { - "total_amount": 121830049, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFmeZTglLZaEAwuMio2CFMGlkRJ3CFH9aXJNi8qJKUK" - }, - "address": "noble17hnaj6latzhm6k9frzypajamf7ngmrpl69ylwy", - "percent": "0.0%", - "airdrop": 2140.035209909966 - }, - { - "total_amount": 658810293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgtNRcAGLy5eILw5r882jhKMx2z/dOwowNes4vtRI/CH" - }, - "address": "noble17hc28vs59xxskqqlkprnvlfry4rw3py0dllzws", - "percent": "0.0%", - "airdrop": 11572.491640967008 - }, - { - "total_amount": 266375848, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkY7ez70Xxr88YazLr9C/P5QigzonPHMxTyzAnTXzSUn" - }, - "address": "noble17he2xhtks2ke73cfznwga5lgf22u7yrfw2f2q0", - "percent": "0.0%", - "airdrop": 4679.089423904156 - }, - { - "total_amount": 67062021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlQxi/Vfjklhii9OxrNnE4c/j2tgeimxfp5WFfHv3lCU" - }, - "address": "noble17h6eqlyt6u3zafkkuad078z7c4qk5xjwhfzrw0", - "percent": "0.0%", - "airdrop": 1177.9941596159215 - }, - { - "total_amount": 1500000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A56KoIj3tsxPr1VrSnJI8gzdPGK1nhgew4wjXs9deR2O" - }, - "address": "noble17cp5fp6peh2wev34kf74ruzrc7pjn9rv3d7g6a", - "percent": "0.01%", - "airdrop": 26348.61301635813 - }, - { - "total_amount": 250603919, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A00HWkletn3OR1TKLLUqhtKGlGUPSvJSBsNJSDM8XTuB" - }, - "address": "noble17c9ywfjw8tjss76w7epfpeu59afa8eglpx6rgz", - "percent": "0.0%", - "airdrop": 4402.043788075839 - }, - { - "total_amount": 50979784, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjGcXEzMldqTlH1fDDHcNcr4P43mrH5aO6rr6VLztuH0" - }, - "address": "noble17c8qt4p726280h42lhfsyxmdyu8yu9xcenueev", - "percent": "0.0%", - "airdrop": 895.497733515684 - }, - { - "total_amount": 600760005, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzAv/0Rai2u8fqJsvbgCelb8pHzoC+iRixIZ/69K2jP2" - }, - "address": "noble17cd55etqcmgls2xkp64nah3c2m2jdvpsh8jm2w", - "percent": "0.0%", - "airdrop": 10552.79525830025 - }, - { - "total_amount": 267118208, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiyJhxOvKQ3C160fGXox3U8aOnbOP4KeEC/C+QVsI/4P" - }, - "address": "noble17cw6u3d35xnkmyh6nncaljtp4sqmtal5vh665e", - "percent": "0.0%", - "airdrop": 4692.129528143372 - }, - { - "total_amount": 800372696, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkG9/fukltGz7DOnbX0e3fpLznIa5d8xyYiP16GHZnXX" - }, - "address": "noble17c4a9zqc9e73fpz4kvrkgneu9qhzglxdsjftwn", - "percent": "0.0%", - "airdrop": 14059.140290508833 - }, - { - "total_amount": 51435990, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am7CBI7GAjfpNGcIiiSo8y4Z+lR1YAOxR4HJkUmgmrDE" - }, - "address": "noble17ccwmhex9ckupq4ylqws8kggsp78455a86cswp", - "percent": "0.0%", - "airdrop": 903.511330415511 - }, - { - "total_amount": 297983222, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Agonu5YAkHxSCfQ/B00ZmPE42xASb58i63y/uMQ8JV+6" - }, - "address": "noble17c6y5wxfhrne4sjq8c99ny766q9g3rnqxd5t3d", - "percent": "0.0%", - "airdrop": 5234.296401230356 - }, - { - "total_amount": 223304116, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AotC2UFUlb3TzGV5EQaacWY/9yoxr0n59q0dFZowkOMR" - }, - "address": "noble17clzffafu6w0axjj42m273w2u5q32mrqunz258", - "percent": "0.0%", - "airdrop": 3922.502491629297 - }, - { - "total_amount": 6599537484, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnxejNonvM8yMDlCGYwLmVE9NiadIK8zE06M38wvu9Eb" - }, - "address": "noble17ernjlax06fvfknwvm6jv4hpeq3lh347046e3w", - "percent": "0.04%", - "airdrop": 115925.77283524386 - }, - { - "total_amount": 139390450, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8Ttat0chBXUTo/6vzTh3ONGDVUkldhawzeXF8pMeyfF" - }, - "address": "noble17e39pfpjpltgvmw4pe9y2dyaz395znta9h86k8", - "percent": "0.0%", - "airdrop": 2448.496683484011 - }, - { - "total_amount": 259559316, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkBzkbKAMWMM+1bqrl2VNfMINE8LlFuYeXGzFkdPlRBW" - }, - "address": "noble17e3j6f9h8m2wkfjf8g24ksxnnygxts2m78pr5k", - "percent": "0.0%", - "airdrop": 4559.351981383075 - }, - { - "total_amount": 409732720, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A80xbR9FPRiDZSx9MPbtW4pWR+uJAUYXrlWZkcOxxKTz" - }, - "address": "noble17e3ucspsen02hrxsugassflazr0pzq9pm23s5k", - "percent": "0.0%", - "airdrop": 7197.259252946547 - }, - { - "total_amount": 168079778, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7sdxV3ADkG0GXWfZVThpK9hbqcgqC69jGKfzkaAB3TI" - }, - "address": "noble17ejnh38yrylffpyd06dnc0nm5nf9wh3qhw0d9j", - "percent": "0.0%", - "airdrop": 2952.4460175982567 - }, - { - "total_amount": 116108917, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxeWrWaCu+8nmzDdgYuSeWQC7B6AXK2bxUq/yiA112zG" - }, - "address": "noble17ecu06sjnny263s9ngnpcuu4300wtzlwn8289x", - "percent": "0.0%", - "airdrop": 2039.5392811876306 - }, - { - "total_amount": 287552384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzPIEm5phQxE0QhzWoZ/OYSSSpHTHLEZv5HU9mjOkCwX" - }, - "address": "noble17ear6za68ky743l865lacg3m92vdsxqzy5srat", - "percent": "0.0%", - "airdrop": 5051.070991964807 - }, - { - "total_amount": 210349247, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVH4/MtKPhS95BaU6p899osZeMy0jNsekh6LdzPlWsQ" - }, - "address": "noble17e78lq6mwmfgrcg28jqsafqvq5n0n8sccvjpx8", - "percent": "0.0%", - "airdrop": 3694.9406049902204 - }, - { - "total_amount": 377752597, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/TbZ+gC+PYkWrNKfCIiEvj5sGQtbIIgk9zLe8H1ezoD" - }, - "address": "noble176zc7mld27m5vyug68cfw2w9mzpljzaj8hx7ga", - "percent": "0.0%", - "airdrop": 6635.504662851524 - }, - { - "total_amount": 2560729938, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A60HWXPHWgcyzGzCchpHzTZWkh4jLr4NG7zfjmsTdIDs" - }, - "address": "noble176rsym4rpa8cn852kxycex2xsq0hde0w0yud73", - "percent": "0.01%", - "airdrop": 44981.12145050983 - }, - { - "total_amount": 5741854151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8m1v4RXq7l4CE4Iqh83ut2gwSF53VdUFdi22aqLo34w" - }, - "address": "noble176f7c7efn2h3fpa366sw4sq8hfl7yh4w268hgs", - "percent": "0.03%", - "airdrop": 100859.92868071237 - }, - { - "total_amount": 419409060, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiQZrdfw91WrLHsPKev8atjuMjAEBjwGEhs0uZVyHsXw" - }, - "address": "noble17629mhx5dtzwjy25n8ewjgfyg4htmmf7c8v683", - "percent": "0.0%", - "airdrop": 7367.231344996351 - }, - { - "total_amount": 69835979, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai0l2vgbU65o1c4NCrbSveiaxIiG2ycX9BhTreDCSSoF" - }, - "address": "noble176nreup836tmj9tstk2caj09yw5kr95xgemmr3", - "percent": "0.0%", - "airdrop": 1226.7207901930087 - }, - { - "total_amount": 404192679, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4UBxJPdrd4ai32G7mKMPxEt2DXkV1u2XCjVLFSClpRf" - }, - "address": "noble176h4yap75qyf8aklttmak9tv6yew0v2jrjegxq", - "percent": "0.0%", - "airdrop": 7099.94432201071 - }, - { - "total_amount": 700012788, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1CiypwKbRGws86QOOXR2Bdd4DsBGWtg1xada1gPzs5J" - }, - "address": "noble176ujmme39ylau6md7naj5qcr67kz54n3k2s7d2", - "percent": "0.0%", - "airdrop": 12296.24403834263 - }, - { - "total_amount": 1500005249, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AodpsILzYrer90vxwyMKUNgTM36zg7ExLtkP7KoqlQg8" - }, - "address": "noble17mqxj8yna24nyjyax5cxetrj83rfrundwkvd2u", - "percent": "0.01%", - "airdrop": 26348.705218937946 - }, - { - "total_amount": 1022930776, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwmbppEwsTXECKBuE+18eBNigle5Hwau/YZl117prVfm" - }, - "address": "noble17mrgrpdyt2e5a35zr3ej0474s2j8824cs9gn7z", - "percent": "0.01%", - "airdrop": 17968.53810623128 - }, - { - "total_amount": 121575861, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuqaKKHhZx9tjxMCYOtWJ7cQTy8hdqH/49CCL/5cYMLk" - }, - "address": "noble17m9hlutq4p6n5usujhfup8n6vcpmc7cxdw0agt", - "percent": "0.0%", - "airdrop": 2135.5702090796976 - }, - { - "total_amount": 182677641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/Y6neDIctU6opqIgj9BPQzqt6XPOd3DMY+i43grvpNc" - }, - "address": "noble17mxyeu0cagkahw80j9w5vkfn53p4ytxud42826", - "percent": "0.0%", - "airdrop": 3208.8683129667984 - }, - { - "total_amount": 547197570, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnDalb9aSDZEjWDkt1Hzgfrxhw/3JSAQS2vVeR05TZZY" - }, - "address": "noble17m584qzvfnd5usskgwgfefdy55y8yeqk0wcfs4", - "percent": "0.0%", - "airdrop": 9611.931343614358 - }, - { - "total_amount": 254940219, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Asf2FGQFmcY7IAQgppfBfijMqbD3ekpjN43rguMXyNOH" - }, - "address": "noble17m735xl5hzyv4q4809gtjef4s7sspzd0sj9pzn", - "percent": "0.0%", - "airdrop": 4478.214115157728 - }, - { - "total_amount": 558684832, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7gBa4C+1TwxTZ3+KB18SRdR73tmE2o+o8c50V/Orx/j" - }, - "address": "noble17uq0utujfqeff3vvxtsrdv58znnjsgnwgssa0h", - "percent": "0.0%", - "airdrop": 9813.713624318036 - }, - { - "total_amount": 53586041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AluXlxuImpsZb2/42OTfsCDf668WLs6CFn3Pyq7dcBP3" - }, - "address": "noble17u9f26fmcna9zzqlg8p4zs82s9js3kjc6qxx50", - "percent": "0.0%", - "airdrop": 941.2785715918003 - }, - { - "total_amount": 149822041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+65orJ5Q3ee4OKC7kvKp8LRWwjD1QX9cWJ/QBk3iSPN" - }, - "address": "noble17u9ah2acr2emy4dqv6074za08uthnql3hfmn3u", - "percent": "0.0%", - "airdrop": 2631.7353197532943 - }, - { - "total_amount": 79834112, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjbnC2ZYv88XH3ANtSSvuClQoZA0qhUf2UAvp1bARC48" - }, - "address": "noble17uslq5wg5jwv5hvldtn0v9kkm62m320gk97asu", - "percent": "0.0%", - "airdrop": 1402.3454150617285 - }, - { - "total_amount": 517724559, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlH5NV71dZncpQsUN6rvbcdCvQV9kN/7S9jB4n903Ew0" - }, - "address": "noble17ujnvfxevvc4vskyds986awfuqu6l5wjs7nul7", - "percent": "0.0%", - "airdrop": 9094.216036103782 - }, - { - "total_amount": 50666146, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+RetmdpMLOWgLHz/6NrUS5vdk84STQ+jAL1lW8z+jk4" - }, - "address": "noble17ujc0l8f0fqtfvmvyvq2ud0ycn8num93sy9l3y", - "percent": "0.0%", - "airdrop": 889.9884493228675 - }, - { - "total_amount": 139170772, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuEmcw/XwyYx0E1UpLspQOei3ZQpJtcjdspJd4o2zA/N" - }, - "address": "noble17undaqgw2k9ahprspf3recqd26605kfdr5wjyn", - "percent": "0.0%", - "airdrop": 2444.63787641054 - }, - { - "total_amount": 2693810455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5clMY592xajmmnUsyrp8a5L5sOGzh0NLaGP9CBplaux" - }, - "address": "noble17ua0gj89hqj2gtr3s0rx7c6rf5898mkrk7wzaj", - "percent": "0.02%", - "airdrop": 47318.779478809745 - }, - { - "total_amount": 183473101071, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8KL8mhR4XU514HlZELJOaZ63Npv+tPclwVR9AZnMc6U" - }, - "address": "noble17a8smrhauph552zkz5864vjafz9pszpezp865m", - "percent": "1.0699999999999998%", - "airdrop": 3222841.159353961 - }, - { - "total_amount": 53015802, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlwUf+Vdri8990UgcQLvvZEubH2e5navh0iAECROGT08" - }, - "address": "noble17agf784uxs2q768ppacry5fuqvl29t82c94p0d", - "percent": "0.0%", - "airdrop": 931.2619004332436 - }, - { - "total_amount": 127515619, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7s1oLRFYy7O9iyzctDjoy70VOoJxNocTWj3joYoFW1N" - }, - "address": "noble17ack264mv8gk5wglqhccvdhyev3zc4qwrq5jf7", - "percent": "0.0%", - "airdrop": 2239.9064657149092 - }, - { - "total_amount": 58578345, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Amh6dzCHN6VDuDlvXyXY644HBvbp+AbndRg2umGiXjQX" - }, - "address": "noble1775vp2tevhydj647d5lfk38pnxgzx86g5mzls3", - "percent": "0.0%", - "airdrop": 1028.9720956958115 - }, - { - "total_amount": 4179056015, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwWxqDoulwHEcgsmgTK5B/YhSaStxnsBFPZhlU46teuv" - }, - "address": "noble177c0z4g4tk2sx8qv6jzwlz5eh39f6lny33qusf", - "percent": "0.02%", - "airdrop": 73408.2198086125 - }, - { - "total_amount": 98331318, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3Vtmms0+PK5xChMW2x5I78dEXRmemnzgK41R7IKdvTU" - }, - "address": "noble17773dgymsry30a5626799v7rnatkaydv9dg4pl", - "percent": "0.0%", - "airdrop": 1727.2625635803004 - }, - { - "total_amount": 124155826, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Az+Y3ZfKzMXsMp4vY51NW6UIR+lNUyZgXeMQGmnJs+X0" - }, - "address": "noble17l9y74v8re90jgcsrsqa2uus09jkd89furv9tt", - "percent": "0.0%", - "airdrop": 2180.8892086668634 - }, - { - "total_amount": 29988500000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoxhltWRnZmGjHS94q9hhgDl5+S+LGf6ndn8PDgq5dqr" - }, - "address": "noble17l2vcnuy2evx7t9q3pfkgr4md7f3g7gam3rwlh", - "percent": "0.18%", - "airdrop": 526770.2542940371 - }, - { - "total_amount": 3212285519, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A31iBbRGIVRGfF4XCa2pPYM/jlf0XS88fAFrD8wlpWER" - }, - "address": "noble17lcpf9w6qpy85v8f8e43f592uek9v4yafn3rwf", - "percent": "0.02%", - "airdrop": 56426.17869212142 - }, - { - "total_amount": 118958528, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8DQAMBnMDtL95BOuauprxL1oZVb7wRg7UDBgL6BaT9d" - }, - "address": "noble17lm59g89c2efv0sfjy6rmndysejk00x0vgxuwg", - "percent": "0.0%", - "airdrop": 2089.5948128450686 - }, - { - "total_amount": 93349131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6o7bEX9AuUxVlL1UST+d0SkQaN1qvMWvb8VVIqFfpLM" - }, - "address": "noble1lqreaf5nm7llvhxhlvpn527yduz5yx0gyeljm6", - "percent": "0.0%", - "airdrop": 1639.7467520882135 - }, - { - "total_amount": 102248459, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjdHG9uoLceyrRdMzFT8tInBRonehzJylH+9hWZYrV79" - }, - "address": "noble1lqxe3k6nj3cr48tgstjkjsdfg5avz66ue3k6p2", - "percent": "0.0%", - "airdrop": 1796.0700518066403 - }, - { - "total_amount": 100309072, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvB4Ws+iU02yDnuBkCbHb3hvbBN+Ib74+10WHb+EIBbl" - }, - "address": "noble1lqt2dd370j22h6vj80zwg89skt053st82m9wyg", - "percent": "0.0%", - "airdrop": 1762.0032801053364 - }, - { - "total_amount": 57447889, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alx531IJM8VIAISaEpbOW2h320V8MdD1ms7wlEK6EZsN" - }, - "address": "noble1lqng60dqjxdfsdr3hmnupyw0p8fgdqyw2u9qnd", - "percent": "0.0%", - "airdrop": 1009.1147972451314 - }, - { - "total_amount": 508786017, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5fqN2bZgMY9IQDUydACoaMU+a64AmQHqn0Zi1QDaNKj" - }, - "address": "noble1lq4zycdgys23h8ssdhkndkvujg7taasn5pjvy9", - "percent": "0.0%", - "airdrop": 8937.203913378138 - }, - { - "total_amount": 700569726, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8MUttcYsMVA1X77fBhVWlYpxejZPsKxFr59yD15ErSd" - }, - "address": "noble1lp2ltp5va9uz0n3m9j6mvcqlq6md28f07nkntc", - "percent": "0.0%", - "airdrop": 12306.0270675667 - }, - { - "total_amount": 124110830, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am6CgW1LgzY7k4WS+TXS555zyVgIVVd6jxJnpmgYGnxr" - }, - "address": "noble1lpwqy7aeq0gwakg4kenp4y4m0t57aqgn26sy9z", - "percent": "0.0%", - "airdrop": 2180.0988205393405 - }, - { - "total_amount": 1190895052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/JmsahtFyeNGUTtfPciacznnyNE0k+8vsCIJsXWNF6t" - }, - "address": "noble1lpsjj3ql6exsr5wplaqkt0w4klynqaugjvuu63", - "percent": "0.01%", - "airdrop": 20918.955245495796 - }, - { - "total_amount": 733641039, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+ukwVw6Aktz/uM0HiL4jFOZPbWhO1fA2sZTtEh49zRL" - }, - "address": "noble1lzzp8fmh339a63vu3n6jjp7nu94gaml7kk5mxa", - "percent": "0.0%", - "airdrop": 12886.949219686601 - }, - { - "total_amount": 79288942, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xiu+jFDRIStGC30nnXJ3v2fPERdMALC7aRgNJLVn6E" - }, - "address": "noble1lzja7s2vrz9f24923ajh306q07ghpt5lstevg8", - "percent": "0.0%", - "airdrop": 1392.7690994896432 - }, - { - "total_amount": 52776152, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AoqVyOFYYyeA3QjzK5gEdnPS1k9Mp5Bxy4aGbuQSH0Za" - }, - "address": "noble1lzkjwk265ryn43s6jtnj82jrffqzg2cw3vtfe0", - "percent": "0.0%", - "airdrop": 927.0522703603301 - }, - { - "total_amount": 2381709939, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A42OuafoaKMKmFbxqhMR54ZmLOS2dsRGOJ858siBacj6" - }, - "address": "noble1lz6e76v00nqsyu65hnhl5df48zh08al6ukmely", - "percent": "0.01%", - "airdrop": 41836.50233328328 - }, - { - "total_amount": 799725727, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnLV1NMK03X40355LkwBkxHBFWANq4an4kc3frKkOcC7" - }, - "address": "noble1lr8q34lxvlr7yd4jtnrdslvfv5yjqu8cuctdze", - "percent": "0.0%", - "airdrop": 14047.775799965779 - }, - { - "total_amount": 60959293, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+tcOQNiyOVjV+laO6EnOvNU/N0NeieX3jjpK2h3iNFL" - }, - "address": "noble1lyqf7a447t5ryfyse2638kx6vjwwql9qp3mjha", - "percent": "0.0%", - "airdrop": 1070.7952140051927 - }, - { - "total_amount": 144158164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1wqKARU6ZD5ud81TsyA4hfwv1UD70eC4ppZSE2/ZwdI" - }, - "address": "noble1lypprhw77v5lnsy9kyk5w6sxe7hk404zca35vw", - "percent": "0.0%", - "airdrop": 2532.245117589793 - }, - { - "total_amount": 3426850274, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2mH5KEmNLhoEPusHF2TMeBiU2D5bAjnilX6pVhx1ECu" - }, - "address": "noble1lywllu4eus49tcz7nwmqvgutwkerpn04cmzsf2", - "percent": "0.02%", - "airdrop": 60195.16782308455 - }, - { - "total_amount": 655090004, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AowpCnxL+6xS3QMmhgjW6UVva8P/WMSweYhz2A7pG7k/" - }, - "address": "noble1lyh6lpuamrgs8e4hzyunsgx7l77vpc7uu2gdx7", - "percent": "0.0%", - "airdrop": 11507.142004186999 - }, - { - "total_amount": 579869172, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/L+zSQHGgEvZY1e3xI8WE6YIiQjbF94StKbEIHFZkL9" - }, - "address": "noble1l9r5qn20acyhykn4c2d0pn8d44tk0hh4ku7u7z", - "percent": "0.0%", - "airdrop": 10185.83227542934 - }, - { - "total_amount": 50900455, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4Z1qT9mSqCE5+E5p3WKxRURIKdgF4Xi/VwAvl7LEV0m" - }, - "address": "noble1l9rhkqk7dg4hevcznu8jvgyts59r9epdyxaqzq", - "percent": "0.0%", - "airdrop": 894.1042607677008 - }, - { - "total_amount": 10852312442, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkV6yKVRLP/BGxEjG6C19CjK4+s51Ia7YbLA2Ig475uZ" - }, - "address": "noble1l9fuzmqjcunar2f2yrdn0t9pu4nfpxnqmsx4sw", - "percent": "0.06%", - "airdrop": 190628.92057791096 - }, - { - "total_amount": 100000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlWaOoek19RykHGBqsKT/cbQLtfDZiP/YzSx8zLUT2WV" - }, - "address": "noble1l9t6044j6xu73z4ue9jksuf60srgxmagdc2ctc", - "percent": "0.0%", - "airdrop": 1756.574201090542 - }, - { - "total_amount": 272460254, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyYAkh3fdjZKM8i7KOhnUuwus800W8Y5hrNIkP7Z/5V7" - }, - "address": "noble1l9v3qvjgyeqwxcye6m3e9cx704qsyhjppwvfaj", - "percent": "0.0%", - "airdrop": 4785.9665299897615 - }, - { - "total_amount": 262768351, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlgaN/DthAIWfsIR9K/Udq3S9aahFzyf4Svjs9qVrtLb" - }, - "address": "noble1l9h8sd7xkslzfyanzfy9nrj4mwfpk5zaauxww9", - "percent": "0.0%", - "airdrop": 4615.7210622970415 - }, - { - "total_amount": 82671728, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmWvm8/t4bRouG+iXKRkiVT54ui3YDhDYp56OqKLVSsy" - }, - "address": "noble1l9cyc4c43dsl3vcu4sgh5j8z29w9z3p99knasc", - "percent": "0.0%", - "airdrop": 1452.1902456437458 - }, - { - "total_amount": 110997512, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApO0pnwpY20yY8LI/0FBBRoUBtEk/9Lp8bcB0MW6+ojn" - }, - "address": "noble1l97ywgefergtdvt6w9ndvy22g8r6n0fuywe5d6", - "percent": "0.0%", - "airdrop": 1949.7536596443786 - }, - { - "total_amount": 1037388884, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/PXpMDbp5X9Eot1HnZQBHFlnwI7KDK6MbfLctqVNS9n" - }, - "address": "noble1lxtng7r6lwyak4h6vtylsrnk5hk0nx7vm2lmum", - "percent": "0.01%", - "airdrop": 18222.50550132509 - }, - { - "total_amount": 63565497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6aKQa+3bKfV0ydHXvRdO22cfbypD5WUXzUqKjlgUAT/" - }, - "address": "noble1lxwe628lt2eekhj5eattmj6wanl4r4ga6d7lgx", - "percent": "0.0%", - "airdrop": 1116.5751210969825 - }, - { - "total_amount": 215803326, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArGXugVb1YaqqC51MIOG/BBEG4UuDiKzFS7IrI2BjJBH" - }, - "address": "noble1lx33kcpwxxqr3f7ppc2fr2ph3dwsae2fyxnh0w", - "percent": "0.0%", - "airdrop": 3790.745549611318 - }, - { - "total_amount": 92567893, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1FFuaD1b4SUjtJag+SxRTr59aXg3G9zxZ3ZDNLC6Nmf" - }, - "address": "noble1lxc2x22w8agrwg3x4ww40v6y05talx8w6fsrf6", - "percent": "0.0%", - "airdrop": 1626.0237269310976 - }, - { - "total_amount": 1052517068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3qklMMHHndW19ukzOGWJdNZCBvAQOV6K+anMwNoLBF6" - }, - "address": "noble1l8p72xcf2c0fdrue2et44adlrrtsqhrk8fpq6w", - "percent": "0.01%", - "airdrop": 18488.243278562597 - }, - { - "total_amount": 1388903807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArEZFuXNujMNfDLcOXwxdNwg2XCMGaW/+hZLdcxCZmzF" - }, - "address": "noble1l8xwq8k3an7py7cfg5nvn7dkxsa2z39gm0u2kf", - "percent": "0.01%", - "airdrop": 24397.125951726375 - }, - { - "total_amount": 536616052, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao06WwSpb38JrozMibZZXWeUsqMK0upqp8qrRKjdUg9z" - }, - "address": "noble1l8srjzctymy3v2046ccegm5jxgg0xpt3gmazu5", - "percent": "0.0%", - "airdrop": 9426.059128342607 - }, - { - "total_amount": 82355516, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5HF176h/Q1J/JTGakqqf7APjCcpajKOHCgUp5mbrnB+" - }, - "address": "noble1l8lznqwwve6yg00h2k7p3e3zpg47tt0g6ma6tq", - "percent": "0.0%", - "airdrop": 1446.6357472309933 - }, - { - "total_amount": 9285899581, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AriYDt9j/jcD7z+IxbO70HxTENXVLd8PX+z6g/qgFI4e" - }, - "address": "noble1lg9hu49zxetge30x36pf8nccy5xeq7vzqve20q", - "percent": "0.05%", - "airdrop": 163113.71637902074 - }, - { - "total_amount": 4253833181, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApDJxpSJbsMA+z/CiF9ntVoWxuMtrmqkJkLgFlFdjYy+" - }, - "address": "noble1lg8qrf8rgh0w8qwtlw0gxylnen04fwtv2tzvyt", - "percent": "0.02%", - "airdrop": 74721.73621487513 - }, - { - "total_amount": 849407283, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0j/zLoXPE2D9lp4OK2XXDQ5IC8s+HhusUqucfUl/uO5" - }, - "address": "noble1lggx93q0src9n08r8sat73hglr4cc3jzg8ytp8", - "percent": "0.0%", - "airdrop": 14920.469195362128 - }, - { - "total_amount": 756846319, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AznQxU1KEsf0er3RMkiDK+dw+yw1vSB+N9jwWSmcP1km" - }, - "address": "noble1lgd0ttsdyhqe2hydnak6a69pq9xukakv9tqvmn", - "percent": "0.0%", - "airdrop": 13294.567181457423 - }, - { - "total_amount": 68798520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwA+2r3WIjFmbBvRHgcc9a+szBXwhk1c/7kwcY00tQMO" - }, - "address": "noble1lg4c5zpusk320zkwndz9ww7m2k6p69gmgtxs37", - "percent": "0.0%", - "airdrop": 1208.4970530521166 - }, - { - "total_amount": 6267353164, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxbfJtRy8tjw9iqg2Nhcukwx0W6+YLL3JnOWOLnBYGaL" - }, - "address": "noble1lfymnar9l02628f67g5qzqd4cdnkut7qksmgj6", - "percent": "0.04%", - "airdrop": 110090.7087700558 - }, - { - "total_amount": 123122211, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArdT5ia9mnk6JXCesdrN70YRJgFMscP0MWN6+dFXkITM" - }, - "address": "noble1lfv8d03uhtt9j4vrtp0760d9kv33d8xuqv2t4r", - "percent": "0.0%", - "airdrop": 2162.732994238261 - }, - { - "total_amount": 248245284, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnNe0u4LNxAw5nS2jgq68LaeaA077hPs47M4A9V6y/KB" - }, - "address": "noble1lf4ejdaq2zedk7tm9vt6t00mmc2ugn3wvgt58c", - "percent": "0.0%", - "airdrop": 4360.612614167947 - }, - { - "total_amount": 1753997432, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A1hionTVsSQyjQKzMAF38ag2g44RgiQhsyaYgMkj4PYH" - }, - "address": "noble1lfe8ymgewajcztgasefl9nfvz3ltjg4vncjh9n", - "percent": "0.01%", - "airdrop": 30810.266378302626 - }, - { - "total_amount": 216281963, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzHbof3JKxQlVBnHiCw3M6r27miTXtf1CmRj/oPOCZuo" - }, - "address": "noble1l2rjg5mz90z0vemdzamx8ds9j6ct6jmdd0n07k", - "percent": "0.0%", - "airdrop": 3799.1531636701916 - }, - { - "total_amount": 50096064, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AobsETN9Iz1h0QZGUyWiM5zpkRYsQ0GDYeDBuW0CANc9" - }, - "address": "noble1l29a3sw90l5zjnnap00ay0fgyaz62rmac9gp0h", - "percent": "0.0%", - "airdrop": 879.9745359858066 - }, - { - "total_amount": 198278029, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsehW+Mx4vIOqC9lqqSRgSazw9FUulPLbC3Kecko6X22" - }, - "address": "noble1l2x7rsz8y6d5k635u40l0j4vxj7uystd2v5e9v", - "percent": "0.0%", - "airdrop": 3482.9007038448235 - }, - { - "total_amount": 56070402, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Awv1dCeazN78edJG8Nc91JyBc+0tQUczEmUkdYZhQX/6" - }, - "address": "noble1l2sxgvv6k7gcw7ymjnctddcq8wp9nmyql47h0k", - "percent": "0.0%", - "airdrop": 984.9182159797552 - }, - { - "total_amount": 93911193, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApRyTnk/5cjnflrHGv6ma+K7zMkLjmJ+CSx/kbLnqOJY" - }, - "address": "noble1l2h0y53f0ehg23vps9ljmawlegzjd5r8a3yrzk", - "percent": "0.0%", - "airdrop": 1649.6197881743471 - }, - { - "total_amount": 58888118, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax7+wvcdWYJIj78dGa6yYEaDnWVlfaRBSeY0fybUkM8j" - }, - "address": "noble1ltzr3yvjpv7skdmh9x57y7zs0rt9f79yz879up", - "percent": "0.0%", - "airdrop": 1034.4134882957558 - }, - { - "total_amount": 84598699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alc5HTFyJD1ITAbNiedjfOzR64dj/IQwgLYM4j2BnLJz" - }, - "address": "noble1ltfrww7s2lg5nnyke6je7dvhkzjq47gvhlpnyc", - "percent": "0.0%", - "airdrop": 1486.0389210922424 - }, - { - "total_amount": 945660844, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhyDuDKE7qZMBAIXwjthIJVPsK4H0gfpw0zE7xZDYqpX" - }, - "address": "noble1ltw8h7mt7frwqq8wv687nzvmstsfug3xe4mf3m", - "percent": "0.01%", - "airdrop": 16611.234415519077 - }, - { - "total_amount": 464366912, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Alsy7xcuqQZOsuggL8ECFa0DTFu9a9uUhJwUF3xn/F7S" - }, - "address": "noble1ltkcpfdrp0a40esyfgzrp8sp5htdn5u2k5g65r", - "percent": "0.0%", - "airdrop": 8156.94937459282 - }, - { - "total_amount": 200108946, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmzVMFIEhKT+PAqLyxGnHl2b7+cwsQXL6drqspaCXRoy" - }, - "address": "noble1lt647x80vdk5rhj00dkgfsmkpay085lqqtwxcq", - "percent": "0.0%", - "airdrop": 3515.0621195102044 - }, - { - "total_amount": 252810478, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjJhdShqZ2g8MJ+qZUlin9c+fpGd6Ry49IK7kNAekPCe" - }, - "address": "noble1ltmfyrtcpdlz6sfxalags0n0hsvn0vfu6rx2fe", - "percent": "0.0%", - "airdrop": 4440.80363420168 - }, - { - "total_amount": 271510567, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9t/VX2pyR5or9jIFpxnDF/A1PrUnosJc+N1VxRKwsFM" - }, - "address": "noble1lta73yanynysxw9c7tmcaa6hhv47fddutezhjh", - "percent": "0.0%", - "airdrop": 4769.284573156651 - }, - { - "total_amount": 94331276, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjKbM1/tn464Qi8bPw3qlt+mFMbBhyzk7L/066FnjINi" - }, - "address": "noble1lvqvt0s85fjc37kl6dk64qrlzjn6ura03wj6k2", - "percent": "0.0%", - "airdrop": 1656.9988577755141 - }, - { - "total_amount": 106134225, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgFqFiiW3a+VeRzEn+jpYq2FqIrs41sIFEyIZ7MGwDKa" - }, - "address": "noble1lvtuxshezha4kyry3gv52yxf54nz0qn9mrv28m", - "percent": "0.0%", - "airdrop": 1864.3264148773883 - }, - { - "total_amount": 491748309, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkdSvrk0nxFQgZ6g+b889F98WZM47J/YDbADQ2vHzUs/" - }, - "address": "noble1lvd59g5nfhp2xse48y5a969w04enxut48x8fed", - "percent": "0.0%", - "airdrop": 8637.923930193 - }, - { - "total_amount": 946967596, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3w10tH5rGGS7M9DU5JDbFOz6aTuPc76X83ha3UqJoDg" - }, - "address": "noble1lv4ls9yd36exsluwajqc7va4f05ejrg03lsm5l", - "percent": "0.01%", - "airdrop": 16634.18848402331 - }, - { - "total_amount": 261416481, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzN5ZfI3tWo5W3MVyD4eydYhSX9TRi6i+C+lnia2bWj4" - }, - "address": "noble1lvcy8f2kscru8vcrynjef2enf06mrg3l9cmkey", - "percent": "0.0%", - "airdrop": 4591.974462644759 - }, - { - "total_amount": 107708154, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AmV5hnv0M2zhJl+K134iHmH2QUTVLkcVPBJil0KPxGhh" - }, - "address": "noble1ldp4a6ke9dqf35j6jer74cz79kzrp2n4gllp6k", - "percent": "0.0%", - "airdrop": 1891.9736456348708 - }, - { - "total_amount": 773053595, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auz3OMHMPZzv0RcxG0RtDT6uOGRk1iHiQjMCcMlkzO02" - }, - "address": "noble1ldzrpm3yy79xqahx2a46ndshdtyawz795sm3y8", - "percent": "0.0%", - "airdrop": 13579.260010372964 - }, - { - "total_amount": 345882041, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AsFoAe5pvOmN94Bf6h6grJgm4Ru19oEk4/fWZWxh1qz8" - }, - "address": "noble1ldnx82hujp2r4qs64pyktj9kawkqk3pnnhlk0a", - "percent": "0.0%", - "airdrop": 6075.674698411411 - }, - { - "total_amount": 120470534, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AicnBYEG6ZOA++w1+O+JrgJawxfbOGNju/8IEwnL6EN5" - }, - "address": "noble1ld5c2azzsuqkmunds4x5etzw2ghct8pxdzwl5c", - "percent": "0.0%", - "airdrop": 2116.15432016001 - }, - { - "total_amount": 9126231266, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+H22EuuM9MsgvoUzInGk6cvHNr2P43v8NBGrvzkLZV1" - }, - "address": "noble1ld68ctk37y2vfwxm0ck9837y5txc8dyw9dsfdk", - "percent": "0.05%", - "airdrop": 160309.02395041476 - }, - { - "total_amount": 87632069, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aronmzd/67spc9krIByRWpQEPTgr7/vwxnobAZJ1kr8N" - }, - "address": "noble1ldu87m8rsgw0q6h694hwmywjtxjvp6ajt30fz7", - "percent": "0.0%", - "airdrop": 1539.3223159358627 - }, - { - "total_amount": 2790336444, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Cbi7e53HS5j/Bhp+H+s2jGKXn/4BMTEzVtK3n2cQF/" - }, - "address": "noble1lwzf85748jzxdthtdjvckrrm52ac26vqxtekxe", - "percent": "0.02%", - "airdrop": 49014.330098931234 - }, - { - "total_amount": 87266151, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A95OQcoc1UIf24KGgvWyoBt/JSJp7G+fgeS8OC8YeEUX" - }, - "address": "noble1lw2sws6yqff424rxt89e8py0c2fd8f2sqa856r", - "percent": "0.0%", - "airdrop": 1532.8946947507159 - }, - { - "total_amount": 1094495690, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar2/qHHHA6rq1JOGAKrtt5oBihcC3Yj1aeSC/r2U95oU" - }, - "address": "noble1lw0pxd33me806txhkftlukpe3d2g0a2y3qs259", - "percent": "0.01%", - "airdrop": 19225.628922587915 - }, - { - "total_amount": 200000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7BN4+u5TWj/MY1HoleLIhEl7AEM1cZv/F3VNGjzcZH6" - }, - "address": "noble1lw547lmufxnjzmrdnuj2krkd72xuh8pgky7p2q", - "percent": "0.0%", - "airdrop": 3513.148402181084 - }, - { - "total_amount": 6124088538, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/7JqwXAvB1yJfvqsPfjRydaPKWLQRjpW3NzEq03JAvJ" - }, - "address": "noble1l0rpjg5kc5medvpj7ynlank5ta5dcequpjj37j", - "percent": "0.04%", - "airdrop": 107574.15931045095 - }, - { - "total_amount": 51726149, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3foT2nBdEFl/1mSK7YaVGgPPn0P0rLVvwHpr4/0/vXV" - }, - "address": "noble1l0fp29pham3hwsc98e43gncndg7xq78xrpzs0u", - "percent": "0.0%", - "airdrop": 908.6081885516534 - }, - { - "total_amount": 307449413, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ahv4DO6iNlTlajSb8XLeGwZmO04ad1LXsPYuKhfJtND+" - }, - "address": "noble1l0wgcqgj4egc7r5q7atf048lxhwyz36gt38syh", - "percent": "0.0%", - "airdrop": 5400.5770701623105 - }, - { - "total_amount": 69153710, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AitEoIkndu5hCmTo5E6qGBmUpkjrl4WNV9AUr3BqqBUs" - }, - "address": "noble1ls9ws9mvdc86t6r5q8hvzj62q9lzm24vvz6u5s", - "percent": "0.0%", - "airdrop": 1214.73622895697 - }, - { - "total_amount": 120813645, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A01VquXHcoN+DC1Q5K4N4W2SDMXZjsWaepRmjkcU8ijy" - }, - "address": "noble1lsxwwpghn065ft24at8mdd09sc5v59ujvn23rp", - "percent": "0.0%", - "airdrop": 2122.1813194671136 - }, - { - "total_amount": 328107654, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ApD8mVuezGo7zvT+rZnnfogTitGbIGcM9WDGnjwX5zxT" - }, - "address": "noble1lsjznk8uzm8g90majatgdultt7wtjccmnwewas", - "percent": "0.0%", - "airdrop": 5763.4544019674195 - }, - { - "total_amount": 97336240, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjL/oox5ZBXKRTaTwQYZJFeDms3VOWErkfGgTZR8bpfj" - }, - "address": "noble1lsctvvl884tgcwz0zj5553ek8c33ta42et3mxu", - "percent": "0.0%", - "airdrop": 1709.7832801515724 - }, - { - "total_amount": 100800000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5TiKbiPRXyp7kQb+fugA2O6IXyaEGQDatzHEEFkTsM5" - }, - "address": "noble1ls6mvp589q7qlzrev4pfdsdwn5wtvzgvkezm3g", - "percent": "0.0%", - "airdrop": 1770.6267946992664 - }, - { - "total_amount": 442509383, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiBXevNdOCvZZtgWNWcboBkfAmaN6K/j/fGArSuBqhFs" - }, - "address": "noble1ls75vk5rvphm0l4e5lm562z6ljzkdv9h0x34fg", - "percent": "0.0%", - "airdrop": 7773.005659182937 - }, - { - "total_amount": 3258225229, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5wt2do8/870PMDEUnlVE3Zb521wjpMr4NfTmTP9o83x" - }, - "address": "noble1l3qeep4naxdgeszx333dwc2fcma3uvxgssyt6d", - "percent": "0.02%", - "airdrop": 57233.14378603723 - }, - { - "total_amount": 83659145362, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aq1UQzxfbFbHh7+nVjVtug4a30uZm0NeSSs2+WkeNCDM" - }, - "address": "noble1l3xk8xw5pq80fcv49dvud3xmds6hcr7uacnm9s", - "percent": "0.49%", - "airdrop": 1469534.9642817266 - }, - { - "total_amount": 256544361, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah1bEwPfsA2zmisRetVh/ZP4bebyszwWOEm0LJJ3chpJ" - }, - "address": "noble1l32960n95qm9e94rljr6ynjxpp4xlkncltep07", - "percent": "0.0%", - "airdrop": 4506.392059678586 - }, - { - "total_amount": 230585384, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0Vn0Z+Zf2X10WfsuuhrAFtxtSSjZsaOWp+yvwsuYqmH" - }, - "address": "noble1l3n2cfy4muc56mtf4cqrv493manrc4vwxlym3u", - "percent": "0.0%", - "airdrop": 4050.4033668295588 - }, - { - "total_amount": 115458777, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+1ZPrKQcI1fnKHHNZfyw8ynFZkLTop0LPVjH3SeyKEk" - }, - "address": "noble1l3cd2dmy48339k8l9tf3n8kzxqman0wswflse2", - "percent": "0.0%", - "airdrop": 2028.1190896766605 - }, - { - "total_amount": 239836144, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ang0siyK71XGcc/lCr0Bbq8Z/7mRKiKnBQos831tL4Oa" - }, - "address": "noble1l3myhuhprsa0278kmkl2lq5lu7ce0j425zufgz", - "percent": "0.0%", - "airdrop": 4212.899830394362 - }, - { - "total_amount": 278258180, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+8YI9U/GlQ0KvHrzIXhdyME1hGAFE8cVOKUJCSPhn+R" - }, - "address": "noble1ljwsja7mphyj4ua7cm4d35c0mzevvnpqmautvr", - "percent": "0.0%", - "airdrop": 4887.811402304082 - }, - { - "total_amount": 6956728969, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AvEzqyKJWRTgFwwP/5hTPlSNwkrGeCQ4bSY/TDUtoIIA" - }, - "address": "noble1ljnrj80zv05zqpc5vr9dxlhztaw5kemd56ksu7", - "percent": "0.04%", - "airdrop": 122200.10630924604 - }, - { - "total_amount": 52824177, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AiNC2MghZ8WbEAbX8u51uL/3ViX2yRSJXhUn1aTTK4C3" - }, - "address": "noble1ljnupjlz0cpkumkkmamjyxxr6vq2jh9f2zjxwf", - "percent": "0.0%", - "airdrop": 927.8958651204038 - }, - { - "total_amount": 852149741, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjstqAnUCNnuyUVU+HgW3x/hoPcwXNeyJkfYn/GBxoVd" - }, - "address": "noble1lj79e46emywnelyg8heukmmfjqfgkvrn37zgr6", - "percent": "0.0%", - "airdrop": 14968.642505065873 - }, - { - "total_amount": 238006412, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3/JXzPgHUwMKtg2Kax5DtCndNSqC7afuiURAG4Jd0p8" - }, - "address": "noble1ljll6ewqtngm5je40q8pgzxc8j9yvhkssy3jhc", - "percent": "0.0%", - "airdrop": 4180.759230133263 - }, - { - "total_amount": 50868917, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhW/DpzuidRhcKyVvoKEBpnlejMAMfeDSzQGThr16s68" - }, - "address": "noble1lnq3mjkflk6sce7fm0s6xf05gz92tz5dtcmq5m", - "percent": "0.0%", - "airdrop": 893.5502723961608 - }, - { - "total_amount": 596248937, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/7je+kfV6BFf3MSt3eT7HssOmzBhLm/zurGpIgbLLh/" - }, - "address": "noble1lndqgfwm5tva6apcz02k7xhan9f26f0kj3ln64", - "percent": "0.0%", - "airdrop": 10473.555001618599 - }, - { - "total_amount": 50255033, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzOy+1mJel5TV8GFzMc+m2um60Z/HSSHzHndG/366/I6" - }, - "address": "noble1lnsqlfkuynjtj5pa0r2uf82yw7jfznh9rwgh6f", - "percent": "0.0%", - "airdrop": 882.7669444275383 - }, - { - "total_amount": 54972295, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+w/+KeYaBlHKITi4J2gkl4As0VUHJAZaOYt3oEHxVtD" - }, - "address": "noble1lnjpwgg4wdyjer6n89r2k4v2d2x77grt5lxgqk", - "percent": "0.0%", - "airdrop": 965.629151717386 - }, - { - "total_amount": 10888417520, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ai/v7t5eQtTf0TNXFZ3aDk0Znr/70TPERMKP9TzrBPun" - }, - "address": "noble1lnkve7rzwaln92y52twpgj0ve5myg7s05xyklk", - "percent": "0.06%", - "airdrop": 191263.1330633426 - }, - { - "total_amount": 55732574, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuHk1eLa0j2rYbxmSnqgOgyek33cay04vXY3BMCoXmZ2" - }, - "address": "noble1ln6aq4m2xpkqtd7hty6ycp69hm4qp72ugua0ll", - "percent": "0.0%", - "airdrop": 978.984016487695 - }, - { - "total_amount": 1478373395, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ajf7GM+Gw4p+0R5Qrifk2fpwaxZ9Acv4XGUn0DUWWGex" - }, - "address": "noble1lnlwk8g83d5n3x4k5303asl2re8gswteqmcz4p", - "percent": "0.01%", - "airdrop": 25968.72565235637 - }, - { - "total_amount": 355357422, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0siGK+/m791Bmxyq5SIDIaPzXOnXLOFGZuymYpOf5vu" - }, - "address": "noble1l5w2p8075h3jyvjc76g25d5vhng4jppdunja6d", - "percent": "0.0%", - "airdrop": 6242.116796512446 - }, - { - "total_amount": 1276084857, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5R2bepI2sNOW/dRgZXnANbmF8Qnt6L+vBXlpqf4h8FE" - }, - "address": "noble1l5skmlxqe0zaruaar0nkgn5vmel84vj6evvwge", - "percent": "0.01%", - "airdrop": 22415.377382085135 - }, - { - "total_amount": 309496817, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Av15epevBh9Mm9UdABaADlC5bpbnqKDY2wMUVEvsbrpf" - }, - "address": "noble1l5a2jqe6f9v8xtxa0rrk6kjmg84t2lat78kx06", - "percent": "0.0%", - "airdrop": 5436.541240618407 - }, - { - "total_amount": 606410971, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyyL9g5FuTl2x7T//iFQp7P1lKQeA59ciIF5ooajEWJQ" - }, - "address": "noble1l49pstl45uxn3pmdeakk3ndjdag6ve8duzw4xw", - "percent": "0.0%", - "airdrop": 10652.058669168648 - }, - { - "total_amount": 503830751, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A16VppMJtexVS8GrpOokpMaaq6q8b4hdz94/jmbvMhDY" - }, - "address": "noble1l4xuyn63c9w3ftap4692utdjvhtx3yru6dujxu", - "percent": "0.0%", - "airdrop": 8850.160989226728 - }, - { - "total_amount": 450674427, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjVDQzQgVF5+VXzCLX2c5eaYQHNsk/2FoGc4zvFE1fu5" - }, - "address": "noble1l4twp469dd3c220jlj34d6fmjdsxyus00z7lmx", - "percent": "0.0%", - "airdrop": 7916.430715594627 - }, - { - "total_amount": 166889855, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhdciaHY5oPeoaAdw0nA0hYFGvdbN9EhwsA4cM3rt5XN" - }, - "address": "noble1l4t4pcja4lc9r5l4wsa8d6h44zyrp7nm5gff5d", - "percent": "0.0%", - "airdrop": 2931.5441371674137 - }, - { - "total_amount": 50591424, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0xoWDNikAZ4SeWNQk4CTInemqb/uEa5pkk+4uS06xJp" - }, - "address": "noble1l4v88qrprva0sjzl862wa0tcas04ddqu35ykar", - "percent": "0.0%", - "airdrop": 888.6759019483287 - }, - { - "total_amount": 182696808, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5kQQdlLY1KrYIpXjqCcLFnbmrRyUa7tqLA3mYwb9k86" - }, - "address": "noble1l40zf8gfrlj9ht34ax53yx8w4tehvhdrk86xfy", - "percent": "0.0%", - "airdrop": 3209.2049955439215 - }, - { - "total_amount": 70701080, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Akw23QRaNHElssNUvY3X3HkwA/3rYXBmVSPGbEAQH0yh" - }, - "address": "noble1l4jauwlfhg3vv6c3hx96ajf294nx3ktgatqkg0", - "percent": "0.0%", - "airdrop": 1241.916931172385 - }, - { - "total_amount": 54355742, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A24wFTLRt5EFTJwD0A+PmYhopcaqsQyMI9uBQJEGAtS6" - }, - "address": "noble1l4kzcv0asqxsgtnyf7gkedv7ek7d4wpk6l48vm", - "percent": "0.0%", - "airdrop": 954.7989407833362 - }, - { - "total_amount": 261327926, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A87CPBOb0GdLVE6XP3fAZcI0L5r9Bz+6upPwP8qcDrrj" - }, - "address": "noble1l4m52wylcl3s20nfxjrf3ve7hk6ett3j7gwdwa", - "percent": "0.0%", - "airdrop": 4590.418928360983 - }, - { - "total_amount": 349989965, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Auytmtf84lV+7kduWBRbLY2AzLzrmCflpDm9yJOfEFdo" - }, - "address": "noble1l4ugjs3h5kvw0fwmwv0ze7hwtke5hvlrht5dg9", - "percent": "0.0%", - "airdrop": 6147.833431595817 - }, - { - "total_amount": 80884641, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/2o3qHbZhjBqnAR936Qa9DI4/JTjj69mTKfW6UNdcxF" - }, - "address": "noble1l4a7m0slre2jxpaz0ekrtgaxncf584hj6lu6a4", - "percent": "0.0%", - "airdrop": 1420.798736450703 - }, - { - "total_amount": 2170942479, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AyHucehdqHa4Z6QqEj+4Fekjuzn5otF+6sIeslEyYRY7" - }, - "address": "noble1lkr6ckua0lpemthxd9c2fd3mmmq706ylmfzkgp", - "percent": "0.01%", - "airdrop": 38134.21550662945 - }, - { - "total_amount": 51305840, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjPia4bciQF+WS48G774gMuWDSBHo0rW9hQJrrY5QCmX" - }, - "address": "noble1lkf20adrnxsppgkxvcj809qytmadwpf02atnte", - "percent": "0.0%", - "airdrop": 901.2251490927918 - }, - { - "total_amount": 91315117, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6+ASP+9rtmefc0Pdri+2r0+apAtr5uv8CvMwHhyZc3o" - }, - "address": "noble1lkdcfz9ukhcmhvcfrzxy357ysp2u6txzdyfpyp", - "percent": "0.0%", - "airdrop": 1604.0177869176437 - }, - { - "total_amount": 125907867, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ah0czccbIeuNJlPbfFXhHjjyVu654tpK60B9mHm8BY90" - }, - "address": "noble1lkdaw88vhn4h74dpwqv8pv9lwcn6c8fzr5u00u", - "percent": "0.0%", - "airdrop": 2211.665108865392 - }, - { - "total_amount": 1362216868, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7sHh7bvvoo+C2WveATpgFGi7EbBdNAveD2/wXtsDhZ7" - }, - "address": "noble1lk07pxle2mtpudymyx5z8mggku7wmnk7dm324k", - "percent": "0.01%", - "airdrop": 23928.3500661916 - }, - { - "total_amount": 88169068, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Am0Xwm8luXpQg+chMpTh1Um2Uh18SMfNmXSc1bF2MM2J" - }, - "address": "noble1lkszs2qrkuep9nkq8tupg97qmf80ef0p2vx235", - "percent": "0.0%", - "airdrop": 1548.7551018299766 - }, - { - "total_amount": 671011497, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AzB7rh/77VeryxtasQ/PqNqTCtir0ugJs+ugnM2R8w9W" - }, - "address": "noble1lkn0vuqcj7jaxu2kdtddz7wzf6w3u5ujl2t760", - "percent": "0.0%", - "airdrop": 11786.814842653435 - }, - { - "total_amount": 148513111, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Au3U2ONvvLUBom/XzclXTRxYL1VBV9Ryd2T54Q5K1cDM" - }, - "address": "noble1lkefm0ut6u5tkdue5v480pdyh7q32w8d8e89l8", - "percent": "0.0%", - "airdrop": 2608.7429930629596 - }, - { - "total_amount": 614851831, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ay1QYFsQogIagmZEoylZAb6Zi2Nq2GprxyJ8z29Wi10V" - }, - "address": "noble1lk7f9maznx6jzlvy2hdt07dsve9msxzny0fe8n", - "percent": "0.0%", - "airdrop": 10800.32863827882 - }, - { - "total_amount": 662478870, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2pIMerS1CqhFq3+hETnI+cLArhITwHbEwywWmQhL4L8" - }, - "address": "noble1lkl9uv0cljhzmhuzdvd2lf2swyrxnzyedkykn0", - "percent": "0.0%", - "airdrop": 11636.93291809615 - }, - { - "total_amount": 96682437, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2/4WGGYoN/p5zlfB2fmn8CUVykUlxW9BwGiJo8b5C3K" - }, - "address": "noble1lhgwn8w4k7xs6f6zzwmz42drumjm5ajgrqlcw0", - "percent": "0.0%", - "airdrop": 1698.2987453276166 - }, - { - "total_amount": 1573239353, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/jQ9FnObL9nIZi3B5rXjsLjwXd0lvmeqt6XtofUR/tM" - }, - "address": "noble1lhfe247knxqcza36mucwgqqlm3gwpytjvcqedv", - "percent": "0.01%", - "airdrop": 27635.116596201762 - }, - { - "total_amount": 80039786, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8HRkY8TUp4rypWkH1SPbgr2e6XCvzNxEPz8Neoq2JTx" - }, - "address": "noble1lhhzy4k35msec50hwjtryhv7qscy70v3slzfzf", - "percent": "0.0%", - "airdrop": 1405.9582314840795 - }, - { - "total_amount": 320146065, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0BZXe0RPv92Aakqxt2Yu42oB4klyCdw2kqu+9QIPhPe" - }, - "address": "noble1lcqk0s7lz6tstuwfpj8cc3y6l65yy4y9ah8ac3", - "percent": "0.0%", - "airdrop": 5623.603183596557 - }, - { - "total_amount": 162284218, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A2OSYagVGJ2xDDj6IFWUqgmDv4oy1H0YEyebX5dmdgFz" - }, - "address": "noble1lc8k75hqvyytwycf8ncpgpheg77yzrldxtnxe5", - "percent": "0.0%", - "airdrop": 2850.642705829534 - }, - { - "total_amount": 1050015552, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A8owI9g28itb9wg/A1Kl6KJT8/nAi3E4hGbwqUhLc7b8" - }, - "address": "noble1lcggu63cgssjgq9xmzp2tn3f32aqqgq0ufvj7u", - "percent": "0.01%", - "airdrop": 18444.302293870445 - }, - { - "total_amount": 109742021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "As09MZdPVbtKWR+kW1e5mYuWckiz7SGxD/vZ+EGbHbj/" - }, - "address": "noble1lc2ful5tkm5mjnn8msqwvgjpm22p9xe3mxfh6t", - "percent": "0.0%", - "airdrop": 1927.700028641365 - }, - { - "total_amount": 515597392, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A7ZCykohSW8rzAVhdwdUld3akcQi+CI8gFxFSx+aPnUB" - }, - "address": "noble1lcs2dy5c26yukpk6qqp26l338c7h23zy0jtv7x", - "percent": "0.0%", - "airdrop": 9056.85076936767 - }, - { - "total_amount": 232444773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtVvhxG7sw4YN0d/2TJ/a0JU4YOImDFQuCeukK9XphBg" - }, - "address": "noble1lcscnyympy7xnezym4fsvtdh9rwsw9d63dfj9u", - "percent": "0.0%", - "airdrop": 4083.064914301474 - }, - { - "total_amount": 1414999786, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkZrxdIGXKW9wmVeVIBnFXfTu23v5VkZVPtzEV1PAiQg" - }, - "address": "noble1lcj3lt2gy8kstt278km022fv7jvgjp4xjv73qy", - "percent": "0.01%", - "airdrop": 24855.521186362377 - }, - { - "total_amount": 143225322, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgmObdUTw+dJuEKnASWmyo3Q1RwHbHJxB/fr6LBHUAzq" - }, - "address": "noble1lc4sef4np2qc44hapckyy80ntlkxl48hfzc6qy", - "percent": "0.0%", - "airdrop": 2515.8590556808563 - }, - { - "total_amount": 2868629590, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArQot8O//RcxSuJ1fbwxTVlP9zHmNdfLu/v/GXhoSozV" - }, - "address": "noble1lceeltsfskth3803vhtjw49ady7fc5jaz6c49e", - "percent": "0.02%", - "airdrop": 50389.60730278939 - }, - { - "total_amount": 75840328, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AjcqWyRWNNyP6g+ow0veqiB6/e8iVoYikI7P0VTrToFp" - }, - "address": "noble1lejmwfc6nthyv2dqme7mx699w7zzjwr0yfj88r", - "percent": "0.0%", - "airdrop": 1332.1916356704467 - }, - { - "total_amount": 50011495, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A0+LQVIpHrq991iO/rb1596dgZlm9+FejSiVO02UaQ2j" - }, - "address": "noble1lenxrthdy96jjdtty075awtf4hjsjqcjyu5hee", - "percent": "0.0%", - "airdrop": 878.4890187496864 - }, - { - "total_amount": 196171235, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+gwbPELdLKesrOBOAWXwE+G7k64N8psiKZ0jlZPbsKD" - }, - "address": "noble1leuy2a2jsw330c7re7hdx5v7ftk3nk8k7rnfxw", - "percent": "0.0%", - "airdrop": 3445.8933039707 - }, - { - "total_amount": 427202490, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Aj8yJwWJZD99FkpPuYgkSQSuyhLHBcKGeHV4tZHCZ62+" - }, - "address": "noble1l6zt73u4499gry8pscynxktlljchexzxu9fhyu", - "percent": "0.0%", - "airdrop": 7504.128725756402 - }, - { - "total_amount": 1083217325, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/SdrVJvzKAbxvs6j8/IxPUcxllhs0zxhY/Jfa2FBqzC" - }, - "address": "noble1l6rqxuqz2rrapnfkhpurux0xa369f0c0myplgh", - "percent": "0.01%", - "airdrop": 19027.51607269309 - }, - { - "total_amount": 83067047, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ax2o0sgGyUsWx2u6TdwKny0Jk042n0k97BwROaVGw3cH" - }, - "address": "noble1l64egejthmtgmf2a3h7fqatvv8q4q49hejx5tg", - "percent": "0.0%", - "airdrop": 1459.134317209755 - }, - { - "total_amount": 656652021, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5IcqB7cNw22SsCLwVUgkqpfBCrbZjEQpjpl18RPKvkE" - }, - "address": "noble1lmzzxc4yggqsfkl0y7gahnst3en84p933yty58", - "percent": "0.0%", - "airdrop": 11534.579991825647 - }, - { - "total_amount": 2671661995, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AhiJ2bRK+R4iiIifZfUczWVbB9pbPFlQ/I654O+ozISV" - }, - "address": "noble1lmzeytaslf4urxf2d5pr2agjlhamhqhse3vcrg", - "percent": "0.02%", - "airdrop": 46929.72534451089 - }, - { - "total_amount": 13856408545, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AwiHV9IQYSCCFolq1CQb/Sa0l5654Y8kbYavZXeyuzwd" - }, - "address": "noble1lmrapmzkfgn9hhvauyu7efgkrjgyhqs4ctw3hm", - "percent": "0.08%", - "airdrop": 243398.09769917536 - }, - { - "total_amount": 258516773, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AgdIsgzbPc78olD3F1n+o2c7dyp85W7R5b9xw/+RPuH3" - }, - "address": "noble1lmnx8a8hv45040y4h6yrx2e4t03zn6e33w2rev", - "percent": "0.0%", - "airdrop": 4541.0389400098 - }, - { - "total_amount": 209925364, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A9c5Mv9EO7aCh+S9bc/yt5JnLe1AK/SIZuz3Ir1F1uiy" - }, - "address": "noble1lmnxjevhuv35ryxcmjzh2vl6z4dqty09dxs5xg", - "percent": "0.0%", - "airdrop": 3687.494785569412 - }, - { - "total_amount": 12358502964, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6idEQQLSBh73as5JNcjRusg8WNam7KDTw01jcr74XFx" - }, - "address": "noble1lm7u2g4w23rv5z5kgz8e8w8s33qjt8p0dv5plz", - "percent": "0.06999999999999999%", - "airdrop": 217086.27470663394 - }, - { - "total_amount": 441171960, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ar+H+ahdNitgUIkg5gsPfVG3BqCeoZsDUNgHXL0yea0l" - }, - "address": "noble1lm77mf5fhz5lyl6q466fk9847efuy456g9nj6h", - "percent": "0.0%", - "airdrop": 7749.512831805486 - }, - { - "total_amount": 146707045, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+nn5O9XzruzGkqDMKpdF0DxKR3A8aSntfwswZaAGHCA" - }, - "address": "noble1lmlyrlfw2eqd27a80p6pf3aldpsaxzkhh2jgpd", - "percent": "0.0%", - "airdrop": 2577.0181036522918 - }, - { - "total_amount": 18641358930, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "ArfB2xDqQBXRGYTRSyEIRxhEtnwcRHpA12dv4qE3Le0g" - }, - "address": "noble1luz0vzxttswnt5m38wavhkush5ahtkcwx9awzw", - "percent": "0.11%", - "airdrop": 327449.3016970679 - }, - { - "total_amount": 83795508, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6JLwFJ1cROaAoekv7SbvwzB/JASl4zJkAsvWI/A/dHp" - }, - "address": "noble1lu86xnurc70cgpc2jfhqnjkzdjr89gu8lkqmu9", - "percent": "0.0%", - "airdrop": 1471.9302752007611 - }, - { - "total_amount": 129091564, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+UvSrqUBf68g2isRRPOokqv7a0kmRzBT5n97qnVSDrJ" - }, - "address": "noble1lufejwhqeaswyqdrew6rnmjmsq9xmv9autp347", - "percent": "0.0%", - "airdrop": 2267.5891090082855 - }, - { - "total_amount": 6828479236, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A4DLXevy04jEbdyy48ge1rFDUUhkw2MKlq2HrjNMdWG9" - }, - "address": "noble1lu2qtcqq4lva2ycqgumtjzxpk7gymj2e8k0grj", - "percent": "0.04%", - "airdrop": 119947.30458640054 - }, - { - "total_amount": 599293864, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxUeW8B/1kNGw+Eisj1Hgf1r5yDe/Kmj5IyROtRLUlGj" - }, - "address": "noble1lutg7qzkek6m7gh3yn8ydysc32fyyp6a9jcq29", - "percent": "0.0%", - "airdrop": 10527.041403742638 - }, - { - "total_amount": 9422909807, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AuBJNc9Ni9k1nlWC1FHP58237uBBdrFgikMRUVgo9TSh" - }, - "address": "noble1lujrdh66jk9fqp9lrdu2va7t5sl0net0tt4mu9", - "percent": "0.06%", - "airdrop": 165520.40266179258 - }, - { - "total_amount": 873359923, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A/guS28B63BeNwBxthvrVQCSKRpwqGIW8hHjByDrO6qV" - }, - "address": "noble1lukm3xz9g6qxnm8dt9xjhdrhdvqygmp2uz9xfv", - "percent": "0.01%", - "airdrop": 15341.215090082222 - }, - { - "total_amount": 890504131, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6jM9+0jx+9nbXQ3aFsIoxk9R2ybLKlJRm6FryOVfTTm" - }, - "address": "noble1luu828ectm7xrjx5yfl0k2vsn7drzrvdwu50zs", - "percent": "0.01%", - "airdrop": 15642.365824791523 - }, - { - "total_amount": 695916994, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqeDIhRdhoLoiua2SbD+jY+lQlFA2BfBS0AyTPmS/Gkz" - }, - "address": "noble1laqefwck8mkxt44jfn7fnpynfv9f2utyxhpc02", - "percent": "0.0%", - "airdrop": 12224.298377608815 - }, - { - "total_amount": 22567382077, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtksEb39KYTSkrNpfmoMXPudh/D4y0XriEqy59G1bbXG" - }, - "address": "noble1la4t7jee73a4zqg9ccs2acjt462qjs5x7u9ats", - "percent": "0.13%", - "airdrop": 396412.8114261129 - }, - { - "total_amount": 3874672107, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A6l3QpTM+wxnVs9ZkI55FlkgOfTjK1g0d6jNa6UlFZZP" - }, - "address": "noble1la6cj7zjuqqsghvwcs82tutw4x5sd95advs06c", - "percent": "0.02%", - "airdrop": 68061.49060841333 - }, - { - "total_amount": 67504499, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnMssehozLwYaenwH4qbAkXZzy8qvOOi+IuY2BInWg48" - }, - "address": "noble1lamqkduw8y3whwq4gr75j8gyf586szvk5dyua0", - "percent": "0.0%", - "airdrop": 1185.7666140094227 - }, - { - "total_amount": 65092712, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A3AA2Lj613E0u+DriRCxuyZECLVdZ2QA1Rg+ChpmQLTH" - }, - "address": "noble1laug9cxq4c0exrmtdkttx9zs4adsuayh6zv4lc", - "percent": "0.0%", - "airdrop": 1143.4017857821675 - }, - { - "total_amount": 3901874638, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AysHLHG6KqFsgXRhEDImVEaZKlPTQuKdDiUQ1m/IAxQk" - }, - "address": "noble1lau2dmljlm5htf6mehvftclk0a9dw2mntshmg0", - "percent": "0.02%", - "airdrop": 68539.32325000297 - }, - { - "total_amount": 1955484368, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnmboRH4KQYd5zuXvxcUQm/GaXBPDoYppBmEY8nAXDWd" - }, - "address": "noble1l798rpt0unsm6kxdej0fxcm8m6cdhy7d8rms7s", - "percent": "0.01%", - "airdrop": 34349.53391464643 - }, - { - "total_amount": 575861898, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "Ao+jDwG3lv32GPzbas2hbioZprNV5iSpuPqfEueJHflP" - }, - "address": "noble1l72r5945ujrqhxmm6jugg2tawjcptkf2pxm4mr", - "percent": "0.0%", - "airdrop": 10115.441534178331 - }, - { - "total_amount": 72079692389, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AnFeJO6rhZ1RMoSZ69CNV/tLbDDWeOqNxToBVbh1ze83" - }, - "address": "noble1l72ggdcp99y6z56g4g775a07ff8f3dx44e65sg", - "percent": "0.42%", - "airdrop": 1266133.280730597 - }, - { - "total_amount": 360000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlOB/97JJzNs95SCb6mHyKt7cMf2ikF2ujhVeSvb/5hj" - }, - "address": "noble1l730wqppq2qhmc926fys5sgg6hw7cc47s8k6dz", - "percent": "0.0%", - "airdrop": 6323.667123925951 - }, - { - "total_amount": 540646370, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkblwuTE9l0P0P+JkF4kTJra0ZvO8U39aSMhy0Kt6ILJ" - }, - "address": "noble1l7jelkdvwytxlq63se06eu4pztf9k0wg72jwru", - "percent": "0.0%", - "airdrop": 9496.854654552515 - }, - { - "total_amount": 325948569, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AlTdj4BkyvFGPVPfiTPpOVCozUAgU+ZE1pRIZLywtLMt" - }, - "address": "noble1l7cnpkrk9ug5c7fgn0f482jwcwv0ln443vmvsh", - "percent": "0.0%", - "airdrop": 5725.528471877804 - }, - { - "total_amount": 296504018, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5orn4HwxKL7b+Nn7PZG0BrS1uGSTwEYGUXeEXYZhqnY" - }, - "address": "noble1l7mp7tm75ft03kwquc5vfrgfcrakfzx27f6whm", - "percent": "0.0%", - "airdrop": 5208.313085384857 - }, - { - "total_amount": 134057043, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AkkEgF5PBIewIVEBBlm/sxeVWEWiE6dVezzIu1hLbLfW" - }, - "address": "noble1llqdnau9g57kk7csea60pz9usv7v5cgpww8t0c", - "percent": "0.0%", - "airdrop": 2354.8114320828545 - }, - { - "total_amount": 52790699, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AtHG56KVNXTtOIiCNhlzCZOIV6NXEmgxqYSA6NzksJg7" - }, - "address": "noble1llpknhkdp6ttcurpd0qf266d6zt5ypr8tr8nzc", - "percent": "0.0%", - "airdrop": 927.3077992093628 - }, - { - "total_amount": 404101843, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AqHKFQvtE7e36mcxE2DwOYIXgzWVuVWzYzNNIZYrrjlt" - }, - "address": "noble1llxlxmc7zv5c2cze5fm6pqx8u8ntf3xjpgk0gu", - "percent": "0.0%", - "airdrop": 7098.348720269406 - }, - { - "total_amount": 115182053, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "AxOXHiDzxrOnBBm5fzYMQJKXevmhrE5E9pwbpzS3qUG9" - }, - "address": "noble1lltp77ss8evu294tsdym9ex8fsujz9dpnh44sh", - "percent": "0.0%", - "airdrop": 2023.2582272844347 - }, - { - "total_amount": 51000000, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A5Y3iqnDg6pZusUtsus7yGYjk0XJSO0VwRenn51RjzVE" - }, - "address": "noble1llsp93yvgd04mkx3xpv0k090ky3eh5rrw9nu7x", - "percent": "0.0%", - "airdrop": 895.8528425561765 - }, - { - "total_amount": 99466510, - "pub_key": { - "@type": "/cosmos.crypto.secp256k1.PubKey", - "key": "A+cwLOMJy7prtJZZqr+A/KgYdV8JE18pICj8C9dRNQHW" - }, - "address": "noble1llaqj5c5fpd44ehmaevwfqtr5slen6nj65xt83", - "percent": "0.0%", - "airdrop": 1747.203053385144 - } -] \ No newline at end of file diff --git a/docs/docs.go b/docs/docs.go deleted file mode 100644 index 1167d565..00000000 --- a/docs/docs.go +++ /dev/null @@ -1,6 +0,0 @@ -package docs - -import "embed" - -//go:embed static -var Docs embed.FS diff --git a/docs/modules/globalfee.md b/docs/modules/globalfee.md deleted file mode 100644 index 4d968c42..00000000 --- a/docs/modules/globalfee.md +++ /dev/null @@ -1,224 +0,0 @@ -# Noble Fees and Fees Checks - -## Fee Parameters -Noble allows managing fees using 3 parameters: - -1. setting global fees (`MinimumGasPricesParam`) -Global fees are defined at the network level by setting `MinimumGasPricesParam`, via the NMM - -2. `minimum-gas-prices` -This parameter is part of the node configuration, it can be set in the `config/app.toml` configuration file. - -3. `bypass-min-fee-msg-types` -This parameter is part of the node configuration, it can be set in the `config/app.toml` configuration file. -This represents a list of message types that will be excluded from paying any fees for inclusion in a block. - -Both global fees (`MinimumGasPricesParam`) and `minimum-gas-prices` represent a list of coins, each denoted by an amount and domination as defined by [sdk.DecCoins](https://github.com/cosmos/cosmos-sdk/blob/82ce891aa67f635f3b324b7a52386d5405c5abd0/types/dec_coin.go#L158) - - -## Concepts - -## Global Fees - -Global fees consist of a list of `sdk.DecCoins` e.g., `[1uatom, 2stake]`. -Every transaction must pay per unit of gas **at least** one of the amounts stated in this list in the corresponding denomination (denom). By this notion, global fees allow a network to impose a minimum transaction fee. - -The paid fees must be paid in at least one denom from the global fees list and the corresponding amount per unit of gas must be greater than or equal to the corresponding amount in the global fees list. - -A global fees list must meet the following properties: -- fees have to be alphabetically sorted by denom; -- fees must have non-negative amount, with a valid and unique denom (i.e. no duplicate denoms are allowed). - - -There are **two exceptions** from the global fees rules that allow zero fee transactions: - -1. Transactions that contain only [message types that can bypass the minimum fee](#bypass-fees-message-types) may have zero fees. We refer to this as _bypass transactions_. Node operators can choose to define these message types (for each node) via the `bypass-fee-message-types` configuration parameter. - -2. One of the entries in the global fees list has a zero amount, e.g., `0uatom`, and the corresponding denom, e.g., `uatom`, is not present in `minimum-gas-prices`. - -Additionally, node operators may set additional minimum gas prices which can be larger than the _global_ minimum gas prices defined on chain. - - -### minimum-gas-prices - -The `minimum-gas-prices` config parameter allows node operators to impose additional requirements for minimum fees. The following rules apply: - -- The denoms in `min-gas-prices` that are not present in the global fees list are ignored. -- The amounts in `min-gas-prices` are considered only if they are greater than the amounts for the corresponding denoms in the global fees list. - -## Bypass Fees Message Types - -Bypass messages are messages that are exempt from paying fees. The above global fees and `minimum-gas-prices` checks do not apply for transactions that satisfy the following conditions: - -- Contains only bypass message types, i.e., bypass transactions. -- The total gas used is less than or equal to `MaxTotalBypassMinFeeMsgGasUsage`. Note: the current `MaxTotalBypassMinFeeMsgGasUsage` is set to `1,000,000`. -- In case of non-zero transaction fees, the denom has to be a subset of denoms defined in the global fees list. - -The list of these messages is stored in module parameters and can be updated via governance proposals or the maintenence multisig. The following are default: - -```go -defaultBypassMinFeeMsgTypes := []string{ - "/ibc.core.client.v1.MsgUpdateClient", - "/ibc.core.channel.v1.MsgRecvPacket", - "/ibc.core.channel.v1.MsgAcknowledgement", - "/ibc.applications.transfer.v1.MsgTransfer", - "/ibc.core.channel.v1.MsgTimeout", - "/ibc.core.channel.v1.MsgTimeoutOnClose", -} -``` - -## Fee AnteHandler Behaviour - -The denoms in the global fees list and the `minimum-gas-prices` param are merged and de-duplicated while keeping the higher amounts. Denoms that are only in the `minimum-gas-prices` param are discarded. - -If the denoms of the transaction fees are a subset of the merged fees and at least one of the amounts of the transaction fees is greater than or equal to the corresponding required fees amount, the transaction can pass the fee check, otherwise an error will occur. - -## Queries - -CLI queries can be used to retrieve the global fee value: - -```shell -nobled q globalfee params -# or -nobled q params subspace globalfee MinimumGasPricesParam -nobled q params subspace globalfee BypassMinFeeMsgTypesParam -``` - -If the global fee is not set, the query returns an empty global fees list: `minimum_gas_prices: []`. In this case the Cosmos Hub will use `0uatom` as global fee in this case (the default fee denom). - -## Setting Up Global Fees via Gov Proposals - -An example of setting up a global fee by a gov proposals is shown below. - -```shell -gov submit-proposal param-change proposal.json -```` - -A `proposal.json` example: - -```json -{ - "title": "Global fees Param Change", - "description": "Update global fees", - "changes": [ - { - "subspace": "globalfee", - "key": "MinimumGasPricesParam", - "value": [{"denom":"stake", "amount":"0.002"}, {"denom":"uatom", "amount": "0.001"}] - } - ], - "deposit": "1000stake" -} -``` - -**Note:** in the above "value" field, coins must sorted alphabetically by denom. - - -## Examples - -Here are a few examples to clarify the relationship between global fees, minimum-gas-prices and transaction fees. - -**Note:** Transactions can include zero-coin fees. However, these fees are removed from the transaction fees during the fee [parsing](https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/client/tx/factory.go#L144) / [santitizing](https://github.com/cosmos/cosmos-sdk/blob/e716e4103e934344aa7be6dc9b5c453bdec5f225/types/dec_coin.go#L172) before reaching the fee AnteHandler. -This means `paidfee = "1uatom, 0stake"` and `paidfee = "1uatom"` are equivalent, and similarly, `paidfee = "0uatom"` is equivalent to `paidfee = ""`. -In the following examples, zero-coin fees are removed from the transaction fees. - - -`globalfee`: in `genesis.json` -> `globalfee.params.minimum_gas_prices` - -`minimum-gas-prices`: in `app.toml` -> `minimum-gas-prices` - -`gas`: a uniuqe amount deteremend by chain per transaction - -`paidfee`: (`--gas` flag in `tx bank send` * `--gas-prices` flag in `tx bank send`) - - -### Case 1 - -**Setting:** globalfee=[], minimum-gas-prices=0.1uatom, gas=2000000. - -Note that this is the same case as globalfee=0uatom, minimum-gas-prices=0.1uatom, gas=2000000. - - - paidfee = "2000000 * 0.1uatom", `pass` - - paidfee = "2000000 * 0.1uatom, 1stake", `fail` (unexpected denom) - - paidfee = "", `fail` (insufficient funds) - -### Case 2 - -**Setting:** globalfee=[], minimum-gas-prices="", gas=2000000. - -Note that this is the same case as globalfee=0uatom, minimum-gas-prices="", gas=2000000. - - - paidfee = "", `pass` - - paidfee = "2000000 * 0.1uatom", `pass` - - paidfee = "2000000 * 0.1stake", `fail` (unexpected denom) - -### Case 3 - -**Setting:** globalfee=[0.2uatom], minimum-gas-prices=0.1uatom, gas=2000000 (global fee is higher than min_as_price). - -Note that this is the same case as globalfee=0.2uatom, minimum-gas-prices="", gas=2000000. - - - paidfee = "2000000 * 0.2uatom", `pass` - - paidfee = "2000000 * 0.1uatom", `fail` (insufficient funds) - - paidfee = "2000000 * 0.2uatom, 1stake", `fail` (unexpected denom) - - paidfee = "2000000 * 0.2stake", `fail` (unexpected denom) - - paidfee = "", `fail` (insufficient funds) - -### Case 4 - -**Setting:** globalfee=[0.1uatom], minimum-gas-prices=0.2uatom, gas=2000000 (global fee is lower than min_as_price). - -Note that the required amount in globalfee is overwritten by the amount in minimum-gas-prices. - - - paidfee = "2000000 * 0.2uatom", `pass` - - paidfee = "2000000 * 0.1uatom", `fail` (insufficient funds) - - paidfee = "2000000 * 0.2uatom, 1stake", `fail` (unexpected denom) - - paidfee = "2000000 * 0.2stake", `fail` (unexpected denom) - - paidfee = "", `fail` (insufficient funds) - - paidfee = 0uatom, `fail` (insufficient funds) - -### Case 5 - -**Setting:** globalfee=[0uatom, 1stake], minimum-gas-prices="", gas=200000. - - - paidfee ="2000000 * 0.5stake", `fail` (insufficient funds) - - paidfee ="", `pass` - - paidfee ="2000000 * 1uatom, 0.5stake", `pass` - - paidfee ="2000000 * 1stake", `pass` - -### Case 6 - -**Setting:** globalfee=[0.1uatom, 1stake], minimum-gas-prices=0.2uatom, gas=200000. - -Note that the required amount of `uatom` in globalfee is overwritten by the amount in minimum-gas-prices. - - - paidfee = "2000000 * 0.2uatom", `pass` - - paidfee = "2000000 * 0.1uatom", `fail` (insufficient funds) - - paidfee = "2000000 * 1stake", `pass` - - paidfee = "2000000 * 0.5stake", `fail` (insufficient funds) - - paidfee = "2000000 * 0.1uatom, 2000000 * 1stake", `pass` - - paidfee = "2000000 * 0.2atom, 2000000 * 0.5stake", `pass` - - paidfee = "2000000 * 0.1uatom, 2000000 * 0.5stake", `fail` (insufficient funds) - -### Case 7 - -**Setting:** globalfee=[0.1uatom], minimum-gas-prices=0.2uatom,1stake, gas=200000, bypass-min-fee-msg-types = ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] - -Note that the required amount of `uatom` in globalfee is overwritten by the amount in minimum-gas-prices. -Also, the `1stake` in minimum-gas-prices is ignored. - - - msg withdraw-all-rewards with paidfee="", `pass` - - msg withdraw-all-rewards with paidfee="200000 * 0.05uatom", `pass` - - msg withdraw-all-rewards with paidfee="200000 * 1stake", `fail` (unexpected denom) - -### Case 8 - -**Setting:** globalfee=[1uatom], minimum-gas-prices="", gas=300000, bypass-min-fee-msg-types = ["/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"] - - - msg withdraw-all-rewards with paidfee="", `fail` (gas limit exceeded for bypass transactions) - - msg withdraw-all-rewards with paidfee="300000 * 0.5uatom", `fail` (gas limit exceeded for bypass transactions, insufficient funds) - - msg withdraw-all-rewards with paidfee="300000 * 1uatom", `pass` - -## References - -- [Gas and Fees in Cosmos SDK](https://docs.cosmos.network/main/basics/gas-fees.html) \ No newline at end of file diff --git a/docs/modules/tariff.md b/docs/modules/tariff.md deleted file mode 100644 index 0e1924f7..00000000 --- a/docs/modules/tariff.md +++ /dev/null @@ -1,44 +0,0 @@ -# Tariff module - -The tariff module is meant to sit before the distribution module in the begin-block sequence. This module collects a percentage of a specified asset and distributes it among configured entities. - - -## Parameters: - -- `Share`: percentage of collected fees to distribute among `DistributionEntities` - -- `DistributionEntities`: Addresses that will acquire a specified percentage of the overall `Share`. The collected fees will be divided between each `DistributionEntity` based on their individual `Share` percentage. The sum of the `Share` across all `DistributionEntities` must equal `1`. Note that there are two `Share`s; the Tariff module overall `Share` and the `Share` for each `DistributionEntity`. - -- `TransferFeeBps`: Transfer Fee Basis Points (BPS) is the parameter that determines the BPS fees to be collected for outgoing IBC transfers, up to the `TransferFeeMax`, for the `TransferFeeDenom`. This fee is collected in addition to the transaction gas fees. `TransferFeeBPS`*10⁻⁴ = the fee multiplier applied to the outgoing transfer amount. - -- `TransferFeeMax`: The max amount of fees to be collected for an outgoing IBC transfer. - -- `TransferFeeDenom`: The denom to collect fees for on outgoing IBC transfers. - ---- - -## Example - -`Share`: 0.8 - -`DistributionEntities`: "Jim" has a 30% share, "Mary" has a 70% - -`TransferFeeBps`: 1 - -`TransferFeeMax`: 5000000 - -`TransferFeeDenom`: ustake - -For sake of example, lets assume gas prices are 0. - -Alice sends 100_000_000ustake to Bob on a different chain using IBC. Since BPS is 1, the total fee collected is 10_000ustake (100_000_000 * .0001). - -Since the `Share` percentage is 0.8, 80% of that 10_000ustake will be divided among the entities. 80% of 10_000 is 8_000. - -Jim will get 30% of the 8_000 making his share 2_400ustake. Mary will get 70% making her share 5_600ustake. - -The remaining 2_000ustake of collected fees, which were not distributed among the `DistributionEntities`, are distributed by the distribution module. The distribution module will distribute the 2_000ustake among the validators weighted by their voting power. For Noble's Proof of Authority (POA) use case, all validators have equal voting power. As such, the 2_000ustake is divided equally among the validators. - -Since the distribution logic truncates to the nearest integer, fees can be left over after the distribution module. This is expected behavior as fees will be distributed again in the next block. - -When gas prices are non-zero, the fees collected are distributed in the same way: tariff module distribution entities first, then distribution module to the validators. \ No newline at end of file diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml deleted file mode 100644 index 09b0e8ff..00000000 --- a/docs/static/openapi.yml +++ /dev/null @@ -1,73202 +0,0 @@ -swagger: '2.0' -info: - title: HTTP API Console - name: '' - description: '' -paths: - /cosmos/auth/v1beta1/accounts: - get: - summary: Accounts returns all the existing accounts - description: 'Since: cosmos-sdk 0.43' - operationId: CosmosAuthV1Beta1Accounts - responses: - '200': - description: A successful response. - schema: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAccountsResponse is the response type for the Query/Accounts - RPC method. - - - Since: cosmos-sdk 0.43 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/auth/v1beta1/accounts/{address}': - get: - summary: Account returns account details based on address. - operationId: CosmosAuthV1Beta1Account - responses: - '200': - description: A successful response. - schema: - type: object - properties: - account: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryAccountResponse is the response type for the Query/Account - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address defines the address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/auth/v1beta1/address_by_id/{id}': - get: - summary: AccountAddressByID returns account address based on account id - operationId: CosmosAuthV1Beta1AccountAddressByID - responses: - '200': - description: A successful response. - schema: - type: object - properties: - account_address: - type: string - title: >- - QueryAccountAddressByIDResponse is the response type for - AccountAddressByID rpc method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: id - in: path - required: true - type: string - format: int64 - tags: - - Query - /cosmos/auth/v1beta1/bech32: - get: - summary: Bech32Prefix queries bech32Prefix - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthV1Beta1Bech32Prefix - responses: - '200': - description: A successful response. - schema: - type: object - properties: - bech32_prefix: - type: string - description: >- - Bech32PrefixResponse is the response type for Bech32Prefix rpc - method. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - '/cosmos/auth/v1beta1/bech32/{address_bytes}': - get: - summary: AddressBytesToString converts Account Address bytes to string - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthV1Beta1AddressBytesToString - responses: - '200': - description: A successful response. - schema: - type: object - properties: - address_string: - type: string - description: >- - AddressBytesToStringResponse is the response type for - AddressString rpc method. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address_bytes - in: path - required: true - type: string - format: byte - tags: - - Query - '/cosmos/auth/v1beta1/bech32/{address_string}': - get: - summary: AddressStringToBytes converts Address string to bytes - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthV1Beta1AddressStringToBytes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - address_bytes: - type: string - format: byte - description: >- - AddressStringToBytesResponse is the response type for AddressBytes - rpc method. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address_string - in: path - required: true - type: string - tags: - - Query - /cosmos/auth/v1beta1/module_accounts: - get: - summary: ModuleAccounts returns all the existing module accounts. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthV1Beta1ModuleAccounts - responses: - '200': - description: A successful response. - schema: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryModuleAccountsResponse is the response type for the - Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/auth/v1beta1/params: - get: - summary: Params queries all parameters. - operationId: CosmosAuthV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/authz/v1beta1/grants: - get: - summary: 'Returns list of `Authorization`, granted to the grantee by the granter.' - operationId: CosmosAuthzV1Beta1Grants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - time when the grant will expire and will be pruned. If - null, then the grant - - doesn't have a time expiration (other conditions in - `authorization` - - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: >- - authorizations is a list of grants granted for grantee by - granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the - Query/Authorizations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: query - required: false - type: string - - name: grantee - in: query - required: false - type: string - - name: msg_type_url - description: >- - Optional, msg_type_url, when set, will query only grants matching - given msg type. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/authz/v1beta1/grants/grantee/{grantee}': - get: - summary: GranteeGrants returns a list of `GrantAuthorization` by grantee. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthzV1Beta1GranteeGrants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: grantee - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/authz/v1beta1/grants/granter/{granter}': - get: - summary: 'GranterGrants returns list of `GrantAuthorization`, granted by granter.' - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosAuthzV1Beta1GranterGrants - responses: - '200': - description: A successful response. - schema: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses - of the grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/bank/v1beta1/balances/{address}': - get: - summary: AllBalances queries the balance of all coins for a single account. - operationId: CosmosBankV1Beta1AllBalances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the - Query/AllBalances RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/bank/v1beta1/balances/{address}/by_denom': - get: - summary: Balance queries the balance of a single coin for a single account. - operationId: CosmosBankV1Beta1Balance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: address - description: address is the address to query balances for. - in: path - required: true - type: string - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - '/cosmos/bank/v1beta1/denom_owners/{denom}': - get: - summary: >- - DenomOwners queries for all account addresses that own a particular - token - - denomination. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosBankV1Beta1DenomOwners - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_owners: - type: array - items: - type: object - properties: - address: - type: string - description: >- - address defines the address that owns a particular - denomination. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DenomOwner defines structure representing an account that - owns or holds a - - particular denominated token. It contains the account - address and account - - balance of the denominated token. - - - Since: cosmos-sdk 0.46 - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomOwnersResponse defines the RPC response of a DenomOwners - RPC query. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: denom - description: >- - denom defines the coin denomination to query all account holders - for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/bank/v1beta1/denoms_metadata: - get: - summary: |- - DenomsMetadata queries the client metadata for all registered coin - denominations. - operationId: CosmosBankV1Beta1DenomsMetadata - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given - denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the - given DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a - given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges - (eg: ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains - additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. - It's used to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the - registered tokens. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/bank/v1beta1/denoms_metadata/{denom}': - get: - summary: DenomsMetadata queries the client metadata of a given coin denomination. - operationId: CosmosBankV1Beta1DenomMetadata - responses: - '200': - description: A successful response. - schema: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom - unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one - must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: >- - aliases is a list of string aliases for the given - denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: >- - denom_units represents the list of DenomUnit's for a given - coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit - with exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains - additional information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. - It's used to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: denom - description: denom is the coin denom to query the metadata for. - in: path - required: true - type: string - tags: - - Query - /cosmos/bank/v1beta1/params: - get: - summary: Params queries the parameters of x/bank module. - operationId: CosmosBankV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status - (whether a denom is - - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/cosmos/bank/v1beta1/spendable_balances/{address}': - get: - summary: |- - SpendableBalances queries the spenable balance of all coins for a single - account. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosBankV1Beta1SpendableBalances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QuerySpendableBalancesResponse defines the gRPC response structure - for querying - - an account's spendable balances. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: address - description: address is the address to query spendable balances for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/bank/v1beta1/supply: - get: - summary: TotalSupply queries the total supply of all coins. - operationId: CosmosBankV1Beta1TotalSupply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the - Query/TotalSupply RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/bank/v1beta1/supply/by_denom: - get: - summary: SupplyOf queries the supply of a single coin. - operationId: CosmosBankV1Beta1SupplyOf - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: denom - description: denom is the coin denom to query balances for. - in: query - required: false - type: string - tags: - - Query - /cosmos/base/tendermint/v1beta1/abci_query: - get: - summary: >- - ABCIQuery defines a query handler that supports ABCI queries directly to - - the application, bypassing Tendermint completely. The ABCI query must - - contain a valid and supported path, including app, custom, p2p, and - store. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosBaseTendermintV1Beta1ABCIQuery - responses: - '200': - description: A successful response. - schema: - type: object - properties: - code: - type: integer - format: int64 - log: - type: string - info: - type: string - index: - type: string - format: int64 - key: - type: string - format: byte - value: - type: string - format: byte - proof_ops: - type: object - properties: - ops: - type: array - items: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle - root. The data could - - be arbitrary format, providing nessecary data for - example neighbouring node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type - defined in - - Tendermint. - description: >- - ProofOps is Merkle proof defined by the list of ProofOps. - - - Note: This type is a duplicate of the ProofOps proto type - defined in - - Tendermint. - height: - type: string - format: int64 - codespace: - type: string - description: >- - ABCIQueryResponse defines the response structure for the ABCIQuery - gRPC - - query. - - - Note: This type is a duplicate of the ResponseQuery proto type - defined in - - Tendermint. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: data - in: query - required: false - type: string - format: byte - - name: path - in: query - required: false - type: string - - name: height - in: query - required: false - type: string - format: int64 - - name: prove - in: query - required: false - type: boolean - tags: - - Service - /cosmos/base/tendermint/v1beta1/blocks/latest: - get: - summary: GetLatestBlock returns the latest block. - operationId: CosmosBaseTendermintV1Beta1GetLatestBlock - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting to mislead a light - client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer - address, formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, - we convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting to mislead a light - client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - description: >- - Block is tendermint type Block, with the Header proposer - address - - field converted to bech32 string. - description: >- - GetLatestBlockResponse is the response type for the - Query/GetLatestBlock RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - '/cosmos/base/tendermint/v1beta1/blocks/{height}': - get: - summary: GetBlockByHeight queries block for given height. - operationId: CosmosBaseTendermintV1Beta1GetBlockByHeight - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting to mislead a light - client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer - address, formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, - we convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing - on the order first. - - This means that block.AppHash does not include these - txs. - title: >- - Data contains the set of transactions included in the - block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed - message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or - commit vote from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a - validator signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a - Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a - block was committed by a set of - validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a - set of validators attempting to mislead a light - client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - description: >- - Block is tendermint type Block, with the Header proposer - address - - field converted to bech32 string. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight - - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - tags: - - Service - /cosmos/base/tendermint/v1beta1/node_info: - get: - summary: GetNodeInfo queries the current node info. - operationId: CosmosBaseTendermintV1Beta1GetNodeInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: >- - GetNodeInfoResponse is the response type for the Query/GetNodeInfo - RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - /cosmos/base/tendermint/v1beta1/syncing: - get: - summary: GetSyncing queries node syncing. - operationId: CosmosBaseTendermintV1Beta1GetSyncing - responses: - '200': - description: A successful response. - schema: - type: object - properties: - syncing: - type: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Service - /cosmos/base/tendermint/v1beta1/validatorsets/latest: - get: - summary: GetLatestValidatorSet queries latest validator-set. - operationId: CosmosBaseTendermintV1Beta1GetLatestValidatorSet - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Service - '/cosmos/base/tendermint/v1beta1/validatorsets/{height}': - get: - summary: GetValidatorSetByHeight queries validator-set at a given height. - operationId: CosmosBaseTendermintV1Beta1GetValidatorSetByHeight - responses: - '200': - description: A successful response. - schema: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - in: path - required: true - type: string - format: int64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Service - /cosmos/distribution/v1beta1/community_pool: - get: - summary: CommunityPool queries the community pool coins. - operationId: CosmosDistributionV1Beta1CommunityPool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool - - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards': - get: - summary: |- - DelegationTotalRewards queries the total rewards accrued by a each - validator. - operationId: CosmosDistributionV1Beta1DelegationTotalRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}': - get: - summary: DelegationRewards queries the total rewards accrued by a delegation. - operationId: CosmosDistributionV1Beta1DelegationRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators': - get: - summary: DelegatorValidators queries the validators of a delegator. - operationId: CosmosDistributionV1Beta1DelegatorValidators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: string - description: >- - validators defines the validators a delegator is delegating - for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address': - get: - summary: DelegatorWithdrawAddress queries withdraw address of a delegator. - operationId: CosmosDistributionV1Beta1DelegatorWithdrawAddress - responses: - '200': - description: A successful response. - schema: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: delegator_address - description: delegator_address defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/distribution/v1beta1/params: - get: - summary: Params queries params of the distribution module. - operationId: CosmosDistributionV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/commission': - get: - summary: ValidatorCommission queries accumulated commission for a validator. - operationId: CosmosDistributionV1Beta1ValidatorCommission - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards': - get: - summary: ValidatorOutstandingRewards queries rewards of a validator address. - operationId: CosmosDistributionV1Beta1ValidatorOutstandingRewards - responses: - '200': - description: A successful response. - schema: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a - decimal amount. - - - NOTE: The amount field is an Dec which implements the - custom method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding - (un-withdrawn) rewards - - for a validator inexpensive to track, allows simple sanity - checks. - description: >- - QueryValidatorOutstandingRewardsResponse is the response type for - the - - Query/ValidatorOutstandingRewards RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/distribution/v1beta1/validators/{validator_address}/slashes': - get: - summary: ValidatorSlashes queries slash events of a validator. - operationId: CosmosDistributionV1Beta1ValidatorSlashes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - slashes: - type: array - items: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: >- - ValidatorSlashEvent represents a validator slash event. - - Height is implicit within the store key. - - This is needed to calculate appropriate amount of staking - tokens - - for delegations which are withdrawn after a slash has - occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: validator_address - description: validator_address defines the validator address to query for. - in: path - required: true - type: string - - name: starting_height - description: >- - starting_height defines the optional starting height to query the - slashes. - in: query - required: false - type: string - format: uint64 - - name: ending_height - description: >- - starting_height defines the optional ending height to query the - slashes. - in: query - required: false - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/evidence/v1beta1/evidence: - get: - summary: AllEvidence queries all evidence. - operationId: CosmosEvidenceV1Beta1AllEvidence - responses: - '200': - description: A successful response. - schema: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the - Query/AllEvidence RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/evidence/v1beta1/evidence/{evidence_hash}': - get: - summary: Evidence queries evidence based on evidence hash. - operationId: CosmosEvidenceV1Beta1Evidence - responses: - '200': - description: A successful response. - schema: - type: object - properties: - evidence: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: evidence_hash - description: evidence_hash defines the hash of the requested evidence. - in: path - required: true - type: string - format: byte - tags: - - Query - '/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}': - get: - summary: Allowance returns fee granted to the grantee by the granter. - operationId: CosmosFeegrantV1Beta1Allowance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - allowance: - description: allowance is a allowance granted for grantee by granter. - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic, periodic, allowed fee - allowance. - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: >- - QueryAllowanceResponse is the response type for the - Query/Allowance RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - description: >- - granter is the address of the user granting an allowance of their - funds. - in: path - required: true - type: string - - name: grantee - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - in: path - required: true - type: string - tags: - - Query - '/cosmos/feegrant/v1beta1/allowances/{grantee}': - get: - summary: Allowances returns all the grants for address. - operationId: CosmosFeegrantV1Beta1Allowances - responses: - '200': - description: A successful response. - schema: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic, periodic, allowed fee - allowance. - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the - Query/Allowances RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: grantee - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/feegrant/v1beta1/issued/{granter}': - get: - summary: AllowancesByGranter returns all the grants given by an address - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosFeegrantV1Beta1AllowancesByGranter - responses: - '200': - description: A successful response. - schema: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance - of their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an - allowance of another user's funds. - allowance: - description: >- - allowance can be any of basic, periodic, allowed fee - allowance. - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - title: >- - Grant is stored in the KVStore to record a grant with full - context - description: allowances that have been issued by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesByGranterResponse is the response type for the - Query/AllowancesByGranter RPC method. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: granter - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1/params/{params_type}': - get: - summary: Params queries all parameters of the gov module. - operationId: CosmosGovV1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: params_type - description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". - in: path - required: true - type: string - tags: - - Query - /cosmos/gov/v1/proposals: - get: - summary: Proposals queries all proposals based on given status. - operationId: CosmosGovV1Proposals - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain - at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should - be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions - as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not - populated until the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - metadata: - type: string - description: >- - metadata is any arbitrary metadata attached to the - proposal. - description: >- - Proposal defines the core field members of a governance - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - - name: voter - description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}': - get: - summary: Proposal queries proposal details based on ProposalID. - operationId: CosmosGovV1Proposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposal: - type: object - properties: - id: - type: string - format: uint64 - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not populated - until the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - metadata: - type: string - description: >- - metadata is any arbitrary metadata attached to the - proposal. - description: >- - Proposal defines the core field members of a governance - proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}/deposits': - get: - summary: Deposits queries all deposits of a single proposal. - operationId: CosmosGovV1Deposits - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}': - get: - summary: >- - Deposit queries single deposit information based proposalID, - depositAddr. - operationId: CosmosGovV1Deposit - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: path - required: true - type: string - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}/tally': - get: - summary: TallyResult queries the tally of a proposal vote. - operationId: CosmosGovV1TallyResult - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}/votes': - get: - summary: Votes queries votes of a given proposal. - operationId: CosmosGovV1Votes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - vote. - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}': - get: - summary: 'Vote queries voted information based on proposalID, voterAddr.' - operationId: CosmosGovV1Vote - responses: - '200': - description: A successful response. - schema: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - vote. - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: >- - QueryVoteResponse is the response type for the Query/Vote RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: voter - description: voter defines the voter address for the proposals. - in: path - required: true - type: string - tags: - - Query - '/cosmos/gov/v1beta1/params/{params_type}': - get: - summary: Params queries all parameters of the gov module. - operationId: CosmosGovV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. - Initial value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a - result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. - Default value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for - proposal to be - vetoed. Default value: 1/3. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: params_type - description: >- - params_type defines which parameters to query for, can be one of - "voting", - - "tallying" or "deposit". - in: path - required: true - type: string - tags: - - Query - /cosmos/gov/v1beta1/proposals: - get: - summary: Proposals queries all proposals based on given status. - operationId: CosmosGovV1Beta1Proposals - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not - populated until the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryProposalsResponse is the response type for the - Query/Proposals RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_status - description: |- - proposal_status defines the status of the proposals. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - in: query - required: false - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - - name: voter - description: voter defines the voter address for the proposals. - in: query - required: false - type: string - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}': - get: - summary: Proposal queries proposal details based on ProposalID. - operationId: CosmosGovV1Beta1Proposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: >- - ProposalStatus enumerates the valid statuses of a - proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the - proposal. When - - querying a proposal via gRPC, this field is not populated - until the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: >- - Proposal defines the core field members of a governance - proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits': - get: - summary: Deposits queries all deposits of a single proposal. - operationId: CosmosGovV1Beta1Deposits - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an - amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}': - get: - summary: >- - Deposit queries single deposit information based proposalID, - depositAddr. - operationId: CosmosGovV1Beta1Deposit - responses: - '200': - description: A successful response. - schema: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to - an active - - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: depositor - description: depositor defines the deposit addresses from the proposals. - in: path - required: true - type: string - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/tally': - get: - summary: TallyResult queries the tally of a proposal vote. - operationId: CosmosGovV1Beta1TallyResult - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes': - get: - summary: Votes queries votes of a given proposal. - operationId: CosmosGovV1Beta1Votes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field - is set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryVotesResponse is the response type for the Query/Votes RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}': - get: - summary: 'Vote queries voted information based on proposalID, voterAddr.' - operationId: CosmosGovV1Beta1Vote - responses: - '200': - description: A successful response. - schema: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is - set in queries - - if and only if `len(options) == 1` and that option has - weight 1. In all - - other cases, this field will default to - VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a - given governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: >- - WeightedVoteOption defines a unit of vote for vote - split. - - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: >- - Vote defines a vote on a governance proposal. - - A Vote consists of a proposal ID, the voter, and the vote - option. - description: >- - QueryVoteResponse is the response type for the Query/Vote RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id defines the unique id of the proposal. - in: path - required: true - type: string - format: uint64 - - name: voter - description: voter defines the voter address for the proposals. - in: path - required: true - type: string - tags: - - Query - '/cosmos/group/v1/group_info/{group_id}': - get: - summary: GroupInfo queries group info based on group id. - operationId: CosmosGroupV1GroupInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - description: info is the GroupInfo for the group. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members - weight is changed, - - or any member is added or removed this version is - incremented and will - - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: QueryGroupInfoResponse is the Query/GroupInfo response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: group_id - description: group_id is the unique ID of the group. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/group/v1/group_members/{group_id}': - get: - summary: GroupMembers queries members of a group - operationId: CosmosGroupV1GroupMembers - responses: - '200': - description: A successful response. - schema: - type: object - properties: - members: - type: array - items: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be - greater than 0. - metadata: - type: string - description: >- - metadata is any arbitrary metadata attached to the - member. - added_at: - type: string - format: date-time - description: >- - added_at is a timestamp specifying when a member was - added. - description: >- - GroupMember represents the relationship between a group and - a member. - description: members are the members of the group with given group_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupMembersResponse is the Query/GroupMembersResponse - response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: group_id - description: group_id is the unique ID of the group. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/group_policies_by_admin/{admin}': - get: - summary: GroupsByAdmin queries group policies by admin address. - operationId: CosmosGroupV1GroupPoliciesByAdmin - responses: - '200': - description: A successful response. - schema: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain - information for a group policy. - description: >- - group_policies are the group policies info with provided - admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the - Query/GroupPoliciesByAdmin response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: admin - description: admin is the admin address of the group policy. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/group_policies_by_group/{group_id}': - get: - summary: GroupPoliciesByGroup queries group policies by group id. - operationId: CosmosGroupV1GroupPoliciesByGroup - responses: - '200': - description: A successful response. - schema: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain - information for a group policy. - description: >- - group_policies are the group policies info associated with the - provided group. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByGroupResponse is the - Query/GroupPoliciesByGroup response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: group_id - description: group_id is the unique ID of the group policy's group. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/group_policy_info/{address}': - get: - summary: >- - GroupPolicyInfo queries group policy info based on account address of - group policy. - operationId: CosmosGroupV1GroupPolicyInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's - GroupPolicyInfo structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy - was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information - for a group policy. - description: >- - QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response - type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the account address of the group policy. - in: path - required: true - type: string - tags: - - Query - '/cosmos/group/v1/groups_by_admin/{admin}': - get: - summary: GroupsByAdmin queries groups by admin address. - operationId: CosmosGroupV1GroupsByAdmin - responses: - '200': - description: A successful response. - schema: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members - weight is changed, - - or any member is added or removed this version is - incremented and will - - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: >- - GroupInfo represents the high-level on-chain information for - a group. - description: groups are the groups info with the provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse - response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: admin - description: admin is the account address of a group's admin. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/groups_by_member/{address}': - get: - summary: GroupsByMember queries groups by member address. - operationId: CosmosGroupV1GroupsByMember - responses: - '200': - description: A successful response. - schema: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members - weight is changed, - - or any member is added or removed this version is - incremented and will - - cause proposals based on older versions of this group to - fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group was - created. - description: >- - GroupInfo represents the high-level on-chain information for - a group. - description: groups are the groups info with the provided group member. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupsByMemberResponse is the Query/GroupsByMember response - type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: address is the group member address. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/proposal/{proposal_id}': - get: - summary: Proposal queries a proposal based on proposal id. - operationId: CosmosGroupV1Proposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposal: - description: proposal is the proposal info. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: >- - group_policy_address is the account address of group - policy. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - proposal. - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group - policy at proposal submission. - - When a decision policy is changed, existing proposals from - previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life - cycle of the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes - for this - - proposal for each vote option. It is empty at submission, - and only - - populated after tallying, at voting period end or at - proposal execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting - must be done. - - Unless a successfull MsgExec is called before (to execute - a proposal whose - - tally is successful before the voting period ends), - tallying will be done - - at this point, and the `final_tally_result`and `status` - fields will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal - execution. Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if - the proposal passes. - description: QueryProposalResponse is the Query/Proposal response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/group/v1/proposals/{proposal_id}/tally': - get: - summary: >- - TallyResult returns the tally result of a proposal. If the proposal is - - still in voting period, then this query computes the current tally - state, - - which might not be final. On the other hand, if the proposal is final, - - then it simply returns the `final_tally_result` state stored in the - - proposal itself. - operationId: CosmosGroupV1TallyResult - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: QueryTallyResultResponse is the Query/TallyResult response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique id of a proposal. - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/cosmos/group/v1/proposals_by_group_policy/{address}': - get: - summary: >- - ProposalsByGroupPolicy queries proposals based on account address of - group policy. - operationId: CosmosGroupV1ProposalsByGroupPolicy - responses: - '200': - description: A successful response. - schema: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: >- - group_policy_address is the account address of group - policy. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - proposal. - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal - was submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at - proposal submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group - policy at proposal submission. - - When a decision policy is changed, existing proposals - from previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life - cycle of the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted - votes for this - - proposal for each vote option. It is empty at - submission, and only - - populated after tallying, at voting period end or at - proposal execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting - must be done. - - Unless a successfull MsgExec is called before (to - execute a proposal whose - - tally is successful before the voting period ends), - tallying will be done - - at this point, and the `final_tally_result`and `status` - fields will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal - execution. Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain - at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should - be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions - as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed - if the proposal passes. - description: >- - Proposal defines a group proposal. Any member of a group can - submit a proposal - - for a group policy to decide upon. - - A proposal consists of a set of `sdk.Msg`s that will be - executed if the proposal - - passes as well as some optional metadata associated with the - proposal. - description: proposals are the proposals with given group policy. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryProposalsByGroupPolicyResponse is the - Query/ProposalByGroupPolicy response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: address - description: >- - address is the account address of the group policy related to - proposals. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}': - get: - summary: VoteByProposalVoter queries a vote by proposal id and voter. - operationId: CosmosGroupV1VoteByProposalVoter - responses: - '200': - description: A successful response. - schema: - type: object - properties: - vote: - description: vote is the vote with given proposal_id and voter. - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - vote. - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - description: >- - QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter - response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true - type: string - format: uint64 - - name: voter - description: voter is a proposal voter account address. - in: path - required: true - type: string - tags: - - Query - '/cosmos/group/v1/votes_by_proposal/{proposal_id}': - get: - summary: VotesByProposal queries a vote by proposal. - operationId: CosmosGroupV1VotesByProposal - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - vote. - submit_time: - type: string - format: date-time - description: >- - submit_time is the timestamp when the vote was - submitted. - description: Vote represents a vote for a proposal. - description: votes are the list of votes for given proposal_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryVotesByProposalResponse is the Query/VotesByProposal response - type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: proposal_id - description: proposal_id is the unique ID of a proposal. - in: path - required: true - type: string - format: uint64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/group/v1/votes_by_voter/{voter}': - get: - summary: VotesByVoter queries a vote by voter. - operationId: CosmosGroupV1VotesByVoter - responses: - '200': - description: A successful response. - schema: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the - vote. - submit_time: - type: string - format: date-time - description: >- - submit_time is the timestamp when the vote was - submitted. - description: Vote represents a vote for a proposal. - description: votes are the list of votes by given voter. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: voter - description: voter is a proposal voter account address. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/mint/v1beta1/annual_provisions: - get: - summary: AnnualProvisions current minting annual provisions value. - operationId: CosmosMintV1Beta1AnnualProvisions - responses: - '200': - description: A successful response. - schema: - type: object - properties: - annual_provisions: - type: string - format: byte - description: >- - annual_provisions is the current minting annual provisions - value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/mint/v1beta1/inflation: - get: - summary: Inflation returns the current minting inflation value. - operationId: CosmosMintV1Beta1Inflation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: >- - QueryInflationResponse is the response type for the - Query/Inflation RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/mint/v1beta1/params: - get: - summary: Params returns the total set of minting parameters. - operationId: CosmosMintV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/cosmos/nft/v1beta1/balance/{owner}/{class_id}': - get: - summary: >- - Balance queries the number of NFTs of a given class owned by the owner, - same as balanceOf in ERC721 - operationId: CosmosNftV1Beta1Balance - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: >- - QueryBalanceResponse is the response type for the Query/Balance - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: owner - in: path - required: true - type: string - - name: class_id - in: path - required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/classes: - get: - summary: Classes queries all NFT classes - operationId: CosmosNftV1Beta1Classes - responses: - '200': - description: A successful response. - schema: - type: object - properties: - classes: - type: array - items: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT - classification, similar to the contract address of - ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT - classification. Optional - symbol: - type: string - title: >- - symbol is an abbreviated name for nft classification. - Optional - description: - type: string - title: >- - description is a brief description of nft - classification. Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can - define schema for Class and NFT `Data` attributes. - Optional - uri_hash: - type: string - title: >- - uri_hash is a hash of the document pointed by uri. - Optional - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: Class defines the class of the nft type. - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryClassesResponse is the response type for the Query/Classes - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/nft/v1beta1/classes/{class_id}': - get: - summary: Class queries an NFT class based on its id - operationId: CosmosNftV1Beta1Class - responses: - '200': - description: A successful response. - schema: - type: object - properties: - class: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT - classification, similar to the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT - classification. Optional - symbol: - type: string - title: >- - symbol is an abbreviated name for nft classification. - Optional - description: - type: string - title: >- - description is a brief description of nft classification. - Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can define - schema for Class and NFT `Data` attributes. Optional - uri_hash: - type: string - title: >- - uri_hash is a hash of the document pointed by uri. - Optional - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - data is the app specific metadata of the NFT class. - Optional - description: Class defines the class of the nft type. - title: >- - QueryClassResponse is the response type for the Query/Class RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - in: path - required: true - type: string - tags: - - Query - /cosmos/nft/v1beta1/nfts: - get: - summary: >- - NFTs queries all NFTs of a given class or owner,choose at least one of - the two, similar to tokenByIndex in - - ERC721Enumerable - operationId: CosmosNftV1Beta1NFTs - responses: - '200': - description: A successful response. - schema: - type: object - properties: - nfts: - type: array - items: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the - contract address of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QueryNFTsResponse is the response type for the Query/NFTs RPC - methods - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - in: query - required: false - type: string - - name: owner - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/nft/v1beta1/nfts/{class_id}/{id}': - get: - summary: NFT queries an NFT based on its class and id. - operationId: CosmosNftV1Beta1NFT - responses: - '200': - description: A successful response. - schema: - type: object - properties: - nft: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract - address of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: QueryNFTResponse is the response type for the Query/NFT RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - in: path - required: true - type: string - - name: id - in: path - required: true - type: string - tags: - - Query - '/cosmos/nft/v1beta1/owner/{class_id}/{id}': - get: - summary: >- - Owner queries the owner of the NFT based on its class and id, same as - ownerOf in ERC721 - operationId: CosmosNftV1Beta1Owner - responses: - '200': - description: A successful response. - schema: - type: object - properties: - owner: - type: string - title: >- - QueryOwnerResponse is the response type for the Query/Owner RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - in: path - required: true - type: string - - name: id - in: path - required: true - type: string - tags: - - Query - '/cosmos/nft/v1beta1/supply/{class_id}': - get: - summary: >- - Supply queries the number of NFTs from the given class, same as - totalSupply of ERC721. - operationId: CosmosNftV1Beta1Supply - responses: - '200': - description: A successful response. - schema: - type: object - properties: - amount: - type: string - format: uint64 - title: >- - QuerySupplyResponse is the response type for the Query/Supply RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: class_id - in: path - required: true - type: string - tags: - - Query - /cosmos/params/v1beta1/params: - get: - summary: |- - Params queries a specific parameter of a module, given its subspace and - key. - operationId: CosmosParamsV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - param: - description: param defines the queried parameter. - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: subspace - description: subspace defines the module to query the parameter for. - in: query - required: false - type: string - - name: key - description: key defines the key of the parameter in the subspace. - in: query - required: false - type: string - tags: - - Query - /cosmos/params/v1beta1/subspaces: - get: - summary: >- - Subspaces queries for all registered subspaces and all keys for a - subspace. - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosParamsV1Beta1Subspaces - responses: - '200': - description: A successful response. - schema: - type: object - properties: - subspaces: - type: array - items: - type: object - properties: - subspace: - type: string - keys: - type: array - items: - type: string - description: >- - Subspace defines a parameter subspace name and all the keys - that exist for - - the subspace. - - - Since: cosmos-sdk 0.46 - description: >- - QuerySubspacesResponse defines the response types for querying for - all - - registered subspaces and all keys for a subspace. - - - Since: cosmos-sdk 0.46 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/slashing/v1beta1/params: - get: - summary: Params queries the parameters of slashing module - operationId: CosmosSlashingV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: >- - Params represents the parameters used for by the slashing - module. - title: >- - QueryParamsResponse is the response type for the Query/Params RPC - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /cosmos/slashing/v1beta1/signing_infos: - get: - summary: SigningInfos queries signing info of all validators - operationId: CosmosSlashingV1Beta1SigningInfos - responses: - '200': - description: A successful response. - schema: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a - bonded - - in a block and may have signed a precommit or not. This - in conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed - out of validator set). It is set - - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the - Query/SigningInfos RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/slashing/v1beta1/signing_infos/{cons_address}': - get: - summary: SigningInfo queries the signing info of given cons address - operationId: CosmosSlashingV1Beta1SigningInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: >- - Height at which validator was first a candidate OR was - unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a - bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to - liveness downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out - of validator set). It is set - - once the validator commits an equivocation or for any - other configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: >- - val_signing_info is the signing info of requested val cons - address - title: >- - QuerySigningInfoResponse is the response type for the - Query/SigningInfo RPC - - method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - parameters: - - name: cons_address - description: cons_address is the address to query signing info of - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/delegations/{delegator_addr}': - get: - summary: >- - DelegatorDelegations queries all delegations of a given delegator - address. - operationId: CosmosStakingV1Beta1DelegatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - delegation_responses defines all the delegations' info of a - delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations': - get: - summary: Redelegations queries redelegations of given address. - operationId: CosmosStakingV1Beta1Redelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation - source operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular - delegator's redelegating bonds - - from a particular source validator to a particular - destination validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for - redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance - when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of - destination-validator shares created by - redelegation. - description: >- - RedelegationEntry defines a redelegation object - with relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a - RedelegationEntry except that it - - contains a balance in addition to shares which is more - suitable for client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except - that its entries - - contain a balance in addition to shares which is more - suitable for client - - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the - Query/Redelegations RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: src_validator_addr - description: src_validator_addr defines the validator address to redelegate from. - in: query - required: false - type: string - - name: dst_validator_addr - description: dst_validator_addr defines the validator address to redelegate to. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations': - get: - summary: >- - DelegatorUnbondingDelegations queries all unbonding delegations of a - given - - delegator address. - operationId: CosmosStakingV1Beta1DelegatorUnbondingDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryUnbondingDelegatorDelegationsResponse is response type for - the - - Query/UnbondingDelegatorDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators': - get: - summary: |- - DelegatorValidators queries all validators info for given delegator - address. - operationId: CosmosStakingV1Beta1DelegatorValidators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators defines the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}': - get: - summary: |- - DelegatorValidator queries validator info for given delegator validator - pair. - operationId: CosmosStakingV1Beta1DelegatorValidator - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/historical_info/{height}': - get: - summary: HistoricalInfo queries the historical info for given height. - operationId: CosmosStakingV1Beta1HistoricalInfo - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the - validator's operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must - contain at least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name - should be in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, - for URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message - definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup - results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently - available in the official - - protobuf release, and it is not used for type - URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol - buffer message along with a - - URL that describes the type of the serialized - message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods - of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will - by default use - - 'type.googleapis.com/full.type.name' as the type URL - and the unpack - - methods only use the fully qualified type name after - the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" - will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded - message, with an - - additional field `@type` which contains the type - URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to - the `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature - (ex. UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height - at which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time - for the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a - fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate - was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to - coins. Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When - coins are delegated to - - this validator, the validator is credited with a - delegation whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the - Query/HistoricalInfo RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - description: height defines at which height to query the historical info. - in: path - required: true - type: string - format: int64 - tags: - - Query - /cosmos/staking/v1beta1/params: - get: - summary: Parameters queries the staking parameters. - operationId: CosmosStakingV1Beta1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding - delegation or redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: >- - historical_entries is the number of historical entries to - persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: - type: string - title: >- - min_commission_rate is the chain-wide minimum commission - rate that a validator can charge their delegators - description: >- - QueryParamsResponse is response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/staking/v1beta1/pool: - get: - summary: Pool queries the pool info. - operationId: CosmosStakingV1Beta1Pool - responses: - '200': - description: A successful response. - schema: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/staking/v1beta1/validators: - get: - summary: Validators queries all validators that match the given status. - operationId: CosmosStakingV1Beta1Validators - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed - from bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for - the validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission - rates to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to - delegators, as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate - which validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily - increase of the validator commission, as a - fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total - amount of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct - calculation of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated - divided by the current - - exchange rate. Voting power can be calculated as total - bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: status - description: status enables to query for validators matching a given status. - in: query - required: false - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}': - get: - summary: Validator queries validator info for given validator address. - operationId: CosmosStakingV1Beta1Validator - responses: - '200': - description: A successful response. - schema: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: >- - status is the validator status - (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: >- - tokens define the delegated tokens (incl. - self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: >- - description defines the description terms for the - validator. - type: object - properties: - moniker: - type: string - description: >- - moniker defines a human-readable name for the - validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for - security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at - which this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates - to be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared - minimum self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount - of the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation - of future - - undelegations without iterating over delegators. When coins - are delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided - by the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - title: >- - QueryValidatorResponse is response type for the Query/Validator - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations': - get: - summary: ValidatorDelegations queries delegate info for given validator. - operationId: CosmosStakingV1Beta1ValidatorDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of - the delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of - the validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the - voting power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that - it contains a - - balance in addition to shares which is more suitable for - client responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}': - get: - summary: Delegation queries delegate info for given validator delegator pair. - operationId: CosmosStakingV1Beta1Delegation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - delegation_response: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an - account. It is - - owned by one delegator, and is associated with the voting - power of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the - custom method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for - client responses. - description: >- - QueryDelegationResponse is response type for the Query/Delegation - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation': - get: - summary: |- - UnbondingDelegation queries unbonding info for given validator delegator - pair. - operationId: CosmosStakingV1Beta1UnbondingDelegation - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbond: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - description: >- - QueryDelegationResponse is response type for the - Query/UnbondingDelegation - - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: delegator_addr - description: delegator_addr defines the delegator address to query for. - in: path - required: true - type: string - tags: - - Query - '/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations': - get: - summary: >- - ValidatorUnbondingDelegations queries unbonding delegations of a - validator. - operationId: CosmosStakingV1Beta1ValidatorUnbondingDelegations - responses: - '200': - description: A successful response. - schema: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time is the unix time for unbonding - completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially - scheduled to receive at completion. - balance: - type: string - description: >- - balance defines the tokens to receive at - completion. - description: >- - UnbondingDelegationEntry defines an unbonding object - with relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's - unbonding bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryValidatorUnbondingDelegationsResponse is response type for - the - - Query/ValidatorUnbondingDelegations RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: validator_addr - description: validator_addr defines the validator address to query for. - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /cosmos/tx/v1beta1/simulate: - post: - summary: Simulate simulates executing a transaction for estimating gas usage. - operationId: CosmosTxV1Beta1Simulate - responses: - '200': - description: A successful response. - schema: - type: object - properties: - gas_info: - description: gas_info is the information about gas used in the simulation. - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler - execution. It MUST be - - length prefixed in order to separate data from multiple - message executions. - - Deprecated. This field is still populated, but prefer - msg_response instead - - because it also contains the Msg response typeURL. - log: - type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted - during message - - or handler execution. - msg_responses: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - msg_responses contains the Msg handler responses type - packed in Anys. - - - Since: cosmos-sdk 0.46 - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - description: |- - SimulateRequest is the request type for the Service.Simulate - RPC method. - in: body - required: true - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.SimulateRequest' - tags: - - Service - /cosmos/tx/v1beta1/txs: - get: - summary: GetTxsEvent fetches txs by event. - operationId: CosmosTxV1Beta1GetTxsEvent - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse' - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: events - description: events is the list of transaction event type. - in: query - required: false - type: array - items: - type: string - collectionFormat: multi - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - - name: order_by - description: |2- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - in: query - required: false - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - - name: page - description: >- - page is the page number to query, starts at 1. If not provided, will - default to first page. - in: query - required: false - type: string - format: uint64 - - name: limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - tags: - - Service - post: - summary: BroadcastTx broadcast transaction. - operationId: CosmosTxV1Beta1BroadcastTx - responses: - '200': - description: A successful response. - schema: - type: object - properties: - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: >- - The output of the application's logger (raw string). May - be - - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where - the key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where - all the attributes - - contain key/value pairs that are strings instead - of raw bytes. - description: >- - Events contains a slice of Event objects that were - emitted during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed - tx ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the - weighted median of - - the timestamps of the valid votes in the block.LastCommit. - For height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, - associated with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx - and ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante. Whereas Logs contains the events, - with - - additional metadata, emitted only by processing the - messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: body - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. - in: body - required: true - schema: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the - TxService.Broadcast RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - description: >- - BroadcastTxRequest is the request type for the - Service.BroadcastTxRequest - - RPC method. - tags: - - Service - '/cosmos/tx/v1beta1/txs/block/{height}': - get: - summary: GetBlockWithTxs fetches a block with decoded txs. - description: 'Since: cosmos-sdk 0.45.2' - operationId: CosmosTxV1Beta1GetBlockWithTxs - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse' - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: height - description: height is the height of the block to query. - in: path - required: true - type: string - format: int64 - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Service - '/cosmos/tx/v1beta1/txs/{hash}': - get: - summary: GetTx fetches a tx by hash. - operationId: CosmosTxV1Beta1GetTx - responses: - '200': - description: A successful response. - schema: - $ref: '#/definitions/cosmos.tx.v1beta1.GetTxResponse' - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: hash - description: 'hash is the tx hash to query, encoded as a hex string.' - in: path - required: true - type: string - tags: - - Service - '/cosmos/upgrade/v1beta1/applied_plan/{name}': - get: - summary: AppliedPlan queries a previously applied upgrade plan by its name. - operationId: CosmosUpgradeV1Beta1AppliedPlan - responses: - '200': - description: A successful response. - schema: - type: object - properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the - Query/AppliedPlan RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: name - description: name is the name of the applied plan to query for. - in: path - required: true - type: string - tags: - - Query - /cosmos/upgrade/v1beta1/authority: - get: - summary: Returns the account with authority to conduct upgrades - description: 'Since: cosmos-sdk 0.46' - operationId: CosmosUpgradeV1Beta1Authority - responses: - '200': - description: A successful response. - schema: - type: object - properties: - address: - type: string - description: 'Since: cosmos-sdk 0.46' - title: QueryAuthorityResponse is the response type for Query/Authority - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/upgrade/v1beta1/current_plan: - get: - summary: CurrentPlan queries the current upgrade plan. - operationId: CosmosUpgradeV1Beta1CurrentPlan - responses: - '200': - description: A successful response. - schema: - type: object - properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by - the upgraded - - version of the software to apply any special "on-upgrade" - commands during - - the first BeginBlock method after the upgrade is applied. - It is also used - - to detect whether a software version can handle a given - upgrade. If no - - upgrade handler with this name has been set in the - software, it will be - - assumed that the software is out-of-date when the upgrade - Time or Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time - based upgrade logic - - has been removed from the SDK. - - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included - on-chain - - such as a git commit that validators could automatically - upgrade to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryCurrentPlanResponse is the response type for the - Query/CurrentPlan RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /cosmos/upgrade/v1beta1/module_versions: - get: - summary: ModuleVersions queries the list of module versions from state. - description: 'Since: cosmos-sdk 0.43' - operationId: CosmosUpgradeV1Beta1ModuleVersions - responses: - '200': - description: A successful response. - schema: - type: object - properties: - module_versions: - type: array - items: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 - description: >- - module_versions is a list of module names with their consensus - versions. - description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions - - RPC method. - - - Since: cosmos-sdk 0.43 - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: module_name - description: |- - module_name is a field to query a specific module - consensus version from state. Leaving this empty will - fetch the full list of module versions from state - in: query - required: false - type: string - tags: - - Query - '/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}': - get: - summary: >- - UpgradedConsensusState queries the consensus state that will serve - - as a trusted kernel for the next version of this chain. It will only be - - stored at the last height of this chain. - - UpgradedConsensusState RPC not supported with legacy querier - - This rpc is deprecated now that IBC has its own replacement - - (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) - operationId: CosmosUpgradeV1Beta1UpgradedConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_consensus_state: - type: string - format: byte - title: 'Since: cosmos-sdk 0.43' - description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState - - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: last_height - description: |- - last height of the current chain must be sent in request - as this is the height under which next consensus state is stored - in: path - required: true - type: string - format: int64 - tags: - - Query - /ibc/apps/interchain_accounts/controller/v1/params: - get: - summary: Params queries all parameters of the ICA controller submodule. - operationId: IbcApplicationsInterchainAccountsControllerV1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - controller_enabled: - type: boolean - description: >- - controller_enabled enables or disables the controller - submodule. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - /ibc/apps/interchain_accounts/host/v1/params: - get: - summary: Params queries all parameters of the ICA host submodule. - operationId: IbcApplicationsInterchainAccountsHostV1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - host_enabled: - type: boolean - description: host_enabled enables or disables the host submodule. - allow_messages: - type: array - items: - type: string - description: >- - allow_messages defines a list of sdk message typeURLs - allowed to be executed on a host chain. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - additionalProperties: {} - tags: - - Query - '/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address': - get: - summary: >- - EscrowAddress returns the escrow address for a particular port and - channel id. - operationId: IbcApplicationsTransferV1EscrowAddress - responses: - '200': - description: A successful response. - schema: - type: object - properties: - escrow_address: - type: string - title: the escrow account address - description: >- - QueryEscrowAddressResponse is the response type of the - EscrowAddress RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: unique channel identifier - in: path - required: true - type: string - - name: port_id - description: unique port identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/apps/transfer/v1/denom_hashes/{trace}': - get: - summary: DenomHash queries a denomination hash information. - operationId: IbcApplicationsTransferV1DenomHash - responses: - '200': - description: A successful response. - schema: - type: object - properties: - hash: - type: string - description: hash (in hex format) of the denomination trace information. - description: >- - QueryDenomHashResponse is the response type for the - Query/DenomHash RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: trace - description: 'The denomination trace ([port_id]/[channel_id])+/[denom]' - in: path - required: true - type: string - tags: - - Query - /ibc/apps/transfer/v1/denom_traces: - get: - summary: DenomTraces queries all denomination traces. - operationId: IbcApplicationsTransferV1DenomTraces - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the - - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the - Query/DenomTraces RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/apps/transfer/v1/denom_traces/{hash}': - get: - summary: DenomTrace queries a denomination trace information. - operationId: IbcApplicationsTransferV1DenomTrace - responses: - '200': - description: A successful response. - schema: - type: object - properties: - denom_trace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used - for tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible - tokens and the - - source tracing information path. - description: >- - QueryDenomTraceResponse is the response type for the - Query/DenomTrace RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: hash - description: >- - hash (in hex format) or denom (full denom with ibc prefix) of the - denomination trace information. - in: path - required: true - type: string - tags: - - Query - /ibc/apps/transfer/v1/params: - get: - summary: Params queries all parameters of the ibc-transfer module. - operationId: IbcApplicationsTransferV1Params - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - description: >- - send_enabled enables or disables all cross-chain token - transfers from this - - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - - chain. - description: >- - QueryParamsResponse is the response type for the Query/Params RPC - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /ibc/core/channel/v1/channels: - get: - summary: Channels queries all the IBC channels of a chain. - operationId: IbcCoreChannelV1Channels - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels - RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}': - get: - summary: Channel queries an IBC Channel. - operationId: IbcCoreChannelV1Channel - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - description: >- - Channel defines pipeline for exactly-once packet delivery - between specific - - modules on separate blockchains, which has at least one end - capable of - - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelResponse is the response type for the Query/Channel - RPC method. - - Besides the Channel end, it includes a proof and the height from - which the - - proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state': - get: - summary: >- - ChannelClientState queries for the client state for the channel - associated - - with the provided channel identifiers. - operationId: IbcCoreChannelV1ChannelClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}': - get: - summary: |- - ChannelConsensusState queries for the consensus state for the channel - associated with the provided channel identifiers. - operationId: IbcCoreChannelV1ChannelConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: revision_number - description: revision number of the consensus state - in: path - required: true - type: string - format: uint64 - - name: revision_height - description: revision height of the consensus state - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence': - get: - summary: >- - NextSequenceReceive returns the next receive sequence for a given - channel. - operationId: IbcCoreChannelV1NextSequenceReceive - responses: - '200': - description: A successful response. - schema: - type: object - properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements': - get: - summary: >- - PacketAcknowledgements returns all the packet acknowledgements - associated - - with a channel. - operationId: IbcCoreChannelV1PacketAcknowledgements - responses: - '200': - description: A successful response. - schema: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - - name: packet_commitment_sequences - description: list of packet sequences - in: query - required: false - type: array - items: - type: string - format: uint64 - collectionFormat: multi - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}': - get: - summary: PacketAcknowledgement queries a stored packet acknowledgement hash. - operationId: IbcCoreChannelV1PacketAcknowledgement - responses: - '200': - description: A successful response. - schema: - type: object - properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketAcknowledgementResponse defines the client query - response for a - - packet which also includes a proof and the height from which the - - proof was retrieved - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments': - get: - summary: |- - PacketCommitments returns all the packet commitments hashes associated - with a channel. - operationId: IbcCoreChannelV1PacketCommitments - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve - and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to - interpret this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks': - get: - summary: >- - UnreceivedAcks returns all the unreceived IBC acknowledgements - associated - - with a channel and sequences. - operationId: IbcCoreChannelV1UnreceivedAcks - responses: - '200': - description: A successful response. - schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_ack_sequences - description: list of acknowledgement sequences - in: path - required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets': - get: - summary: >- - UnreceivedPackets returns all the unreceived IBC packets associated with - a - - channel and sequences. - operationId: IbcCoreChannelV1UnreceivedPackets - responses: - '200': - description: A successful response. - schema: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: packet_commitment_sequences - description: list of packet sequences - in: path - required: true - type: array - items: - type: string - format: uint64 - collectionFormat: csv - minItems: 1 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}': - get: - summary: PacketCommitment queries a stored packet commitment hash. - operationId: IbcCoreChannelV1PacketCommitment - responses: - '200': - description: A successful response. - schema: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response - for a packet - - which also includes a proof and the height from which the proof - was - - retrieved - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}': - get: - summary: >- - PacketReceipt queries if a given packet sequence has been received on - the - - queried chain - operationId: IbcCoreChannelV1PacketReceipt - responses: - '200': - description: A successful response. - schema: - type: object - properties: - received: - type: boolean - title: success flag for if receipt exists - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a - packet - - receipt which also includes a proof, and the height from which the - proof was - - retrieved - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: channel_id - description: channel unique identifier - in: path - required: true - type: string - - name: port_id - description: port unique identifier - in: path - required: true - type: string - - name: sequence - description: packet sequence - in: path - required: true - type: string - format: uint64 - tags: - - Query - '/ibc/core/channel/v1/connections/{connection}/channels': - get: - summary: |- - ConnectionChannels queries all the channels associated with a connection - end. - operationId: IbcCoreChannelV1ConnectionChannels - responses: - '200': - description: A successful response. - schema: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: >- - State defines if a channel is in one of the following - states: - - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: >- - - ORDER_NONE_UNSPECIFIED: zero-value for channel - ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other - end of the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which - packets sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: >- - IdentifiedChannel defines a channel with additional port and - channel - - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection - description: connection unique identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - /ibc/client/v1/params: - get: - summary: ClientParams queries all parameters of the ibc client. - operationId: IbcCoreClientV1ClientParams - responses: - '200': - description: A successful response. - schema: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: >- - allowed_clients defines the list of allowed client state - types. - description: >- - QueryClientParamsResponse is the response type for the - Query/ClientParams RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /ibc/core/client/v1/client_states: - get: - summary: ClientStates queries all the IBC light clients of a chain. - operationId: IbcCoreClientV1ClientStates - responses: - '200': - description: A successful response. - schema: - type: object - properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the - Query/ClientStates RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/client/v1/client_states/{client_id}': - get: - summary: ClientState queries an IBC light client. - operationId: IbcCoreClientV1ClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryClientStateResponse is the response type for the - Query/ClientState RPC - - method. Besides the client state, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client state unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/client/v1/client_status/{client_id}': - get: - summary: Status queries the status of an IBC client. - operationId: IbcCoreClientV1ClientStatus - responses: - '200': - description: A successful response. - schema: - type: object - properties: - status: - type: string - description: >- - QueryClientStatusResponse is the response type for the - Query/ClientStatus RPC - - method. It returns the current status of the IBC client. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/client/v1/consensus_states/{client_id}': - get: - summary: |- - ConsensusStates queries all the consensus state associated with a given - client. - operationId: IbcCoreClientV1ConsensusStates - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each - height while keeping - - RevisionNumber the same. However some consensus - algorithms may choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as - the RevisionHeight - - gets reset - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the - type of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's - path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the - binary all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available - in the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the - regular - - representation of the deserialized, embedded message, - with an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message - [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height - - field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/client/v1/consensus_states/{client_id}/heights': - get: - summary: >- - ConsensusStateHeights queries the height of every consensus states - associated with a given client. - operationId: IbcCoreClientV1ConsensusStateHeights - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state_heights: - type: array - items: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms - may choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes - of updating and - - freezing clients - title: consensus state heights - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStateHeightsResponse is the response type for the - Query/ConsensusStateHeights RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}': - get: - summary: >- - ConsensusState queries a consensus state associated with a client state - at - - a given height. - operationId: IbcCoreClientV1ConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - consensus state associated with the client identifier at the - given height - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes - of updating and - - freezing clients - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - - RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier - in: path - required: true - type: string - - name: revision_number - description: consensus state revision number - in: path - required: true - type: string - format: uint64 - - name: revision_height - description: consensus state revision height - in: path - required: true - type: string - format: uint64 - - name: latest_height - description: >- - latest_height overrrides the height field and queries the latest - stored - - ConsensusState - in: query - required: false - type: boolean - tags: - - Query - /ibc/core/client/v1/upgraded_client_states: - get: - summary: UpgradedClientState queries an Upgraded IBC light client. - operationId: IbcCoreClientV1UpgradedClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - description: |- - QueryUpgradedClientStateResponse is the response type for the - Query/UpgradedClientState RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - /ibc/core/client/v1/upgraded_consensus_states: - get: - summary: UpgradedConsensusState queries an Upgraded IBC consensus state. - operationId: IbcCoreClientV1UpgradedConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - upgraded_consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: Consensus state associated with the request identifier - description: |- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState RPC method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - tags: - - Query - '/ibc/core/connection/v1/client_connections/{client_id}': - get: - summary: |- - ClientConnections queries the connection paths associated with a client - state. - operationId: IbcCoreConnectionV1ClientConnections - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: client_id - description: client identifier associated with a connection - in: path - required: true - type: string - tags: - - Query - /ibc/core/connection/v1/connections: - get: - summary: Connections queries all the IBC connections of a chain. - operationId: IbcCoreConnectionV1Connections - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to - negotiate the IBC verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will - be append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: >- - IdentifiedConnection defines a connection with additional - connection - - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - PageResponse is to be embedded in gRPC response messages where - the - - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionsResponse is the response type for the - Query/Connections RPC - - method. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: pagination.key - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - in: query - required: false - type: string - format: byte - - name: pagination.offset - description: >- - offset is a numeric offset that can be used when key is unavailable. - - It is less efficient than using key. Only one of offset or key - should - - be set. - in: query - required: false - type: string - format: uint64 - - name: pagination.limit - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - in: query - required: false - type: string - format: uint64 - - name: pagination.count_total - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in - UIs. - - count_total is only respected when offset is used. It is ignored - when key - - is set. - in: query - required: false - type: boolean - - name: pagination.reverse - description: >- - reverse is set to true if results are to be returned in the - descending order. - - - Since: cosmos-sdk 0.43 - in: query - required: false - type: boolean - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}': - get: - summary: Connection queries an IBC connection end. - operationId: IbcCoreConnectionV1Connection - responses: - '200': - description: A successful response. - schema: - type: object - properties: - connection: - title: connection associated with the request identifier - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: >- - list of features compatible with the specified - identifier - description: >- - Version defines the versioning scheme used to negotiate - the IBC verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings - or protocols for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain - associated with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty - chain associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can - be used for - - packet-verification NOTE: delay period logic is only - implemented by some - - clients. - description: >- - ConnectionEnd defines a stateful object on a chain connected - to another - - separate one. - - NOTE: there must only be 2 defined ConnectionEnds to establish - - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionResponse is the response type for the - Query/Connection RPC - - method. Besides the connection end, it includes a proof and the - height from - - which the proof was retrieved. - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection unique identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}/client_state': - get: - summary: |- - ConnectionClientState queries the client state associated with the - connection. - operationId: IbcCoreConnectionV1ConnectionClientState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type - of the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be - in a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can - optionally set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results - based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty - scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any - values in the form - - of utility functions or additional generated methods of - the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and - the unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will - yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a - custom JSON - - representation, that representation will be embedded - adding a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an - additional client - - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - tags: - - Query - '/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}': - get: - summary: |- - ConnectionConsensusState queries the consensus state associated with the - connection. - operationId: IbcCoreConnectionV1ConnectionConsensusState - responses: - '200': - description: A successful response. - schema: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height - while keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - default: - description: An unexpected error response. - schema: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - parameters: - - name: connection_id - description: connection identifier - in: path - required: true - type: string - - name: revision_number - in: path - required: true - type: string - format: uint64 - - name: revision_height - in: path - required: true - type: string - format: uint64 - tags: - - Query -definitions: - cosmos.auth.v1beta1.AddressBytesToStringResponse: - type: object - properties: - address_string: - type: string - description: >- - AddressBytesToStringResponse is the response type for AddressString rpc - method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.AddressStringToBytesResponse: - type: object - properties: - address_bytes: - type: string - format: byte - description: >- - AddressStringToBytesResponse is the response type for AddressBytes rpc - method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.Bech32PrefixResponse: - type: object - properties: - bech32_prefix: - type: string - description: |- - Bech32PrefixResponse is the response type for Bech32Prefix rpc method. - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.Params: - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: Params defines the parameters for the auth module. - cosmos.auth.v1beta1.QueryAccountAddressByIDResponse: - type: object - properties: - account_address: - type: string - title: >- - QueryAccountAddressByIDResponse is the response type for - AccountAddressByID rpc method - cosmos.auth.v1beta1.QueryAccountResponse: - type: object - properties: - account: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryAccountResponse is the response type for the Query/Account RPC - method. - cosmos.auth.v1beta1.QueryAccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: accounts are the existing accounts - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAccountsResponse is the response type for the Query/Accounts RPC - method. - - - Since: cosmos-sdk 0.43 - cosmos.auth.v1beta1.QueryModuleAccountsResponse: - type: object - properties: - accounts: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryModuleAccountsResponse is the response type for the - Query/ModuleAccounts RPC method. - - - Since: cosmos-sdk 0.46 - cosmos.auth.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - max_memo_characters: - type: string - format: uint64 - tx_sig_limit: - type: string - format: uint64 - tx_size_cost_per_byte: - type: string - format: uint64 - sig_verify_cost_ed25519: - type: string - format: uint64 - sig_verify_cost_secp256k1: - type: string - format: uint64 - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.base.query.v1beta1.PageRequest: - type: object - properties: - key: - type: string - format: byte - description: |- - key is a value returned in PageResponse.next_key to begin - querying the next page most efficiently. Only one of offset or key - should be set. - offset: - type: string - format: uint64 - description: |- - offset is a numeric offset that can be used when key is unavailable. - It is less efficient than using key. Only one of offset or key should - be set. - limit: - type: string - format: uint64 - description: >- - limit is the total number of results to be returned in the result - page. - - If left empty it will default to a value to be set by each app. - count_total: - type: boolean - description: >- - count_total is set to true to indicate that the result set should - include - - a count of the total number of items available for pagination in UIs. - - count_total is only respected when offset is used. It is ignored when - key - - is set. - reverse: - type: boolean - description: >- - reverse is set to true if results are to be returned in the descending - order. - - - Since: cosmos-sdk 0.43 - description: |- - message SomeRequest { - Foo some_parameter = 1; - PageRequest pagination = 2; - } - title: |- - PageRequest is to be embedded in gRPC request messages for efficient - pagination. Ex: - cosmos.base.query.v1beta1.PageResponse: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: |- - total is total number of results available if PageRequest.count_total - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - google.protobuf.Any: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a canonical - form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types that - they - - expect it to use in the context of Any. However, for URLs which use - the - - scheme `http`, `https`, or no scheme, one can optionally set up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along with - a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - google.rpc.Status: - type: object - properties: - code: - type: integer - format: int32 - message: - type: string - details: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - cosmos.authz.v1beta1.Grant: - type: object - properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - time when the grant will expire and will be pruned. If null, then the - grant - - doesn't have a time expiration (other conditions in `authorization` - - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - cosmos.authz.v1beta1.GrantAuthorization: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the grantee - and granter. - - It is used in genesis.proto and query.proto - cosmos.authz.v1beta1.MsgExecResponse: - type: object - properties: - results: - type: array - items: - type: string - format: byte - description: MsgExecResponse defines the Msg/MsgExecResponse response type. - cosmos.authz.v1beta1.MsgGrantResponse: - type: object - description: MsgGrantResponse defines the Msg/MsgGrant response type. - cosmos.authz.v1beta1.MsgRevokeResponse: - type: object - description: MsgRevokeResponse defines the Msg/MsgRevokeResponse response type. - cosmos.authz.v1beta1.QueryGranteeGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted to the grantee. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranteeGrantsResponse is the response type for the - Query/GranteeGrants RPC method. - cosmos.authz.v1beta1.QueryGranterGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - granter: - type: string - grantee: - type: string - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - GrantAuthorization extends a grant with both the addresses of the - grantee and granter. - - It is used in genesis.proto and query.proto - description: grants is a list of grants granted by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGranterGrantsResponse is the response type for the - Query/GranterGrants RPC method. - cosmos.authz.v1beta1.QueryGrantsResponse: - type: object - properties: - grants: - type: array - items: - type: object - properties: - authorization: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - expiration: - type: string - format: date-time - title: >- - time when the grant will expire and will be pruned. If null, - then the grant - - doesn't have a time expiration (other conditions in - `authorization` - - may apply to invalidate the grant) - description: |- - Grant gives permissions to execute - the provide method with expiration time. - description: authorizations is a list of grants granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGrantsResponse is the response type for the Query/Authorizations RPC - method. - cosmos.bank.v1beta1.DenomOwner: - type: object - properties: - address: - type: string - description: address defines the address that owns a particular denomination. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - DenomOwner defines structure representing an account that owns or holds a - particular denominated token. It contains the account address and account - balance of the denominated token. - - Since: cosmos-sdk 0.46 - cosmos.bank.v1beta1.DenomUnit: - type: object - properties: - denom: - type: string - description: denom represents the string name of the given denom unit (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' - with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - cosmos.bank.v1beta1.Input: - type: object - properties: - address: - type: string - coins: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Input models transaction input. - cosmos.bank.v1beta1.Metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit (e.g - uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given DenomUnit's - denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit of - 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with exponent - = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). This - can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains additional - information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. It's used to - verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - cosmos.bank.v1beta1.MsgMultiSendResponse: - type: object - description: MsgMultiSendResponse defines the Msg/MultiSend response type. - cosmos.bank.v1beta1.MsgSendResponse: - type: object - description: MsgSendResponse defines the Msg/Send response type. - cosmos.bank.v1beta1.Output: - type: object - properties: - address: - type: string - coins: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Output models transaction outputs. - cosmos.bank.v1beta1.Params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is - - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - cosmos.bank.v1beta1.QueryAllBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllBalancesResponse is the response type for the Query/AllBalances - RPC - - method. - cosmos.bank.v1beta1.QueryBalanceResponse: - type: object - properties: - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QueryBalanceResponse is the response type for the Query/Balance RPC - method. - cosmos.bank.v1beta1.QueryDenomMetadataResponse: - type: object - properties: - metadata: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a DenomUnit - of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: ATOM). - This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains additional - information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. It's used - to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - QueryDenomMetadataResponse is the response type for the - Query/DenomMetadata RPC - - method. - cosmos.bank.v1beta1.QueryDenomOwnersResponse: - type: object - properties: - denom_owners: - type: array - items: - type: object - properties: - address: - type: string - description: address defines the address that owns a particular denomination. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DenomOwner defines structure representing an account that owns or - holds a - - particular denominated token. It contains the account address and - account - - balance of the denominated token. - - - Since: cosmos-sdk 0.46 - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC - query. - - - Since: cosmos-sdk 0.46 - cosmos.bank.v1beta1.QueryDenomsMetadataResponse: - type: object - properties: - metadatas: - type: array - items: - type: object - properties: - description: - type: string - denom_units: - type: array - items: - type: object - properties: - denom: - type: string - description: >- - denom represents the string name of the given denom unit - (e.g uatom). - exponent: - type: integer - format: int64 - description: >- - exponent represents power of 10 exponent that one must - - raise the base_denom to in order to equal the given - DenomUnit's denom - - 1 denom = 10^exponent base_denom - - (e.g. with a base_denom of uatom, one can create a - DenomUnit of 'atom' with - - exponent = 6, thus: 1 atom = 10^6 uatom). - aliases: - type: array - items: - type: string - title: aliases is a list of string aliases for the given denom - description: |- - DenomUnit represents a struct that describes a given - denomination unit of the basic token. - title: denom_units represents the list of DenomUnit's for a given coin - base: - type: string - description: >- - base represents the base denom (should be the DenomUnit with - exponent = 0). - display: - type: string - description: |- - display indicates the suggested denom that should be - displayed in clients. - name: - type: string - description: 'Since: cosmos-sdk 0.43' - title: 'name defines the name of the token (eg: Cosmos Atom)' - symbol: - type: string - description: >- - symbol is the token symbol usually shown on exchanges (eg: - ATOM). This can - - be the same as the display. - - - Since: cosmos-sdk 0.43 - uri: - type: string - description: >- - URI to a document (on or off-chain) that contains additional - information. Optional. - - - Since: cosmos-sdk 0.46 - uri_hash: - type: string - description: >- - URIHash is a sha256 hash of a document pointed by URI. It's used - to verify that - - the document didn't change. Optional. - - - Since: cosmos-sdk 0.46 - description: |- - Metadata represents a struct that describes - a basic token. - description: >- - metadata provides the client information for all the registered - tokens. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDenomsMetadataResponse is the response type for the - Query/DenomsMetadata RPC - - method. - cosmos.bank.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - send_enabled: - type: array - items: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: >- - SendEnabled maps coin denom to a send_enabled status (whether a - denom is - - sendable). - default_send_enabled: - type: boolean - description: Params defines the parameters for the bank module. - description: >- - QueryParamsResponse defines the response type for querying x/bank - parameters. - cosmos.bank.v1beta1.QuerySpendableBalancesResponse: - type: object - properties: - balances: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: balances is the spendable balances of all the coins. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QuerySpendableBalancesResponse defines the gRPC response structure for - querying - - an account's spendable balances. - - - Since: cosmos-sdk 0.46 - cosmos.bank.v1beta1.QuerySupplyOfResponse: - type: object - properties: - amount: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: >- - QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC - method. - cosmos.bank.v1beta1.QueryTotalSupplyResponse: - type: object - properties: - supply: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: supply is the supply of the coins - pagination: - description: |- - pagination defines the pagination in the response. - - Since: cosmos-sdk 0.43 - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryTotalSupplyResponse is the response type for the Query/TotalSupply - RPC - - method - cosmos.bank.v1beta1.SendEnabled: - type: object - properties: - denom: - type: string - enabled: - type: boolean - description: |- - SendEnabled maps coin denom to a send_enabled status (whether a denom is - sendable). - cosmos.base.v1beta1.Coin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - cosmos.base.tendermint.v1beta1.ABCIQueryResponse: - type: object - properties: - code: - type: integer - format: int64 - log: - type: string - info: - type: string - index: - type: string - format: int64 - key: - type: string - format: byte - value: - type: string - format: byte - proof_ops: - type: object - properties: - ops: - type: array - items: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. - The data could - - be arbitrary format, providing nessecary data for example - neighbouring node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined - in - - Tendermint. - description: |- - ProofOps is Merkle proof defined by the list of ProofOps. - - Note: This type is a duplicate of the ProofOps proto type defined in - Tendermint. - height: - type: string - format: int64 - codespace: - type: string - description: |- - ABCIQueryResponse defines the response structure for the ABCIQuery gRPC - query. - - Note: This type is a duplicate of the ResponseQuery proto type defined in - Tendermint. - cosmos.base.tendermint.v1beta1.Block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer address, formatted - as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we convert it - to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, - - including all blockchain data structures and - the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer address, - formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we - convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - description: >- - GetBlockByHeightResponse is the response type for the - Query/GetBlockByHeight - - RPC method. - cosmos.base.tendermint.v1beta1.GetLatestBlockResponse: - type: object - properties: - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - title: 'Deprecated: please use `sdk_block` instead' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - sdk_block: - title: 'Since: cosmos-sdk 0.47' - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer address, - formatted as a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we - convert it to a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - description: |- - Block is tendermint type Block, with the Header proposer address - field converted to bech32 string. - description: >- - GetLatestBlockResponse is the response type for the Query/GetLatestBlock - RPC - - method. - cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - GetLatestValidatorSetResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.GetNodeInfoResponse: - type: object - properties: - default_node_info: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - application_version: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - description: |- - GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC - method. - cosmos.base.tendermint.v1beta1.GetSyncingResponse: - type: object - properties: - syncing: - type: boolean - description: >- - GetSyncingResponse is the response type for the Query/GetSyncing RPC - method. - cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse: - type: object - properties: - block_height: - type: string - format: int64 - validators: - type: array - items: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - GetValidatorSetByHeightResponse is the response type for the - Query/GetValidatorSetByHeight RPC method. - cosmos.base.tendermint.v1beta1.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - description: >- - proposer_address is the original block proposer address, formatted as - a Bech32 string. - - In Tendermint, this type is `bytes`, but in the SDK, we convert it to - a Bech32 string - - for better UX. - description: Header defines the structure of a Tendermint block header. - cosmos.base.tendermint.v1beta1.Module: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos.base.tendermint.v1beta1.ProofOp: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. The data - could - - be arbitrary format, providing nessecary data for example neighbouring - node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined in - - Tendermint. - cosmos.base.tendermint.v1beta1.ProofOps: - type: object - properties: - ops: - type: array - items: - type: object - properties: - type: - type: string - key: - type: string - format: byte - data: - type: string - format: byte - description: >- - ProofOp defines an operation used for calculating Merkle root. The - data could - - be arbitrary format, providing nessecary data for example - neighbouring node - - hash. - - - Note: This type is a duplicate of the ProofOp proto type defined in - - Tendermint. - description: |- - ProofOps is Merkle proof defined by the list of ProofOps. - - Note: This type is a duplicate of the ProofOps proto type defined in - Tendermint. - cosmos.base.tendermint.v1beta1.Validator: - type: object - properties: - address: - type: string - pub_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - description: Validator is the type for the validator-set. - cosmos.base.tendermint.v1beta1.VersionInfo: - type: object - properties: - name: - type: string - app_name: - type: string - version: - type: string - git_commit: - type: string - build_tags: - type: string - go_version: - type: string - build_deps: - type: array - items: - type: object - properties: - path: - type: string - title: module path - version: - type: string - title: module version - sum: - type: string - title: checksum - title: Module is the type for VersionInfo - cosmos_sdk_version: - type: string - title: 'Since: cosmos-sdk 0.43' - description: VersionInfo is the type for the GetNodeInfoResponse message. - tendermint.crypto.PublicKey: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: PublicKey defines the keys available for use with Tendermint Validators - tendermint.p2p.DefaultNodeInfo: - type: object - properties: - protocol_version: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - default_node_id: - type: string - listen_addr: - type: string - network: - type: string - version: - type: string - channels: - type: string - format: byte - moniker: - type: string - other: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.DefaultNodeInfoOther: - type: object - properties: - tx_index: - type: string - rpc_address: - type: string - tendermint.p2p.ProtocolVersion: - type: object - properties: - p2p: - type: string - format: uint64 - block: - type: string - format: uint64 - app: - type: string - format: uint64 - tendermint.types.Block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, - - including all blockchain data structures and - the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.BlockID: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - tendermint.types.BlockIDFlag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - tendermint.types.Commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.CommitSig: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - tendermint.types.Data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the order - first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - tendermint.types.DuplicateVoteEvidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from validators - for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - tendermint.types.Evidence: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed two - conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing - a block in the blockchain, - - including all blockchain data structures and the rules - of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was committed by - a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.EvidenceList: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote from - validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator signed - two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for - processing a block in the blockchain, - - including all blockchain data structures and the - rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint block - header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included in a - Commit. - description: >- - Commit contains the evidence that a block was - committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - tendermint.types.Header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - tendermint.types.LightBlock: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.LightClientAttackEvidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a - block in the blockchain, - - including all blockchain data structures and the rules of - the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the signature is - for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a - set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with - Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of validators - attempting to mislead a light client. - tendermint.types.PartSetHeader: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - tendermint.types.SignedHeader: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set of - validators. - tendermint.types.SignedMsgType: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - tendermint.types.Validator: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - tendermint.types.ValidatorSet: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use with Tendermint - Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - tendermint.types.Vote: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: |- - SignedMsgType is a type of signed message in the consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: |- - Vote represents a prevote, precommit, or commit vote from validators for - consensus. - tendermint.version.Consensus: - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in the - blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - cosmos.crisis.v1beta1.MsgVerifyInvariantResponse: - type: object - description: MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type. - cosmos.base.v1beta1.DecCoin: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - cosmos.distribution.v1beta1.DelegationDelegatorReward: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse: - type: object - description: >- - MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response - type. - cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse: - type: object - description: >- - MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response - type. - cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: 'Since: cosmos-sdk 0.46' - description: >- - MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward - response type. - cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: 'Since: cosmos-sdk 0.46' - description: >- - MsgWithdrawValidatorCommissionResponse defines the - Msg/WithdrawValidatorCommission response type. - cosmos.distribution.v1beta1.Params: - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - description: Params defines the set of params for the distribution module. - cosmos.distribution.v1beta1.QueryCommunityPoolResponse: - type: object - properties: - pool: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: pool defines community pool's coins. - description: >- - QueryCommunityPoolResponse is the response type for the - Query/CommunityPool - - RPC method. - cosmos.distribution.v1beta1.QueryDelegationRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: rewards defines the rewards accrued by a delegation. - description: |- - QueryDelegationRewardsResponse is the response type for the - Query/DelegationRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - validator_address: - type: string - reward: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: |- - DelegationDelegatorReward represents the properties - of a delegator's delegation reward. - description: rewards defines all the rewards accrued by a delegator. - total: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: total defines the sum of all the rewards. - description: |- - QueryDelegationTotalRewardsResponse is the response type for the - Query/DelegationTotalRewards RPC method. - cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: string - description: validators defines the validators a delegator is delegating for. - description: |- - QueryDelegatorValidatorsResponse is the response type for the - Query/DelegatorValidators RPC method. - cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse: - type: object - properties: - withdraw_address: - type: string - description: withdraw_address defines the delegator address to query for. - description: |- - QueryDelegatorWithdrawAddressResponse is the response type for the - Query/DelegatorWithdrawAddress RPC method. - cosmos.distribution.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - community_tax: - type: string - base_proposer_reward: - type: string - bonus_proposer_reward: - type: string - withdraw_addr_enabled: - type: boolean - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.distribution.v1beta1.QueryValidatorCommissionResponse: - type: object - properties: - commission: - description: commission defines the commision the validator received. - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - title: |- - QueryValidatorCommissionResponse is the response type for the - Query/ValidatorCommission RPC method - cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse: - type: object - properties: - rewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - DecCoin defines a token with a denomination and a decimal - amount. - - - NOTE: The amount field is an Dec which implements the custom - method - - signatures required by gogoproto. - description: >- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) - rewards - - for a validator inexpensive to track, allows simple sanity checks. - description: |- - QueryValidatorOutstandingRewardsResponse is the response type for the - Query/ValidatorOutstandingRewards RPC method. - cosmos.distribution.v1beta1.QueryValidatorSlashesResponse: - type: object - properties: - slashes: - type: array - items: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - description: slashes defines the slashes the validator received. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorSlashesResponse is the response type for the - Query/ValidatorSlashes RPC method. - cosmos.distribution.v1beta1.ValidatorAccumulatedCommission: - type: object - properties: - commission: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorAccumulatedCommission represents accumulated commission - for a validator kept as a running counter, can be withdrawn at any time. - cosmos.distribution.v1beta1.ValidatorOutstandingRewards: - type: object - properties: - rewards: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - DecCoin defines a token with a denomination and a decimal amount. - - NOTE: The amount field is an Dec which implements the custom method - signatures required by gogoproto. - description: |- - ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards - for a validator inexpensive to track, allows simple sanity checks. - cosmos.distribution.v1beta1.ValidatorSlashEvent: - type: object - properties: - validator_period: - type: string - format: uint64 - fraction: - type: string - description: |- - ValidatorSlashEvent represents a validator slash event. - Height is implicit within the store key. - This is needed to calculate appropriate amount of staking tokens - for delegations which are withdrawn after a slash has occurred. - cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse: - type: object - properties: - hash: - type: string - format: byte - description: hash defines the hash of the evidence. - description: MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type. - cosmos.evidence.v1beta1.QueryAllEvidenceResponse: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: evidence returns all evidences. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllEvidenceResponse is the response type for the Query/AllEvidence - RPC - - method. - cosmos.evidence.v1beta1.QueryEvidenceResponse: - type: object - properties: - evidence: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryEvidenceResponse is the response type for the Query/Evidence RPC - method. - cosmos.feegrant.v1beta1.Grant: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: 'allowance can be any of basic, periodic, allowed fee allowance.' - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse: - type: object - description: >- - MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response - type. - cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse: - type: object - description: >- - MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse - response type. - cosmos.feegrant.v1beta1.QueryAllowanceResponse: - type: object - properties: - allowance: - description: allowance is a allowance granted for grantee by granter. - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of their - funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: 'allowance can be any of basic, periodic, allowed fee allowance.' - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: >- - QueryAllowanceResponse is the response type for the Query/Allowance RPC - method. - cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: 'allowance can be any of basic, periodic, allowed fee allowance.' - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: allowances that have been issued by the granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesByGranterResponse is the response type for the - Query/AllowancesByGranter RPC method. - - - Since: cosmos-sdk 0.46 - cosmos.feegrant.v1beta1.QueryAllowancesResponse: - type: object - properties: - allowances: - type: array - items: - type: object - properties: - granter: - type: string - description: >- - granter is the address of the user granting an allowance of - their funds. - grantee: - type: string - description: >- - grantee is the address of the user being granted an allowance of - another user's funds. - allowance: - description: 'allowance can be any of basic, periodic, allowed fee allowance.' - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - title: Grant is stored in the KVStore to record a grant with full context - description: allowances are allowance's granted for grantee by granter. - pagination: - description: pagination defines an pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryAllowancesResponse is the response type for the Query/Allowances RPC - method. - cosmos.gov.v1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1.DepositParams: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1.MsgDepositResponse: - type: object - description: MsgDepositResponse defines the Msg/Deposit response type. - cosmos.gov.v1.MsgExecLegacyContentResponse: - type: object - description: >- - MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response - type. - cosmos.gov.v1.MsgSubmitProposalResponse: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. - cosmos.gov.v1.MsgVoteResponse: - type: object - description: MsgVoteResponse defines the Msg/Vote response type. - cosmos.gov.v1.MsgVoteWeightedResponse: - type: object - description: MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. - cosmos.gov.v1.Proposal: - type: object - properties: - id: - type: string - format: uint64 - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: |- - final_tally_result is the final tally result of the proposal. When - querying a proposal via gRPC, this field is not populated until the - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - metadata: - type: string - description: metadata is any arbitrary metadata attached to the proposal. - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to an - active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1.QueryParamsResponse: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - id: - type: string - format: uint64 - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - metadata: - type: string - description: metadata is any arbitrary metadata attached to the proposal. - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1.QueryProposalsResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. - When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - metadata: - type: string - description: metadata is any arbitrary metadata attached to the proposal. - description: Proposal defines the core field members of a governance proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: WeightedVoteOption defines a unit of vote for vote split. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: WeightedVoteOption defines a unit of vote for vote split. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1.TallyParams: - type: object - properties: - quorum: - type: string - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1.TallyResult: - type: object - properties: - yes_count: - type: string - abstain_count: - type: string - no_count: - type: string - no_with_veto_count: - type: string - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: WeightedVoteOption defines a unit of vote for vote split. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1.WeightedVoteOption: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: WeightedVoteOption defines a unit of vote for vote split. - cosmos.gov.v1beta1.Deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - cosmos.gov.v1beta1.DepositParams: - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - description: DepositParams defines the params for deposits on governance proposals. - cosmos.gov.v1beta1.MsgDepositResponse: - type: object - description: MsgDepositResponse defines the Msg/Deposit response type. - cosmos.gov.v1beta1.MsgSubmitProposalResponse: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: MsgSubmitProposalResponse defines the Msg/SubmitProposal response type. - cosmos.gov.v1beta1.MsgVoteResponse: - type: object - description: MsgVoteResponse defines the Msg/Vote response type. - cosmos.gov.v1beta1.MsgVoteWeightedResponse: - type: object - description: |- - MsgVoteWeightedResponse defines the Msg/VoteWeighted response type. - - Since: cosmos-sdk 0.43 - cosmos.gov.v1beta1.Proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: |- - final_tally_result is the final tally result of the proposal. When - querying a proposal via gRPC, this field is not populated until the - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - cosmos.gov.v1beta1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - cosmos.gov.v1beta1.QueryDepositResponse: - type: object - properties: - deposit: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: |- - Deposit defines an amount deposited by an account address to an active - proposal. - description: >- - QueryDepositResponse is the response type for the Query/Deposit RPC - method. - cosmos.gov.v1beta1.QueryDepositsResponse: - type: object - properties: - deposits: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - depositor: - type: string - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - Deposit defines an amount deposited by an account address to an - active - - proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryDepositsResponse is the response type for the Query/Deposits RPC - method. - cosmos.gov.v1beta1.QueryParamsResponse: - type: object - properties: - voting_params: - description: voting_params defines the parameters related to voting. - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - deposit_params: - description: deposit_params defines the parameters related to deposit. - type: object - properties: - min_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: Minimum deposit for a proposal to enter voting period. - max_deposit_period: - type: string - description: >- - Maximum period for Atom holders to deposit on a proposal. Initial - value: 2 - months. - tally_params: - description: tally_params defines the parameters related to tally. - type: object - properties: - quorum: - type: string - format: byte - description: >- - Minimum percentage of total stake needed to vote for a result to - be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default - value: 0.5. - veto_threshold: - type: string - format: byte - description: >- - Minimum value of Veto votes to Total votes ratio for proposal to - be - vetoed. Default value: 1/3. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.gov.v1beta1.QueryProposalResponse: - type: object - properties: - proposal: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - description: >- - QueryProposalResponse is the response type for the Query/Proposal RPC - method. - cosmos.gov.v1beta1.QueryProposalsResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - content: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - status: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_DEPOSIT_PERIOD - - PROPOSAL_STATUS_VOTING_PERIOD - - PROPOSAL_STATUS_PASSED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_FAILED - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus enumerates the valid statuses of a proposal. - - - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status. - - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit - period. - - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting - period. - - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has - passed. - - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has - been rejected. - - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has - failed. - final_tally_result: - description: >- - final_tally_result is the final tally result of the proposal. - When - - querying a proposal via gRPC, this field is not populated until - the - - proposal's voting period has ended. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - submit_time: - type: string - format: date-time - deposit_end_time: - type: string - format: date-time - total_deposit: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - voting_start_time: - type: string - format: date-time - voting_end_time: - type: string - format: date-time - description: Proposal defines the core field members of a governance proposal. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryProposalsResponse is the response type for the Query/Proposals RPC - method. - cosmos.gov.v1beta1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: >- - QueryTallyResultResponse is the response type for the Query/Tally RPC - method. - cosmos.gov.v1beta1.QueryVoteResponse: - type: object - properties: - vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: QueryVoteResponse is the response type for the Query/Vote RPC method. - cosmos.gov.v1beta1.QueryVotesResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set - in queries - - if and only if `len(options) == 1` and that option has weight 1. - In all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - description: votes defined the queried votes. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesResponse is the response type for the Query/Votes RPC method. - cosmos.gov.v1beta1.TallyParams: - type: object - properties: - quorum: - type: string - format: byte - description: |- - Minimum percentage of total stake needed to vote for a result to be - considered valid. - threshold: - type: string - format: byte - description: >- - Minimum proportion of Yes votes for proposal to pass. Default value: - 0.5. - veto_threshold: - type: string - format: byte - description: |- - Minimum value of Veto votes to Total votes ratio for proposal to be - vetoed. Default value: 1/3. - description: TallyParams defines the params for tallying votes on governance proposals. - cosmos.gov.v1beta1.TallyResult: - type: object - properties: - 'yes': - type: string - abstain: - type: string - 'no': - type: string - no_with_veto: - type: string - description: TallyResult defines a standard tally for a governance proposal. - cosmos.gov.v1beta1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - voter: - type: string - option: - description: >- - Deprecated: Prefer to use `options` instead. This field is set in - queries - - if and only if `len(options) == 1` and that option has weight 1. In - all - - other cases, this field will default to VOTE_OPTION_UNSPECIFIED. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - options: - type: array - items: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given - governance proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - title: 'Since: cosmos-sdk 0.43' - description: |- - Vote defines a vote on a governance proposal. - A Vote consists of a proposal ID, the voter, and the vote option. - cosmos.gov.v1beta1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.gov.v1beta1.VotingParams: - type: object - properties: - voting_period: - type: string - description: Length of the voting period. - description: VotingParams defines the params for voting on governance proposals. - cosmos.gov.v1beta1.WeightedVoteOption: - type: object - properties: - option: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: >- - VoteOption enumerates the valid vote options for a given governance - proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - weight: - type: string - description: |- - WeightedVoteOption defines a unit of vote for vote split. - - Since: cosmos-sdk 0.43 - cosmos.group.v1.Exec: - type: string - enum: - - EXEC_UNSPECIFIED - - EXEC_TRY - default: EXEC_UNSPECIFIED - description: |- - Exec defines modes of execution of a proposal on creation or on new vote. - - - EXEC_UNSPECIFIED: An empty value means that there should be a separate - MsgExec request for the proposal to execute. - - EXEC_TRY: Try to execute the proposal immediately. - If the proposal is not allowed per the DecisionPolicy, - the proposal will still be open and could - be executed at a later point. - cosmos.group.v1.GroupInfo: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership structure - that - - would break existing proposals. Whenever any members weight is - changed, - - or any member is added or removed this version is incremented and will - - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: GroupInfo represents the high-level on-chain information for a group. - cosmos.group.v1.GroupMember: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be greater than - 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: - type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: GroupMember represents the relationship between a group and a member. - cosmos.group.v1.GroupPolicyInfo: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the group policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group policy was created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a group - policy. - cosmos.group.v1.Member: - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: weight is the member's voting weight that should be greater than 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: - type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: |- - Member represents a group member with an account address, - non-zero weight, metadata and added_at timestamp. - cosmos.group.v1.MemberRequest: - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: weight is the member's voting weight that should be greater than 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - description: |- - MemberRequest represents a group member to be used in Msg server requests. - Contrary to `Member`, it doesn't have any `added_at` field - since this field cannot be set as part of requests. - cosmos.group.v1.MsgCreateGroupPolicyResponse: - type: object - properties: - address: - type: string - description: address is the account address of the newly created group policy. - description: MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type. - cosmos.group.v1.MsgCreateGroupResponse: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the newly created group. - description: MsgCreateGroupResponse is the Msg/CreateGroup response type. - cosmos.group.v1.MsgCreateGroupWithPolicyResponse: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the newly created group with policy. - group_policy_address: - type: string - description: >- - group_policy_address is the account address of the newly created group - policy. - description: >- - MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response - type. - cosmos.group.v1.MsgExecResponse: - type: object - properties: - result: - description: result is the final result of the proposal execution. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - description: MsgExecResponse is the Msg/Exec request type. - cosmos.group.v1.MsgLeaveGroupResponse: - type: object - description: MsgLeaveGroupResponse is the Msg/LeaveGroup response type. - cosmos.group.v1.MsgSubmitProposalResponse: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - description: MsgSubmitProposalResponse is the Msg/SubmitProposal response type. - cosmos.group.v1.MsgUpdateGroupAdminResponse: - type: object - description: MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type. - cosmos.group.v1.MsgUpdateGroupMembersResponse: - type: object - description: MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type. - cosmos.group.v1.MsgUpdateGroupMetadataResponse: - type: object - description: >- - MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response - type. - cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse: - type: object - description: >- - MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin - response type. - cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse: - type: object - description: >- - MsgUpdateGroupPolicyDecisionPolicyResponse is the - Msg/UpdateGroupPolicyDecisionPolicy response type. - cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse: - type: object - description: >- - MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata - response type. - cosmos.group.v1.MsgVoteResponse: - type: object - description: MsgVoteResponse is the Msg/Vote response type. - cosmos.group.v1.MsgWithdrawProposalResponse: - type: object - description: MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type. - cosmos.group.v1.Proposal: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the proposal. - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: submit_time is a timestamp specifying when a proposal was submitted. - group_version: - type: string - format: uint64 - description: |- - group_version tracks the version of the group at proposal submission. - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. - - When a decision policy is changed, existing proposals from previous - policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of the - proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for this - - proposal for each vote option. It is empty at submission, and only - - populated after tallying, at voting period end or at proposal - execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting must be done. - - Unless a successfull MsgExec is called before (to execute a proposal - whose - - tally is successful before the voting period ends), tallying will be - done - - at this point, and the `final_tally_result`and `status` fields will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. Initial - value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the proposal - passes. - description: >- - Proposal defines a group proposal. Any member of a group can submit a - proposal - - for a group policy to decide upon. - - A proposal consists of a set of `sdk.Msg`s that will be executed if the - proposal - - passes as well as some optional metadata associated with the proposal. - cosmos.group.v1.ProposalExecutorResult: - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - description: |- - ProposalExecutorResult defines types of proposal executor results. - - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed. - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor. - - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state. - - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state. - cosmos.group.v1.ProposalStatus: - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - description: |- - ProposalStatus defines proposal statuses. - - - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed. - - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted. - - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome - passes the group policy's decision policy. - - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome - is rejected by the group policy's decision policy. - - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the - final tally. - - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner. - When this happens the final status is Withdrawn. - cosmos.group.v1.QueryGroupInfoResponse: - type: object - properties: - info: - description: info is the GroupInfo for the group. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership structure - that - - would break existing proposals. Whenever any members weight is - changed, - - or any member is added or removed this version is incremented and - will - - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: QueryGroupInfoResponse is the Query/GroupInfo response type. - cosmos.group.v1.QueryGroupMembersResponse: - type: object - properties: - members: - type: array - items: - type: object - properties: - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - member: - description: member is the member data. - type: object - properties: - address: - type: string - description: address is the member's account address. - weight: - type: string - description: >- - weight is the member's voting weight that should be greater - than 0. - metadata: - type: string - description: metadata is any arbitrary metadata attached to the member. - added_at: - type: string - format: date-time - description: added_at is a timestamp specifying when a member was added. - description: >- - GroupMember represents the relationship between a group and a - member. - description: members are the members of the group with given group_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryGroupMembersResponse is the Query/GroupMembersResponse response type. - cosmos.group.v1.QueryGroupPoliciesByAdminResponse: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the group - policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: group_policies are the group policies info with provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin - response type. - cosmos.group.v1.QueryGroupPoliciesByGroupResponse: - type: object - properties: - group_policies: - type: array - items: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the group - policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: >- - group_policies are the group policies info associated with the - provided group. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup - response type. - cosmos.group.v1.QueryGroupPolicyInfoResponse: - type: object - properties: - info: - type: object - properties: - address: - type: string - description: address is the account address of group policy. - group_id: - type: string - format: uint64 - description: group_id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group admin. - metadata: - type: string - description: >- - metadata is any arbitrary metadata to attached to the group - policy. - version: - type: string - format: uint64 - description: >- - version is used to track changes to a group's GroupPolicyInfo - structure that - - would create a different result on a running proposal. - decision_policy: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - created_at: - type: string - format: date-time - description: >- - created_at is a timestamp specifying when a group policy was - created. - description: >- - GroupPolicyInfo represents the high-level on-chain information for a - group policy. - description: QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type. - cosmos.group.v1.QueryGroupsByAdminResponse: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members weight is - changed, - - or any member is added or removed this version is incremented - and will - - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: >- - GroupInfo represents the high-level on-chain information for a - group. - description: groups are the groups info with the provided admin. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response - type. - cosmos.group.v1.QueryGroupsByMemberResponse: - type: object - properties: - groups: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique ID of the group. - admin: - type: string - description: admin is the account address of the group's admin. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the group. - version: - type: string - format: uint64 - title: >- - version is used to track changes to a group's membership - structure that - - would break existing proposals. Whenever any members weight is - changed, - - or any member is added or removed this version is incremented - and will - - cause proposals based on older versions of this group to fail - total_weight: - type: string - description: total_weight is the sum of the group members' weights. - created_at: - type: string - format: date-time - description: created_at is a timestamp specifying when a group was created. - description: >- - GroupInfo represents the high-level on-chain information for a - group. - description: groups are the groups info with the provided group member. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryGroupsByMemberResponse is the Query/GroupsByMember response type. - cosmos.group.v1.QueryProposalResponse: - type: object - properties: - proposal: - description: proposal is the proposal info. - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the proposal. - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. - - When a decision policy is changed, existing proposals from - previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of the - proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for - this - - proposal for each vote option. It is empty at submission, and only - - populated after tallying, at voting period end or at proposal - execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting must be - done. - - Unless a successfull MsgExec is called before (to execute a - proposal whose - - tally is successful before the voting period ends), tallying will - be done - - at this point, and the `final_tally_result`and `status` fields - will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. - Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the - proposal passes. - description: QueryProposalResponse is the Query/Proposal response type. - cosmos.group.v1.QueryProposalsByGroupPolicyResponse: - type: object - properties: - proposals: - type: array - items: - type: object - properties: - id: - type: string - format: uint64 - description: id is the unique id of the proposal. - group_policy_address: - type: string - description: group_policy_address is the account address of group policy. - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the proposal. - proposers: - type: array - items: - type: string - description: proposers are the account addresses of the proposers. - submit_time: - type: string - format: date-time - description: >- - submit_time is a timestamp specifying when a proposal was - submitted. - group_version: - type: string - format: uint64 - description: >- - group_version tracks the version of the group at proposal - submission. - - This field is here for informational purposes only. - group_policy_version: - type: string - format: uint64 - description: >- - group_policy_version tracks the version of the group policy at - proposal submission. - - When a decision policy is changed, existing proposals from - previous policy - - versions will become invalid with the `ABORTED` status. - - This field is here for informational purposes only. - status: - description: >- - status represents the high level position in the life cycle of - the proposal. Initial value is Submitted. - type: string - enum: - - PROPOSAL_STATUS_UNSPECIFIED - - PROPOSAL_STATUS_SUBMITTED - - PROPOSAL_STATUS_ACCEPTED - - PROPOSAL_STATUS_REJECTED - - PROPOSAL_STATUS_ABORTED - - PROPOSAL_STATUS_WITHDRAWN - default: PROPOSAL_STATUS_UNSPECIFIED - final_tally_result: - description: >- - final_tally_result contains the sums of all weighted votes for - this - - proposal for each vote option. It is empty at submission, and - only - - populated after tallying, at voting period end or at proposal - execution, - - whichever happens first. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - voting_period_end: - type: string - format: date-time - description: >- - voting_period_end is the timestamp before which voting must be - done. - - Unless a successfull MsgExec is called before (to execute a - proposal whose - - tally is successful before the voting period ends), tallying - will be done - - at this point, and the `final_tally_result`and `status` fields - will be - - accordingly updated. - executor_result: - description: >- - executor_result is the final result of the proposal execution. - Initial value is NotRun. - type: string - enum: - - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - - PROPOSAL_EXECUTOR_RESULT_NOT_RUN - - PROPOSAL_EXECUTOR_RESULT_SUCCESS - - PROPOSAL_EXECUTOR_RESULT_FAILURE - default: PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of `sdk.Msg`s that will be executed if the - proposal passes. - description: >- - Proposal defines a group proposal. Any member of a group can submit - a proposal - - for a group policy to decide upon. - - A proposal consists of a set of `sdk.Msg`s that will be executed if - the proposal - - passes as well as some optional metadata associated with the - proposal. - description: proposals are the proposals with given group policy. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy - response type. - cosmos.group.v1.QueryTallyResultResponse: - type: object - properties: - tally: - description: tally defines the requested tally. - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: QueryTallyResultResponse is the Query/TallyResult response type. - cosmos.group.v1.QueryVoteByProposalVoterResponse: - type: object - properties: - vote: - description: vote is the vote with given proposal_id and voter. - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - description: >- - QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response - type. - cosmos.group.v1.QueryVotesByProposalResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - description: Vote represents a vote for a proposal. - description: votes are the list of votes for given proposal_id. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesByProposalResponse is the Query/VotesByProposal response type. - cosmos.group.v1.QueryVotesByVoterResponse: - type: object - properties: - votes: - type: array - items: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - description: Vote represents a vote for a proposal. - description: votes are the list of votes by given voter. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: QueryVotesByVoterResponse is the Query/VotesByVoter response type. - cosmos.group.v1.TallyResult: - type: object - properties: - yes_count: - type: string - description: yes_count is the weighted sum of yes votes. - abstain_count: - type: string - description: abstain_count is the weighted sum of abstainers. - no_count: - type: string - description: no_count is the weighted sum of no votes. - no_with_veto_count: - type: string - description: no_with_veto_count is the weighted sum of veto. - description: TallyResult represents the sum of weighted votes for each vote option. - cosmos.group.v1.Vote: - type: object - properties: - proposal_id: - type: string - format: uint64 - description: proposal is the unique ID of the proposal. - voter: - type: string - description: voter is the account address of the voter. - option: - description: option is the voter's choice on the proposal. - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - metadata: - type: string - description: metadata is any arbitrary metadata to attached to the vote. - submit_time: - type: string - format: date-time - description: submit_time is the timestamp when the vote was submitted. - description: Vote represents a vote for a proposal. - cosmos.group.v1.VoteOption: - type: string - enum: - - VOTE_OPTION_UNSPECIFIED - - VOTE_OPTION_YES - - VOTE_OPTION_ABSTAIN - - VOTE_OPTION_NO - - VOTE_OPTION_NO_WITH_VETO - default: VOTE_OPTION_UNSPECIFIED - description: |- - VoteOption enumerates the valid vote options for a given proposal. - - - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will - return an error. - - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option. - - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option. - - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option. - - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option. - cosmos.mint.v1beta1.Params: - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: Params holds parameters for the mint module. - cosmos.mint.v1beta1.QueryAnnualProvisionsResponse: - type: object - properties: - annual_provisions: - type: string - format: byte - description: annual_provisions is the current minting annual provisions value. - description: |- - QueryAnnualProvisionsResponse is the response type for the - Query/AnnualProvisions RPC method. - cosmos.mint.v1beta1.QueryInflationResponse: - type: object - properties: - inflation: - type: string - format: byte - description: inflation is the current minting inflation value. - description: |- - QueryInflationResponse is the response type for the Query/Inflation RPC - method. - cosmos.mint.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - mint_denom: - type: string - title: type of coin to mint - inflation_rate_change: - type: string - title: maximum annual change in inflation rate - inflation_max: - type: string - title: maximum inflation rate - inflation_min: - type: string - title: minimum inflation rate - goal_bonded: - type: string - title: goal of percent bonded atoms - blocks_per_year: - type: string - format: uint64 - title: expected blocks per year - description: QueryParamsResponse is the response type for the Query/Params RPC method. - cosmos.nft.v1beta1.Class: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT classification, similar to - the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: - type: string - title: symbol is an abbreviated name for nft classification. Optional - description: - type: string - title: description is a brief description of nft classification. Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can define schema for - Class and NFT `Data` attributes. Optional - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - cosmos.nft.v1beta1.MsgSendResponse: - type: object - description: MsgSendResponse defines the Msg/Send response type. - cosmos.nft.v1beta1.NFT: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract address of - ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - cosmos.nft.v1beta1.QueryBalanceResponse: - type: object - properties: - amount: - type: string - format: uint64 - title: QueryBalanceResponse is the response type for the Query/Balance RPC method - cosmos.nft.v1beta1.QueryClassResponse: - type: object - properties: - class: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT classification, - similar to the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: - type: string - title: symbol is an abbreviated name for nft classification. Optional - description: - type: string - title: description is a brief description of nft classification. Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can define schema - for Class and NFT `Data` attributes. Optional - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - title: QueryClassResponse is the response type for the Query/Class RPC method - cosmos.nft.v1beta1.QueryClassesResponse: - type: object - properties: - classes: - type: array - items: - type: object - properties: - id: - type: string - title: >- - id defines the unique identifier of the NFT classification, - similar to the contract address of ERC721 - name: - type: string - title: >- - name defines the human-readable name of the NFT classification. - Optional - symbol: - type: string - title: symbol is an abbreviated name for nft classification. Optional - description: - type: string - title: >- - description is a brief description of nft classification. - Optional - uri: - type: string - title: >- - uri for the class metadata stored off chain. It can define - schema for Class and NFT `Data` attributes. Optional - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri. Optional - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is the app specific metadata of the NFT class. Optional - description: Class defines the class of the nft type. - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryClassesResponse is the response type for the Query/Classes RPC method - cosmos.nft.v1beta1.QueryNFTResponse: - type: object - properties: - nft: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract address - of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - title: QueryNFTResponse is the response type for the Query/NFT RPC method - cosmos.nft.v1beta1.QueryNFTsResponse: - type: object - properties: - nfts: - type: array - items: - type: object - properties: - class_id: - type: string - title: >- - class_id associated with the NFT, similar to the contract - address of ERC721 - id: - type: string - title: id is a unique identifier of the NFT - uri: - type: string - title: uri for the NFT metadata stored off chain - uri_hash: - type: string - title: uri_hash is a hash of the document pointed by uri - data: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: data is an app specific data of the NFT. Optional - description: NFT defines the NFT. - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: QueryNFTsResponse is the response type for the Query/NFTs RPC methods - cosmos.nft.v1beta1.QueryOwnerResponse: - type: object - properties: - owner: - type: string - title: QueryOwnerResponse is the response type for the Query/Owner RPC method - cosmos.nft.v1beta1.QuerySupplyResponse: - type: object - properties: - amount: - type: string - format: uint64 - title: QuerySupplyResponse is the response type for the Query/Supply RPC method - cosmos.params.v1beta1.ParamChange: - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: |- - ParamChange defines an individual parameter change, for use in - ParameterChangeProposal. - cosmos.params.v1beta1.QueryParamsResponse: - type: object - properties: - param: - description: param defines the queried parameter. - type: object - properties: - subspace: - type: string - key: - type: string - value: - type: string - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.params.v1beta1.QuerySubspacesResponse: - type: object - properties: - subspaces: - type: array - items: - type: object - properties: - subspace: - type: string - keys: - type: array - items: - type: string - description: >- - Subspace defines a parameter subspace name and all the keys that - exist for - - the subspace. - - - Since: cosmos-sdk 0.46 - description: |- - QuerySubspacesResponse defines the response types for querying for all - registered subspaces and all keys for a subspace. - - Since: cosmos-sdk 0.46 - cosmos.params.v1beta1.Subspace: - type: object - properties: - subspace: - type: string - keys: - type: array - items: - type: string - description: |- - Subspace defines a parameter subspace name and all the keys that exist for - the subspace. - - Since: cosmos-sdk 0.46 - cosmos.slashing.v1beta1.MsgUnjailResponse: - type: object - title: MsgUnjailResponse defines the Msg/Unjail response type - cosmos.slashing.v1beta1.Params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - cosmos.slashing.v1beta1.QueryParamsResponse: - type: object - properties: - params: - type: object - properties: - signed_blocks_window: - type: string - format: int64 - min_signed_per_window: - type: string - format: byte - downtime_jail_duration: - type: string - slash_fraction_double_sign: - type: string - format: byte - slash_fraction_downtime: - type: string - format: byte - description: Params represents the parameters used for by the slashing module. - title: QueryParamsResponse is the response type for the Query/Params RPC method - cosmos.slashing.v1beta1.QuerySigningInfoResponse: - type: object - properties: - val_signing_info: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other - configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - title: val_signing_info is the signing info of requested val cons address - title: >- - QuerySigningInfoResponse is the response type for the Query/SigningInfo - RPC - - method - cosmos.slashing.v1beta1.QuerySigningInfosResponse: - type: object - properties: - info: - type: array - items: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in - conjunction with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other - configured misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for - monitoring their - - liveness activity. - title: info is the signing info of all validators - pagination: - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: >- - QuerySigningInfosResponse is the response type for the Query/SigningInfos - RPC - - method - cosmos.slashing.v1beta1.ValidatorSigningInfo: - type: object - properties: - address: - type: string - start_height: - type: string - format: int64 - title: Height at which validator was first a candidate OR was unjailed - index_offset: - type: string - format: int64 - description: >- - Index which is incremented each time the validator was a bonded - - in a block and may have signed a precommit or not. This in conjunction - with the - - `SignedBlocksWindow` param determines the index in the - `MissedBlocksBitArray`. - jailed_until: - type: string - format: date-time - description: >- - Timestamp until which the validator is jailed due to liveness - downtime. - tombstoned: - type: boolean - description: >- - Whether or not a validator has been tombstoned (killed out of - validator set). It is set - - once the validator commits an equivocation or for any other configured - misbehiavor. - missed_blocks_counter: - type: string - format: int64 - description: >- - A counter kept to avoid unnecessary array reads. - - Note that `Sum(MissedBlocksBitArray)` always equals - `MissedBlocksCounter`. - description: >- - ValidatorSigningInfo defines a validator's signing info for monitoring - their - - liveness activity. - cosmos.staking.v1beta1.BondStatus: - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - description: |- - BondStatus is the status of a validator. - - - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status. - - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded. - - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding. - - BOND_STATUS_BONDED: BONDED defines a validator that is bonded. - cosmos.staking.v1beta1.Commission: - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be used for - creating a validator. - type: object - properties: - rate: - type: string - description: 'rate is the commission rate charged to delegators, as a fraction.' - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can - ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - description: Commission defines commission parameters for a given validator. - cosmos.staking.v1beta1.CommissionRates: - type: object - properties: - rate: - type: string - description: 'rate is the commission rate charged to delegators, as a fraction.' - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator can ever - charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the validator - commission, as a fraction. - description: >- - CommissionRates defines the initial commission rates to be used for - creating - - a validator. - cosmos.staking.v1beta1.Delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - cosmos.staking.v1beta1.DelegationResponse: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - shares: - type: string - description: shares define the delegation shares received. - description: |- - Delegation represents the bond with tokens held by an account. It is - owned by one delegator, and is associated with the voting power of one - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: |- - DelegationResponse is equivalent to Delegation except that it contains a - balance in addition to shares which is more suitable for client responses. - cosmos.staking.v1beta1.Description: - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: - type: string - description: details define other optional details. - description: Description defines a validator description. - cosmos.staking.v1beta1.HistoricalInfo: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block in - the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: >- - HistoricalInfo contains header and validator information for a given - block. - - It is stored as part of staking module's state, which persists the `n` - most - - recent HistoricalInfo - - (`n` is set by the staking module's `historical_entries` parameter). - cosmos.staking.v1beta1.MsgBeginRedelegateResponse: - type: object - properties: - completion_time: - type: string - format: date-time - description: MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type. - cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse: - type: object - description: 'Since: cosmos-sdk 0.46' - title: MsgCancelUnbondingDelegationResponse - cosmos.staking.v1beta1.MsgCreateValidatorResponse: - type: object - description: MsgCreateValidatorResponse defines the Msg/CreateValidator response type. - cosmos.staking.v1beta1.MsgDelegateResponse: - type: object - description: MsgDelegateResponse defines the Msg/Delegate response type. - cosmos.staking.v1beta1.MsgEditValidatorResponse: - type: object - description: MsgEditValidatorResponse defines the Msg/EditValidator response type. - cosmos.staking.v1beta1.MsgUndelegateResponse: - type: object - properties: - completion_time: - type: string - format: date-time - description: MsgUndelegateResponse defines the Msg/Undelegate response type. - cosmos.staking.v1beta1.Params: - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: - type: string - title: >- - min_commission_rate is the chain-wide minimum commission rate that a - validator can charge their delegators - description: Params defines the parameters for the staking module. - cosmos.staking.v1beta1.Pool: - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: |- - Pool is used for tracking bonded and not-bonded token supply of the bond - denomination. - cosmos.staking.v1beta1.QueryDelegationResponse: - type: object - properties: - delegation_response: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. It - is - - owned by one delegator, and is associated with the voting power of - one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it contains - a - - balance in addition to shares which is more suitable for client - responses. - description: >- - QueryDelegationResponse is response type for the Query/Delegation RPC - method. - cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is - - owned by one delegator, and is associated with the voting power - of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for client - responses. - description: delegation_responses defines all the delegations' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorDelegationsResponse is response type for the - Query/DelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryUnbondingDelegatorDelegationsResponse is response type for the - Query/UnbondingDelegatorDelegations RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorResponse: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: |- - QueryDelegatorValidatorResponse response type for the - Query/DelegatorValidator RPC method. - cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: validators defines the validators' info of a delegator. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryDelegatorValidatorsResponse is response type for the - Query/DelegatorValidators RPC method. - cosmos.staking.v1beta1.QueryHistoricalInfoResponse: - type: object - properties: - hist: - description: hist defines the historical info at the given height. - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - title: prev block info - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - valset: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of - the serialized - - protocol buffer message. This string must contain at - least - - one "/" character. The last segment of the URL's path - must represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in - a canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary - all types that they - - expect it to use in the context of Any. However, for - URLs which use the - - scheme `http`, `https`, or no scheme, one can optionally - set up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based - on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in - the official - - protobuf release, and it is not used for type URLs - beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer - message along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values - in the form - - of utility functions or additional generated methods of the - Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by - default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the - last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield - type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with - an - - additional field `@type` which contains the type URL. - Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom - JSON - - representation, that representation will be embedded adding - a field - - `value` which holds the custom JSON in addition to the - `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from - bonded status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a - validator's delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. - UPort or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which - this validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to - be used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, - as a fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase - of the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of - the - - Validator's bond shares and their exchange rate to coins. - Slashing results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation - whose number of - - bond shares is based on the amount of coins delegated divided by - the current - - exchange rate. Voting power can be calculated as total bonded - shares - - multiplied by exchange rate. - description: >- - QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo - RPC - - method. - cosmos.staking.v1beta1.QueryParamsResponse: - type: object - properties: - params: - description: params holds all the parameters of this module. - type: object - properties: - unbonding_time: - type: string - description: unbonding_time is the time duration of unbonding. - max_validators: - type: integer - format: int64 - description: max_validators is the maximum number of validators. - max_entries: - type: integer - format: int64 - description: >- - max_entries is the max entries for either unbonding delegation or - redelegation (per pair/trio). - historical_entries: - type: integer - format: int64 - description: historical_entries is the number of historical entries to persist. - bond_denom: - type: string - description: bond_denom defines the bondable coin denomination. - min_commission_rate: - type: string - title: >- - min_commission_rate is the chain-wide minimum commission rate that - a validator can charge their delegators - description: QueryParamsResponse is response type for the Query/Params RPC method. - cosmos.staking.v1beta1.QueryPoolResponse: - type: object - properties: - pool: - description: pool defines the pool info. - type: object - properties: - not_bonded_tokens: - type: string - bonded_tokens: - type: string - description: QueryPoolResponse is response type for the Query/Pool RPC method. - cosmos.staking.v1beta1.QueryRedelegationsResponse: - type: object - properties: - redelegation_responses: - type: array - items: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation - destination operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the - redelegation took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator - shares created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with - relevant metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more - suitable for client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries - - contain a balance in addition to shares which is more suitable for - client - - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryRedelegationsResponse is response type for the Query/Redelegations - RPC - - method. - cosmos.staking.v1beta1.QueryUnbondingDelegationResponse: - type: object - properties: - unbond: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - description: |- - QueryDelegationResponse is response type for the Query/UnbondingDelegation - RPC method. - cosmos.staking.v1beta1.QueryValidatorDelegationsResponse: - type: object - properties: - delegation_responses: - type: array - items: - type: object - properties: - delegation: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - shares: - type: string - description: shares define the delegation shares received. - description: >- - Delegation represents the bond with tokens held by an account. - It is - - owned by one delegator, and is associated with the voting power - of one - - validator. - balance: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - description: >- - DelegationResponse is equivalent to Delegation except that it - contains a - - balance in addition to shares which is more suitable for client - responses. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: |- - QueryValidatorDelegationsResponse is response type for the - Query/ValidatorDelegations RPC method - cosmos.staking.v1beta1.QueryValidatorResponse: - type: object - properties: - validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; - bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - title: QueryValidatorResponse is response type for the Query/Validator RPC method - cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse: - type: object - properties: - unbonding_responses: - type: array - items: - type: object - properties: - delegator_address: - type: string - description: >- - delegator_address is the bech32-encoded address of the - delegator. - validator_address: - type: string - description: >- - validator_address is the bech32-encoded address of the - validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height is the height which the unbonding took - place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with - relevant metadata. - description: entries are the unbonding delegation entries. - description: >- - UnbondingDelegation stores all of a single delegator's unbonding - bonds - - for a single validator in an time-ordered list. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - QueryValidatorUnbondingDelegationsResponse is response type for the - Query/ValidatorUnbondingDelegations RPC method. - cosmos.staking.v1beta1.QueryValidatorsResponse: - type: object - properties: - validators: - type: array - items: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's - operator; bech encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort - or Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: >- - security_contact defines an optional email for security - contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the - validator to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be - used for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which - validator can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of - the validator commission, as a fraction. - update_time: - type: string - format: date-time - description: >- - update_time is the last time the commission rate was - changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum - self delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing - results in - - a decrease in the exchange rate, allowing correct calculation of - future - - undelegations without iterating over delegators. When coins are - delegated to - - this validator, the validator is credited with a delegation whose - number of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - description: validators contains all the queried validators. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - title: >- - QueryValidatorsResponse is response type for the Query/Validators RPC - method - cosmos.staking.v1beta1.Redelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source operator - address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's redelegating - bonds - - from a particular source validator to a particular destination validator. - cosmos.staking.v1beta1.RedelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height defines the height which the redelegation took place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: - type: string - description: initial_balance defines the initial balance when redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created by - redelegation. - description: RedelegationEntry defines a redelegation object with relevant metadata. - cosmos.staking.v1beta1.RedelegationEntryResponse: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation took - place. - completion_time: - type: string - format: date-time - description: completion_time defines the unix time for redelegation completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when redelegation - started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares created - by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry except that - it - - contains a balance in addition to shares which is more suitable for client - - responses. - cosmos.staking.v1beta1.RedelegationResponse: - type: object - properties: - redelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_src_address: - type: string - description: >- - validator_src_address is the validator redelegation source - operator address. - validator_dst_address: - type: string - description: >- - validator_dst_address is the validator redelegation destination - operator address. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - description: entries are the redelegation entries. - description: >- - Redelegation contains the list of a particular delegator's - redelegating bonds - - from a particular source validator to a particular destination - validator. - entries: - type: array - items: - type: object - properties: - redelegation_entry: - type: object - properties: - creation_height: - type: string - format: int64 - description: >- - creation_height defines the height which the redelegation - took place. - completion_time: - type: string - format: date-time - description: >- - completion_time defines the unix time for redelegation - completion. - initial_balance: - type: string - description: >- - initial_balance defines the initial balance when - redelegation started. - shares_dst: - type: string - description: >- - shares_dst is the amount of destination-validator shares - created by redelegation. - description: >- - RedelegationEntry defines a redelegation object with relevant - metadata. - balance: - type: string - description: >- - RedelegationEntryResponse is equivalent to a RedelegationEntry - except that it - - contains a balance in addition to shares which is more suitable for - client - - responses. - description: >- - RedelegationResponse is equivalent to a Redelegation except that its - entries - - contain a balance in addition to shares which is more suitable for client - - responses. - cosmos.staking.v1beta1.UnbondingDelegation: - type: object - properties: - delegator_address: - type: string - description: delegator_address is the bech32-encoded address of the delegator. - validator_address: - type: string - description: validator_address is the bech32-encoded address of the validator. - entries: - type: array - items: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to - receive at completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - description: entries are the unbonding delegation entries. - description: |- - UnbondingDelegation stores all of a single delegator's unbonding bonds - for a single validator in an time-ordered list. - cosmos.staking.v1beta1.UnbondingDelegationEntry: - type: object - properties: - creation_height: - type: string - format: int64 - description: creation_height is the height which the unbonding took place. - completion_time: - type: string - format: date-time - description: completion_time is the unix time for unbonding completion. - initial_balance: - type: string - description: >- - initial_balance defines the tokens initially scheduled to receive at - completion. - balance: - type: string - description: balance defines the tokens to receive at completion. - description: >- - UnbondingDelegationEntry defines an unbonding object with relevant - metadata. - cosmos.staking.v1beta1.Validator: - type: object - properties: - operator_address: - type: string - description: >- - operator_address defines the address of the validator's operator; bech - encoded in JSON. - consensus_pubkey: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - jailed: - type: boolean - description: >- - jailed defined whether the validator has been jailed from bonded - status or not. - status: - description: status is the validator status (bonded/unbonding/unbonded). - type: string - enum: - - BOND_STATUS_UNSPECIFIED - - BOND_STATUS_UNBONDED - - BOND_STATUS_UNBONDING - - BOND_STATUS_BONDED - default: BOND_STATUS_UNSPECIFIED - tokens: - type: string - description: tokens define the delegated tokens (incl. self-delegation). - delegator_shares: - type: string - description: >- - delegator_shares defines total shares issued to a validator's - delegators. - description: - description: description defines the description terms for the validator. - type: object - properties: - moniker: - type: string - description: moniker defines a human-readable name for the validator. - identity: - type: string - description: >- - identity defines an optional identity signature (ex. UPort or - Keybase). - website: - type: string - description: website defines an optional website link. - security_contact: - type: string - description: security_contact defines an optional email for security contact. - details: - type: string - description: details define other optional details. - unbonding_height: - type: string - format: int64 - description: >- - unbonding_height defines, if unbonding, the height at which this - validator has begun unbonding. - unbonding_time: - type: string - format: date-time - description: >- - unbonding_time defines, if unbonding, the min time for the validator - to complete unbonding. - commission: - description: commission defines the commission parameters. - type: object - properties: - commission_rates: - description: >- - commission_rates defines the initial commission rates to be used - for creating a validator. - type: object - properties: - rate: - type: string - description: >- - rate is the commission rate charged to delegators, as a - fraction. - max_rate: - type: string - description: >- - max_rate defines the maximum commission rate which validator - can ever charge, as a fraction. - max_change_rate: - type: string - description: >- - max_change_rate defines the maximum daily increase of the - validator commission, as a fraction. - update_time: - type: string - format: date-time - description: update_time is the last time the commission rate was changed. - min_self_delegation: - type: string - description: >- - min_self_delegation is the validator's self declared minimum self - delegation. - - - Since: cosmos-sdk 0.46 - description: >- - Validator defines a validator, together with the total amount of the - - Validator's bond shares and their exchange rate to coins. Slashing results - in - - a decrease in the exchange rate, allowing correct calculation of future - - undelegations without iterating over delegators. When coins are delegated - to - - this validator, the validator is credited with a delegation whose number - of - - bond shares is based on the amount of coins delegated divided by the - current - - exchange rate. Voting power can be calculated as total bonded shares - - multiplied by exchange rate. - cosmos.base.abci.v1beta1.ABCIMessageLog: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and value - are - - strings instead of raw bytes. - description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - description: |- - Events contains a slice of Event objects that were emitted during some - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI message - log. - cosmos.base.abci.v1beta1.Attribute: - type: object - properties: - key: - type: string - value: - type: string - description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. - cosmos.base.abci.v1beta1.GasInfo: - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: GasWanted is the maximum units of work we allow this tx to perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - description: GasInfo defines tx execution gas context. - cosmos.base.abci.v1beta1.Result: - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler execution. It MUST - be - - length prefixed in order to separate data from multiple message - executions. - - Deprecated. This field is still populated, but prefer msg_response - instead - - because it also contains the Msg response typeURL. - log: - type: string - description: Log contains the log information from message or handler execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted during - message - - or handler execution. - msg_responses: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: |- - msg_responses contains the Msg handler responses type packed in Anys. - - Since: cosmos-sdk 0.46 - description: Result is the union of ResponseFormat and ResponseCheckTx. - cosmos.base.abci.v1beta1.StringEvent: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: |- - Attribute defines an attribute wrapper where the key and value are - strings instead of raw bytes. - description: |- - StringEvent defines en Event object wrapper where all the attributes - contain key/value pairs that are strings instead of raw bytes. - cosmos.base.abci.v1beta1.TxResponse: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key and - value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted median - of - - the timestamps of the valid votes in the block.LastCommit. For height - == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with an - event. - description: >- - Event allows application developers to attach additional information - to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages and - those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and metadata. - The - - tags are stringified and the log is JSON decoded. - cosmos.crypto.multisig.v1beta1.CompactBitArray: - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: - type: string - format: byte - description: |- - CompactBitArray is an implementation of a space efficient bit array. - This is used to ensure that the encoded data takes up a minimal amount of - space after proto encoding. - This is not thread safe, and is not intended for concurrent usage. - cosmos.tx.signing.v1beta1.SignMode: - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: |- - SignMode represents a signing mode with its own security guarantees. - - This enum should be considered a registry of all known sign modes - in the Cosmos ecosystem. Apps are not expected to support all known - sign modes. Apps that would like to support custom sign modes are - encouraged to open a small PR against this file to add a new case - to this SignMode enum describing their sign mode so that different - apps have a consistent version of this enum. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary representation - from SIGN_MODE_DIRECT. It is currently not supported. - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not - require signers signing over other signers' `signer_info`. It also allows - for adding Tips in transactions. - - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - but is not implemented on the SDK by default. To enable EIP-191, you need - to pass a custom `TxConfig` that has an implementation of - `SignModeHandler` for EIP-191. The SDK may decide to fully support - EIP-191 in the future. - - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.AuthInfo: - type: object - properties: - signer_infos: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.SignerInfo' - description: >- - signer_infos defines the signing modes for the required signers. The - number - - and order of elements must match the required signers from TxBody's - - messages. The first element is the primary signer and the one which - pays - - the fee. - fee: - description: >- - Fee is the fee and gas limit for the transaction. The first signer is - the - - primary signer and the one which pays the fee. The fee can be - calculated - - based on the cost of evaluating the body and doing signature - verification - - of the signers. This can be estimated via simulation. - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If - set, the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required - signers for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an - appropriate fee grant does not exist or the chain does - - not support fee grants, this will fail - tip: - description: >- - Tip is the optional tip used for transactions fees paid in another - denom. - - - This field is ignored if the chain didn't enable tips, i.e. didn't add - the - - `TipDecorator` in its posthandler. - - - Since: cosmos-sdk 0.46 - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: >- - Coin defines a token with a denomination and an amount. - - - NOTE: The amount field is an Int which implements the custom - method - - signatures required by gogoproto. - title: amount is the amount of the tip - tipper: - type: string - title: tipper is the address of the account paying for the tip - description: |- - AuthInfo describes the fee and signer modes that are used to sign a - transaction. - cosmos.tx.v1beta1.BroadcastMode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC - method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - cosmos.tx.v1beta1.BroadcastTxRequest: - type: object - properties: - tx_bytes: - type: string - format: byte - description: tx_bytes is the raw transaction. - mode: - type: string - enum: - - BROADCAST_MODE_UNSPECIFIED - - BROADCAST_MODE_BLOCK - - BROADCAST_MODE_SYNC - - BROADCAST_MODE_ASYNC - default: BROADCAST_MODE_UNSPECIFIED - description: >- - BroadcastMode specifies the broadcast mode for the TxService.Broadcast - RPC method. - - - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering - - BROADCAST_MODE_BLOCK: BROADCAST_MODE_BLOCK defines a tx broadcasting mode where the client waits for - the tx to be committed in a block. - - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits for - a CheckTx execution response only. - - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client returns - immediately. - description: |- - BroadcastTxRequest is the request type for the Service.BroadcastTxRequest - RPC method. - cosmos.tx.v1beta1.BroadcastTxResponse: - type: object - properties: - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages - and those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: |- - BroadcastTxResponse is the response type for the - Service.BroadcastTx method. - cosmos.tx.v1beta1.Fee: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: amount is the amount of coins to be paid as a fee - gas_limit: - type: string - format: uint64 - title: >- - gas_limit is the maximum gas that can be used in transaction - processing - - before an out of gas error occurs - payer: - type: string - description: >- - if unset, the first signer is responsible for paying the fees. If set, - the specified account must pay the fees. - - the payer must be a tx signer (and thus have signed this field in - AuthInfo). - - setting this field does *not* change the ordering of required signers - for the transaction. - granter: - type: string - title: >- - if set, the fee payer (either the first signer or the value of the - payer field) requests that a fee grant be used - - to pay fees instead of the fee payer's own balance. If an appropriate - fee grant does not exist or the chain does - - not support fee grants, this will fail - description: >- - Fee includes the amount of coins paid in fees and the maximum - - gas to be used by the transaction. The ratio yields an effective - "gasprice", - - which must be above some miminum to be accepted into the mempool. - cosmos.tx.v1beta1.GetBlockWithTxsResponse: - type: object - properties: - txs: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs are the transactions in the block. - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - block: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules for processing a block - in the blockchain, - - including all blockchain data structures and the rules of the - application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: hashes from the app output from the prev block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: Header defines the structure of a Tendermint block header. - data: - type: object - properties: - txs: - type: array - items: - type: string - format: byte - description: >- - Txs that will be applied by state @ block.Height+1. - - NOTE: not all txs here are valid. We're just agreeing on the - order first. - - This means that block.AppHash does not include these txs. - title: Data contains the set of transactions included in the block - evidence: - type: object - properties: - evidence: - type: array - items: - type: object - properties: - duplicate_vote_evidence: - type: object - properties: - vote_a: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - vote_b: - type: object - properties: - type: - type: string - enum: - - SIGNED_MSG_TYPE_UNKNOWN - - SIGNED_MSG_TYPE_PREVOTE - - SIGNED_MSG_TYPE_PRECOMMIT - - SIGNED_MSG_TYPE_PROPOSAL - default: SIGNED_MSG_TYPE_UNKNOWN - description: >- - SignedMsgType is a type of signed message in the - consensus. - - - SIGNED_MSG_TYPE_PREVOTE: Votes - - SIGNED_MSG_TYPE_PROPOSAL: Proposals - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - timestamp: - type: string - format: date-time - validator_address: - type: string - format: byte - validator_index: - type: integer - format: int32 - signature: - type: string - format: byte - description: >- - Vote represents a prevote, precommit, or commit vote - from validators for - - consensus. - total_voting_power: - type: string - format: int64 - validator_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - DuplicateVoteEvidence contains evidence of a validator - signed two conflicting votes. - light_client_attack_evidence: - type: object - properties: - conflicting_block: - type: object - properties: - signed_header: - type: object - properties: - header: - type: object - properties: - version: - title: basic block info - type: object - properties: - block: - type: string - format: uint64 - app: - type: string - format: uint64 - description: >- - Consensus captures the consensus rules - for processing a block in the - blockchain, - - including all blockchain data structures - and the rules of the application's - - state transition machine. - chain_id: - type: string - height: - type: string - format: int64 - time: - type: string - format: date-time - last_block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - last_commit_hash: - type: string - format: byte - title: hashes of block data - data_hash: - type: string - format: byte - validators_hash: - type: string - format: byte - title: >- - hashes from the app output from the prev - block - next_validators_hash: - type: string - format: byte - consensus_hash: - type: string - format: byte - app_hash: - type: string - format: byte - last_results_hash: - type: string - format: byte - evidence_hash: - type: string - format: byte - title: consensus info - proposer_address: - type: string - format: byte - description: >- - Header defines the structure of a Tendermint - block header. - commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: >- - BlockIdFlag indicates which BlcokID the - signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: >- - CommitSig is a part of the Vote included - in a Commit. - description: >- - Commit contains the evidence that a block - was committed by a set of validators. - validator_set: - type: object - properties: - validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - proposer: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for - use with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - common_height: - type: string - format: int64 - byzantine_validators: - type: array - items: - type: object - properties: - address: - type: string - format: byte - pub_key: - type: object - properties: - ed25519: - type: string - format: byte - secp256k1: - type: string - format: byte - title: >- - PublicKey defines the keys available for use - with Tendermint Validators - voting_power: - type: string - format: int64 - proposer_priority: - type: string - format: int64 - total_voting_power: - type: string - format: int64 - timestamp: - type: string - format: date-time - description: >- - LightClientAttackEvidence contains evidence of a set of - validators attempting to mislead a light client. - last_commit: - type: object - properties: - height: - type: string - format: int64 - round: - type: integer - format: int32 - block_id: - type: object - properties: - hash: - type: string - format: byte - part_set_header: - type: object - properties: - total: - type: integer - format: int64 - hash: - type: string - format: byte - title: PartsetHeader - title: BlockID - signatures: - type: array - items: - type: object - properties: - block_id_flag: - type: string - enum: - - BLOCK_ID_FLAG_UNKNOWN - - BLOCK_ID_FLAG_ABSENT - - BLOCK_ID_FLAG_COMMIT - - BLOCK_ID_FLAG_NIL - default: BLOCK_ID_FLAG_UNKNOWN - title: BlockIdFlag indicates which BlcokID the signature is for - validator_address: - type: string - format: byte - timestamp: - type: string - format: date-time - signature: - type: string - format: byte - description: CommitSig is a part of the Vote included in a Commit. - description: >- - Commit contains the evidence that a block was committed by a set - of validators. - pagination: - description: pagination defines a pagination for the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - GetBlockWithTxsResponse is the response type for the - Service.GetBlockWithTxs method. - - - Since: cosmos-sdk 0.45.2 - cosmos.tx.v1beta1.GetTxResponse: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: tx is the queried transaction. - tx_response: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the key - and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all the - attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx ABCI - message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a transaction. - Note, - - these events include those emitted by processing all the messages - and those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: GetTxResponse is the response type for the Service.GetTx method. - cosmos.tx.v1beta1.GetTxsEventResponse: - type: object - properties: - txs: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: txs is the list of queried transactions. - tx_responses: - type: array - items: - type: object - properties: - height: - type: string - format: int64 - title: The block height - txhash: - type: string - description: The transaction hash. - codespace: - type: string - title: Namespace for the Code - code: - type: integer - format: int64 - description: Response code. - data: - type: string - description: 'Result bytes, if any.' - raw_log: - type: string - description: |- - The output of the application's logger (raw string). May be - non-deterministic. - logs: - type: array - items: - type: object - properties: - msg_index: - type: integer - format: int64 - log: - type: string - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - value: - type: string - description: >- - Attribute defines an attribute wrapper where the - key and value are - - strings instead of raw bytes. - description: >- - StringEvent defines en Event object wrapper where all - the attributes - - contain key/value pairs that are strings instead of raw - bytes. - description: >- - Events contains a slice of Event objects that were emitted - during some - - execution. - description: >- - ABCIMessageLog defines a structure containing an indexed tx - ABCI message log. - description: >- - The output of the application's logger (typed). May be - non-deterministic. - info: - type: string - description: Additional information. May be non-deterministic. - gas_wanted: - type: string - format: int64 - description: Amount of gas requested for transaction. - gas_used: - type: string - format: int64 - description: Amount of gas consumed by transaction. - tx: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - timestamp: - type: string - description: >- - Time of the previous block. For heights > 1, it's the weighted - median of - - the timestamps of the valid votes in the block.LastCommit. For - height == 1, - - it's genesis time. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated - with an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events defines all the events emitted by processing a - transaction. Note, - - these events include those emitted by processing all the - messages and those - - emitted from the ante. Whereas Logs contains the events, with - - additional metadata, emitted only by processing the messages. - - - Since: cosmos-sdk 0.42.11, 0.44.5, 0.45 - description: >- - TxResponse defines a structure containing relevant tx data and - metadata. The - - tags are stringified and the log is JSON decoded. - description: tx_responses is the list of queried TxResponses. - pagination: - description: |- - pagination defines a pagination for the response. - Deprecated post v0.46.x: use total instead. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - total: - type: string - format: uint64 - title: total is total number of results available - description: |- - GetTxsEventResponse is the response type for the Service.TxsByEvents - RPC method. - cosmos.tx.v1beta1.ModeInfo: - type: object - properties: - single: - title: single represents a single signer - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security - guarantees. - - - This enum should be considered a registry of all known sign modes - - in the Cosmos ecosystem. Apps are not expected to support all - known - - sign modes. Apps that would like to support custom sign modes are - - encouraged to open a small PR against this file to add a new case - - to this SignMode enum describing their sign mode so that different - - apps have a consistent version of this enum. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation - - from SIGN_MODE_DIRECT. It is currently not supported. - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode - does not - - require signers signing over other signers' `signer_info`. It also - allows - - for adding Tips in transactions. - - - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum - variant, - - but is not implemented on the SDK by default. To enable EIP-191, - you need - - to pass a custom `TxConfig` that has an implementation of - - `SignModeHandler` for EIP-191. The SDK may decide to fully support - - EIP-191 in the future. - - - Since: cosmos-sdk 0.45.2 - multi: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi' - title: multi represents a nested multisig signer - description: ModeInfo describes the signing mode of a single or nested multisig signer. - cosmos.tx.v1beta1.ModeInfo.Multi: - type: object - properties: - bitarray: - title: bitarray specifies which keys within the multisig are signing - type: object - properties: - extra_bits_stored: - type: integer - format: int64 - elems: - type: string - format: byte - description: >- - CompactBitArray is an implementation of a space efficient bit array. - - This is used to ensure that the encoded data takes up a minimal amount - of - - space after proto encoding. - - This is not thread safe, and is not intended for concurrent usage. - mode_infos: - type: array - items: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_infos is the corresponding modes of the signers of the multisig - which could include nested multisig public keys - title: Multi is the mode info for a multisig public key - cosmos.tx.v1beta1.ModeInfo.Single: - type: object - properties: - mode: - title: mode is the signing mode of the single signer - type: string - enum: - - SIGN_MODE_UNSPECIFIED - - SIGN_MODE_DIRECT - - SIGN_MODE_TEXTUAL - - SIGN_MODE_DIRECT_AUX - - SIGN_MODE_LEGACY_AMINO_JSON - - SIGN_MODE_EIP_191 - default: SIGN_MODE_UNSPECIFIED - description: >- - SignMode represents a signing mode with its own security guarantees. - - - This enum should be considered a registry of all known sign modes - - in the Cosmos ecosystem. Apps are not expected to support all known - - sign modes. Apps that would like to support custom sign modes are - - encouraged to open a small PR against this file to add a new case - - to this SignMode enum describing their sign mode so that different - - apps have a consistent version of this enum. - - - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be - rejected. - - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is - verified with raw bytes from Tx. - - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some - human-readable textual representation on top of the binary - representation - - from SIGN_MODE_DIRECT. It is currently not supported. - - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses - SignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does - not - - require signers signing over other signers' `signer_info`. It also - allows - - for adding Tips in transactions. - - - Since: cosmos-sdk 0.46 - - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses - Amino JSON and will be removed in the future. - - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos - SDK. Ref: https://eips.ethereum.org/EIPS/eip-191 - - - Currently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant, - - but is not implemented on the SDK by default. To enable EIP-191, you - need - - to pass a custom `TxConfig` that has an implementation of - - `SignModeHandler` for EIP-191. The SDK may decide to fully support - - EIP-191 in the future. - - - Since: cosmos-sdk 0.45.2 - title: |- - Single is the mode info for a single signer. It is structured as a message - to allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the - future - cosmos.tx.v1beta1.OrderBy: - type: string - enum: - - ORDER_BY_UNSPECIFIED - - ORDER_BY_ASC - - ORDER_BY_DESC - default: ORDER_BY_UNSPECIFIED - description: >- - - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting - order. OrderBy defaults to ASC in this case. - - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order - - ORDER_BY_DESC: ORDER_BY_DESC defines descending order - title: OrderBy defines the sorting order - cosmos.tx.v1beta1.SignerInfo: - type: object - properties: - public_key: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - mode_info: - $ref: '#/definitions/cosmos.tx.v1beta1.ModeInfo' - title: |- - mode_info describes the signing mode of the signer and is a nested - structure to support nested multisig pubkey's - sequence: - type: string - format: uint64 - description: >- - sequence is the sequence of the account, which describes the - - number of committed transactions signed by a given address. It is used - to - - prevent replay attacks. - description: |- - SignerInfo describes the public key and signing mode of a single top-level - signer. - cosmos.tx.v1beta1.SimulateRequest: - type: object - properties: - tx: - $ref: '#/definitions/cosmos.tx.v1beta1.Tx' - description: |- - tx is the transaction to simulate. - Deprecated. Send raw tx bytes instead. - tx_bytes: - type: string - format: byte - description: |- - tx_bytes is the raw transaction. - - Since: cosmos-sdk 0.43 - description: |- - SimulateRequest is the request type for the Service.Simulate - RPC method. - cosmos.tx.v1beta1.SimulateResponse: - type: object - properties: - gas_info: - description: gas_info is the information about gas used in the simulation. - type: object - properties: - gas_wanted: - type: string - format: uint64 - description: >- - GasWanted is the maximum units of work we allow this tx to - perform. - gas_used: - type: string - format: uint64 - description: GasUsed is the amount of gas actually consumed. - result: - description: result is the result of the simulation. - type: object - properties: - data: - type: string - format: byte - description: >- - Data is any data returned from message or handler execution. It - MUST be - - length prefixed in order to separate data from multiple message - executions. - - Deprecated. This field is still populated, but prefer msg_response - instead - - because it also contains the Msg response typeURL. - log: - type: string - description: >- - Log contains the log information from message or handler - execution. - events: - type: array - items: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: >- - EventAttribute is a single key-value pair, associated with - an event. - description: >- - Event allows application developers to attach additional - information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - description: >- - Events contains a slice of Event objects that were emitted during - message - - or handler execution. - msg_responses: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - msg_responses contains the Msg handler responses type packed in - Anys. - - - Since: cosmos-sdk 0.46 - description: |- - SimulateResponse is the response type for the - Service.SimulateRPC method. - cosmos.tx.v1beta1.Tip: - type: object - properties: - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - title: amount is the amount of the tip - tipper: - type: string - title: tipper is the address of the account paying for the tip - description: |- - Tip is the tip used for meta-transactions. - - Since: cosmos-sdk 0.46 - cosmos.tx.v1beta1.Tx: - type: object - properties: - body: - title: body is the processable content of the transaction - type: object - properties: - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required - signers of - - those messages define the number and order of elements in - AuthInfo's - - signer_infos and Tx's signatures. Each required signer address is - added to - - the list only the first time it occurs. - - By convention, the first required signer (usually from the first - message) - - is referred to as the primary signer and pays the fee for the - whole - - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. - - WARNING: in clients, any publicly exposed text should not be - called memo, - - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: - type: string - format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by - chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by - chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - auth_info: - $ref: '#/definitions/cosmos.tx.v1beta1.AuthInfo' - title: |- - auth_info is the authorization related content of the transaction, - specifically signers, signer modes and fee - signatures: - type: array - items: - type: string - format: byte - description: >- - signatures is a list of signatures that matches the length and order - of - - AuthInfo's signer_infos to allow connecting signature meta information - like - - public key and signing mode by position. - description: Tx is the standard type used for broadcasting transactions. - cosmos.tx.v1beta1.TxBody: - type: object - properties: - messages: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - messages is a list of messages to be executed. The required signers of - - those messages define the number and order of elements in AuthInfo's - - signer_infos and Tx's signatures. Each required signer address is - added to - - the list only the first time it occurs. - - By convention, the first required signer (usually from the first - message) - - is referred to as the primary signer and pays the fee for the whole - - transaction. - memo: - type: string - description: >- - memo is any arbitrary note/comment to be added to the transaction. - - WARNING: in clients, any publicly exposed text should not be called - memo, - - but should be called `note` instead (see - https://github.com/cosmos/cosmos-sdk/issues/9122). - timeout_height: - type: string - format: uint64 - title: |- - timeout is the block height after which this transaction will not - be processed by the chain - extension_options: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, the transaction will be rejected - non_critical_extension_options: - type: array - items: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up - a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - extension_options are arbitrary options that can be added by chains - - when the default options are not sufficient. If any of these are - present - - and can't be handled, they will be ignored - description: TxBody is the body of a transaction that all signers sign over. - tendermint.abci.Event: - type: object - properties: - type: - type: string - attributes: - type: array - items: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - description: >- - Event allows application developers to attach additional information to - - ResponseBeginBlock, ResponseEndBlock, ResponseCheckTx and - ResponseDeliverTx. - - Later, transactions may be queried using these events. - tendermint.abci.EventAttribute: - type: object - properties: - key: - type: string - format: byte - value: - type: string - format: byte - index: - type: boolean - description: 'EventAttribute is a single key-value pair, associated with an event.' - cosmos.upgrade.v1beta1.ModuleVersion: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse: - type: object - description: |- - MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type. - - Since: cosmos-sdk 0.46 - cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse: - type: object - description: |- - MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type. - - Since: cosmos-sdk 0.46 - cosmos.upgrade.v1beta1.Plan: - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the upgraded - - version of the software to apply any special "on-upgrade" commands - during - - the first BeginBlock method after the upgrade is applied. It is also - used - - to detect whether a software version can handle a given upgrade. If no - - upgrade handler with this name has been set in the software, it will - be - - assumed that the software is out-of-date when the upgrade Time or - Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic - - has been removed from the SDK. - - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: |- - Any application specific upgrade info to be included on-chain - such as a git commit that validators could automatically upgrade to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - Plan specifies information about a planned upgrade and when it should - occur. - cosmos.upgrade.v1beta1.QueryAppliedPlanResponse: - type: object - properties: - height: - type: string - format: int64 - description: height is the block height at which the plan was applied. - description: >- - QueryAppliedPlanResponse is the response type for the Query/AppliedPlan - RPC - - method. - cosmos.upgrade.v1beta1.QueryAuthorityResponse: - type: object - properties: - address: - type: string - description: 'Since: cosmos-sdk 0.46' - title: QueryAuthorityResponse is the response type for Query/Authority - cosmos.upgrade.v1beta1.QueryCurrentPlanResponse: - type: object - properties: - plan: - description: plan is the current upgrade plan. - type: object - properties: - name: - type: string - description: >- - Sets the name for the upgrade. This name will be used by the - upgraded - - version of the software to apply any special "on-upgrade" commands - during - - the first BeginBlock method after the upgrade is applied. It is - also used - - to detect whether a software version can handle a given upgrade. - If no - - upgrade handler with this name has been set in the software, it - will be - - assumed that the software is out-of-date when the upgrade Time or - Height is - - reached and the software will exit. - time: - type: string - format: date-time - description: >- - Deprecated: Time based upgrades have been deprecated. Time based - upgrade logic - - has been removed from the SDK. - - If this field is not empty, an error will be thrown. - height: - type: string - format: int64 - description: |- - The height at which the upgrade must be performed. - Only used if Time is not set. - info: - type: string - title: >- - Any application specific upgrade info to be included on-chain - - such as a git commit that validators could automatically upgrade - to - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - description: >- - QueryCurrentPlanResponse is the response type for the Query/CurrentPlan - RPC - - method. - cosmos.upgrade.v1beta1.QueryModuleVersionsResponse: - type: object - properties: - module_versions: - type: array - items: - type: object - properties: - name: - type: string - title: name of the app module - version: - type: string - format: uint64 - title: consensus version of the app module - description: |- - ModuleVersion specifies a module and its consensus version. - - Since: cosmos-sdk 0.43 - description: >- - module_versions is a list of module names with their consensus - versions. - description: >- - QueryModuleVersionsResponse is the response type for the - Query/ModuleVersions - - RPC method. - - - Since: cosmos-sdk 0.43 - cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse: - type: object - properties: - upgraded_consensus_state: - type: string - format: byte - title: 'Since: cosmos-sdk 0.43' - description: >- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState - - RPC method. - cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse: - type: object - description: >- - MsgCreateVestingAccountResponse defines the - Msg/CreatePeriodicVestingAccount - - response type. - - - Since: cosmos-sdk 0.46 - cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse: - type: object - description: >- - MsgCreatePermanentLockedAccountResponse defines the - Msg/CreatePermanentLockedAccount response type. - - - Since: cosmos-sdk 0.46 - cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse: - type: object - description: >- - MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount - response type. - cosmos.vesting.v1beta1.Period: - type: object - properties: - length: - type: string - format: int64 - amount: - type: array - items: - type: object - properties: - denom: - type: string - amount: - type: string - description: |- - Coin defines a token with a denomination and an amount. - - NOTE: The amount field is an Int which implements the custom method - signatures required by gogoproto. - description: Period defines a length of time and amount of coins that will vest. - ibc.applications.interchain_accounts.controller.v1.Params: - type: object - properties: - controller_enabled: - type: boolean - description: controller_enabled enables or disables the controller submodule. - description: |- - Params defines the set of on-chain interchain accounts parameters. - The following parameters may be used to disable the controller submodule. - ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - controller_enabled: - type: boolean - description: controller_enabled enables or disables the controller submodule. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - ibc.applications.interchain_accounts.host.v1.Params: - type: object - properties: - host_enabled: - type: boolean - description: host_enabled enables or disables the host submodule. - allow_messages: - type: array - items: - type: string - description: >- - allow_messages defines a list of sdk message typeURLs allowed to be - executed on a host chain. - description: |- - Params defines the set of on-chain interchain accounts parameters. - The following parameters may be used to disable the host submodule. - ibc.applications.interchain_accounts.host.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - host_enabled: - type: boolean - description: host_enabled enables or disables the host submodule. - allow_messages: - type: array - items: - type: string - description: >- - allow_messages defines a list of sdk message typeURLs allowed to - be executed on a host chain. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - ibc.applications.transfer.v1.DenomTrace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for tracing - the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens and - the - - source tracing information path. - ibc.applications.transfer.v1.MsgTransferResponse: - type: object - description: MsgTransferResponse defines the Msg/Transfer response type. - ibc.applications.transfer.v1.Params: - type: object - properties: - send_enabled: - type: boolean - description: >- - send_enabled enables or disables all cross-chain token transfers from - this - - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token transfers to - this - - chain. - description: >- - Params defines the set of IBC transfer parameters. - - NOTE: To prevent a single token from being transferred, set the - - TransfersEnabled parameter to true and then set the bank module's - SendEnabled - - parameter for the denomination to false. - ibc.applications.transfer.v1.QueryDenomHashResponse: - type: object - properties: - hash: - type: string - description: hash (in hex format) of the denomination trace information. - description: |- - QueryDenomHashResponse is the response type for the Query/DenomHash RPC - method. - ibc.applications.transfer.v1.QueryDenomTraceResponse: - type: object - properties: - denom_trace: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for - tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens - and the - - source tracing information path. - description: |- - QueryDenomTraceResponse is the response type for the Query/DenomTrace RPC - method. - ibc.applications.transfer.v1.QueryDenomTracesResponse: - type: object - properties: - denom_traces: - type: array - items: - type: object - properties: - path: - type: string - description: >- - path defines the chain of port/channel identifiers used for - tracing the - - source of the fungible token. - base_denom: - type: string - description: base denomination of the relayed fungible token. - description: >- - DenomTrace contains the base denomination for ICS20 fungible tokens - and the - - source tracing information path. - description: denom_traces returns all denominations trace information. - pagination: - description: pagination defines the pagination in the response. - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: >- - QueryConnectionsResponse is the response type for the Query/DenomTraces - RPC - - method. - ibc.applications.transfer.v1.QueryEscrowAddressResponse: - type: object - properties: - escrow_address: - type: string - title: the escrow account address - description: >- - QueryEscrowAddressResponse is the response type of the EscrowAddress RPC - method. - ibc.applications.transfer.v1.QueryParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - send_enabled: - type: boolean - description: >- - send_enabled enables or disables all cross-chain token transfers - from this - - chain. - receive_enabled: - type: boolean - description: >- - receive_enabled enables or disables all cross-chain token - transfers to this - - chain. - description: QueryParamsResponse is the response type for the Query/Params RPC method. - ibc.core.client.v1.Height: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: |- - Normally the RevisionHeight is incremented at each height while keeping - RevisionNumber the same. However some consensus algorithms may choose to - reset the height in certain conditions e.g. hard forks, state-machine - breaking changes In these cases, the RevisionNumber is incremented so that - height continues to be monitonically increasing even as the RevisionHeight - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes of updating - and - - freezing clients - ibc.core.channel.v1.Channel: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - description: |- - Channel defines pipeline for exactly-once packet delivery between specific - modules on separate blockchains, which has at least one end capable of - sending packets and one end capable of receiving packets. - ibc.core.channel.v1.Counterparty: - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - title: Counterparty defines a channel end counterparty - ibc.core.channel.v1.IdentifiedChannel: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: |- - list of connection identifiers, in order, along which packets sent on - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - ibc.core.channel.v1.MsgAcknowledgementResponse: - type: object - properties: - result: - type: string - enum: - - RESPONSE_RESULT_TYPE_UNSPECIFIED - - RESPONSE_RESULT_TYPE_NOOP - - RESPONSE_RESULT_TYPE_SUCCESS - default: RESPONSE_RESULT_TYPE_UNSPECIFIED - description: |- - - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration - - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) - - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully - title: >- - ResponseResultType defines the possible outcomes of the execution of a - message - description: MsgAcknowledgementResponse defines the Msg/Acknowledgement response type. - ibc.core.channel.v1.MsgChannelCloseConfirmResponse: - type: object - description: >- - MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm - response - - type. - ibc.core.channel.v1.MsgChannelCloseInitResponse: - type: object - description: >- - MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response - type. - ibc.core.channel.v1.MsgChannelOpenAckResponse: - type: object - description: MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type. - ibc.core.channel.v1.MsgChannelOpenConfirmResponse: - type: object - description: |- - MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response - type. - ibc.core.channel.v1.MsgChannelOpenInitResponse: - type: object - properties: - channel_id: - type: string - version: - type: string - description: MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type. - ibc.core.channel.v1.MsgChannelOpenTryResponse: - type: object - properties: - version: - type: string - description: MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type. - ibc.core.channel.v1.MsgRecvPacketResponse: - type: object - properties: - result: - type: string - enum: - - RESPONSE_RESULT_TYPE_UNSPECIFIED - - RESPONSE_RESULT_TYPE_NOOP - - RESPONSE_RESULT_TYPE_SUCCESS - default: RESPONSE_RESULT_TYPE_UNSPECIFIED - description: |- - - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration - - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) - - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully - title: >- - ResponseResultType defines the possible outcomes of the execution of a - message - description: MsgRecvPacketResponse defines the Msg/RecvPacket response type. - ibc.core.channel.v1.MsgTimeoutOnCloseResponse: - type: object - properties: - result: - type: string - enum: - - RESPONSE_RESULT_TYPE_UNSPECIFIED - - RESPONSE_RESULT_TYPE_NOOP - - RESPONSE_RESULT_TYPE_SUCCESS - default: RESPONSE_RESULT_TYPE_UNSPECIFIED - description: |- - - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration - - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) - - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully - title: >- - ResponseResultType defines the possible outcomes of the execution of a - message - description: MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type. - ibc.core.channel.v1.MsgTimeoutResponse: - type: object - properties: - result: - type: string - enum: - - RESPONSE_RESULT_TYPE_UNSPECIFIED - - RESPONSE_RESULT_TYPE_NOOP - - RESPONSE_RESULT_TYPE_SUCCESS - default: RESPONSE_RESULT_TYPE_UNSPECIFIED - description: |- - - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration - - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) - - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully - title: >- - ResponseResultType defines the possible outcomes of the execution of a - message - description: MsgTimeoutResponse defines the Msg/Timeout response type. - ibc.core.channel.v1.Order: - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - title: Order defines if a channel is ORDERED or UNORDERED - ibc.core.channel.v1.Packet: - type: object - properties: - sequence: - type: string - format: uint64 - description: >- - number corresponds to the order of sends and receives, where a Packet - - with an earlier sequence number must be sent and received before a - Packet - - with a later sequence number. - source_port: - type: string - description: identifies the port on the sending chain. - source_channel: - type: string - description: identifies the channel end on the sending chain. - destination_port: - type: string - description: identifies the port on the receiving chain. - destination_channel: - type: string - description: identifies the channel end on the receiving chain. - data: - type: string - format: byte - title: actual opaque bytes transferred directly to the application module - timeout_height: - title: block height after which the packet times out - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - timeout_timestamp: - type: string - format: uint64 - title: block timestamp (in nanoseconds) after which the packet times out - title: >- - Packet defines a type that carries data across different chains through - IBC - ibc.core.channel.v1.PacketState: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: |- - PacketState defines the generic type necessary to retrieve and store - packet commitments, acknowledgements, and receipts. - Caller is responsible for knowing the context necessary to interpret this - state as a commitment, acknowledgement, or a receipt. - ibc.core.channel.v1.QueryChannelClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryChannelClientStateResponse is the Response type for the - Query/QueryChannelClientState RPC method - ibc.core.channel.v1.QueryChannelResponse: - type: object - properties: - channel: - title: channel associated with the request identifiers - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of the - channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets sent - on - - this channel will travel - version: - type: string - title: 'opaque channel version, which is agreed upon during the handshake' - description: >- - Channel defines pipeline for exactly-once packet delivery between - specific - - modules on separate blockchains, which has at least one end capable of - - sending packets and one end capable of receiving packets. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelResponse is the response type for the Query/Channel RPC - method. - - Besides the Channel end, it includes a proof and the height from which the - - proof was retrieved. - ibc.core.channel.v1.QueryChannelsResponse: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of stored channels of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryChannelsResponse is the response type for the Query/Channels RPC - method. - ibc.core.channel.v1.QueryConnectionChannelsResponse: - type: object - properties: - channels: - type: array - items: - type: object - properties: - state: - title: current state of the channel end - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ordering: - title: whether the channel is ordered or unordered - type: string - enum: - - ORDER_NONE_UNSPECIFIED - - ORDER_UNORDERED - - ORDER_ORDERED - default: ORDER_NONE_UNSPECIFIED - description: |- - - ORDER_NONE_UNSPECIFIED: zero-value for channel ordering - - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in - which they were sent. - - ORDER_ORDERED: packets are delivered exactly in the order which they were sent - counterparty: - title: counterparty channel end - type: object - properties: - port_id: - type: string - description: >- - port on the counterparty chain which owns the other end of - the channel. - channel_id: - type: string - title: channel end on the counterparty chain - connection_hops: - type: array - items: - type: string - title: >- - list of connection identifiers, in order, along which packets - sent on - - this channel will travel - version: - type: string - title: >- - opaque channel version, which is agreed upon during the - handshake - port_id: - type: string - title: port identifier - channel_id: - type: string - title: channel identifier - description: |- - IdentifiedChannel defines a channel with additional port and channel - identifier fields. - description: list of channels associated with a connection. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionChannelsResponse is the Response type for the - Query/QueryConnectionChannels RPC method - ibc.core.channel.v1.QueryNextSequenceReceiveResponse: - type: object - properties: - next_sequence_receive: - type: string - format: uint64 - title: next sequence receive number - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QuerySequenceResponse is the request type for the - Query/QueryNextSequenceReceiveResponse RPC method - ibc.core.channel.v1.QueryPacketAcknowledgementResponse: - type: object - properties: - acknowledgement: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgementResponse defines the client query response for a - packet which also includes a proof and the height from which the - proof was retrieved - ibc.core.channel.v1.QueryPacketAcknowledgementsResponse: - type: object - properties: - acknowledgements: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to interpret - this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketAcknowledgemetsResponse is the request type for the - Query/QueryPacketAcknowledgements RPC method - ibc.core.channel.v1.QueryPacketCommitmentResponse: - type: object - properties: - commitment: - type: string - format: byte - title: packet associated with the request fields - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketCommitmentResponse defines the client query response for a - packet - - which also includes a proof and the height from which the proof was - - retrieved - ibc.core.channel.v1.QueryPacketCommitmentsResponse: - type: object - properties: - commitments: - type: array - items: - type: object - properties: - port_id: - type: string - description: channel port identifier. - channel_id: - type: string - description: channel unique identifier. - sequence: - type: string - format: uint64 - description: packet sequence. - data: - type: string - format: byte - description: embedded data that represents packet state. - description: >- - PacketState defines the generic type necessary to retrieve and store - - packet commitments, acknowledgements, and receipts. - - Caller is responsible for knowing the context necessary to interpret - this - - state as a commitment, acknowledgement, or a receipt. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryPacketCommitmentsResponse is the request type for the - Query/QueryPacketCommitments RPC method - ibc.core.channel.v1.QueryPacketReceiptResponse: - type: object - properties: - received: - type: boolean - title: success flag for if receipt exists - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - QueryPacketReceiptResponse defines the client query response for a packet - - receipt which also includes a proof, and the height from which the proof - was - - retrieved - ibc.core.channel.v1.QueryUnreceivedAcksResponse: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived acknowledgement sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedAcksResponse is the response type for the - Query/UnreceivedAcks RPC method - ibc.core.channel.v1.QueryUnreceivedPacketsResponse: - type: object - properties: - sequences: - type: array - items: - type: string - format: uint64 - title: list of unreceived packet sequences - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryUnreceivedPacketsResponse is the response type for the - Query/UnreceivedPacketCommitments RPC method - ibc.core.channel.v1.ResponseResultType: - type: string - enum: - - RESPONSE_RESULT_TYPE_UNSPECIFIED - - RESPONSE_RESULT_TYPE_NOOP - - RESPONSE_RESULT_TYPE_SUCCESS - default: RESPONSE_RESULT_TYPE_UNSPECIFIED - description: |- - - RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration - - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed) - - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully - title: >- - ResponseResultType defines the possible outcomes of the execution of a - message - ibc.core.channel.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - - STATE_CLOSED - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a channel is in one of the following states: - CLOSED, INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A channel has just started the opening handshake. - - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain. - - STATE_OPEN: A channel has completed the handshake. Open channels are - ready to send and receive packets. - - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive - packets. - ibc.core.client.v1.IdentifiedClientState: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - ibc.core.client.v1.ConsensusStateWithHeight: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an additional - height - - field. - ibc.core.client.v1.MsgCreateClientResponse: - type: object - description: MsgCreateClientResponse defines the Msg/CreateClient response type. - ibc.core.client.v1.MsgSubmitMisbehaviourResponse: - type: object - description: |- - MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response - type. - ibc.core.client.v1.MsgUpdateClientResponse: - type: object - description: MsgUpdateClientResponse defines the Msg/UpdateClient response type. - ibc.core.client.v1.MsgUpgradeClientResponse: - type: object - description: MsgUpgradeClientResponse defines the Msg/UpgradeClient response type. - ibc.core.client.v1.Params: - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: allowed_clients defines the list of allowed client state types. - description: Params defines the set of IBC light client parameters. - ibc.core.client.v1.QueryClientParamsResponse: - type: object - properties: - params: - description: params defines the parameters of the module. - type: object - properties: - allowed_clients: - type: array - items: - type: string - description: allowed_clients defines the list of allowed client state types. - description: >- - QueryClientParamsResponse is the response type for the Query/ClientParams - RPC - - method. - ibc.core.client.v1.QueryClientStateResponse: - type: object - properties: - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryClientStateResponse is the response type for the Query/ClientState - RPC - - method. Besides the client state, it includes a proof and the height from - - which the proof was retrieved. - ibc.core.client.v1.QueryClientStatesResponse: - type: object - properties: - client_states: - type: array - items: - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: >- - IdentifiedClientState defines a client state with an additional - client - - identifier field. - description: list of stored ClientStates of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - description: >- - QueryClientStatesResponse is the response type for the Query/ClientStates - RPC - - method. - ibc.core.client.v1.QueryClientStatusResponse: - type: object - properties: - status: - type: string - description: >- - QueryClientStatusResponse is the response type for the Query/ClientStatus - RPC - - method. It returns the current status of the IBC client. - ibc.core.client.v1.QueryConsensusStateHeightsResponse: - type: object - properties: - consensus_state_heights: - type: array - items: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is incremented - so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes of - updating and - - freezing clients - title: consensus state heights - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStateHeightsResponse is the response type for the - Query/ConsensusStateHeights RPC method - ibc.core.client.v1.QueryConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: >- - consensus state associated with the client identifier at the given - height - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: >- - Height is a monotonically increasing data type - - that can be compared against another Height for the purposes of - updating and - - freezing clients - title: >- - QueryConsensusStateResponse is the response type for the - Query/ConsensusState - - RPC method - ibc.core.client.v1.QueryConsensusStatesResponse: - type: object - properties: - consensus_states: - type: array - items: - type: object - properties: - height: - title: consensus state height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may - choose to - - reset the height in certain conditions e.g. hard forks, - state-machine - - breaking changes In these cases, the RevisionNumber is - incremented so that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as - follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a - [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) - might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in - the form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default - use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last - '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state - description: >- - ConsensusStateWithHeight defines a consensus state with an - additional height - - field. - title: consensus states associated with the identifier - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - title: |- - QueryConsensusStatesResponse is the response type for the - Query/ConsensusStates RPC method - ibc.core.client.v1.QueryUpgradedClientStateResponse: - type: object - properties: - upgraded_client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state associated with the request identifier - description: |- - QueryUpgradedClientStateResponse is the response type for the - Query/UpgradedClientState RPC method. - ibc.core.client.v1.QueryUpgradedConsensusStateResponse: - type: object - properties: - upgraded_consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: Consensus state associated with the request identifier - description: |- - QueryUpgradedConsensusStateResponse is the response type for the - Query/UpgradedConsensusState RPC method. - ibc.core.commitment.v1.MerklePrefix: - type: object - properties: - key_prefix: - type: string - format: byte - title: |- - MerklePrefix is merkle path prefixed to the key. - The constructed key from the Path and the key will be append(Path.KeyPath, - append(Path.KeyPrefix, key...)) - ibc.core.connection.v1.ConnectionEnd: - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings or protocols - for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can be used for - - packet-verification NOTE: delay period logic is only implemented by - some - - clients. - description: |- - ConnectionEnd defines a stateful object on a chain connected to another - separate one. - NOTE: there must only be 2 defined ConnectionEnds to establish - a connection between two chains. - ibc.core.connection.v1.Counterparty: - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - description: >- - Counterparty defines the counterparty chain associated with a connection - end. - ibc.core.connection.v1.IdentifiedConnection: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or protocols - for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated with a - given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain associated - with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - ibc.core.connection.v1.MsgConnectionOpenAckResponse: - type: object - description: >- - MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response - type. - ibc.core.connection.v1.MsgConnectionOpenConfirmResponse: - type: object - description: |- - MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm - response type. - ibc.core.connection.v1.MsgConnectionOpenInitResponse: - type: object - description: |- - MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response - type. - ibc.core.connection.v1.MsgConnectionOpenTryResponse: - type: object - description: >- - MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response - type. - ibc.core.connection.v1.QueryClientConnectionsResponse: - type: object - properties: - connection_paths: - type: array - items: - type: string - description: slice of all the connection paths associated with a client. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was generated - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryClientConnectionsResponse is the response type for the - Query/ClientConnections RPC method - ibc.core.connection.v1.QueryConnectionClientStateResponse: - type: object - properties: - identified_client_state: - title: client state associated with the channel - type: object - properties: - client_id: - type: string - title: client identifier - client_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all - types that they - - expect it to use in the context of Any. However, for URLs - which use the - - scheme `http`, `https`, or no scheme, one can optionally set - up a type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on - the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning - with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might - be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message - along with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any - type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the - unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a - field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: client state - description: |- - IdentifiedClientState defines a client state with an additional client - identifier field. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionClientStateResponse is the response type for the - Query/ConnectionClientState RPC method - ibc.core.connection.v1.QueryConnectionConsensusStateResponse: - type: object - properties: - consensus_state: - type: object - properties: - '@type': - type: string - description: >- - A URL/resource name that uniquely identifies the type of the - serialized - - protocol buffer message. This string must contain at least - - one "/" character. The last segment of the URL's path must - represent - - the fully qualified name of the type (as in - - `path/google.protobuf.Duration`). The name should be in a - canonical form - - (e.g., leading "." is not accepted). - - - In practice, teams usually precompile into the binary all types - that they - - expect it to use in the context of Any. However, for URLs which - use the - - scheme `http`, `https`, or no scheme, one can optionally set up a - type - - server that maps type URLs to message definitions as follows: - - - * If no scheme is provided, `https` is assumed. - - * An HTTP GET on the URL must yield a [google.protobuf.Type][] - value in binary format, or produce an error. - * Applications are allowed to cache lookup results based on the - URL, or have them precompiled into a binary to avoid any - lookup. Therefore, binary compatibility needs to be preserved - on changes to types. (Use versioned type names to manage - breaking changes.) - - Note: this functionality is not currently available in the - official - - protobuf release, and it is not used for type URLs beginning with - - type.googleapis.com. - - - Schemes other than `http`, `https` (or the empty scheme) might be - - used with implementation specific semantics. - additionalProperties: {} - description: >- - `Any` contains an arbitrary serialized protocol buffer message along - with a - - URL that describes the type of the serialized message. - - - Protobuf library provides support to pack/unpack Any values in the - form - - of utility functions or additional generated methods of the Any type. - - - Example 1: Pack and unpack a message in C++. - - Foo foo = ...; - Any any; - any.PackFrom(foo); - ... - if (any.UnpackTo(&foo)) { - ... - } - - Example 2: Pack and unpack a message in Java. - - Foo foo = ...; - Any any = Any.pack(foo); - ... - if (any.is(Foo.class)) { - foo = any.unpack(Foo.class); - } - - Example 3: Pack and unpack a message in Python. - - foo = Foo(...) - any = Any() - any.Pack(foo) - ... - if any.Is(Foo.DESCRIPTOR): - any.Unpack(foo) - ... - - Example 4: Pack and unpack a message in Go - - foo := &pb.Foo{...} - any, err := anypb.New(foo) - if err != nil { - ... - } - ... - foo := &pb.Foo{} - if err := any.UnmarshalTo(foo); err != nil { - ... - } - - The pack methods provided by protobuf library will by default use - - 'type.googleapis.com/full.type.name' as the type URL and the unpack - - methods only use the fully qualified type name after the last '/' - - in the type URL, for example "foo.bar.com/x/y.z" will yield type - - name "y.z". - - - - JSON - - ==== - - The JSON representation of an `Any` value uses the regular - - representation of the deserialized, embedded message, with an - - additional field `@type` which contains the type URL. Example: - - package google.profile; - message Person { - string first_name = 1; - string last_name = 2; - } - - { - "@type": "type.googleapis.com/google.profile.Person", - "firstName": , - "lastName": - } - - If the embedded message type is well-known and has a custom JSON - - representation, that representation will be embedded adding a field - - `value` which holds the custom JSON in addition to the `@type` - - field. Example (for message [google.protobuf.Duration][]): - - { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.212s" - } - title: consensus state associated with the channel - client_id: - type: string - title: client ID associated with the consensus state - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - title: |- - QueryConnectionConsensusStateResponse is the response type for the - Query/ConnectionConsensusState RPC method - ibc.core.connection.v1.QueryConnectionResponse: - type: object - properties: - connection: - title: connection associated with the request identifier - type: object - properties: - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the IBC - verison in - - the connection handshake. - description: >- - IBC version which can be utilised to determine encodings or - protocols for - - channels or packets utilising this connection. - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: >- - delay period that must pass before a consensus state can be used - for - - packet-verification NOTE: delay period logic is only implemented - by some - - clients. - description: >- - ConnectionEnd defines a stateful object on a chain connected to - another - - separate one. - - NOTE: there must only be 2 defined ConnectionEnds to establish - - a connection between two chains. - proof: - type: string - format: byte - title: merkle proof of existence - proof_height: - title: height at which the proof was retrieved - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionResponse is the response type for the Query/Connection RPC - - method. Besides the connection end, it includes a proof and the height - from - - which the proof was retrieved. - ibc.core.connection.v1.QueryConnectionsResponse: - type: object - properties: - connections: - type: array - items: - type: object - properties: - id: - type: string - description: connection identifier. - client_id: - type: string - description: client associated with this connection. - versions: - type: array - items: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: >- - Version defines the versioning scheme used to negotiate the - IBC verison in - - the connection handshake. - title: >- - IBC version which can be utilised to determine encodings or - protocols for - - channels or packets utilising this connection - state: - description: current state of the connection end. - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - counterparty: - description: counterparty chain associated with this connection. - type: object - properties: - client_id: - type: string - description: >- - identifies the client on the counterparty chain associated - with a given - - connection. - connection_id: - type: string - description: >- - identifies the connection end on the counterparty chain - associated with a - - given connection. - prefix: - description: commitment merkle prefix of the counterparty chain. - type: object - properties: - key_prefix: - type: string - format: byte - title: >- - MerklePrefix is merkle path prefixed to the key. - - The constructed key from the Path and the key will be - append(Path.KeyPath, - - append(Path.KeyPrefix, key...)) - delay_period: - type: string - format: uint64 - description: delay period associated with this connection. - description: |- - IdentifiedConnection defines a connection with additional connection - identifier field. - description: list of stored connections of the chain. - pagination: - title: pagination response - type: object - properties: - next_key: - type: string - format: byte - description: |- - next_key is the key to be passed to PageRequest.key to - query the next page most efficiently. It will be empty if - there are no more results. - total: - type: string - format: uint64 - title: >- - total is total number of results available if - PageRequest.count_total - - was set, its value is undefined otherwise - description: |- - PageResponse is to be embedded in gRPC response messages where the - corresponding request message has used PageRequest. - - message SomeResponse { - repeated Bar results = 1; - PageResponse page = 2; - } - height: - title: query block height - type: object - properties: - revision_number: - type: string - format: uint64 - title: the revision that the client is currently on - revision_height: - type: string - format: uint64 - title: the height within the given revision - description: >- - Normally the RevisionHeight is incremented at each height while - keeping - - RevisionNumber the same. However some consensus algorithms may choose - to - - reset the height in certain conditions e.g. hard forks, state-machine - - breaking changes In these cases, the RevisionNumber is incremented so - that - - height continues to be monitonically increasing even as the - RevisionHeight - - gets reset - description: >- - QueryConnectionsResponse is the response type for the Query/Connections - RPC - - method. - ibc.core.connection.v1.State: - type: string - enum: - - STATE_UNINITIALIZED_UNSPECIFIED - - STATE_INIT - - STATE_TRYOPEN - - STATE_OPEN - default: STATE_UNINITIALIZED_UNSPECIFIED - description: |- - State defines if a connection is in one of the following states: - INIT, TRYOPEN, OPEN or UNINITIALIZED. - - - STATE_UNINITIALIZED_UNSPECIFIED: Default State - - STATE_INIT: A connection end has just started the opening handshake. - - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty - chain. - - STATE_OPEN: A connection end has completed the handshake. - ibc.core.connection.v1.Version: - type: object - properties: - identifier: - type: string - title: unique version identifier - features: - type: array - items: - type: string - title: list of features compatible with the specified identifier - description: |- - Version defines the versioning scheme used to negotiate the IBC verison in - the connection handshake. diff --git a/docs/tokenfactory_quickstart.md b/docs/tokenfactory_quickstart.md deleted file mode 100644 index 3da5dd7f..00000000 --- a/docs/tokenfactory_quickstart.md +++ /dev/null @@ -1,37 +0,0 @@ -# Tokenfactory Quick Start - -### The goal of this document is to run through the necessary commands to mint a tokenfactory asset. - -The steps below assume the following: -- Just the "owner" account was set at genesis (This is a mandatory step to start the chain). -- The keys are named as follows (this is relevant for the `--from` flag): - - Owner -> owner - - Master Minter -> masterminter - - Minter Controller -> mintercontroller - - Minter -> minter -- Each wallet being used (except Owner and Alice) are pre-funded (making them known to the network) or included in genesis. - - ---- - -1. The `owner` account is set at genesis. Use this `owner` account to select a `Master Minter`. - -``` -nobled tx tokenfactory update-master-minter --from owner -``` - -2. Use the `Master Minter` account to assign a `Minter Controller` to a `Minter`. - -``` -nobled tx tokenfactory configure-minter-controller --from masterminter -``` - -3. Use the `Minter Controller` account to assign the minter an allowance they are able to mint (ex: 1000ustake). -``` -nobled tx tokenfactory configure-minter 1000ustake --from mintercontroller -``` - -4. Mint the asset into a user's (Alice's) wallet. -``` -nobled tx tokenfactory mint 500ustake --from minter -``` \ No newline at end of file diff --git a/e2e/cctp_deposit_for_burn_test.go b/e2e/cctp_deposit_for_burn_test.go new file mode 100644 index 00000000..8ee55c90 --- /dev/null +++ b/e2e/cctp_deposit_for_burn_test.go @@ -0,0 +1,190 @@ +package e2e_test + +import ( + "context" + "encoding/hex" + "testing" + "time" + + "github.com/ethereum/go-ethereum/crypto" + "github.com/noble-assets/noble/e2e" + + math "cosmossdk.io/math" + cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/ethereum/go-ethereum/common" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/stretchr/testify/require" +) + +func TestCCTP_DepositForBurn(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + // SET UP FIAT TOKEN FACTORY AND MINT + + user := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), nw.FiatTfRoles.Minter.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute configure minter controller tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", nw.FiatTfRoles.Minter.FormattedAddress(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to execute configure minter tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), + "fiat-tokenfactory", "mint", user.FormattedAddress(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to execute mint to user tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), cctptypes.ModuleAddress.String(), + ) + require.NoError(t, err, "failed to configure cctp minter controller") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", cctptypes.ModuleAddress.String(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to configure cctp minter") + + // ---- + + broadcaster := cosmos.NewBroadcaster(t, noble) + + burnToken := make([]byte, 32) + copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) + + tokenMessenger := make([]byte, 32) + copy(tokenMessenger[12:], common.FromHex("0xD0C3da58f55358142b8d3e06C1C30c5C6114EFE8")) + + bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + + tx, err := cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.Owner, + &cctptypes.MsgAddRemoteTokenMessenger{ + From: nw.CCTPRoles.Owner.FormattedAddress(), + DomainId: 0, + Address: tokenMessenger, + }, + ) + require.NoError(t, err, "error adding remote token messenger") + require.Zero(t, tx.Code, "adding remote token messenger failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.TokenController, + &cctptypes.MsgLinkTokenPair{ + From: nw.CCTPRoles.TokenController.FormattedAddress(), + RemoteDomain: 0, + RemoteToken: burnToken, + LocalToken: e2e.DenomMetadataUsdc.Base, + }, + ) + require.NoError(t, err, "error linking token pair") + require.Zero(t, tx.Code, "linking token pair failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + beforeBurnBal, err := noble.GetBalance(ctx, user.FormattedAddress(), e2e.DenomMetadataUsdc.Base) + require.NoError(t, err) + + mintRecipient := make([]byte, 32) + copy(mintRecipient[12:], common.FromHex("0xfCE4cE85e1F74C01e0ecccd8BbC4606f83D3FC90")) + + msgDepositForBurnNoble := &cctptypes.MsgDepositForBurn{ + From: user.FormattedAddress(), + Amount: math.NewInt(1000000), + BurnToken: e2e.DenomMetadataUsdc.Base, + DestinationDomain: 0, + MintRecipient: mintRecipient, + } + + bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + user, + msgDepositForBurnNoble, + ) + require.NoError(t, err, "error broadcasting msgDepositForBurn") + require.Zero(t, tx.Code, "msgDepositForBurn failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + afterBurnBal, err := noble.GetBalance(ctx, user.FormattedAddress(), e2e.DenomMetadataUsdc.Base) + require.NoError(t, err) + + require.Equal(t, afterBurnBal, beforeBurnBal.Sub(math.NewInt(1000000))) + for _, rawEvent := range tx.Events { + switch rawEvent.Type { + case "circle.cctp.v1.DepositForBurn": + parsedEvent, err := sdk.ParseTypedEvent(rawEvent) + require.NoError(t, err) + depositForBurn, ok := parsedEvent.(*cctptypes.DepositForBurn) + require.True(t, ok) + + expectedBurnToken := hex.EncodeToString(crypto.Keccak256([]byte(e2e.DenomMetadataUsdc.Base))) + + require.Equal(t, uint64(0), depositForBurn.Nonce) + require.Equal(t, expectedBurnToken, depositForBurn.BurnToken) + require.Equal(t, msgDepositForBurnNoble.Amount, depositForBurn.Amount) + require.Equal(t, user.FormattedAddress(), depositForBurn.Depositor) + require.Equal(t, mintRecipient, depositForBurn.MintRecipient) + require.Equal(t, uint32(0), depositForBurn.DestinationDomain) + require.Equal(t, tokenMessenger, depositForBurn.DestinationTokenMessenger) + require.Equal(t, []byte{}, depositForBurn.DestinationCaller) + + case "circle.cctp.v1.MessageSent": + parsedEvent, err := sdk.ParseTypedEvent(rawEvent) + require.NoError(t, err) + event, ok := parsedEvent.(*cctptypes.MessageSent) + require.True(t, ok) + + message, err := new(cctptypes.Message).Parse(event.Message) + require.NoError(t, err) + + messageSender := make([]byte, 32) + copy(messageSender[12:], sdk.MustAccAddressFromBech32(cctptypes.ModuleAddress.String())) + + expectedBurnToken := crypto.Keccak256([]byte(msgDepositForBurnNoble.BurnToken)) + + moduleAddress := make([]byte, 32) + copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(user.FormattedAddress())) + + destinationCaller := make([]byte, 32) + + require.Equal(t, uint32(0), message.Version) + require.Equal(t, uint32(4), message.SourceDomain) + require.Equal(t, uint32(0), message.DestinationDomain) + require.Equal(t, uint64(0), message.Nonce) + require.Equal(t, messageSender, message.Sender) + require.Equal(t, tokenMessenger, message.Recipient) + require.Equal(t, destinationCaller, message.DestinationCaller) + + body, err := new(cctptypes.BurnMessage).Parse(message.MessageBody) + require.NoError(t, err) + + require.Equal(t, uint32(0), body.Version) + require.Equal(t, mintRecipient, body.MintRecipient) + require.Equal(t, msgDepositForBurnNoble.Amount, body.Amount) + require.Equal(t, expectedBurnToken, body.BurnToken) + require.Equal(t, moduleAddress, body.MessageSender) + } + } +} diff --git a/e2e/cctp_deposit_for_burn_with_caller_test.go b/e2e/cctp_deposit_for_burn_with_caller_test.go new file mode 100644 index 00000000..3478da01 --- /dev/null +++ b/e2e/cctp_deposit_for_burn_with_caller_test.go @@ -0,0 +1,189 @@ +package e2e_test + +import ( + "context" + "encoding/hex" + "testing" + "time" + + "github.com/ethereum/go-ethereum/crypto" + "github.com/noble-assets/noble/e2e" + + math "cosmossdk.io/math" + cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/ethereum/go-ethereum/common" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/stretchr/testify/require" +) + +func TestCCTP_DepositForBurnWithCaller(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + // SET UP FIAT TOKEN FACTORY AND MINT + + user := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), nw.FiatTfRoles.Minter.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute configure minter controller tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", nw.FiatTfRoles.Minter.FormattedAddress(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to execute configure minter tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), + "fiat-tokenfactory", "mint", user.FormattedAddress(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to execute mint to user tx") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), cctptypes.ModuleAddress.String(), + ) + require.NoError(t, err, "failed to configure cctp minter controller") + + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", cctptypes.ModuleAddress.String(), "1000000000000"+e2e.DenomMetadataUsdc.Base, + ) + require.NoError(t, err, "failed to configure cctp minter") + + // ---- + + broadcaster := cosmos.NewBroadcaster(t, noble) + + burnToken := make([]byte, 32) + copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) + + tokenMessenger := make([]byte, 32) + copy(tokenMessenger[12:], common.FromHex("0xD0C3da58f55358142b8d3e06C1C30c5C6114EFE8")) + + bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + + tx, err := cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.Owner, + &cctptypes.MsgAddRemoteTokenMessenger{ + From: nw.CCTPRoles.Owner.FormattedAddress(), + DomainId: 0, + Address: tokenMessenger, + }, + ) + require.NoError(t, err, "error adding remote token messenger") + require.Zero(t, tx.Code, "adding remote token messenger failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.TokenController, + &cctptypes.MsgLinkTokenPair{ + From: nw.CCTPRoles.TokenController.FormattedAddress(), + RemoteDomain: 0, + RemoteToken: burnToken, + LocalToken: e2e.DenomMetadataUsdc.Base, + }, + ) + require.NoError(t, err, "error linking token pair") + require.Zero(t, tx.Code, "linking token pair failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + beforeBurnBal, err := noble.GetBalance(ctx, user.FormattedAddress(), e2e.DenomMetadataUsdc.Base) + require.NoError(t, err) + + mintRecipient := make([]byte, 32) + copy(mintRecipient[12:], common.FromHex("0xfCE4cE85e1F74C01e0ecccd8BbC4606f83D3FC90")) + + destinationCaller := []byte("12345678901234567890123456789012") + + msgDepositForBurnWithCallerNoble := &cctptypes.MsgDepositForBurnWithCaller{ + From: user.FormattedAddress(), + Amount: math.NewInt(1000000), + BurnToken: e2e.DenomMetadataUsdc.Base, + DestinationDomain: 0, + MintRecipient: mintRecipient, + DestinationCaller: destinationCaller, + } + + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + user, + msgDepositForBurnWithCallerNoble, + ) + require.NoError(t, err, "error broadcasting msgDepositForBurnWithCaller") + require.Zero(t, tx.Code, "msgDepositForBurnWithCaller failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + afterBurnBal, err := noble.GetBalance(ctx, user.FormattedAddress(), e2e.DenomMetadataUsdc.Base) + require.NoError(t, err) + + require.Equal(t, afterBurnBal, beforeBurnBal.Sub(math.NewInt(1000000))) + + for _, rawEvent := range tx.Events { + switch rawEvent.Type { + case "circle.cctp.v1.DepositForBurn": + parsedEvent, err := sdk.ParseTypedEvent(rawEvent) + require.NoError(t, err) + depositForBurn, ok := parsedEvent.(*cctptypes.DepositForBurn) + require.True(t, ok) + + expectedBurnToken := hex.EncodeToString(crypto.Keccak256([]byte(e2e.DenomMetadataUsdc.Base))) + + require.Equal(t, uint64(0), depositForBurn.Nonce) + require.Equal(t, expectedBurnToken, depositForBurn.BurnToken) + require.Equal(t, msgDepositForBurnWithCallerNoble.Amount, depositForBurn.Amount) + require.Equal(t, user.FormattedAddress(), depositForBurn.Depositor) + require.Equal(t, mintRecipient, depositForBurn.MintRecipient) + require.Equal(t, uint32(0), depositForBurn.DestinationDomain) + require.Equal(t, tokenMessenger, depositForBurn.DestinationTokenMessenger) + require.Equal(t, destinationCaller, depositForBurn.DestinationCaller) + + case "circle.cctp.v1.MessageSent": + parsedEvent, err := sdk.ParseTypedEvent(rawEvent) + require.NoError(t, err) + event, ok := parsedEvent.(*cctptypes.MessageSent) + require.True(t, ok) + + message, err := new(cctptypes.Message).Parse(event.Message) + require.NoError(t, err) + + messageSender := make([]byte, 32) + copy(messageSender[12:], sdk.MustAccAddressFromBech32(cctptypes.ModuleAddress.String())) + + expectedBurnToken := crypto.Keccak256([]byte(msgDepositForBurnWithCallerNoble.BurnToken)) + + moduleAddress := make([]byte, 32) + copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(user.FormattedAddress())) + + require.Equal(t, uint32(0), message.Version) + require.Equal(t, uint32(4), message.SourceDomain) + require.Equal(t, uint32(0), message.DestinationDomain) + require.Equal(t, uint64(0), message.Nonce) + require.Equal(t, messageSender, message.Sender) + require.Equal(t, tokenMessenger, message.Recipient) + require.Equal(t, destinationCaller, message.DestinationCaller) + + body, err := new(cctptypes.BurnMessage).Parse(message.MessageBody) + require.NoError(t, err) + + require.Equal(t, uint32(0), body.Version) + require.Equal(t, mintRecipient, body.MintRecipient) + require.Equal(t, msgDepositForBurnWithCallerNoble.Amount, body.Amount) + require.Equal(t, expectedBurnToken, body.BurnToken) + require.Equal(t, moduleAddress, body.MessageSender) + } + } +} diff --git a/interchaintest/cctp_receive_message_test.go b/e2e/cctp_receive_message_test.go similarity index 56% rename from interchaintest/cctp_receive_message_test.go rename to e2e/cctp_receive_message_test.go index 2ac0f5c1..2742f3fd 100644 --- a/interchaintest/cctp_receive_message_test.go +++ b/e2e/cctp_receive_message_test.go @@ -1,4 +1,4 @@ -package interchaintest_test +package e2e_test import ( "bytes" @@ -10,73 +10,31 @@ import ( "testing" "time" - cosmossdk_io_math "cosmossdk.io/math" + math "cosmossdk.io/math" cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/bech32" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" + "github.com/noble-assets/noble/e2e" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" ) -// run `make local-image`to rebuild updated binary before running test func TestCCTP_ReceiveMessage(t *testing.T) { if testing.Short() { t.Skip() } - t.Parallel() ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", nv, nf, true, false, true, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain().AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleChainCfg := noble.Config() - - cmd.SetPrefixes(nobleChainCfg.Bech32Prefix) + broadcaster := cosmos.NewBroadcaster(t, noble) attesters := make([]*ecdsa.PrivateKey, 2) - msgs := make([]sdk.Msg, 2) // attester - ECDSA public key (Circle will own these keys for mainnet) for i := range attesters { @@ -89,36 +47,25 @@ func TestCCTP_ReceiveMessage(t *testing.T) { attesterPub := hex.EncodeToString(pubKey) + bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + // Adding an attester to protocal - msgs[i] = &cctptypes.MsgEnableAttester{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - Attester: attesterPub, - } + tx, err := cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.AttesterManager, + &cctptypes.MsgEnableAttester{ + From: nw.CCTPRoles.AttesterManager.FormattedAddress(), + Attester: attesterPub, + }, + ) + require.NoError(t, err, "error enabling attester") + require.Zero(t, tx.Code, "cctp enable attester transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) } - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - t.Log("preparing to submit add public keys tx") - burnToken := make([]byte, 32) copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) - msgs = append(msgs, &cctptypes.MsgLinkTokenPair{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }) - - tokenMessenger := make([]byte, 32) - copy(tokenMessenger[12:], common.FromHex("0xBd3fa81B58Ba92a82136038B25aDec7066af3155")) - msgs = append(msgs, &cctptypes.MsgAddRemoteTokenMessenger{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - DomainId: 0, - Address: tokenMessenger, - }) bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) defer bCancel() @@ -126,28 +73,48 @@ func TestCCTP_ReceiveMessage(t *testing.T) { tx, err := cosmos.BroadcastTx( bCtx, broadcaster, - gw.fiatTfRoles.Owner, - msgs..., + nw.CCTPRoles.TokenController, + &cctptypes.MsgLinkTokenPair{ + From: nw.CCTPRoles.TokenController.FormattedAddress(), + RemoteDomain: 0, + RemoteToken: burnToken, + LocalToken: e2e.DenomMetadataUsdc.Base, + }, ) - require.NoError(t, err, "error submitting add public keys tx") - require.Zero(t, tx.Code, "cctp add pub keys transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + require.NoError(t, err, "error linking token pair") + require.Zero(t, tx.Code, "cctp link token pair transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - t.Logf("Submitted add public keys tx: %s", tx.TxHash) + tokenMessenger := make([]byte, 32) + copy(tokenMessenger[12:], common.FromHex("0xBd3fa81B58Ba92a82136038B25aDec7066af3155")) - _, bCancel = context.WithTimeout(ctx, 20*time.Second) + bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) defer bCancel() - nobleValidator := noble.Validators[0] + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.Owner, + &cctptypes.MsgAddRemoteTokenMessenger{ + From: nw.CCTPRoles.Owner.FormattedAddress(), + DomainId: 0, + Address: tokenMessenger, + }, + ) + require.NoError(t, err, "error adding remote token messenger") + require.Zero(t, tx.Code, "cctp adding remote token messenger transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + _, bCancel = context.WithTimeout(ctx, 20*time.Second) + defer bCancel() cctpModuleAccount := authtypes.NewModuleAddress(cctptypes.ModuleName).String() - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, ) require.NoError(t, err, "failed to execute configure minter controller tx") - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+denomMetadataUsdc.Base, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+e2e.DenomMetadataUsdc.Base, ) require.NoError(t, err, "failed to execute configure minter tx") @@ -156,7 +123,7 @@ func TestCCTP_ReceiveMessage(t *testing.T) { receiverBz, err := hex.DecodeString(receiver) require.NoError(t, err) - nobleReceiver, err := bech32.ConvertAndEncode(nobleChainCfg.Bech32Prefix, receiverBz) + nobleReceiver, err := bech32.ConvertAndEncode(nw.Chain.Config().Bech32Prefix, receiverBz) require.NoError(t, err) burnRecipientPadded := append([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, receiverBz...) @@ -165,7 +132,7 @@ func TestCCTP_ReceiveMessage(t *testing.T) { depositForBurn := cctptypes.BurnMessage{ BurnToken: burnToken, MintRecipient: burnRecipientPadded, - Amount: cosmossdk_io_math.NewInt(1000000), + Amount: math.NewInt(1000000), MessageSender: burnRecipientPadded, } @@ -214,9 +181,9 @@ func TestCCTP_ReceiveMessage(t *testing.T) { tx, err = cosmos.BroadcastTx( bCtx, broadcaster, - gw.fiatTfRoles.Owner, + nw.CCTPRoles.Owner, &cctptypes.MsgReceiveMessage{ //note: all messages that go to noble go through MsgReceiveMessage - From: gw.fiatTfRoles.Owner.FormattedAddress(), + From: nw.CCTPRoles.Owner.FormattedAddress(), Message: wrappedDepositForBurnBz, Attestation: attestationBurn, }, @@ -226,8 +193,8 @@ func TestCCTP_ReceiveMessage(t *testing.T) { t.Logf("CCTP burn message successfully received: %s", tx.TxHash) - balance, err := noble.GetBalance(ctx, nobleReceiver, denomMetadataUsdc.Base) + balance, err := noble.GetBalance(ctx, nobleReceiver, e2e.DenomMetadataUsdc.Base) require.NoError(t, err) - require.Equal(t, int64(1000000), balance) + require.Equal(t, math.NewInt(1000000), balance) } diff --git a/interchaintest/cctp_receive_message_with_caller_test.go b/e2e/cctp_receive_message_with_caller_test.go similarity index 56% rename from interchaintest/cctp_receive_message_with_caller_test.go rename to e2e/cctp_receive_message_with_caller_test.go index 64002fab..ca36859d 100644 --- a/interchaintest/cctp_receive_message_with_caller_test.go +++ b/e2e/cctp_receive_message_with_caller_test.go @@ -1,4 +1,4 @@ -package interchaintest_test +package e2e_test import ( "bytes" @@ -10,73 +10,32 @@ import ( "testing" "time" - cosmossdk_io_math "cosmossdk.io/math" + math "cosmossdk.io/math" cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/bech32" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/crypto" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" + "github.com/noble-assets/noble/e2e" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" ) -// run `make local-image`to rebuild updated binary before running test func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { if testing.Short() { t.Skip() } - t.Parallel() ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", nv, nf, true, false, true, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain().AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleChainCfg := noble.Config() - - cmd.SetPrefixes(nobleChainCfg.Bech32Prefix) + broadcaster := cosmos.NewBroadcaster(t, noble) attesters := make([]*ecdsa.PrivateKey, 2) - msgs := make([]sdk.Msg, 2) // attester - ECDSA public key (Circle will own these keys for mainnet) for i := range attesters { @@ -89,36 +48,25 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { attesterPub := hex.EncodeToString(pubKey) + bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + // Adding an attester to protocal - msgs[i] = &cctptypes.MsgEnableAttester{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - Attester: attesterPub, - } + tx, err := cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.AttesterManager, + &cctptypes.MsgEnableAttester{ + From: nw.CCTPRoles.AttesterManager.FormattedAddress(), + Attester: attesterPub, + }, + ) + require.NoError(t, err, "error enabling attester") + require.Zero(t, tx.Code, "cctp enable attester transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) } - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - t.Log("preparing to submit add public keys tx") - burnToken := make([]byte, 32) copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) - msgs = append(msgs, &cctptypes.MsgLinkTokenPair{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }) - - tokenMessenger := make([]byte, 32) - copy(tokenMessenger[12:], common.FromHex("0xBd3fa81B58Ba92a82136038B25aDec7066af3155")) - msgs = append(msgs, &cctptypes.MsgAddRemoteTokenMessenger{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - DomainId: 0, - Address: tokenMessenger, - }) bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) defer bCancel() @@ -126,28 +74,48 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { tx, err := cosmos.BroadcastTx( bCtx, broadcaster, - gw.fiatTfRoles.Owner, - msgs..., + nw.CCTPRoles.TokenController, + &cctptypes.MsgLinkTokenPair{ + From: nw.CCTPRoles.TokenController.FormattedAddress(), + RemoteDomain: 0, + RemoteToken: burnToken, + LocalToken: e2e.DenomMetadataUsdc.Base, + }, ) - require.NoError(t, err, "error submitting add public keys tx") - require.Zero(t, tx.Code, "cctp add pub keys transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + require.NoError(t, err, "error linking token pair") + require.Zero(t, tx.Code, "cctp link token pair transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - t.Logf("Submitted add public keys tx: %s", tx.TxHash) + tokenMessenger := make([]byte, 32) + copy(tokenMessenger[12:], common.FromHex("0xBd3fa81B58Ba92a82136038B25aDec7066af3155")) - _, bCancel = context.WithTimeout(ctx, 20*time.Second) + bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) defer bCancel() - nobleValidator := noble.Validators[0] + tx, err = cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.Owner, + &cctptypes.MsgAddRemoteTokenMessenger{ + From: nw.CCTPRoles.Owner.FormattedAddress(), + DomainId: 0, + Address: tokenMessenger, + }, + ) + require.NoError(t, err, "error adding remote token messenger") + require.Zero(t, tx.Code, "cctp adding remote token messenger transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + + _, bCancel = context.WithTimeout(ctx, 20*time.Second) + defer bCancel() cctpModuleAccount := authtypes.NewModuleAddress(cctptypes.ModuleName).String() - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, ) require.NoError(t, err, "failed to execute configure minter controller tx") - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+denomMetadataUsdc.Base, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+e2e.DenomMetadataUsdc.Base, ) require.NoError(t, err, "failed to execute configure minter tx") @@ -156,7 +124,7 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { receiverBz, err := hex.DecodeString(receiver) require.NoError(t, err) - nobleReceiver, err := bech32.ConvertAndEncode(nobleChainCfg.Bech32Prefix, receiverBz) + nobleReceiver, err := bech32.ConvertAndEncode(nw.Chain.Config().Bech32Prefix, receiverBz) require.NoError(t, err) burnRecipientPadded := append([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, receiverBz...) @@ -165,15 +133,17 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { depositForBurn := cctptypes.BurnMessage{ BurnToken: burnToken, MintRecipient: burnRecipientPadded, - Amount: cosmossdk_io_math.NewInt(1000000), + Amount: math.NewInt(1000000), MessageSender: burnRecipientPadded, } depositForBurnBz, err := depositForBurn.Bytes() require.NoError(t, err) + relayer := interchaintest.GetAndFundTestUsers(t, ctx, "relayer", math.OneInt(), noble)[0] + destinationCaller := make([]byte, 32) - copy(destinationCaller[12:], gw.fiatTfRoles.Owner.Address()) + copy(destinationCaller[12:], relayer.Address()) wrappedDepositForBurn := cctptypes.Message{ Version: 0, @@ -212,12 +182,13 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) defer bCancel() + tx, err = cosmos.BroadcastTx( bCtx, broadcaster, - gw.fiatTfRoles.Owner, + relayer, &cctptypes.MsgReceiveMessage{ //note: all messages that go to noble go through MsgReceiveMessage - From: gw.fiatTfRoles.Owner.FormattedAddress(), + From: relayer.FormattedAddress(), Message: wrappedDepositForBurnBz, Attestation: attestationBurn, }, @@ -227,8 +198,8 @@ func TestCCTP_ReceiveMessageWithCaller(t *testing.T) { t.Logf("CCTP burn message successfully received: %s", tx.TxHash) - balance, err := noble.GetBalance(ctx, nobleReceiver, denomMetadataUsdc.Base) + balance, err := noble.GetBalance(ctx, nobleReceiver, e2e.DenomMetadataUsdc.Base) require.NoError(t, err) - require.Equal(t, int64(1000000), balance) + require.Equal(t, math.NewInt(1000000), balance) } diff --git a/interchaintest/cctp_replace_deposit_for_burn_test.go b/e2e/cctp_replace_deposit_for_burn_test.go similarity index 68% rename from interchaintest/cctp_replace_deposit_for_burn_test.go rename to e2e/cctp_replace_deposit_for_burn_test.go index adeea897..ae916db4 100644 --- a/interchaintest/cctp_replace_deposit_for_burn_test.go +++ b/e2e/cctp_replace_deposit_for_burn_test.go @@ -1,4 +1,4 @@ -package interchaintest_test +package e2e_test import ( "bytes" @@ -14,77 +14,30 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/ethereum/go-ethereum/crypto" - cosmossdk_io_math "cosmossdk.io/math" + "cosmossdk.io/math" cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/ethereum/go-ethereum/common" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" + "github.com/noble-assets/noble/e2e" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" ) -// run `make local-image`to rebuild updated binary before running test func TestCCTP_ReplaceDepositForBurn(t *testing.T) { if testing.Short() { t.Skip() } - t.Parallel() ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", nv, nf, true, false, true, false), - { - Name: "gaia", - Version: "v10.0.2", - NumValidators: &nv, - NumFullNodes: &nf, - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleChainCfg := noble.Config() - - cmd.SetPrefixes(nobleChainCfg.Bech32Prefix) + broadcaster := cosmos.NewBroadcaster(t, noble) attesters := make([]*ecdsa.PrivateKey, 2) - msgs := make([]sdk.Msg, 2) // attester - ECDSA public key (Circle will own these keys for mainnet) for i := range attesters { @@ -97,56 +50,55 @@ func TestCCTP_ReplaceDepositForBurn(t *testing.T) { attesterPub := hex.EncodeToString(pubKey) + bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) + defer bCancel() + // Adding an attester to protocal - msgs[i] = &cctptypes.MsgEnableAttester{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - Attester: attesterPub, - } + tx, err := cosmos.BroadcastTx( + bCtx, + broadcaster, + nw.CCTPRoles.AttesterManager, + &cctptypes.MsgEnableAttester{ + From: nw.CCTPRoles.AttesterManager.FormattedAddress(), + Attester: attesterPub, + }, + ) + require.NoError(t, err, "error enabling attester") + require.Zero(t, tx.Code, "cctp enable attester transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) } - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - t.Log("preparing to submit add public keys tx") - burnToken := make([]byte, 32) copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) // maps remote token on remote domain to a local token -- used for minting - msgs = append(msgs, &cctptypes.MsgLinkTokenPair{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }) - bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) defer bCancel() tx, err := cosmos.BroadcastTx( bCtx, broadcaster, - gw.fiatTfRoles.Owner, - msgs..., + nw.CCTPRoles.TokenController, + &cctptypes.MsgLinkTokenPair{ + From: nw.CCTPRoles.TokenController.FormattedAddress(), + RemoteDomain: 0, + RemoteToken: burnToken, + LocalToken: e2e.DenomMetadataUsdc.Base, + }, ) - require.NoError(t, err, "error submitting add public keys tx") - require.Zero(t, tx.Code, "cctp add pub keys transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) + require.NoError(t, err, "error linking token pair") + require.Zero(t, tx.Code, "cctp link token pair transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) t.Logf("Submitted add public keys tx: %s", tx.TxHash) - nobleValidator := noble.Validators[0] - cctpModuleAccount := authtypes.NewModuleAddress(cctptypes.ModuleName).String() - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), + "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), cctpModuleAccount, ) require.NoError(t, err, "failed to execute configure minter controller tx") - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+denomMetadataUsdc.Base, "-b", "block", + _, err = nobleValidator.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), + "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+e2e.DenomMetadataUsdc.Base, ) require.NoError(t, err, "failed to execute configure minter tx") @@ -157,14 +109,16 @@ func TestCCTP_ReplaceDepositForBurn(t *testing.T) { burnRecipientPadded := append([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, receiverBz...) + user := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + messageSender := make([]byte, 32) - copy(messageSender[12:], sdk.MustAccAddressFromBech32(gw.extraWallets.User.FormattedAddress())) + copy(messageSender[12:], sdk.MustAccAddressFromBech32(user.FormattedAddress())) // someone burned USDC on Ethereum -> Mint on Noble depositForBurn := cctptypes.BurnMessage{ BurnToken: burnToken, MintRecipient: burnRecipientPadded, - Amount: cosmossdk_io_math.NewInt(1000000), + Amount: math.NewInt(1000000), MessageSender: messageSender, } @@ -216,9 +170,9 @@ func TestCCTP_ReplaceDepositForBurn(t *testing.T) { tx, err = cosmos.BroadcastTx( bCtx, broadcaster, - gw.extraWallets.User, + user, &cctptypes.MsgReplaceDepositForBurn{ - From: gw.extraWallets.User.FormattedAddress(), + From: user.FormattedAddress(), OriginalMessage: wrappedDepositForBurnBz, OriginalAttestation: attestationBurn, NewDestinationCaller: newDestCaller, @@ -243,7 +197,7 @@ func TestCCTP_ReplaceDepositForBurn(t *testing.T) { require.Equal(t, wrappedDepositForBurn.Nonce, actualDepositForBurn.Nonce) require.Equal(t, expectedBurnToken, actualDepositForBurn.BurnToken) require.Equal(t, depositForBurn.Amount, actualDepositForBurn.Amount) - require.Equal(t, gw.extraWallets.User.FormattedAddress(), actualDepositForBurn.Depositor) + require.Equal(t, user.FormattedAddress(), actualDepositForBurn.Depositor) require.Equal(t, newMintRecipient, actualDepositForBurn.MintRecipient) // new require.Equal(t, wrappedDepositForBurn.DestinationDomain, actualDepositForBurn.DestinationDomain) require.Equal(t, wrappedDepositForBurn.Recipient, actualDepositForBurn.DestinationTokenMessenger) @@ -261,7 +215,7 @@ func TestCCTP_ReplaceDepositForBurn(t *testing.T) { fmt.Println(expectedBurnToken) moduleAddress := make([]byte, 32) - copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(gw.extraWallets.User.FormattedAddress())) + copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(user.FormattedAddress())) require.Equal(t, wrappedDepositForBurn.Version, message.Version) require.Equal(t, wrappedDepositForBurn.SourceDomain, message.SourceDomain) diff --git a/e2e/cctp_roles_test.go b/e2e/cctp_roles_test.go new file mode 100644 index 00000000..8779b6d5 --- /dev/null +++ b/e2e/cctp_roles_test.go @@ -0,0 +1,129 @@ +package e2e_test + +import ( + "context" + "testing" + + "cosmossdk.io/math" + "github.com/circlefin/noble-cctp/x/cctp/types" + "github.com/cosmos/gogoproto/jsonpb" + "github.com/noble-assets/noble/e2e" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/stretchr/testify/require" +) + +func TestCCTP_UpdateOwner(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + cctpOwner := nw.CCTPRoles.Owner + newOwner := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, cctpOwner.KeyName(), + "cctp", "update-owner", newOwner.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute update owner tx") + + roles, err := getRoles(nobleValidator, ctx) + require.NoError(t, err, "failed to query roles") + require.Equal(t, cctpOwner.FormattedAddress(), roles.Owner) + + _, err = nobleValidator.ExecTx(ctx, newOwner.KeyName(), + "cctp", "accept-owner", + ) + require.NoError(t, err, "failed to execute accept owner tx") + + roles, err = getRoles(nobleValidator, ctx) + require.NoError(t, err, "failed to query roles") + require.Equal(t, newOwner.FormattedAddress(), roles.Owner) +} + +func TestCCTP_UpdateAttesterManager(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + cctpOwner := nw.CCTPRoles.Owner + newAttesterManager := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, cctpOwner.KeyName(), + "cctp", "update-attester-manager", newAttesterManager.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute update attester manager tx") + + roles, err := getRoles(nobleValidator, ctx) + require.NoError(t, err, "failed to query roles") + require.Equal(t, newAttesterManager.FormattedAddress(), roles.AttesterManager) +} + +func TestCCTP_UpdatePauser(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + cctpOwner := nw.CCTPRoles.Owner + newPauser := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, cctpOwner.KeyName(), + "cctp", "update-pauser", newPauser.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute update pauser tx") + + roles, err := getRoles(nobleValidator, ctx) + require.NoError(t, err, "failed to query roles") + require.Equal(t, newPauser.FormattedAddress(), roles.Pauser) +} + +func TestCCTP_UpdateTokenController(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + nobleValidator := noble.Validators[0] + + cctpOwner := nw.CCTPRoles.Owner + newTokenController := interchaintest.GetAndFundTestUsers(t, ctx, "wallet", math.OneInt(), noble)[0] + + _, err := nobleValidator.ExecTx(ctx, cctpOwner.KeyName(), + "cctp", "update-token-controller", newTokenController.FormattedAddress(), + ) + require.NoError(t, err, "failed to execute update token controller tx") + + roles, err := getRoles(nobleValidator, ctx) + require.NoError(t, err, "failed to query roles") + require.Equal(t, newTokenController.FormattedAddress(), roles.TokenController) +} + +func getRoles(validator *cosmos.ChainNode, ctx context.Context) (roles types.QueryRolesResponse, err error) { + res, _, err := validator.ExecQuery(ctx, "cctp", "roles") + if err != nil { + return + } + + err = jsonpb.UnmarshalString(string(res), &roles) + return +} diff --git a/e2e/go.mod b/e2e/go.mod new file mode 100644 index 00000000..3e490ced --- /dev/null +++ b/e2e/go.mod @@ -0,0 +1,294 @@ +module github.com/noble-assets/noble/e2e + +go 1.22.7 + +require ( + cosmossdk.io/math v1.3.0 + github.com/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987 + github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f + github.com/cosmos/cosmos-sdk v0.50.10 + github.com/cosmos/gogoproto v1.7.0 + github.com/docker/docker v24.0.9+incompatible + github.com/ethereum/go-ethereum v1.14.8 + github.com/strangelove-ventures/interchaintest/v8 v8.7.1 + github.com/stretchr/testify v1.9.0 + go.uber.org/zap v1.27.0 +) + +require ( + cloud.google.com/go v0.115.1 // indirect + cloud.google.com/go/auth v0.9.3 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect + cloud.google.com/go/iam v1.2.0 // indirect + cloud.google.com/go/storage v1.43.0 // indirect + cosmossdk.io/api v0.7.5 // indirect + cosmossdk.io/client/v2 v2.0.0-beta.4 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/core v0.11.1 // indirect + cosmossdk.io/depinject v1.0.0 // indirect + cosmossdk.io/errors v1.0.1 // indirect + cosmossdk.io/log v1.4.1 // indirect + cosmossdk.io/store v1.1.1 // indirect + cosmossdk.io/x/evidence v0.1.1 // indirect + cosmossdk.io/x/feegrant v0.1.1 // indirect + cosmossdk.io/x/tx v0.13.5 // indirect + cosmossdk.io/x/upgrade v0.1.4 // indirect + filippo.io/edwards25519 v1.1.0 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.2 // indirect + github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect + github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect + github.com/ChainSafe/go-schnorrkel/1 v0.0.0-00010101000000-000000000000 // indirect + github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect + github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e // indirect + github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/StackExchange/wmi v1.2.1 // indirect + github.com/StirlingMarketingGroup/go-namecase v1.0.0 // indirect + github.com/avast/retry-go/v4 v4.5.1 // indirect + github.com/aws/aws-sdk-go v1.44.224 // 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/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft v0.38.12 // indirect + github.com/cometbft/cometbft-db v0.14.0 // indirect + github.com/consensys/bavard v0.1.13 // indirect + github.com/consensys/gnark-crypto v0.12.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/cosmos-db v1.0.2 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ibc-go/modules/capability v1.0.1 // indirect + github.com/cosmos/ibc-go/v8 v8.5.1 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/interchain-security/v5 v5.1.1 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/crate-crypto/go-kzg-4844 v1.0.0 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/deckarep/golang-set v1.8.0 // indirect + github.com/deckarep/golang-set/v2 v2.6.0 // indirect + github.com/decred/base58 v1.0.4 // indirect + github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/go-connections v0.5.0 // indirect + github.com/docker/go-units v0.5.0 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect + github.com/ethereum/c-kzg-4844 v1.0.0 // indirect + github.com/fatih/color v1.17.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.6 // indirect + github.com/getsentry/sentry-go v0.27.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.6.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-playground/validator/v10 v10.14.0 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gofrs/flock v0.12.1 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.3 // indirect + github.com/golang/glog v1.2.1 // 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.4 // indirect + github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect + github.com/google/go-cmp v0.6.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect + github.com/google/s2a-go v0.1.8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.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/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect + github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect + github.com/hdevalence/ed25519consensus v0.1.0 // indirect + github.com/holiman/uint256 v1.3.1 // indirect + github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/ipfs/go-cid v0.4.1 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.17.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-libp2p v0.31.0 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect + github.com/minio/highwayhash v1.0.2 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect + github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe // 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/mmcloughlin/addchain v0.4.0 // indirect + github.com/mr-tron/base58 v1.2.0 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.11.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.0 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/ncruces/go-strftime v0.1.9 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/onsi/gomega v1.34.2 // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/image-spec v1.1.0-rc2 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect + github.com/pierrec/xxHash v0.1.5 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/cobra v1.8.1 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.19.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/supranational/blst v0.3.11 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect + github.com/tidwall/gjson v1.17.1 // indirect + github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/pretty v1.2.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect + github.com/tyler-smith/go-bip32 v1.0.0 // indirect + github.com/tyler-smith/go-bip39 v1.1.0 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.uber.org/mock v0.4.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect + golang.org/x/mod v0.21.0 // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + golang.org/x/time v0.6.0 // indirect + golang.org/x/tools v0.24.0 // indirect + google.golang.org/api v0.196.0 // indirect + google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/v3 v3.5.1 // indirect + lukechampine.com/blake3 v1.2.1 // indirect + modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 // indirect + modernc.org/libc v1.55.3 // indirect + modernc.org/mathutil v1.6.0 // indirect + modernc.org/memory v1.8.0 // indirect + modernc.org/sqlite v1.31.1 // indirect + modernc.org/strutil v1.2.0 // indirect + modernc.org/token v1.1.0 // indirect + nhooyr.io/websocket v1.8.7 // indirect + pgregory.net/rapid v1.1.0 // indirect + rsc.io/tmplfunc v0.0.3 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +replace ( + github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d + github.com/ChainSafe/go-schnorrkel/1 => github.com/ChainSafe/go-schnorrkel v1.0.0 + + github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 + + github.com/vedhavyas/go-subkey => github.com/strangelove-ventures/go-subkey v1.0.7 +) diff --git a/interchaintest/go.sum b/e2e/go.sum similarity index 53% rename from interchaintest/go.sum rename to e2e/go.sum index c9ecb685..39e2aff4 100644 --- a/interchaintest/go.sum +++ b/e2e/go.sum @@ -1,14 +1,11 @@ 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,161 +15,295 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= 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.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.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= +cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= +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/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/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/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/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/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= +cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= +cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= +cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= +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/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/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/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/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/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/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +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/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/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/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/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/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/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/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/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/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/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/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +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 v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8= +cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q= +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/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/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI= +cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts= +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/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/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/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/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/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/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/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/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/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/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/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/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +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/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +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/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/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= -cosmossdk.io/math v1.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= -cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= +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.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= +cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= +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/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/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/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/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= +cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.4 h1:LGIzWbVTOof/IHQZeoWwxPX0fq607ONXhsfA7eUrQIg= +cosmossdk.io/client/v2 v2.0.0-beta.4/go.mod h1:c753d0sBv3AQRx6X+BOKL1aGpKjZMTZAHGiLPbVi5TE= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= +cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= +cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= +cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= +cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= +cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= +cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= +cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= +cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= +cosmossdk.io/x/tx v0.13.5/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= +cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= -filippo.io/edwards25519 v1.0.0/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.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= 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.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -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/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= 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/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= 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-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/ChainSafe/go-schnorrkel v1.0.0 h1:3aDA67lAykLaG1y3AOjs88dMxC88PgUuHRrLeDnvGIM= +github.com/ChainSafe/go-schnorrkel v1.0.0/go.mod h1:dpzHYVxLZcp8pjlV+O+UR8K0Hp/z7vcchBSbMBEhCw4= +github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420 h1:oknQF/iIhf5lVjbwjsVDzDByupRhga8nhA3NAmwyHDA= +github.com/ComposableFi/go-subkey/v2 v2.0.0-tm03420/go.mod h1:KYkiMX5AbOlXXYfxkrYPrRPV6EbVUALTQh5ptUOJzu8= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e h1:ahyvB3q25YnZWly5Gq1ekg6jcmWaGj/vG/MhF4aisoc= +github.com/FactomProject/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:kGUqhHd//musdITWjFvNTHn90WG9bMLBEPQZ17Cmlpw= +github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec h1:1Qb69mGp/UtRPn422BH4/Y4Q3SLUrD9KHuDkm8iodFc= +github.com/FactomProject/btcutilecc v0.0.0-20130527213604-d3a63a5752ec/go.mod h1:CD8UlnlLDiqb36L110uqiP2iSflVjx9g/3U9hCI4q2U= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -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/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/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA= +github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8= +github.com/StirlingMarketingGroup/go-namecase v1.0.0 h1:2CzaNtCzc4iNHirR+5ru9OzGg8rQp860gqLBFqRI02Y= +github.com/StirlingMarketingGroup/go-namecase v1.0.0/go.mod h1:ZsoSKcafcAzuBx+sndbxHu/RjDcDTrEdT4UvhniHfio= +github.com/VictoriaMetrics/fastcache v1.12.2 h1:N0y9ASrJ0F6h0QaC3o6uJb3NIZ9VKLjCM7NQbSmF7WI= +github.com/VictoriaMetrics/fastcache v1.12.2/go.mod h1:AmC+Nzz1+3G2eCPapF6UcsnkThDcMsQicp4xDukwJYI= 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/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= -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/participle/v2 v2.0.0-alpha7/go.mod h1:NumScqsC42o9x+dGj8/YqsIfhrIQjFEOFovxotbBirA= 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/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= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -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/avast/retry-go/v4 v4.3.4 h1:pHLkL7jvCvP317I8Ge+Km2Yhntv3SdkJm7uekkqbKhM= -github.com/avast/retry-go/v4 v4.3.4/go.mod h1:rv+Nla6Vk3/ilU0H51VHddWHiwimzX66yZ0JT6T+UvE= +github.com/avast/retry-go/v4 v4.5.1 h1:AxIx0HGi4VZ3I02jr78j5lZ3M6x1E0Ivxa6b0pUUh7o= +github.com/avast/retry-go/v4 v4.5.1/go.mod h1:/sipNsvNB3RRuT5iNcb6h73nw3IBmXJ/H3XrCQYSOpc= 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.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= +github.com/aws/aws-sdk-go v1.44.224/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/benbjohnson/clock v1.1.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 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -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/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= -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/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= 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/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -180,152 +311,159 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq 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/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.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +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/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436 h1:Yyh9oaVOIzSgbQISm7BJ0iCnSLolGYzrM7W4PeT+Zt0= -github.com/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436/go.mod h1:ssEHJqFI1f4a5sLtZ7qeYJ7/75LzDgzbBv4C9as3y3w= -github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d h1:fjoPjY5XAEuppXXf86zstq35B+87tUA94aRUkX9lQNk= -github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d/go.mod h1:0Imc1/GSaR8Ic2ssKJGN4EmNbyDGuTGY8AEvmWeao7w= +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/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987 h1:ecw5DaPs1uEA8aZ1Uwrk13y0EtYGOvox4NZUourgF5g= +github.com/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987/go.mod h1:UePuvgIp4kfVL5iHhcq5gcKlNEjXm96KPgeg6FKAm4Q= +github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f h1:OxjU1Ng1IFkj2LZcnKaMTuOzwzjkDCr4Hg9gKD8YKJk= +github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f/go.mod h1:wPcg1YAYQknGHkGNKrIgHwzSVf/4wqW7MTpXdC4ciRQ= 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/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= +github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e h1:0XBUw73chJ1VYSsfvcPvVT7auykAJce9FpRr10L6Qhw= +github.com/cmars/basen v0.0.0-20150613233007-fe3947df716e/go.mod h1:P13beTBKr5Q18lJe1rIoLUqjM+CB1zYrRg44ZqGuQSA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= 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/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= -github.com/cockroachdb/apd/v3 v3.1.0/go.mod h1:6qgPBMXjATAdD/VefbRP9NoSLKjbB4LCoA7gN4LpHs4= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/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/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.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -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-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= +github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= 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-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +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/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= 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/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= -github.com/confio/ics23/go v0.9.1/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/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= +github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= +github.com/cometbft/cometbft-db v0.14.0 h1:dKnK/tQL8BwciH6SgFEuZxwKupMokR4NlwYfJWy7C48= +github.com/cometbft/cometbft-db v0.14.0/go.mod h1:JOXKwjrxS/MW5qJ1xuVpELa8HGBVgHpgI+t8j0L0JEo= +github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= +github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= +github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -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.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -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.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= -github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= -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/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM= +github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU= 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/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.6.0 h1:G7kiD4Zf8Wrxc8BXWIKuFnzI0W4wpvRPrl5HwdfTIsA= -github.com/cosmos/ibc-go/v4 v4.6.0/go.mod h1:ksiZHUypws0NVP50E3ea0ivVFO/bfS8q8yLg8yZ2ATQ= -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/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= +github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= +github.com/cosmos/ibc-go/v8 v8.5.1 h1:3JleEMKBjRKa3FeTKt4fjg22za/qygLBo7mDkoYTNBs= +github.com/cosmos/ibc-go/v8 v8.5.1/go.mod h1:P5hkAvq0Qbg0h18uLxDVA9q1kOJ0l36htMsskiNwXbo= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/interchain-security/v5 v5.1.1 h1:xmRRMeE4xoc+JAZUh0XzXFYWaGBtzFFj5SETuOgnEnY= +github.com/cosmos/interchain-security/v5 v5.1.1/go.mod h1:vmeTcTxFCl1eV0o6xpl/IRT7Basz0szVVGzbppnInMg= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= 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.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= -github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= +github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c h1:uQYC5Z1mdLRPrZhHjHxufI8+2UG/i25QG92j0Er9p6I= +github.com/crate-crypto/go-ipa v0.0.0-20240223125850-b1e8a79f509c/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= +github.com/crate-crypto/go-kzg-4844 v1.0.0 h1:TsSgHwrkTKecKJ4kadtHi4b3xHW5dCFUDFnUp1TsawI= +github.com/crate-crypto/go-kzg-4844 v1.0.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= 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/gherkin/go/v22 v22.0.0/go.mod h1:3mJT10B2GGn3MvVPd3FwR7m2u4tLhSRhWUqJU4KN4Fg= -github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= -github.com/cucumber/common/messages/go/v17 v17.1.1/go.mod h1:bpGxb57tDE385Rb2EohgUadLkAbhoC4IyCFi89u/JQI= -github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= 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/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= +github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/base58 v1.0.4 h1:QJC6B0E0rXOPA8U/kw2rP+qiRJsUaE2Er+pYb3siUeA= +github.com/decred/base58 v1.0.4/go.mod h1:jJswKPEdvpFpvf7dsDvFZyLT22xZ9lWqEByX38oGd9E= +github.com/decred/dcrd/chaincfg/chainhash v1.0.2 h1:rt5Vlq/jM3ZawwiacWjPa+smINyLRN07EO0cNBV6DGU= +github.com/decred/dcrd/chaincfg/chainhash v1.0.2/go.mod h1:BpbrGgrPTr3YJYRN3Bm+D9NuaFd+zGyNeIKgrhCXK60= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -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/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/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1 h1:18HurQ6DfHeNvwIjvOmrgr44bPdtVaQAe/WWwHg9goM= +github.com/decred/dcrd/dcrec/secp256k1/v2 v2.0.1/go.mod h1:XmyzkaXBy7ZvHdrTAlXAjpog8qKSAWa3ze7yqzWmgmc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= 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/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= 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+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+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/docker v24.0.1+incompatible h1:NxN81beIxDlUaVt46iUQrYHD9/W3u9EGl52r86O/IGw= -github.com/docker/docker v24.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/docker v24.0.9+incompatible h1:HPGzNmwfLZWdxHqK9/II92pyi1EpYKsAqcl4G0Of9v0= +github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -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 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/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.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/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= 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= @@ -333,56 +471,45 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m 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/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/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= -github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/ethereum/c-kzg-4844 v1.0.0 h1:0X1LBXxaEtYD9xsyj9B9ctQEZIpnvVDeoBx8aHEwTNA= +github.com/ethereum/c-kzg-4844 v1.0.0/go.mod h1:VewdlzQmpT5QSrVhbBuGoCdFJkpaJlO1aQputP83wc0= +github.com/ethereum/go-ethereum v1.14.8 h1:NgOWvXS+lauK+zFukEvi85UmmsS/OkV0N23UZ1VTIig= +github.com/ethereum/go-ethereum v1.14.8/go.mod h1:TJhyuDq0JDppAkFXgqjwpdlQApywnu/m10kFPxh8vvs= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0 h1:KrE8I4reeVvf7C1tm8elRjj4BdscTYzz/WAbYyf/JI4= +github.com/ethereum/go-verkle v0.1.1-0.20240306133620-7d920df305f0/go.mod h1:D9AJLVXSyZQXJQVk8oh1EwjISE+sJTn2duYIZC0dy3w= 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/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/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= 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.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 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.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/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= +github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= 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.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.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/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= -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-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -393,6 +520,7 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 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.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= @@ -400,55 +528,58 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= 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-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-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= 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= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= 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-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= 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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= 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/gofrs/uuid v4.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -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.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= 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/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 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= @@ -456,6 +587,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt 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= @@ -474,21 +606,21 @@ 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= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/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/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/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/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= @@ -497,19 +629,26 @@ 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.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +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/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/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.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= 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= @@ -521,39 +660,57 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= 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-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= -github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= +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/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA= +github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= 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.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/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.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= 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/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +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.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= 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= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/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/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 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-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= 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= @@ -567,88 +724,97 @@ 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 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= 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.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= 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-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= 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-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= 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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/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.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.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= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= 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/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= github.com/hdevalence/ed25519consensus v0.1.0 h1:jtBwzzcHuTmFrQN6xQZn6CQEO/V9f7HsjsjeEZ6auqU= github.com/hdevalence/ed25519consensus v0.1.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= 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/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= 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-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.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/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 h1:H+uM0Bv88eur3ZSsd2NGKg3YIiuXxwxtlN7HjE66UTU= github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845/go.mod h1:c1tRKs5Tx7E2+uHGSyyncziFjvGpgv4H2HrqXeUQ/Uk= -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.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/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/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/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/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= +github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= 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/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= 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= 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= @@ -658,127 +824,98 @@ 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/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.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -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/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= 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.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= 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.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -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.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= 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= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 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 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -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 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= 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/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= 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/libp2p/go-libp2p v0.31.0 h1:LFShhP8F6xthWiBBq3euxbKjZsoRajVEyBS9snfHxYg= +github.com/libp2p/go-libp2p v0.31.0/go.mod h1:W/FEK1c/t04PbRH3fA9i5oucu5YcgrG0JVoBWT1B7Eg= 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.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= 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.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -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/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= 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/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/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.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.16 h1:yOQRA0RpS5PFz/oikGwBEqvAWhWg5ufRz4ETLjwpU1Y= -github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= -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-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -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/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/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-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe h1:0fcCSfvBgbagEsEMkZuxgA3Ex7IN9i1Hon0fwgMLpQw= +github.com/misko9/go-substrate-rpc-client/v4 v4.0.0-20240603204351-26b456ae3afe/go.mod h1:Q5BxOd9FxJqYp4vCiLGVdetecPcWTmUQIu0bRigYosU= 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 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae h1:O4SWKdcHVCvYqyDV+9CJA1fcDN2L11Bule0iFy3YlAI= -github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= +github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= +github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= 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= @@ -786,19 +923,32 @@ 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/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -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/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= 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/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= +github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.0 h1:pb/dlPnzee/Sxv/j4PmkDRxCOi3hXTz3IbPKOXWJkmg= +github.com/multiformats/go-multicodec v0.9.0/go.mod h1:L3QTQvMIaVBkXOXXtVmYE+LI16i14xuaojr/H7Ai54k= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/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= @@ -806,29 +956,35 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE 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/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= +github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/noble-assets/forwarding v1.1.0 h1:2TXBs2Y9vWqgHyDKtdcHht6i7OT+pLaVHE3bPvfpmJY= -github.com/noble-assets/forwarding v1.1.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= 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/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= 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/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= 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.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -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/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.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= -github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +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.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= 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= @@ -839,7 +995,6 @@ github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJ 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= @@ -847,29 +1002,25 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh 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/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= -github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/oxyno-zeta/gomock-extra-matcher v1.2.0 h1:WPEclU0y0PMwUzdDcaKZvld4aXpa3fkzjiUMQdcBEHg= +github.com/oxyno-zeta/gomock-extra-matcher v1.2.0/go.mod h1:S0r7HmKeCGsHmvIVFMjKWwswb4+30nCNWbXRMBVPkaU= 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.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= 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/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -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/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-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/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/pierrec/xxHash v0.1.5 h1:n/jBpwTHiER4xYvK3/CdPVnLDPchj8eTJFFLUb4QHBo= +github.com/pierrec/xxHash v0.1.5/go.mod h1:w2waW5Zoa/Wc4Yqe0wgrIYAGKqRMf7czn2HNKXmuL+I= 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= @@ -878,10 +1029,9 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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.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/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= 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= @@ -889,79 +1039,67 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= 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.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= 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= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= -github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= 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/gocuke v0.6.2/go.mod h1:zYaqIHZobHyd0xOrHGPQjbhGJsuZ1oElx150u2o1xuk= 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/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -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/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -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.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/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= +github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= 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/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= 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/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/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible h1:Bn1aCHHRnjv4Bl16T8rcaFjYSrGrIZvpiGO6P3Q4GpU= github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 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= @@ -974,43 +1112,37 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 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/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 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.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -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/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 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.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= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/strangelove-ventures/interchaintest/v4 v4.0.0-20231026153934-334934f17a68 h1:f16Xo7gvZ/g3YyXsmUQBwvUcq0orQeBrIcdsyVrMrjU= -github.com/strangelove-ventures/interchaintest/v4 v4.0.0-20231026153934-334934f17a68/go.mod h1:oEYorKX6XBoQOrkVv9uhq4X0azZbEf5Jq6h3GN8jJ2w= -github.com/strangelove-ventures/paramauthority v1.1.0 h1:SMeG2NvoWC1sP09ouszukck7ufSu+3gv98Apd+ytQHQ= -github.com/strangelove-ventures/paramauthority v1.1.0/go.mod h1:WZltb3MpbQo40z4eQD6oNZRpCXtxr5/7j8lbMleDFIY= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= +github.com/strangelove-ventures/interchaintest/v8 v8.7.1 h1:xzd6YgMQEVpn2v3Qun2bYWTjMZBefMlDIaSF0khyf9o= +github.com/strangelove-ventures/interchaintest/v8 v8.7.1/go.mod h1:6tu+kukThX4u27lZq+W0iJ+pwtkVcG3E2QOveyRoXuQ= 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= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 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/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.1.5-0.20170601210322-f6abca593680/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= @@ -1018,79 +1150,66 @@ 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.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.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.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= +github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +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/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/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/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= +github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= 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/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= 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/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/tyler-smith/go-bip32 v1.0.0 h1:sDR9juArbUgX+bO/iblgZnMPeWY1KZMUC2AFUJdv5KE= +github.com/tyler-smith/go-bip32 v1.0.0/go.mod h1:onot+eHknzV4BVPwrzqY5OoVpyCvnwD7lMawL5aQupE= +github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= 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/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +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/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= 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/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= 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/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= 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.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -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/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= 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= @@ -1100,53 +1219,57 @@ 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/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= 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.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/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= 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.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= 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= -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-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +golang.org/x/crypto v0.0.0-20170613210332-850760c427c5/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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-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.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -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.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= 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= @@ -1157,9 +1280,8 @@ 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-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= 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= @@ -1185,9 +1307,9 @@ 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.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= 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= @@ -1199,7 +1321,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= @@ -1209,7 +1330,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= @@ -1225,23 +1345,32 @@ 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-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +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-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-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +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.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-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.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= 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= @@ -1251,6 +1380,24 @@ 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-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.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1262,8 +1409,11 @@ 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.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +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.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= @@ -1272,10 +1422,8 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -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= @@ -1283,11 +1431,10 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1296,7 +1443,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= @@ -1310,48 +1456,69 @@ 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-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-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-20210220050731-9a76102bfb43/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-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-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-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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-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-20220315194320-039c03cc5b86/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-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.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.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= 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= @@ -1361,27 +1528,22 @@ 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.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/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.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= 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-20190114222345-bf090417da8b/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-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-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= @@ -1394,6 +1556,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn 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= @@ -1402,7 +1565,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= @@ -1423,28 +1585,29 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/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-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/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.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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/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/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= @@ -1465,6 +1628,37 @@ 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.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= +google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= 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= @@ -1473,7 +1667,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww 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/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= @@ -1481,7 +1674,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= @@ -1489,7 +1681,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= @@ -1515,20 +1706,82 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= 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-20210226172003-ab064af71705/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-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-20230629202037-9506855d4529 h1:9JucMWR7sPvCxUFd6UsOUNmA5kCcWOfORaT3tpAsKQs= -google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +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-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +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-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= 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.19.1/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= @@ -1550,9 +1803,27 @@ google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTp 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.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +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.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.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= +google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +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= @@ -1565,8 +1836,11 @@ 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 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= @@ -1575,21 +1849,19 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 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/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc= +gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc= +gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU= 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= @@ -1601,15 +1873,12 @@ 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= -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.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= 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= @@ -1618,46 +1887,47 @@ 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= -lukechampine.com/uint128 v1.2.0 h1:mBi/5l91vocEN8otkC5bDLhi2KdCticRiwbdB0O+rjI= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.40.0 h1:P3g79IUS/93SYhtoeaHW+kRCIrYaxJ27MFPv+7kaTOw= -modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= -modernc.org/ccgo/v3 v3.16.13 h1:Mkgdzl46i5F/CNR/Kj80Ri59hC8TKAhZrYSaqvkwzUw= -modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= -modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v1.22.5 h1:91BNch/e5B0uPbJFgqbxXuOnxBQjlS//icfQEGmvyjE= -modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= -modernc.org/mathutil v1.5.0 h1:rV0Ko/6SfM+8G+yKiyI830l3Wuz1zRutdslNoQ0kfiQ= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.5.0 h1:N+/8c5rE6EqugZwHii4IFsaJ7MUhoWX07J5tC/iI5Ds= -modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087 h1:Izowp2XBH6Ya6rv+hqbceQyw/gSGoXfH/UPoTGduL54= +launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM= +lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= +lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= +modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= +modernc.org/ccgo/v4 v4.19.2 h1:lwQZgvboKD0jBwdaeVCTouxhxAyN6iawF3STraAal8Y= +modernc.org/ccgo/v4 v4.19.2/go.mod h1:ysS3mxiMV38XGRTTcgo0DQTeTmAO4oCmJl1nX9VFI3s= +modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= +modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= +modernc.org/gc/v2 v2.4.1 h1:9cNzOqPyMJBvrUipmynX0ZohMhcxPtMccYgGOJdOiBw= +modernc.org/gc/v2 v2.4.1/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= +modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= +modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= +modernc.org/libc v1.55.3 h1:AzcW1mhlPNrRtjS5sS+eW2ISCgSOLLNyFzRh/V3Qj/U= +modernc.org/libc v1.55.3/go.mod h1:qFXepLhz+JjFThQ4kzwzOjA/y/artDeg+pcYnY+Q83w= +modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= +modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= +modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= +modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.23.1 h1:nrSBg4aRQQwq59JpvGEQ15tNxoO5pX/kUjcRNwSAGQM= -modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= -modernc.org/strutil v1.1.3 h1:fNMm+oJklMGYfU9Ylcywl0CO5O6nTfaowNsh2wpPjzY= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.15.2 h1:C4ybAYCGJw968e+Me18oW55kD/FexcHbqH2xak1ROSY= -modernc.org/tcl v1.15.2/go.mod h1:3+k/ZaEbKrC8ePv8zJWPtBSW0V7Gg9g8rkmhI1Kfs3c= -modernc.org/token v1.0.1 h1:A3qvTqOwexpfZZeyI0FeGPDlSWX5pjZu9hF4lU+EKWg= -modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.7.3 h1:zDJf6iHjrnB+WRD88stbXokugjyc0/pB91ri1gO6LZY= -modernc.org/z v1.7.3/go.mod h1:Ipv4tsdxZRbQyLq9Q1M6gdbkxYzdlrciF2Hi/lS7nWE= +modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= +modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= +modernc.org/sqlite v1.31.1 h1:XVU0VyzxrYHlBhIs1DiEgSl0ZtdnPtbLVy8hSkzxGrs= +modernc.org/sqlite v1.31.1/go.mod h1:UqoylwmTb9F+IqXERT8bW9zzOWN8qwAIcLdzeBZs4hA= +modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= +modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= 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= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/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 h1:53XFQh69AfOa8Tw0Jm7t+GV7KZhOi6jzsCzTtKbMvzU= 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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/interchaintest/readme.md b/e2e/readme.md similarity index 100% rename from interchaintest/readme.md rename to e2e/readme.md diff --git a/e2e/utils.go b/e2e/utils.go new file mode 100644 index 00000000..c9edb9ec --- /dev/null +++ b/e2e/utils.go @@ -0,0 +1,727 @@ +package e2e + +import ( + "context" + "encoding/json" + "fmt" + "testing" + + "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + "github.com/stretchr/testify/require" + "go.uber.org/zap/zaptest" + + "github.com/cosmos/cosmos-sdk/types/module/testutil" + "github.com/docker/docker/client" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/chain/cosmos" + "github.com/strangelove-ventures/interchaintest/v8/ibc" + "github.com/strangelove-ventures/interchaintest/v8/testreporter" + + cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" + fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" +) + +var ( + nobleImageInfo = []ibc.DockerImage{ + { + Repository: "noble", + Version: "local", + UidGid: "1025:1025", + }, + } + + DenomMetadataUsdc = banktypes.Metadata{ + Description: "USD Coin", + DenomUnits: []*banktypes.DenomUnit{ + { + Denom: "uusdc", + Exponent: 0, + Aliases: []string{ + "microusdc", + }, + }, + { + Denom: "usdc", + Exponent: 6, + Aliases: []string{}, + }, + }, + Base: "uusdc", + Display: "usdc", + Name: "usdc", + Symbol: "USDC", + } +) + +type NobleWrapper struct { + Chain *cosmos.CosmosChain + FiatTfRoles FiatTfRoles + CCTPRoles CCTPRoles + Authority ibc.Wallet +} + +type FiatTfRoles struct { + Owner ibc.Wallet + MasterMinter ibc.Wallet + MinterController ibc.Wallet + Minter ibc.Wallet + Blacklister ibc.Wallet + Pauser ibc.Wallet +} + +type CCTPRoles struct { + Owner ibc.Wallet + AttesterManager ibc.Wallet + TokenController ibc.Wallet +} + +func NobleEncoding() *testutil.TestEncodingConfig { + cfg := cosmos.DefaultEncoding() + + // register custom types + fiattokenfactorytypes.RegisterInterfaces(cfg.InterfaceRegistry) + cctptypes.RegisterInterfaces(cfg.InterfaceRegistry) + return &cfg +} + +func NobleChainSpec( + ctx context.Context, + nw *NobleWrapper, + chainID string, + nv, nf int, + setupAllCircleRoles bool, +) *interchaintest.ChainSpec { + return &interchaintest.ChainSpec{ + NumValidators: &nv, + NumFullNodes: &nf, + ChainConfig: ibc.ChainConfig{ + Type: "cosmos", + Name: "noble", + ChainID: chainID, + Bin: "nobled", + Denom: "ustake", + Bech32Prefix: "noble", + CoinType: "118", + GasPrices: "0.0ustake", + GasAdjustment: 1.1, + TrustingPeriod: "504h", + NoHostMount: false, + Images: nobleImageInfo, + EncodingConfig: NobleEncoding(), + PreGenesis: preGenesisAll(ctx, nw, setupAllCircleRoles), + ModifyGenesis: modifyGenesisAll(nw, setupAllCircleRoles), + }, + } +} + +// modifyGenesisAll modifies the genesis file to with fields needed to start chain +// +// setupAllCircleRoles: if true, all Tokenfactory and CCTP roles will be setup and tied to a wallet at genesis, +// if false, only the Owner role will be setup +func modifyGenesisAll(nw *NobleWrapper, setupAllCircleRoles bool) func(cc ibc.ChainConfig, b []byte) ([]byte, error) { + return func(cc ibc.ChainConfig, b []byte) ([]byte, error) { + + updatedGenesis := []cosmos.GenesisKV{ + cosmos.NewGenesisKV("app_state.authority.owner", nw.Authority.FormattedAddress()), + cosmos.NewGenesisKV("app_state.bank.denom_metadata", []banktypes.Metadata{DenomMetadataUsdc}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.owner", fiattokenfactorytypes.Owner{Address: nw.FiatTfRoles.Owner.FormattedAddress()}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.paused", fiattokenfactorytypes.Paused{Paused: false}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.mintingDenom", fiattokenfactorytypes.MintingDenom{Denom: DenomMetadataUsdc.Base}), + cosmos.NewGenesisKV("app_state.staking.params.bond_denom", "ustake"), + } + + if setupAllCircleRoles { + allFiatTFRoles := []cosmos.GenesisKV{ + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.masterMinter", fiattokenfactorytypes.MasterMinter{Address: nw.FiatTfRoles.MasterMinter.FormattedAddress()}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.mintersList", []fiattokenfactorytypes.Minters{{Address: nw.FiatTfRoles.Minter.FormattedAddress(), Allowance: sdk.Coin{Denom: DenomMetadataUsdc.Base, Amount: math.NewInt(100_00_000)}}}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.pauser", fiattokenfactorytypes.Pauser{Address: nw.FiatTfRoles.Pauser.FormattedAddress()}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.blacklister", fiattokenfactorytypes.Blacklister{Address: nw.FiatTfRoles.Blacklister.FormattedAddress()}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.masterMinter", fiattokenfactorytypes.MasterMinter{Address: nw.FiatTfRoles.MasterMinter.FormattedAddress()}), + cosmos.NewGenesisKV("app_state.fiat-tokenfactory.minterControllerList", []fiattokenfactorytypes.MinterController{{Minter: nw.FiatTfRoles.Minter.FormattedAddress(), Controller: nw.FiatTfRoles.MinterController.FormattedAddress()}}), + cosmos.NewGenesisKV("app_state.cctp", cctptypes.GenesisState{ + Owner: nw.CCTPRoles.Owner.FormattedAddress(), + AttesterManager: nw.CCTPRoles.AttesterManager.FormattedAddress(), + TokenController: nw.CCTPRoles.TokenController.FormattedAddress(), + BurningAndMintingPaused: &cctptypes.BurningAndMintingPaused{Paused: false}, + SendingAndReceivingMessagesPaused: &cctptypes.SendingAndReceivingMessagesPaused{Paused: false}, + NextAvailableNonce: &cctptypes.Nonce{Nonce: 0}, + SignatureThreshold: &cctptypes.SignatureThreshold{Amount: 2}, + }), + } + updatedGenesis = append(updatedGenesis, allFiatTFRoles...) + } + + return cosmos.ModifyGenesis(updatedGenesis)(cc, b) + } +} + +func preGenesisAll(ctx context.Context, nw *NobleWrapper, setupAllCircleRoles bool) func(ibc.Chain) error { + return func(cc ibc.Chain) (err error) { + val := nw.Chain.Validators[0] + + nw.FiatTfRoles, err = createTokenfactoryRoles(ctx, val, setupAllCircleRoles) + if err != nil { + return err + } + + nw.Authority, err = createAuthorityRole(ctx, val) + if err != nil { + return err + } + + nw.CCTPRoles, err = createCCTPRoles(ctx, val) + if err != nil { + return err + } + + return err + } +} + +// createTokenfactoryRoles Creates wallets to be tied to TF roles with 0 amount. Meant to run pre-genesis. +// After creating thw wallets, it recovers the key on the specified validator. +// +// setupAllCircleRoles: if true, a wallet for all Tokenfactory and CCTP roles will be created, +// if false, only the Owner role will be created +func createTokenfactoryRoles(ctx context.Context, val *cosmos.ChainNode, setupAllCircleRoles bool) (FiatTfRoles, error) { + chainCfg := val.Chain.Config() + nobleVal := val.Chain + + var err error + fiatTfRoles := FiatTfRoles{} + + fiatTfRoles.Owner, err = nobleVal.BuildRelayerWallet(ctx, "owner-fiatTF") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create wallet: %w", err) + } + if err := val.RecoverKey(ctx, fiatTfRoles.Owner.KeyName(), fiatTfRoles.Owner.Mnemonic()); err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to restore %s wallet: %w", fiatTfRoles.Owner.KeyName(), err) + } + + genesisWallet := ibc.WalletAmount{ + Address: fiatTfRoles.Owner.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + } + err = val.AddGenesisAccount(ctx, genesisWallet.Address, []sdk.Coin{sdk.NewCoin(genesisWallet.Denom, genesisWallet.Amount)}) + if err != nil { + return FiatTfRoles{}, err + } + + if !setupAllCircleRoles { + return fiatTfRoles, nil + } + + fiatTfRoles.MasterMinter, err = nobleVal.BuildRelayerWallet(ctx, "masterminter") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create %s wallet: %w", "masterminter", err) + } + fiatTfRoles.MinterController, err = nobleVal.BuildRelayerWallet(ctx, "mintercontroller") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create %s wallet: %w", "mintercontroller", err) + } + fiatTfRoles.Minter, err = nobleVal.BuildRelayerWallet(ctx, "minter") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create %s wallet: %w", "minter", err) + } + fiatTfRoles.Blacklister, err = nobleVal.BuildRelayerWallet(ctx, "blacklister") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create %s wallet: %w", "blacklister", err) + } + fiatTfRoles.Pauser, err = nobleVal.BuildRelayerWallet(ctx, "pauser") + if err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to create %s wallet: %w", "pauser", err) + } + + walletsToRestore := []ibc.Wallet{fiatTfRoles.MasterMinter, fiatTfRoles.MinterController, fiatTfRoles.Minter, fiatTfRoles.Blacklister, fiatTfRoles.Pauser} + for _, wallet := range walletsToRestore { + if err = val.RecoverKey(ctx, wallet.KeyName(), wallet.Mnemonic()); err != nil { + return FiatTfRoles{}, fmt.Errorf("failed to restore %s wallet: %w", wallet.KeyName(), err) + } + } + + genesisWallets := []ibc.WalletAmount{ + { + Address: fiatTfRoles.MasterMinter.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: fiatTfRoles.MinterController.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: fiatTfRoles.Minter.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: fiatTfRoles.Blacklister.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: fiatTfRoles.Pauser.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + } + + for _, wallet := range genesisWallets { + err = val.AddGenesisAccount(ctx, wallet.Address, []sdk.Coin{sdk.NewCoin(wallet.Denom, wallet.Amount)}) + if err != nil { + return FiatTfRoles{}, err + } + } + + return fiatTfRoles, nil +} + +func createAuthorityRole(ctx context.Context, val *cosmos.ChainNode) (ibc.Wallet, error) { + chainCfg := val.Chain.Config() + nobleVal := val.Chain + + authority, err := nobleVal.BuildRelayerWallet(ctx, "authority") + if err != nil { + return nil, fmt.Errorf("failed to create wallet: %w", err) + } + if err := val.RecoverKey(ctx, authority.KeyName(), authority.Mnemonic()); err != nil { + return nil, fmt.Errorf("failed to restore %s wallet: %w", authority.KeyName(), err) + } + + genesisWallet := ibc.WalletAmount{ + Address: authority.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + } + err = val.AddGenesisAccount(ctx, genesisWallet.Address, []sdk.Coin{sdk.NewCoin(genesisWallet.Denom, genesisWallet.Amount)}) + if err != nil { + return nil, err + } + + return authority, nil +} + +func createCCTPRoles(ctx context.Context, val *cosmos.ChainNode) (CCTPRoles, error) { + chainCfg := val.Chain.Config() + nobleVal := val.Chain + + var err error + + cctpRoles := CCTPRoles{} + + cctpRoles.Owner, err = nobleVal.BuildRelayerWallet(ctx, "cctp-owner") + if err != nil { + return CCTPRoles{}, fmt.Errorf("failed to create wallet: %w", err) + } + cctpRoles.AttesterManager, err = nobleVal.BuildRelayerWallet(ctx, "attester-manager") + if err != nil { + return CCTPRoles{}, fmt.Errorf("failed to create wallet: %w", err) + } + cctpRoles.TokenController, err = nobleVal.BuildRelayerWallet(ctx, "token-controller") + if err != nil { + return CCTPRoles{}, fmt.Errorf("failed to create wallet: %w", err) + } + + walletsToRestore := []ibc.Wallet{cctpRoles.Owner, cctpRoles.AttesterManager, cctpRoles.TokenController} + for _, wallet := range walletsToRestore { + if err = val.RecoverKey(ctx, wallet.KeyName(), wallet.Mnemonic()); err != nil { + return CCTPRoles{}, fmt.Errorf("failed to restore %s wallet: %w", wallet.KeyName(), err) + } + } + + genesisWallets := []ibc.WalletAmount{ + { + Address: cctpRoles.Owner.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: cctpRoles.AttesterManager.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + { + Address: cctpRoles.TokenController.FormattedAddress(), + Denom: chainCfg.Denom, + Amount: math.ZeroInt(), + }, + } + + for _, wallet := range genesisWallets { + err = val.AddGenesisAccount(ctx, wallet.Address, []sdk.Coin{sdk.NewCoin(wallet.Denom, wallet.Amount)}) + if err != nil { + return CCTPRoles{}, err + } + } + + return cctpRoles, nil +} + +// NobleSpinUp starts noble chain +// +// setupAllCircleRoles: if true, all Tokenfactory and CCTP roles will be created and setup at genesis, +// if false, only the Owner role will be created +func NobleSpinUp(t *testing.T, ctx context.Context, setupAllCircleRoles bool) (nw NobleWrapper) { + config := sdk.GetConfig() + config.SetBech32PrefixForAccount("noble", "noblepub") + + rep := testreporter.NewNopReporter() + eRep := rep.RelayerExecReporter(t) + + client, network := interchaintest.DockerSetup(t) + + numValidators := 1 + numFullNodes := 0 + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + NobleChainSpec(ctx, &nw, "noble-1", numValidators, numFullNodes, setupAllCircleRoles), + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + nw.Chain = chains[0].(*cosmos.CosmosChain) + noble := nw.Chain + + ic := interchaintest.NewInterchain(). + AddChain(noble) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + + SkipPathCreation: true, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + return +} + +// NobleSpinUpIBC is the same as nobleSpinUp but it also spins up a ibcSimd chain and creates +// an IBC path between them +// +// setupAllCircleRoles: if true, all Tokenfactory and CCTP roles will be created and setup at genesis, +// if false, only the Owner role will be created +func NobleSpinUpIBC(t *testing.T, ctx context.Context, setupAllCircleRoles bool) ( + nw NobleWrapper, + ibcSimd *cosmos.CosmosChain, + rf interchaintest.RelayerFactory, + r ibc.Relayer, + ibcPathName string, + rep *testreporter.Reporter, + eRep *testreporter.RelayerExecReporter, + client *client.Client, + network string, +) { + config := sdk.GetConfig() + config.SetBech32PrefixForAccount("noble", "noblepub") + + rep = testreporter.NewNopReporter() + eRep = rep.RelayerExecReporter(t) + + client, network = interchaintest.DockerSetup(t) + + numValidators := 1 + numFullNodes := 0 + + cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ + NobleChainSpec(ctx, &nw, "noble-1", numValidators, numFullNodes, setupAllCircleRoles), + {Name: "ibc-go-simd", Version: "v8.5.1", NumValidators: &numValidators, NumFullNodes: &numFullNodes}, + }) + + chains, err := cf.Chains(t.Name()) + require.NoError(t, err) + + nw.Chain = chains[0].(*cosmos.CosmosChain) + noble := nw.Chain + ibcSimd = chains[1].(*cosmos.CosmosChain) + + rf = interchaintest.NewBuiltinRelayerFactory(ibc.CosmosRly, zaptest.NewLogger(t)) + r = rf.Build(t, client, network) + + ibcPathName = "path" + ic := interchaintest.NewInterchain(). + AddChain(noble). + AddChain(ibcSimd). + AddRelayer(r, "relayer"). + AddLink(interchaintest.InterchainLink{ + Chain1: noble, + Chain2: ibcSimd, + Relayer: r, + Path: ibcPathName, + }) + + require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ + TestName: t.Name(), + Client: client, + NetworkID: network, + + SkipPathCreation: false, + })) + t.Cleanup(func() { + _ = ic.Close() + }) + + return +} + +//////////////////////////////// +// Fiat Token Factory Helpers // +//////////////////////////////// + +// blacklistAccount blacklists an account and then runs the `show-blacklisted` query to ensure the +// account was successfully blacklisted on chain +func blacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, toBlacklist ibc.Wallet) { + _, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "blacklist", toBlacklist.FormattedAddress()) + require.NoError(t, err, "failed to broadcast blacklist message") + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklisted", toBlacklist.FormattedAddress()) + require.NoError(t, err, "failed to query show-blacklisted") + + var showBlacklistedResponse fiattokenfactorytypes.QueryGetBlacklistedResponse + err = json.Unmarshal(res, &showBlacklistedResponse) + require.NoError(t, err, "failed to unmarshal show-blacklisted response") + + expectedBlacklistResponse := fiattokenfactorytypes.QueryGetBlacklistedResponse{ + Blacklisted: fiattokenfactorytypes.Blacklisted{ + AddressBz: toBlacklist.Address(), + }, + } + + require.Equal(t, expectedBlacklistResponse.Blacklisted, showBlacklistedResponse.Blacklisted) +} + +// unblacklistAccount unblacklists an account and then runs the `show-blacklisted` query to ensure the +// account was successfully unblacklisted on chain +func unblacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, unBlacklist ibc.Wallet) { + _, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "unblacklist", unBlacklist.FormattedAddress()) + require.NoError(t, err, "failed to broadcast blacklist message") + + _, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklisted", unBlacklist.FormattedAddress()) + require.Error(t, err, "query succeeded, blacklisted account should not exist") +} + +// pauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the +// the tokenfactory was successfully paused +func pauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { + _, err := val.ExecTx(ctx, pauser.KeyName(), "fiat-tokenfactory", "pause") + require.NoError(t, err, "error pausing fiat-tokenfactory") + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-paused") + require.NoError(t, err, "error querying for paused state") + + var showPausedResponse fiattokenfactorytypes.QueryGetPausedResponse + err = json.Unmarshal(res, &showPausedResponse) + require.NoError(t, err) + + expectedPaused := fiattokenfactorytypes.QueryGetPausedResponse{ + Paused: fiattokenfactorytypes.Paused{ + Paused: true, + }, + } + require.Equal(t, expectedPaused, showPausedResponse) +} + +// unpauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the +// the tokenfactory was successfully unpaused +func unpauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { + _, err := val.ExecTx(ctx, pauser.KeyName(), "fiat-tokenfactory", "unpause") + require.NoError(t, err, "error pausing fiat-tokenfactory") + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-paused") + require.NoError(t, err, "error querying for paused state") + + var showPausedResponse fiattokenfactorytypes.QueryGetPausedResponse + err = json.Unmarshal(res, &showPausedResponse) + require.NoError(t, err, "failed to unmarshal show-paused response") + + expectedUnpaused := fiattokenfactorytypes.QueryGetPausedResponse{ + Paused: fiattokenfactorytypes.Paused{ + Paused: false, + }, + } + require.Equal(t, expectedUnpaused, showPausedResponse) +} + +// setupMinterAndController creates a minter controller and minter. It also sets up a minter with an specified allowance of `uusdc` +func setupMinterAndController(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, val *cosmos.ChainNode, masterMinter ibc.Wallet, allowance int64) (minter ibc.Wallet, minterController ibc.Wallet) { + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + minterController = w[0] + minter = w[1] + + _, err := val.ExecTx(ctx, masterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController.FormattedAddress(), minter.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMC, err := showMinterController(ctx, val, minterController) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController := fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter.FormattedAddress(), + Controller: minterController.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMC.MinterController) + + configureMinter(t, ctx, val, minterController, minter, allowance) + + return minter, minterController +} + +// configureMinter configures a minter with a specified allowance of `uusdc`. It then runs the `show-minters` query to ensure +// the minter was properly configured +func configureMinter(t *testing.T, ctx context.Context, val *cosmos.ChainNode, minterController, minter ibc.Wallet, allowance int64) { + _, err := val.ExecTx(ctx, minterController.KeyName(), "fiat-tokenfactory", "configure-minter", minter.FormattedAddress(), fmt.Sprintf("%duusdc", allowance)) + require.NoError(t, err, "error configuring minter") + + showMinter, err := showMinters(ctx, val, minter) + require.NoError(t, err, "failed to query show-minter") + expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ + Minters: fiattokenfactorytypes.Minters{ + Address: minter.FormattedAddress(), + Allowance: sdk.Coin{ + Denom: "uusdc", + Amount: math.NewInt(allowance), + }, + }, + } + + require.Equal(t, expectedShowMinters.Minters, showMinter.Minters) +} + +// showMinterController queries for a specific minter controller by running: `query fiat-tokenfactory show-minter-controller
`. +// An error is returned if the minter controller does not exist +func showMinterController(ctx context.Context, val *cosmos.ChainNode, minterController ibc.Wallet) (fiattokenfactorytypes.QueryGetMinterControllerResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-minter-controller", minterController.FormattedAddress()) + if err != nil { + return fiattokenfactorytypes.QueryGetMinterControllerResponse{}, err + } + + var showMinterController fiattokenfactorytypes.QueryGetMinterControllerResponse + err = json.Unmarshal(res, &showMinterController) + if err != nil { + return fiattokenfactorytypes.QueryGetMinterControllerResponse{}, err + } + + return showMinterController, nil +} + +// showMinters queries for a specific minter by running: `query fiat-tokenfactory show-minters
`. +// An error is returned if the minter does not exist +func showMinters(ctx context.Context, val *cosmos.ChainNode, minter ibc.Wallet) (fiattokenfactorytypes.QueryGetMintersResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-minters", minter.FormattedAddress()) + if err != nil { + return fiattokenfactorytypes.QueryGetMintersResponse{}, err + } + + var showMinters fiattokenfactorytypes.QueryGetMintersResponse + err = json.Unmarshal(res, &showMinters) + if err != nil { + return fiattokenfactorytypes.QueryGetMintersResponse{}, err + } + + return showMinters, nil +} + +// showOwner queries for the token factory Owner by running: `query fiat-tokenfactory show-owner`. +func showOwner(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetOwnerResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-owner") + if err != nil { + return fiattokenfactorytypes.QueryGetOwnerResponse{}, err + } + + var showOwnerResponse fiattokenfactorytypes.QueryGetOwnerResponse + err = json.Unmarshal(res, &showOwnerResponse) + if err != nil { + return fiattokenfactorytypes.QueryGetOwnerResponse{}, err + } + + return showOwnerResponse, nil +} + +// showMasterMinter queries for the token factory Master Minter by running: `query fiat-tokenfactory show-master-minter`. +func showMasterMinter(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetMasterMinterResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter") + if err != nil { + return fiattokenfactorytypes.QueryGetMasterMinterResponse{}, err + } + + var showMMResponse fiattokenfactorytypes.QueryGetMasterMinterResponse + err = json.Unmarshal(res, &showMMResponse) + if err != nil { + return fiattokenfactorytypes.QueryGetMasterMinterResponse{}, err + } + + return showMMResponse, nil +} + +// showPauser queries for the token factory Pauser by running: `query fiat-tokenfactory show-pauser`. +func showPauser(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPauserResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser") + if err != nil { + return fiattokenfactorytypes.QueryGetPauserResponse{}, err + } + + var showPauserRes fiattokenfactorytypes.QueryGetPauserResponse + err = json.Unmarshal(res, &showPauserRes) + if err != nil { + return fiattokenfactorytypes.QueryGetPauserResponse{}, err + } + + return showPauserRes, nil +} + +// showBlacklister queries for the token factory Blacklister by running: `query fiat-tokenfactory show-blacklister`. +func showBlacklister(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetBlacklisterResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklister") + if err != nil { + return fiattokenfactorytypes.QueryGetBlacklisterResponse{}, err + } + + var showBlacklisterRes fiattokenfactorytypes.QueryGetBlacklisterResponse + err = json.Unmarshal(res, &showBlacklisterRes) + if err != nil { + return fiattokenfactorytypes.QueryGetBlacklisterResponse{}, err + } + + return showBlacklisterRes, nil +} + +// showBlacklisted queries for a specific blacklisted address by running: `query fiat-tokenfactory show-blacklisted
`. +// An error is returned if the address is not blacklisted +func showBlacklisted(ctx context.Context, val *cosmos.ChainNode, blacklistedWallet ibc.Wallet) (fiattokenfactorytypes.QueryGetBlacklistedResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklisted", blacklistedWallet.FormattedAddress()) + if err != nil { + return fiattokenfactorytypes.QueryGetBlacklistedResponse{}, err + } + + var showBlacklistedRes fiattokenfactorytypes.QueryGetBlacklistedResponse + err = json.Unmarshal(res, &showBlacklistedRes) + if err != nil { + return fiattokenfactorytypes.QueryGetBlacklistedResponse{}, err + } + + return showBlacklistedRes, nil +} + +// showPaused queries the paused state of the token factory by running: `query fiat-tokenfactory show-paused`. +func showPaused(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPausedResponse, error) { + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-paused") + if err != nil { + return fiattokenfactorytypes.QueryGetPausedResponse{}, err + } + + var showPausedRes fiattokenfactorytypes.QueryGetPausedResponse + err = json.Unmarshal(res, &showPausedRes) + if err != nil { + return fiattokenfactorytypes.QueryGetPausedResponse{}, err + } + + return showPausedRes, nil +} diff --git a/export.go b/export.go new file mode 100644 index 00000000..ccc6ad4f --- /dev/null +++ b/export.go @@ -0,0 +1,42 @@ +package noble + +import ( + "encoding/json" + "fmt" + + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + + servertypes "github.com/cosmos/cosmos-sdk/server/types" + "github.com/cosmos/cosmos-sdk/x/staking" +) + +// ExportAppStateAndValidators exports the state of the application for a genesis file. +func (app *App) ExportAppStateAndValidators(forZeroHeight bool, jailAllowedAddrs, modulesToExport []string) (servertypes.ExportedApp, error) { + // as if they could withdraw from the start of the next block + ctx := app.NewContextLegacy(true, cmtproto.Header{Height: app.LastBlockHeight()}) + + // We export at last height + 1, because that's the height at which + // CometBFT will start InitChain. + height := app.LastBlockHeight() + 1 + if forZeroHeight { + panic("zero height genesis is unsupported") + } + + genState, err := app.ModuleManager.ExportGenesisForModules(ctx, app.appCodec, modulesToExport) + if err != nil { + return servertypes.ExportedApp{}, fmt.Errorf("failed to export genesis state: %w", err) + } + + appState, err := json.MarshalIndent(genState, "", " ") + if err != nil { + return servertypes.ExportedApp{}, err + } + + validators, err := staking.WriteValidators(ctx, app.StakingKeeper) + return servertypes.ExportedApp{ + AppState: appState, + Validators: validators, + Height: height, + ConsensusParams: app.BaseApp.GetConsensusParams(ctx), + }, err +} diff --git a/go.mod b/go.mod index 818c1a1f..ae26ad01 100644 --- a/go.mod +++ b/go.mod @@ -1,179 +1,234 @@ -module github.com/noble-assets/noble/v7 +module github.com/noble-assets/noble/v8 -go 1.21 +go 1.22.7 require ( - cosmossdk.io/errors v1.0.0 - github.com/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436 - github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d - github.com/cosmos/cosmos-sdk v0.45.16 - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v4 v4.1.2 - github.com/cosmos/ibc-go/v4 v4.6.0 - github.com/gogo/protobuf v1.3.3 - github.com/golang/protobuf v1.5.3 - github.com/gorilla/mux v1.8.0 - github.com/grpc-ecosystem/grpc-gateway v1.16.0 - github.com/monerium/module-noble v1.0.0 - github.com/noble-assets/forwarding v1.1.0 - github.com/noble-assets/halo v1.0.1 - github.com/ondoprotocol/usdy-noble v1.0.0 - github.com/rs/zerolog v1.27.0 - github.com/spf13/cast v1.5.1 - github.com/spf13/cobra v1.7.0 - github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.15.0 - github.com/strangelove-ventures/paramauthority v1.1.0 - github.com/stretchr/testify v1.8.4 - github.com/tendermint/tendermint v0.34.27 - github.com/tendermint/tm-db v0.6.7 - google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e - google.golang.org/grpc v1.56.2 - gopkg.in/yaml.v2 v2.4.0 + cosmossdk.io/client/v2 v2.0.0-beta.4 + cosmossdk.io/core v0.11.1 + cosmossdk.io/depinject v1.0.0 + cosmossdk.io/errors v1.0.1 + cosmossdk.io/log v1.4.1 + cosmossdk.io/math v1.3.0 + cosmossdk.io/store v1.1.1 + cosmossdk.io/tools/confix v0.1.2 + cosmossdk.io/x/evidence v0.1.1 + cosmossdk.io/x/feegrant v0.1.1 + cosmossdk.io/x/upgrade v0.1.4 + github.com/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987 + github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f + github.com/cometbft/cometbft v0.38.12 + github.com/cosmos/cosmos-db v1.0.2 + github.com/cosmos/cosmos-sdk v0.50.10 + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.2 + github.com/cosmos/ibc-go/modules/capability v1.0.1 + github.com/cosmos/ibc-go/v8 v8.5.1 + github.com/monerium/module-noble/v2 v2.0.0-rc.3.0.20241009233532-f2109c84b6c1 + github.com/noble-assets/authority v1.0.0-rc.0 + github.com/noble-assets/forwarding/v2 v2.0.0-20240829085026-e00f6bfe13f1 + github.com/noble-assets/halo/v2 v2.0.0-20240928083543-bd3392537219 + github.com/ondoprotocol/usdy-noble/v2 v2.0.0-20241008190859-099f72833941 + github.com/spf13/cobra v1.8.1 + github.com/spf13/viper v1.19.0 ) require ( - adr36.dev v0.0.0-20240829163820-17879c0e838f // indirect - cosmossdk.io/api v0.2.6 // indirect - cosmossdk.io/core v0.5.1 // indirect - cosmossdk.io/depinject v1.0.0-alpha.3 // indirect - cosmossdk.io/math v1.0.1 // indirect - filippo.io/edwards25519 v1.0.0 // indirect + adr36.dev v1.0.0-rc.0 // indirect + cloud.google.com/go v0.115.1 // indirect + cloud.google.com/go/auth v0.9.3 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.4 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect + cloud.google.com/go/iam v1.2.0 // indirect + cloud.google.com/go/storage v1.43.0 // indirect + cosmossdk.io/api v0.7.5 // indirect + cosmossdk.io/collections v0.4.0 // indirect + cosmossdk.io/x/tx v0.13.5 // indirect + filippo.io/edwards25519 v1.1.0 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect - github.com/DataDog/zstd v1.5.2 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/armon/go-metrics v0.4.1 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.5 // indirect + github.com/aws/aws-sdk-go v1.44.224 // 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/btcsuite/btcd/btcec/v2 v2.3.2 // indirect - github.com/cenkalti/backoff/v4 v4.1.1 // 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/bits-and-blooms/bitset v1.10.0 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.4 // indirect + github.com/btcsuite/btcd/btcutil v1.1.6 // indirect + github.com/cenkalti/backoff/v4 v4.1.3 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/circlefin/noble-cctp/api v0.0.0-20241016210224-38595d108987 // indirect + github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // 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/confio/ics23/go v0.9.1 // indirect + github.com/cockroachdb/pebble v1.1.1 // indirect + github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft-db v0.14.0 // indirect github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.2 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect - github.com/creachadair/taskgroup v0.4.2 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/gogoproto v1.7.0 // indirect + github.com/cosmos/iavl v1.2.0 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.13.3 // indirect + github.com/creachadair/atomicfile v0.3.1 // indirect + github.com/creachadair/tomledit v0.0.24 // 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.1.0 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // 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/badger/v4 v4.2.0 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/ethereum/go-ethereum v1.12.2 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.1 // indirect + github.com/ethereum/go-ethereum v1.14.8 // indirect + github.com/fatih/color v1.17.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/gabriel-vasile/mimetype v1.4.6 // indirect + github.com/getsentry/sentry-go v0.27.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.6.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-playground/universal-translator v0.18.1 // indirect + github.com/gobwas/httphead v0.1.0 // indirect + github.com/gobwas/pool v0.2.1 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.1.0 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.3 // indirect + github.com/golang/glog v1.2.1 // 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.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v23.5.26+incompatible // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/orderedcode v0.0.1 // indirect - github.com/gorilla/handlers v1.5.1 // indirect - github.com/gorilla/websocket v1.5.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect + github.com/google/s2a-go v0.1.8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.3 // indirect + github.com/googleapis/gax-go/v2 v2.13.0 // indirect + github.com/gorilla/handlers v1.5.2 // indirect + github.com/gorilla/mux v1.8.1 // indirect + github.com/gorilla/websocket v1.5.3 // indirect + github.com/grpc-ecosystem/go-grpc-middleware v1.4.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/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.7.4 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect + github.com/hashicorp/go-metrics v0.5.3 // indirect + github.com/hashicorp/go-plugin v1.5.2 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/hdevalence/ed25519consensus v0.1.0 // indirect - github.com/holiman/uint256 v1.2.3 // indirect - github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/holiman/uint256 v1.3.1 // indirect + github.com/huandu/skiplist v1.2.0 // indirect + github.com/iancoleman/orderedmap v0.3.0 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.17.9 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect + github.com/leodido/go-urn v1.2.4 // indirect github.com/lib/pq v1.10.9 // indirect - github.com/libp2p/go-buffer-pool v0.1.0 // indirect - github.com/linxGnu/grocksdb v1.7.10 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect github.com/magiconair/properties v1.8.7 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // 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/mtibben/percent v0.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/onsi/gomega v1.34.2 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.15.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // indirect - github.com/rakyll/statik v0.1.7 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.20.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect - github.com/regen-network/cosmos-proto v0.3.1 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/rs/cors v1.8.3 // indirect + github.com/rivo/uniseg v0.4.3 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/rs/zerolog v1.33.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.9.3 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.11.0 // indirect + github.com/spf13/cast v1.6.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/testify v1.9.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tidwall/btree v1.5.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect github.com/zondax/hid v0.9.2 // indirect github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.7 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/genproto v0.0.0-20230629202037-9506855d4529 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect - google.golang.org/protobuf v1.31.0 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect + go.opentelemetry.io/otel v1.29.0 // indirect + go.opentelemetry.io/otel/metric v1.29.0 // indirect + go.opentelemetry.io/otel/sdk v1.29.0 // indirect + go.opentelemetry.io/otel/trace v1.29.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.27.0 // indirect + golang.org/x/crypto v0.28.0 // indirect + golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e // indirect + golang.org/x/net v0.30.0 // indirect + golang.org/x/oauth2 v0.22.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.26.0 // indirect + golang.org/x/term v0.25.0 // indirect + golang.org/x/text v0.19.0 // indirect + golang.org/x/time v0.6.0 // indirect + google.golang.org/api v0.196.0 // indirect + google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - nhooyr.io/websocket v1.8.6 // indirect + gotest.tools/v3 v3.5.1 // indirect + nhooyr.io/websocket v1.8.7 // indirect + pgregory.net/rapid v1.1.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect ) replace ( - // use cosmos compatible ChainSafe/go-schnorrkel - github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d - - // use send restriction compatible cosmos/cosmos-sdk - github.com/cosmos/cosmos-sdk => github.com/noble-assets/cosmos-sdk v0.45.16-send-restrictions - - // use macos sonoma compatible cosmos/ledger-cosmos-go - github.com/cosmos/ledger-cosmos-go => github.com/cosmos/ledger-cosmos-go v0.12.4 - // use cosmos flavored gogo/protobuf // https://github.com/cosmos/cosmos-sdk/issues/8469 github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 // use cosmos compatible syndtr/goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - - // use cometbft - github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 - - // use cosmos compatible google.golang.org/grpc - google.golang.org/grpc => google.golang.org/grpc v1.33.2 ) diff --git a/go.sum b/go.sum index b83a8a6c..267655e8 100644 --- a/go.sum +++ b/go.sum @@ -2,18 +2,16 @@ 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= -adr36.dev v0.0.0-20240829163820-17879c0e838f h1:GM7s+hh4g6VmxtduPyAj/hkXpkwt9N/aZ0WC5OreuOw= -adr36.dev v0.0.0-20240829163820-17879c0e838f/go.mod h1:E6HaE8hVk+ss7kpa9wlj8Iue/G9sSKOca4eG95WHZDw= +adr36.dev v1.0.0-rc.0 h1:OD9DiHToxlbQvsWacOoAeQhagxyLF+9SsxQXMkMOjG8= +adr36.dev v1.0.0-rc.0/go.mod h1:yVB1502McHaUMgOhGM+n9KC7aeSxkpwVNgchSU3WBJI= +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= @@ -23,135 +21,280 @@ cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOY cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= 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.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.115.1 h1:Jo0SM9cQnSkYfp44+v+NQXHpcHqlnRJk2qxh6yvxxxQ= +cloud.google.com/go v0.115.1/go.mod h1:DuujITeaufu3gL68/lOFIirVNJwQeyf5UXyi+Wbgknc= +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/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/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/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/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/auth v0.9.3 h1:VOEUIAADkkLtyfr3BLa3R8Ed/j6w1jTBmARx+wb5w5U= +cloud.google.com/go/auth v0.9.3/go.mod h1:7z6VY+7h3KUdRov5F1i8NDP5ZzWKYmEPO842BgCsmTk= +cloud.google.com/go/auth/oauth2adapt v0.2.4 h1:0GWE/FUsXhf6C+jAkWgYm7X9tK8cuEIfy19DBn6B6bY= +cloud.google.com/go/auth/oauth2adapt v0.2.4/go.mod h1:jC/jOpwFP6JBxhB3P5Rr0a9HLMC/Pe3eaL4NmdvqPtc= +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/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/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/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/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/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/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +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/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/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/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/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/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/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/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/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/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/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/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +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 v1.2.0 h1:kZKMKVNk/IsSSc/udOb83K0hL/Yh/Gcqpz+oAkoIFN8= +cloud.google.com/go/iam v1.2.0/go.mod h1:zITGuWgsLZxd8OwAlX+eMFgZDXzBm7icj1PVTYG766Q= +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/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/longrunning v0.6.0 h1:mM1ZmaNsQsnb+5n1DNPeL0KwQd9jQRqSqSDEkBZr+aI= +cloud.google.com/go/longrunning v0.6.0/go.mod h1:uHzSZqW89h7/pasCWNYdUpwGz3PcVWhrWupreVPYLts= +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/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/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/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/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/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/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/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/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/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/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/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/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +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/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +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/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/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= -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.0.1 h1:Qx3ifyOPaMLNH/89WeZFH268yCvU4xEcnPLu3sJqPPg= -cosmossdk.io/math v1.0.1/go.mod h1:Ygz4wBHrgc7g0N+8+MrnTfS9LLn9aaTGa9hKopuym5k= +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.43.0 h1:CcxnSohZwizt4LCzQHWvBf1/kvtHUn7gk9QERXPyXFs= +cloud.google.com/go/storage v1.43.0/go.mod h1:ajvxEa7WmZS1PxvKRq4bq0tFT3vMd502JwstCcYv0Q0= +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/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/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/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/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cosmossdk.io/api v0.7.5 h1:eMPTReoNmGUm8DeiQL9DyM8sYDjEhWzL1+nLbI9DqtQ= +cosmossdk.io/api v0.7.5/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.4 h1:LGIzWbVTOof/IHQZeoWwxPX0fq607ONXhsfA7eUrQIg= +cosmossdk.io/client/v2 v2.0.0-beta.4/go.mod h1:c753d0sBv3AQRx6X+BOKL1aGpKjZMTZAHGiLPbVi5TE= +cosmossdk.io/collections v0.4.0 h1:PFmwj2W8szgpD5nOd8GWH6AbYNi1f2J6akWXJ7P5t9s= +cosmossdk.io/collections v0.4.0/go.mod h1:oa5lUING2dP+gdDquow+QjlF45eL1t4TJDypgGd+tv0= +cosmossdk.io/core v0.11.1 h1:h9WfBey7NAiFfIcUhDVNS503I2P2HdZLebJlUIs8LPA= +cosmossdk.io/core v0.11.1/go.mod h1:OJzxcdC+RPrgGF8NJZR2uoQr56tc7gfBKhiKeDO7hH0= +cosmossdk.io/depinject v1.0.0 h1:dQaTu6+O6askNXO06+jyeUAnF2/ssKwrrszP9t5q050= +cosmossdk.io/depinject v1.0.0/go.mod h1:zxK/h3HgHoA/eJVtiSsoaRaRA2D5U4cJ5thIG4ssbB8= +cosmossdk.io/errors v1.0.1 h1:bzu+Kcr0kS/1DuPBtUFdWjzLqyUuCiyHjyJB6srBV/0= +cosmossdk.io/errors v1.0.1/go.mod h1:MeelVSZThMi4bEakzhhhE/CKqVv3nOJDA25bIqRDu/U= +cosmossdk.io/log v1.4.1 h1:wKdjfDRbDyZRuWa8M+9nuvpVYxrEOwbD/CA8hvhU8QM= +cosmossdk.io/log v1.4.1/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.3.0 h1:RC+jryuKeytIiictDslBP9i1fhkVm6ZDmZEoNP316zE= +cosmossdk.io/math v1.3.0/go.mod h1:vnRTxewy+M7BtXBNFybkuhSH4WfedVAAnERHgVFhp3k= +cosmossdk.io/store v1.1.1 h1:NA3PioJtWDVU7cHHeyvdva5J/ggyLDkyH0hGHl2804Y= +cosmossdk.io/store v1.1.1/go.mod h1:8DwVTz83/2PSI366FERGbWSH7hL6sB7HbYp8bqksNwM= +cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= +cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= +cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= +cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= +cosmossdk.io/x/evidence v0.1.1 h1:Ks+BLTa3uftFpElLTDp9L76t2b58htjVbSZ86aoK/E4= +cosmossdk.io/x/evidence v0.1.1/go.mod h1:OoDsWlbtuyqS70LY51aX8FBTvguQqvFrt78qL7UzeNc= +cosmossdk.io/x/feegrant v0.1.1 h1:EKFWOeo/pup0yF0svDisWWKAA9Zags6Zd0P3nRvVvw8= +cosmossdk.io/x/feegrant v0.1.1/go.mod h1:2GjVVxX6G2fta8LWj7pC/ytHjryA6MHAJroBWHFNiEQ= +cosmossdk.io/x/tx v0.13.5 h1:FdnU+MdmFWn1pTsbfU0OCf2u6mJ8cqc1H4OMG418MLw= +cosmossdk.io/x/tx v0.13.5/go.mod h1:V6DImnwJMTq5qFjeGWpXNiT/fjgE4HtmclRmTqRVM3w= +cosmossdk.io/x/upgrade v0.1.4 h1:/BWJim24QHoXde8Bc64/2BSEB6W4eTydq0X/2f8+g38= +cosmossdk.io/x/upgrade v0.1.4/go.mod h1:9v0Aj+fs97O+Ztw+tG3/tp5JSlrmT7IcFhAebQHmOPo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= -filippo.io/edwards25519 v1.0.0/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= -github.com/4meepo/tagalign v1.3.3 h1:ZsOxcwGD/jP4U/aw7qeWu58i7dwYemfy5Y+IF1ACoNw= -github.com/4meepo/tagalign v1.3.3/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/4meepo/tagalign v1.3.4 h1:P51VcvBnf04YkHzjfclN6BbsopfJR5rxs1n+5zHt+w8= +github.com/4meepo/tagalign v1.3.4/go.mod h1:M+pnkHH2vG8+qhE5bVc/zeP7HS/j910Fwa9TUSyZVI0= 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.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= -github.com/Abirdcfly/dupword v0.0.13 h1:SMS17YXypwP000fA7Lr+kfyBQyW14tTT+nRv9ASwUUo= -github.com/Abirdcfly/dupword v0.0.13/go.mod h1:Ut6Ue2KgF/kCOawpW4LnExT+xZLQviJPE4klBPMK/5Y= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= -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/Antonboom/testifylint v0.2.3 h1:MFq9zyL+rIVpsvLX4vDPLojgN7qODzWsrnftNX2Qh60= -github.com/Antonboom/testifylint v0.2.3/go.mod h1:IYaXaOX9NbfAyO+Y04nfjGI8wDemC1rUyM/cYolz018= -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/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Abirdcfly/dupword v0.1.1 h1:Bsxe0fIw6OwBtXMIncaTxCLHYO5BB+3mcsR5E8VXloY= +github.com/Abirdcfly/dupword v0.1.1/go.mod h1:B49AcJdTYYkpd4HjgAcutNGG9HZ2JWwKunH9Y2BA6sM= +github.com/Antonboom/errname v0.1.13 h1:JHICqsewj/fNckzrfVSe+T33svwQxmjC+1ntDsHOVvM= +github.com/Antonboom/errname v0.1.13/go.mod h1:uWyefRYRN54lBg6HseYCFhs6Qjcy41Y3Jl/dVhA87Ns= +github.com/Antonboom/nilnil v0.1.9 h1:eKFMejSxPSA9eLSensFmjW2XTgTwJMjZ8hUHtV4s/SQ= +github.com/Antonboom/nilnil v0.1.9/go.mod h1:iGe2rYwCq5/Me1khrysB4nwI7swQvjclR8/YRPl5ihQ= +github.com/Antonboom/testifylint v1.4.3 h1:ohMt6AHuHgttaQ1xb6SSnxCeK4/rnK7KKzbvs7DmEck= +github.com/Antonboom/testifylint v1.4.3/go.mod h1:+8Q9+AOLsz5ZiQiiYujJKs9mNz398+M6UgslP4qgJLA= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= 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/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= +github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= 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-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/Crocmagnon/fatcontext v0.5.2 h1:vhSEg8Gqng8awhPju2w7MKHqMlg4/NI+gSDHtR3xgwA= +github.com/Crocmagnon/fatcontext v0.5.2/go.mod h1:87XhRMaInHP44Q7Tlc7jkgKKB7kZAOPiDkFMdKCC+74= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/DataDog/zstd v1.5.2 h1:vUG4lAyuPCXO0TLbXvPv7EB7cNK1QV/luu55UHLrrn8= -github.com/DataDog/zstd v1.5.2/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd v1.5.5 h1:oWf5W7GtOLgp6bciQYDmhHHjdhYkALu6S/5Ni9ZgSvQ= +github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= 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/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0 h1:/fTUt5vmbkAcMBt4YQiuC23cV0kEsN1MVMNqeOW43cU= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.0/go.mod h1:ONJg5sxcbsdQQ4pOW8TGdTidT2TMAUy/2Xhr8mrYaao= 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/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Masterminds/semver/v3 v3.3.0 h1:B8LGeaivUe71a5qox1ICM/JLl0NqZSW5CHyL+hmvYS0= +github.com/Masterminds/semver/v3 v3.3.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= -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/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0 h1:vDfG60vDtIuf0MEOhmLlLLSzqaRM8EMcgJPdp74zmpA= +github.com/OpenPeeDeeP/depguard/v2 v2.2.0/go.mod h1:CIzddKRvLBC4Au5aYP/i3nyaWQ+ClszLIuVocRiCYFQ= 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/adlio/schema v1.3.3/go.mod h1:1EsRssiv9/Ce2CMzq5DoL7RiMshhuigQxrR4DMV9fHg= 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/go-check-sumtype v0.1.3 h1:M+tqMxB68hcgccRXBMVCPI4UJ+QUfdSx0xdbypKCqA8= -github.com/alecthomas/go-check-sumtype v0.1.3/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= -github.com/alecthomas/participle/v2 v2.0.0-alpha7 h1:cK4vjj0VSgb3lN1nuKA5F7dw+1s1pWBe5bx7nNCnN+c= -github.com/alecthomas/participle/v2 v2.0.0-alpha7/go.mod h1:NumScqsC42o9x+dGj8/YqsIfhrIQjFEOFovxotbBirA= +github.com/alecthomas/go-check-sumtype v0.1.4 h1:WCvlB3l5Vq5dZQTFmodqL2g68uHiSwwlWcT5a2FGK0c= +github.com/alecthomas/go-check-sumtype v0.1.4/go.mod h1:WyYPfhfkdhyrdaligV6svFopZV8Lqdzn5pyVBaV6jhQ= 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/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/nakedret/v2 v2.0.4 h1:yZuKmjqGi0pSmjGpOC016LtPJysIL0WEUiaXW5SUnNg= +github.com/alexkohler/nakedret/v2 v2.0.4/go.mod h1:bF5i0zF2Wo2o4X4USt9ntUWve6JbFv02Ff4vlkmS/VU= 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/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/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= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= -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= @@ -160,54 +303,52 @@ github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5Fc 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.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= +github.com/aws/aws-sdk-go v1.44.224/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.1.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/bits-and-blooms/bitset v1.10.0 h1:ePXTeiPEazB5+opbv5fr8umg2R/1NlzgDsyepwsSr88= +github.com/bits-and-blooms/bitset v1.10.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= 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/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/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/bombsimon/wsl/v4 v4.4.1 h1:jfUaCkN+aUpobrMO24zwyAMwMAV5eSziCkOKEauOLdw= +github.com/bombsimon/wsl/v4 v4.4.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= github.com/breml/bidichk v0.2.7 h1:dAkKQPLl/Qrk7hnP6P+E0xOodrq8Us7+U0o4UBOAlQY= github.com/breml/bidichk v0.2.7/go.mod h1:YodjipAGI9fGcYM7II6wFvGhdMYsC5pHDlGzqvEW3tQ= github.com/breml/errchkjson v0.3.6 h1:VLhVkqSBH96AvXEyclMR37rZslRrY2kcyq+31HCsVrA= github.com/breml/errchkjson v0.3.6/go.mod h1:jhSDoFheAF2RSDOlCfhHO9KqhZgAYLyvHe7bRCX8f/U= -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 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= -github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= -github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= -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/btcutil v1.1.2/go.mod h1:UR7dsSJzJUfMmFiiLlIrMq1lS9jh9EdCV7FStZSnpi0= +github.com/btcsuite/btcd v0.22.0-beta.0.20220111032746-97732e52810c/go.mod h1:tjmYdS6MLJ5/s0Fj4DbLgSbDHbEqLJrtnHecBFkdz5M= +github.com/btcsuite/btcd v0.23.5-0.20231215221805-96c9fd8078fd/go.mod h1:nm3Bko6zh6bWP60UxwoT5LzdGJsQJaPo6HjduXq9p6A= +github.com/btcsuite/btcd v0.24.2 h1:aLmxPguqxza+4ag8R1I2nnJjSu2iFn/kqtHTIImswcY= +github.com/btcsuite/btcd v0.24.2/go.mod h1:5C8ChTkl5ejr3WHj8tkQSCmydiMEPB0ZhQhehpq7Dgg= +github.com/btcsuite/btcd/btcec/v2 v2.1.0/go.mod h1:2VzYrv4Gm4apmbVVsSq5bqf1Ec8v56E48Vt0Y/umPgA= +github.com/btcsuite/btcd/btcec/v2 v2.1.3/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.4 h1:3EJjcN70HCu/mwqlUsGK8GcNVyLVxFDlWurTXGPFfiQ= +github.com/btcsuite/btcd/btcec/v2 v2.3.4/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.0.0/go.mod h1:Uoxwv0pqYWhD//tfTiipkxNfdhG9UrLwaeswfjfdF0A= +github.com/btcsuite/btcd/btcutil v1.1.0/go.mod h1:5OapHB7A2hBBWLm48mmw4MOHNJCcUBTwmWH/0Jn8VHE= +github.com/btcsuite/btcd/btcutil v1.1.5/go.mod h1:PSZZ4UitpLBWzxGd5VGOrLnmOjtPP/a6HaFo12zMs00= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= 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/btcd/chaincfg/chainhash v1.1.0 h1:59Kx4K6lzOW5w6nFlA0v5+lk/6sjybR934QNHSJZPTQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0/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= @@ -215,238 +356,222 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku 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/butuzov/ireturn v0.2.1 h1:w5Ks4tnfeFDZskGJ2x1GAkx5gaQV+kdU3NKNr3NEBzY= -github.com/butuzov/ireturn v0.2.1/go.mod h1:RfGHUvvAuFFxoHKf4Z8Yxuh6OjlCw1KvR2zM1NFHeBk= -github.com/butuzov/mirror v1.1.0 h1:ZqX54gBVMXu78QLoiqdwpl2mgmoOJTk7s4p4o+0avZI= -github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= -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/bufbuild/protocompile v0.6.0 h1:Uu7WiSQ6Yj9DbkdnOe7U4mNKp58y9WDMKDn28/ZlunY= +github.com/bufbuild/protocompile v0.6.0/go.mod h1:YNP35qEYoYGme7QMtz5SBCoN4kL4g12jTtjuzRNdjpE= +github.com/butuzov/ireturn v0.3.0 h1:hTjMqWw3y5JC3kpnC5vXmFJAWI/m31jaCYQqzkS6PL0= +github.com/butuzov/ireturn v0.3.0/go.mod h1:A09nIiwiqzN/IoVo9ogpa0Hzi9fex1kd9PSD6edP5ZA= +github.com/butuzov/mirror v1.2.0 h1:9YVK1qIjNspaqWutSv8gsge2e/Xpq1eqEkslEUHy5cs= +github.com/butuzov/mirror v1.2.0/go.mod h1:DqZZDtzm42wIAIyHXeN8W/qb1EPlb9Qn/if9icBOpdQ= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/catenacyber/perfsprint v0.2.0 h1:azOocHLscPjqXVJ7Mf14Zjlkn4uNua0+Hcg1wTR6vUo= -github.com/catenacyber/perfsprint v0.2.0/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= -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/catenacyber/perfsprint v0.7.1 h1:PGW5G/Kxn+YrN04cRAZKC+ZuvlVwolYMrIyyTJ/rMmc= +github.com/catenacyber/perfsprint v0.7.1/go.mod h1:/wclWYompEyjUD2FuIIDVKNkqz7IgBIWXIH3V0Zol50= +github.com/ccojocar/zxcvbn-go v1.0.2 h1:na/czXU8RrhXO4EZme6eQJLR4PzcGsahsBOAwU6I3Vg= +github.com/ccojocar/zxcvbn-go v1.0.2/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 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= 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/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.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.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.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= +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/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436 h1:Yyh9oaVOIzSgbQISm7BJ0iCnSLolGYzrM7W4PeT+Zt0= -github.com/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436/go.mod h1:ssEHJqFI1f4a5sLtZ7qeYJ7/75LzDgzbBv4C9as3y3w= -github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d h1:fjoPjY5XAEuppXXf86zstq35B+87tUA94aRUkX9lQNk= -github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d/go.mod h1:0Imc1/GSaR8Ic2ssKJGN4EmNbyDGuTGY8AEvmWeao7w= +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/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987 h1:ecw5DaPs1uEA8aZ1Uwrk13y0EtYGOvox4NZUourgF5g= +github.com/circlefin/noble-cctp v0.0.0-20241016210224-38595d108987/go.mod h1:UePuvgIp4kfVL5iHhcq5gcKlNEjXm96KPgeg6FKAm4Q= +github.com/circlefin/noble-cctp/api v0.0.0-20241016210224-38595d108987 h1:CAfHe6YoiDtL654PzSU4zZoW+8bRXa5mV0AawXOZ8Cw= +github.com/circlefin/noble-cctp/api v0.0.0-20241016210224-38595d108987/go.mod h1:NkDh8O/gJ2gu1jTbbr8PgEm/Y8xYd6H0jr9gVYGgeRw= +github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f h1:OxjU1Ng1IFkj2LZcnKaMTuOzwzjkDCr4Hg9gKD8YKJk= +github.com/circlefin/noble-fiattokenfactory v0.0.0-20241015182229-c20bd0c8442f/go.mod h1:wPcg1YAYQknGHkGNKrIgHwzSVf/4wqW7MTpXdC4ciRQ= 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/ckaznocha/intrange v0.2.0 h1:FykcZuJ8BD7oX93YbO1UY9oZtkRbp+1/kJcDjkefYLs= +github.com/ckaznocha/intrange v0.2.0/go.mod h1:r5I7nUlAAG56xmkOpw4XVr16BXhwYTUdcuRFeevn1oE= 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/cockroachdb/apd/v3 v3.1.0/go.mod h1:6qgPBMXjATAdD/VefbRP9NoSLKjbB4LCoA7gN4LpHs4= +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/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/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.2 h1:H9MtNqVoVhvd9nCBwOyDjUEdZCREqbIdCJD93PBm/jA= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -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-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= +github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= 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-20230209160836-829675f94811 h1:ytcWPaNPhNoGMWEhDvS3zToKcDpRsLuRolQJBVGdozk= -github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811/go.mod h1:Nb5lgvnQ2+oGlE/EyZy4+2/CxRh9KfvCXnag1vtpxVM= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/pebble v1.1.1 h1:XnKU22oiCLy2Xn8vp1re67cXg4SAasg/WDt1NtcRFaw= +github.com/cockroachdb/pebble v1.1.1/go.mod h1:4exszw1r40423ZsmkG/09AFEG83I0uDgfujJdbL6kYU= +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/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= 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/confio/ics23/go v0.9.1 h1:3MV46eeWwO3xCauKyAtuAdJYMyPnnchW4iLr2bTw6/U= -github.com/confio/ics23/go v0.9.1/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/cometbft/cometbft v0.38.12 h1:OWsLZN2KcSSFe8bet9xCn07VwhBnavPea3VyPnNq1bg= +github.com/cometbft/cometbft v0.38.12/go.mod h1:GPHp3/pehPqgX1930HmK1BpBLZPxB75v/dZg8Viwy+o= +github.com/cometbft/cometbft-db v0.14.0 h1:dKnK/tQL8BwciH6SgFEuZxwKupMokR4NlwYfJWy7C48= +github.com/cometbft/cometbft-db v0.14.0/go.mod h1:JOXKwjrxS/MW5qJ1xuVpELa8HGBVgHpgI+t8j0L0JEo= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= -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.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= -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.2 h1:X3OKvWgK9Gsejo0F1qs5l8Qn6xJV/AzgIWR2wZ8Nua8= -github.com/cosmos/cosmos-proto v1.0.0-beta.2/go.mod h1:+XRCLJ14pr5HFEHIUcn51IKXD1Fy3rkEQqt4WqmN4V0= -github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= +github.com/cosmos/cosmos-db v1.0.2 h1:hwMjozuY1OlJs/uh6vddqnk9j7VamLv+0DBlbEXbAKs= +github.com/cosmos/cosmos-db v1.0.2/go.mod h1:Z8IXcFJ9PqKK6BIsVOB3QXtkKoqUOp1vRvPT39kOXEA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.50.10 h1:zXfeu/z653tWZARr/jESzAEiCUYjgJwwG4ytnYWMoDM= +github.com/cosmos/cosmos-sdk v0.50.10/go.mod h1:6Eesrx3ZE7vxBZWpK++30H+Uc7Q4ahQWCL7JKU/LEdU= 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/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-apps/middleware/packet-forward-middleware/v4 v4.1.2 h1:id4ozlsqpX6J19NVYQ5NhqyDzb48JT0VsceqArym1ks= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v4 v4.1.2/go.mod h1:0g4hau4zO12tpvyiOcyEpcmcsXbBAN4WX+BhTO6xZVg= -github.com/cosmos/ibc-go/v4 v4.6.0 h1:G7kiD4Zf8Wrxc8BXWIKuFnzI0W4wpvRPrl5HwdfTIsA= -github.com/cosmos/ibc-go/v4 v4.6.0/go.mod h1:ksiZHUypws0NVP50E3ea0ivVFO/bfS8q8yLg8yZ2ATQ= -github.com/cosmos/ledger-cosmos-go v0.12.4 h1:drvWt+GJP7Aiw550yeb3ON/zsrgW0jgh5saFCr7pDnw= -github.com/cosmos/ledger-cosmos-go v0.12.4/go.mod h1:fjfVWRf++Xkygt9wzCsjEBdjcf7wiiY35fv3ctT+k4M= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.0 h1:kVxTmjTh4k0Dh1VNL046v6BXqKziqMDzxo93oh3kOfM= +github.com/cosmos/iavl v1.2.0/go.mod h1:HidWWLVAtODJqFD6Hbne2Y0q3SdxByJepHUOeoH4LiI= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.2 h1:dyLNlDElY6+5zW/BT/dO/3Ad9FpQblfh+9dQpYQodbA= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8 v8.0.2/go.mod h1:82hPO/tRawbuFad2gPwChvpZ0JEIoNi91LwVneAYCeM= +github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= +github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= +github.com/cosmos/ibc-go/v8 v8.5.1 h1:3JleEMKBjRKa3FeTKt4fjg22za/qygLBo7mDkoYTNBs= +github.com/cosmos/ibc-go/v8 v8.5.1/go.mod h1:P5hkAvq0Qbg0h18uLxDVA9q1kOJ0l36htMsskiNwXbo= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/ledger-cosmos-go v0.13.3 h1:7ehuBGuyIytsXbd4MP43mLeoN2LTOEnk5nvue4rK+yM= +github.com/cosmos/ledger-cosmos-go v0.13.3/go.mod h1:HENcEP+VtahZFw38HZ3+LS3Iv5XV6svsnkk9vdJtLr8= 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.4.2 h1:jsBLdAJE42asreGss2xZGZ8fJra7WtwnHWeJFxv2Li8= -github.com/creachadair/taskgroup v0.4.2/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= +github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creachadair/atomicfile v0.3.1 h1:yQORkHjSYySh/tv5th1dkKcn02NEW5JleB84sjt+W4Q= +github.com/creachadair/atomicfile v0.3.1/go.mod h1:mwfrkRxFKwpNAflYZzytbSwxvbK6fdGRRlp0KEQc0qU= +github.com/creachadair/tomledit v0.0.24 h1:5Xjr25R2esu1rKCbQEmjZYlrhFkDspoAbAKb6QKQDhQ= +github.com/creachadair/tomledit v0.0.24/go.mod h1:9qHbShRWQzSCcn617cMzg4eab1vbLCOjOshAWSzWr8U= 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/gherkin/go/v22 v22.0.0/go.mod h1:3mJT10B2GGn3MvVPd3FwR7m2u4tLhSRhWUqJU4KN4Fg= -github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= -github.com/cucumber/common/messages/go/v17 v17.1.1/go.mod h1:bpGxb57tDE385Rb2EohgUadLkAbhoC4IyCFi89u/JQI= 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/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/daixiang0/gci v0.11.2 h1:Oji+oPsp3bQ6bNNgX30NBAVT18P4uBH4sRZnlOlTj7Y= -github.com/daixiang0/gci v0.11.2/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= +github.com/daixiang0/gci v0.13.5/go.mod h1:12etP2OniiIdP4q+kjUGrC/rUagga7ODbqsom5Eo5Yk= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -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/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= 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/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/denis-tingaikin/go-header v0.5.0 h1:SRdnP5ZKvcO9KKRP1KJrhFR3RrlGuD+42t4429eC9k8= +github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okegmwQ3UgWl4V1D8gjlY= 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/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= 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/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -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 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/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.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/emicklei/dot v1.6.1 h1:ujpDlBkkwgWUY+qPId5IwapRW/xEoligRSYjioR6DFI= +github.com/emicklei/dot v1.6.1/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -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/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/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= -github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= -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/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= -github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c/go.mod h1:Yg+htXGokKKdzcwhuNDwVvN+uBxDGXJ7G/VN1d8fa64= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= -github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/ethereum/go-ethereum v1.14.8 h1:NgOWvXS+lauK+zFukEvi85UmmsS/OkV0N23UZ1VTIig= +github.com/ethereum/go-ethereum v1.14.8/go.mod h1:TJhyuDq0JDppAkFXgqjwpdlQApywnu/m10kFPxh8vvs= +github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= +github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= 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/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= -github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4= +github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI= 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/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= -github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= -github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= +github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= 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.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= 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.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= -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.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= +github.com/gabriel-vasile/mimetype v1.4.6/go.mod h1:JX1qVKqZd40hUPpAfiNTe0Sne7hdfKSbOqqmkq8GCXc= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghostiam/protogetter v0.2.3 h1:qdv2pzo3BpLqezwqfGDLZ+nHEYmc5bUpIdsMbBVwMjw= -github.com/ghostiam/protogetter v0.2.3/go.mod h1:KmNLOsy1v04hKbvZs8EfGI1fk39AgTdRDxWNYPfXVc4= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/ghostiam/protogetter v0.3.6 h1:R7qEWaSgFCsy20yYHNIJsU9ZOb8TziSRRxuAOTVKeOk= +github.com/ghostiam/protogetter v0.3.6/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw= 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/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= -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-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.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-critic/go-critic v0.11.4 h1:O7kGOCx0NDIni4czrkRIXTnit0mkyKOCePh3My6OyEU= +github.com/go-critic/go-critic v0.11.4/go.mod h1:2QAdo4iuLik5S9YG0rT4wcZ8QxwHYkrr6/2MWAiv/vc= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -457,6 +582,7 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 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.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= @@ -464,30 +590,29 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= 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-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-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= 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= -github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= -github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= 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-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= -github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= 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-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= 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.1.0 h1:kHKm1AWqClYn15R0K1KKE4RG614D46n+nqUQ06E1dTw= -github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/astequal v1.2.0 h1:3Fs3CYZ1k9Vo4FzFhwwewC3CHISHDnVUPC4x0bI2+Cw= +github.com/go-toolsmith/astequal v1.2.0/go.mod h1:c8NZ3+kSFtFY/8lPso4v8LuJjdJiUFVnSuU3s0qrrDY= 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= @@ -496,48 +621,49 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi 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-viper/mapstructure/v2 v2.1.0 h1:gHnMa2Y/pIxElCH2GlZZ1lZSsn6XMtufpGyP1XxdC/w= +github.com/go-viper/mapstructure/v2 v2.1.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= 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= +github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/gobwas/ws v1.2.1 h1:F2aeBZrm2NDsc7vbovKrWSogd4wvfAxg0FQ89/iqOTk= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= 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/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -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/gofrs/uuid v4.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -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.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= +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/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.2.1 h1:OptwRhECazUx5ix5TTWC3EZhsZEHWcYWY4FQHTIubm4= +github.com/golang/glog v1.2.1/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= 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= @@ -556,41 +682,37 @@ 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= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -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-20231018234816-f50ced29576e h1:ULcKCDV1LOZPFxGZaA6TlQbiM3J2GCPnkx/bGF6sX/g= -github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= -github.com/golangci/golangci-lint v1.55.0 h1:ePpc6YhM1ZV8kHU8dwmHDHAdeedZHdK8cmTXlkkRdi8= -github.com/golangci/golangci-lint v1.55.0/go.mod h1:Z/OawFQ4yqFo2/plDYlIjoZlJeVYkRcqS9dW55p0FXg= -github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= -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.5.0 h1:GGBqHFtFOeHiSUQtFVZXPJtVZYOGB4iVlAjaoFRBQvY= -github.com/golangci/revgrep v0.5.0/go.mod h1:bjAMA+Sh/QUfTDcHzxfyHxr4xKvllVr/0sCv2e7jJHA= -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/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9 h1:/1322Qns6BtQxUZDTAT4SdcoxknUki7IAoK4SAXr8ME= +github.com/golangci/gofmt v0.0.0-20240816233607-d8596aa466a9/go.mod h1:Oesb/0uFAyWoaw1U1qS5zyjCg5NP9C9iwjnI4tIsXEE= +github.com/golangci/golangci-lint v1.61.0 h1:VvbOLaRVWmyxCnUIMTbf1kDsaJbTzH20FAMXTAlQGu8= +github.com/golangci/golangci-lint v1.61.0/go.mod h1:e4lztIrJJgLPhWvFPDkhiMwEFRrWlmFbrZea3FsJyN8= +github.com/golangci/misspell v0.6.0 h1:JCle2HUTNWirNlDIAUO44hUsKhOFqGPoC4LZxlaSXDs= +github.com/golangci/misspell v0.6.0/go.mod h1:keMNyY6R9isGaSAu+4Q8NMBwMPkh15Gtc8UCVoDtAWo= +github.com/golangci/modinfo v0.3.4 h1:oU5huX3fbxqQXdfspamej74DFX0kyGLkw1ppvXoJ8GA= +github.com/golangci/modinfo v0.3.4/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= +github.com/golangci/plugin-module-register v0.1.1 h1:TCmesur25LnyJkpsVrupv1Cdzo+2f7zX0H6Jkw1Ol6c= +github.com/golangci/plugin-module-register v0.1.1/go.mod h1:TTpqoB6KkwOJMV8u7+NyXMrkwwESJLOkfl9TxR1DGFc= +github.com/golangci/revgrep v0.5.3 h1:3tL7c1XBMtWHHqVpS5ChmiAAoe4PF/d5+ULzV9sLAzs= +github.com/golangci/revgrep v0.5.3/go.mod h1:U4R/s9dlXZsg8uJmaR1GrloUr14D7qDl8gi2iPXJH8k= +github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed h1:IURFTjxeTfNFP0hTEi1YKjB/ub8zkpaOqFFMApi2EAs= +github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed/go.mod h1:XLXN8bNw4CGRPaqgl3bv/lhz7bsGPh4/xSaMTbo2vkQ= 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/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v23.5.26+incompatible h1:M9dgRyhJemaM4Sw8+66GHBu8ioaQmyPLg1b8VwK5WJg= +github.com/google/flatbuffers v23.5.26+incompatible/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= @@ -599,19 +721,26 @@ 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.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +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/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/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.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= 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= @@ -623,30 +752,51 @@ github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= 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-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/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= +github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= 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/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/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.3.3 h1:QRje2j5GZimBzlbhGA2V2QlGNgL8G6e+wGo/+/2bWI0= +github.com/googleapis/enterprise-certificate-proxy v0.3.3/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= 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/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +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.13.0 h1:yitjD5f7jQHhyDsnhKEBU52NdvvdSeGzlAnDPT0hH1s= +github.com/googleapis/gax-go/v2 v2.13.0/go.mod h1:Z/fvTZXF8/uw7Xu5GuslPw+bplx6SS338j1Is2S+B7A= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= 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/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= +github.com/gordonklaus/ineffassign v0.1.0/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= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/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/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= 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.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= @@ -655,114 +805,105 @@ github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCp 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/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= 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-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= 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/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= -github.com/gtank/merlin v0.1.1 h1:eQ90iG7K9pOhtereWsmyRJ6RAwcP4tHTDBHXNg+u5is= -github.com/gtank/merlin v0.1.1/go.mod h1:T86dnYJhcGOh5BjZFCJWTDeTK7XW8uE+E21Cy/bIQ+s= -github.com/gtank/ristretto255 v0.1.2 h1:JEqUCPA1NvLq5DwYtuzigd7ss8fwbYay9fi4/5uMzcc= -github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIvY4OmlYW69o= 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/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= -github.com/hashicorp/errwrap v1.1.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/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.4 h1:3yQjWuxICvSpYwqSayAdKRFcvBl1y/vogCxczWSmix0= +github.com/hashicorp/go-getter v1.7.4/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= 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-metrics v0.5.3 h1:M5uADWMOGCTUNU1YuC4hfknOeHNaX54LDm4oYSucoNE= +github.com/hashicorp/go-metrics v0.5.3/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= 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-plugin v1.5.2 h1:aWv8eimFqWlsEiMrYZdPYl+FdHaBJSN4AWwGWfT1G2Y= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= 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/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/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.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.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= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= -github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= 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/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= 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/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/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= -github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/holiman/uint256 v1.3.1 h1:JfTzmih28bittyHM8z360dCjIA9dbPIBlcTI6lmctQs= +github.com/holiman/uint256 v1.3.1/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= 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-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= -github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= -github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.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.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/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/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/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/jgautheron/goconst v1.6.0 h1:gbMLWKRMkzAc6kYsQL6/TxaoBUg3Jm9LSF/Ih1ADWGA= -github.com/jgautheron/goconst v1.6.0/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c h1:XImQJfpJLmGEEd8ll5yPVyL/aEvmgGHW4WYTyNseLOM= -github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= +github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= +github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jhump/protoreflect v1.15.3 h1:6SFRuqU45u9hIZPJAoZ8c28T3nK64BNdp9w6jFonzls= +github.com/jhump/protoreflect v1.15.3/go.mod h1:4ORHmSBmlCW8fh3xHmJMGyul1zNqZK4Elxc8qKP+p1k= 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/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/jjti/go-spancheck v0.6.2 h1:iYtoxqPMzHUPp7St+5yA8+cONdyXD3ug6KK15n7Pklk= +github.com/jjti/go-spancheck v0.6.2/go.mod h1:+X7lvIrR5ZdUTkxFYqzJ0abr8Sb5LOo80uOhWNqIrYA= 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= @@ -778,48 +919,29 @@ 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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= 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/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.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -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/karamaru-alpha/copyloopvar v1.1.0 h1:x7gNyKcC2vRBO1H2Mks5u1VxQtYvFiym7fCjIP8RPos= +github.com/karamaru-alpha/copyloopvar v1.1.0/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= 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/errcheck v1.7.0 h1:+SbscKmWJ5mOK/bO1zS60F5I9WwZDWOfRsC4RwfwRV0= +github.com/kisielk/errcheck v1.7.0/go.mod h1:1kLL+jV4e+CFfueBmI1dSK2ADDyQnlrnrY/FqKluHJQ= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -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/kkHAIKE/contextcheck v1.1.5 h1:CdnJh63tcDe53vG+RebdpdXJTc9atMgGqdx8LXxiilg= +github.com/kkHAIKE/contextcheck v1.1.5/go.mod h1:O930cpht4xb1YQpK+1+AgoM3mFsvxr7uyFptcnWTYUA= 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.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= 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.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -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.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA= +github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= 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= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -828,90 +950,65 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= 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/kunwardeep/paralleltest v1.0.10 h1:wrodoaKYzS2mdNVnc4/w31YaXFtsc21PCTdvWJ/lDDs= +github.com/kunwardeep/paralleltest v1.0.10/go.mod h1:2C7s65hONVqY7Q5Efj5aLzRCNLjw2h4eMc9EcypGjcY= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.11 h1:1Z0bcmTypkL3Q4k+IDHMWTcnCliEZcaPiIe0/ymEyhQ= github.com/kyoh86/exportloopref v0.1.11/go.mod h1:qkV4UF1zGl6EkF1ox8L5t9SwyeBAZ3qLMd6up458uqA= -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/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= -github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/lasiar/canonicalheader v1.1.1 h1:wC+dY9ZfiqiPwAexUApFush/csSPXeIi4QqyxXmng8I= +github.com/lasiar/canonicalheader v1.1.1/go.mod h1:cXkb3Dlk6XXy+8MVQnF23CYKWlyA7kfQhSw2CcZtZb0= +github.com/ldez/gomoddirectives v0.2.4 h1:j3YjBIjEBbqZ0NKtBNzr8rtMHTOrLPeiwTkfUJZ3alg= +github.com/ldez/gomoddirectives v0.2.4/go.mod h1:oWu9i62VcQDYp9EQ0ONTfqLNh+mDLWWDO+SO0qSQw5g= 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/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= 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/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= -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.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= +github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= 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.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= 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/macabu/inamedparam v0.1.2 h1:RR5cnayM6Q7cDhQol32DE2BGAPGMnffJ31LFE+UklaU= -github.com/macabu/inamedparam v0.1.2/go.mod h1:Xg25QvY7IBRl1KLPV9Rbml8JOMZtF/iAkNkmV7eQgjw= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= +github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -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/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/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= 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/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/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.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= -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-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -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/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/mgechev/revive v1.3.4 h1:k/tO3XTaWY4DEHal9tWBkkUMJYO/dLDVyMmAQxmIMDc= -github.com/mgechev/revive v1.3.4/go.mod h1:W+pZCMu9qj8Uhfs1iJMQsEFLRozUfvwFwqVvRbSNLVw= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/mgechev/revive v1.3.9 h1:18Y3R4a2USSBF+QZKFQwVkBROUda7uoBlkEuBD+YD1A= +github.com/mgechev/revive v1.3.9/go.mod h1:+uxEIr5UH0TjXWHTno3xh4u7eg6jDpXKzQccA9UGhHU= 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-20220103164710-9a04d6ca976b h1:QrHweqAtyJ9EwCaGHBu1fghwxIPiopAHV06JlXrMHjk= -github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b/go.mod h1:xxLb2ip6sSUts3g1irPVHyk/DGslwQsNOo9I7smJfNU= github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g= 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= @@ -919,15 +1016,14 @@ github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk 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= @@ -935,23 +1031,20 @@ 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/monerium/module-noble v1.0.0 h1:MSdGacwXDMeV11MedvIjtfAKJ4QLOTKWpCRJBs+uvjI= -github.com/monerium/module-noble v1.0.0/go.mod h1:eg2ur9ZGvnASANV5iNvyGT2JPbg/499+UZOCB843j1c= -github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= -github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= -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/monerium/module-noble/v2 v2.0.0-rc.3.0.20241009233532-f2109c84b6c1 h1:deu4573IZLfK8iHLG8ablWKvdTWNZUaIM4doHXTyK0s= +github.com/monerium/module-noble/v2 v2.0.0-rc.3.0.20241009233532-f2109c84b6c1/go.mod h1:4buucj0L7DsAtOJ1EiDNQEAOIydK5R7jxw61fVswhQQ= +github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= +github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= 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/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= -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/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= @@ -959,42 +1052,45 @@ github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzE 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/exhaustive v0.12.0 h1:vIY9sALmw6T/yxiASewa4TQcFsVYZQQRUQJhKRf3Swg= +github.com/nishanths/exhaustive v0.12.0/go.mod h1:mEZ95wPIZW+x8kC4TgC+9YCUgiST7ecevsVDTgc2obs= 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/noble-assets/cosmos-sdk v0.45.16-send-restrictions h1:oQwbCoejkXp2/ozQSwc//A6UW9wJl71YgP7o04MsYq0= -github.com/noble-assets/cosmos-sdk v0.45.16-send-restrictions/go.mod h1:bScuNwWAP0TZJpUf+SHXRU3xGoUPp+X9nAzfeIXts40= -github.com/noble-assets/forwarding v1.1.0 h1:2TXBs2Y9vWqgHyDKtdcHht6i7OT+pLaVHE3bPvfpmJY= -github.com/noble-assets/forwarding v1.1.0/go.mod h1:o64ZfzCHteRDhOlkpi7GeKAcjlcbWUihC7Y34Er2/3U= -github.com/noble-assets/halo v1.0.1 h1:Fndy4JaAAvEd5SDGECnkoWJ2uVG1XCF47L67Px9ickE= -github.com/noble-assets/halo v1.0.1/go.mod h1:AUFdixNgPdce0soYfT6aNggwW9PUVFxaIkCC83M26Sk= -github.com/nunnatsa/ginkgolinter v0.14.0 h1:XQPNmw+kZz5cC/HbFK3mQutpjzAQv1dHregRA+4CGGg= -github.com/nunnatsa/ginkgolinter v0.14.0/go.mod h1:cm2xaqCUCRd7qcP4DqbVvpcyEMkuLM9CF0wY6VASohk= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/noble-assets/authority v1.0.0-rc.0 h1:mrMhEK3+F2lNRMGJalydAt0gTEK+WGtCW4wV3aU++gM= +github.com/noble-assets/authority v1.0.0-rc.0/go.mod h1:AyCyM1iP73dHxBsulw0GpZNgPIQvSndWp30pK87nmog= +github.com/noble-assets/forwarding/v2 v2.0.0-20240829085026-e00f6bfe13f1 h1:ZsQDkY+YtSiLaf9JYhP63JGtKEcKW9h++VCvRcwcWcE= +github.com/noble-assets/forwarding/v2 v2.0.0-20240829085026-e00f6bfe13f1/go.mod h1:OGbKgjHf/4HHthbilK9RCPsBXUS40LFxRl4cAcNhqwk= +github.com/noble-assets/halo/v2 v2.0.0-20240928083543-bd3392537219 h1:kFPNHaKQ6L6FY/qcXVe5guZnBmpbx1YVApyxywMSpAs= +github.com/noble-assets/halo/v2 v2.0.0-20240928083543-bd3392537219/go.mod h1:DY4GCfZ/7S3IEjoJBCCh7HRTxirPBOLMVwkT0N6n3bA= +github.com/nunnatsa/ginkgolinter v0.16.2 h1:8iLqHIZvN4fTLDC0Ke9tbSZVcyVHoBs0HIbnVSxfHJk= +github.com/nunnatsa/ginkgolinter v0.16.2/go.mod h1:4tWRinDN1FeJgU+iJANW/kz7xKN5nYRAOfJDQUS9dOQ= 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/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= 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/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= 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/ondoprotocol/usdy-noble v1.0.0 h1:uwWFimg10MVF4d6hmh8w5in8Vb9zEqWQpo8Q1FUhCak= -github.com/ondoprotocol/usdy-noble v1.0.0/go.mod h1:2xRUx2R1Utz65tGFieVwlmw0cg87RwzCDlHrteEOFws= +github.com/ondoprotocol/usdy-noble/v2 v2.0.0-20241008190859-099f72833941 h1:KBkj3GIUMeELrSu1G+T6b3hLnv8Iew7bIOiLnqvpHw8= +github.com/ondoprotocol/usdy-noble/v2 v2.0.0-20241008190859-099f72833941/go.mod h1:4seufkUv5vVq88oFajbr4S9aKdgx8MEai9MTfbG3kg0= 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.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +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/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= 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.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= -github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= +github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= 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= @@ -1005,7 +1101,6 @@ github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJ 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= @@ -1013,25 +1108,17 @@ github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnh 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/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= -github.com/otiai10/copy v1.11.0 h1:OKBD80J/mLBrwnzXqGtFCzprFSGioo30JcmR4APsNwc= -github.com/otiai10/copy v1.11.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= 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/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/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= 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/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -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/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-20231207134359-e60b3f734c67 h1:jik8PHtAIsPlCRJjJzl4udgEf7hawInF9texMeO2jrU= +github.com/petermattis/goid v0.0.0-20231207134359-e60b3f734c67/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= @@ -1042,12 +1129,11 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE 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.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.5 h1:70YWmMy4FgRHehGNOUask3HtSFSOLKgmDn7ryNe7LqI= -github.com/polyfloyd/go-errorlint v1.4.5/go.mod h1:sIZEbFoDOCnTYYZoVkjc4hTnM459tuWA9H/EkdXwsKk= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.6.0 h1:tftWV9DE7txiFzPpztTAwyoRLKNj9gpVm2cg8/OwcYY= +github.com/polyfloyd/go-errorlint v1.6.0/go.mod h1:HR7u8wuP1kb1NeN1zqTd1ZMlqUKPPHF+Id4vIPvDqVw= 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= @@ -1055,101 +1141,89 @@ github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5Fsn github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.15.0 h1:5fCgGYogn0hFdhyhLbw7hEsWxufKtY9klyvdNfFlFhM= -github.com/prometheus/client_golang v1.15.0/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk= +github.com/prometheus/client_golang v1.20.1 h1:IMJXHOD6eARkQpxo8KkhgEVFlBNm+nkrFUyGlIu7Na8= +github.com/prometheus/client_golang v1.20.1/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= 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.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= 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.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= 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= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= -github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -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/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 h1:+Wl/0aFp0hpuHM3H//KMft64WQ1yX9LdJY64Qm/gFCo= +github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= +github.com/quasilyte/go-ruleguard/dsl v0.3.22 h1:wd8zkOhSNr+I+8Qeciml08ivDt1pSXe60+5DqOpCjPE= +github.com/quasilyte/go-ruleguard/dsl v0.3.22/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= 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/gocuke v0.6.2/go.mod h1:zYaqIHZobHyd0xOrHGPQjbhGJsuZ1oElx150u2o1xuk= 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/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= 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/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= -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.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/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8= +github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss= 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/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= +github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= 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/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= 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/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= +github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= 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/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/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32ZrusyurIGT9E5wAvXQnI= +github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/securego/gosec/v2 v2.18.1 h1:xnnehWg7dIW8qrRPGm8ykY21zp2MueKyC99Vlcuj96I= -github.com/securego/gosec/v2 v2.18.1/go.mod h1:ZUTcKD9gAFip1lLGHWCjkoBQJyaEzePTNzjwlL2HHoE= -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/securego/gosec/v2 v2.21.2 h1:deZp5zmYf3TWwU7A7cR2+SolbTpZ3HQiwFqnzQyEl3M= +github.com/securego/gosec/v2 v2.21.2/go.mod h1:au33kg78rNseF5PwPnTWhuYBFf534bvJRvOrgZ/bFzU= 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/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= 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= @@ -1159,57 +1233,44 @@ 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/sivchari/tenv v1.10.0 h1:g/hzMA+dBCKqGXgW8AV/1xIWhAvDrx0zFKNR48NFMg0= +github.com/sivchari/tenv v1.10.0/go.mod h1:tdY24masnVoZFxYrHv/nD6Tc8FbkEtAQEEziXpyMgqY= 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/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= 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.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -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/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= 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.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= +github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= +github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= 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.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= 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/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= 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/strangelove-ventures/paramauthority v1.1.0 h1:SMeG2NvoWC1sP09ouszukck7ufSu+3gv98Apd+ytQHQ= -github.com/strangelove-ventures/paramauthority v1.1.0/go.mod h1:WZltb3MpbQo40z4eQD6oNZRpCXtxr5/7j8lbMleDFIY= 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= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= 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/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= 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= @@ -1217,110 +1278,79 @@ 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.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= 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/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/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/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/tetafro/godot v1.4.15 h1:QzdIs+XB8q+U1WmQEWKHQbKmCw06QuQM7gLx/dky2RM= -github.com/tetafro/godot v1.4.15/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= -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/tetafro/godot v1.4.17 h1:pGzu+Ye7ZUEFx7LHU0dAKmCOXWsPjl7qA6iMGndsjPs= +github.com/tetafro/godot v1.4.17/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/tidwall/btree v1.7.0 h1:L1fkJH/AuEh5zBnnBbmTwQ5Lt+bRJ5A8EWecslvo9iI= +github.com/tidwall/btree v1.7.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/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/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -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/tomarrell/wrapcheck/v2 v2.9.0 h1:801U2YCAjLhdN8zhZ/7tdjB3EnAoRlJHt/s+9hijLQ4= +github.com/tomarrell/wrapcheck/v2 v2.9.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= 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/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= 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/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +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/ultraware/whitespace v0.1.1 h1:bTPOGejYFulW3PkcrqkeQwOd6NKOOXvmGD9bo/Gk8VQ= +github.com/ultraware/whitespace v0.1.1/go.mod h1:XcP1RLD81eV4BW8UhQlpaR+SDc2givTvyI8a586WjW8= 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/uudashr/gocognit v1.1.2 h1:l6BAEKJqQH2UpKAPKdMfZf5kE4W/2xk8pfU1OVLvniI= -github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= -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.1.3 h1:l+a111VcDbKfynh+airAy/DJQKaXh2m9vkoysMPSZyM= +github.com/uudashr/gocognit v1.1.3/go.mod h1:aKH8/e8xbTRBwjbCkwZ8qt4l2EpKXl31KMHgSS+lZ2U= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= 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/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= -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/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/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/yeya24/promlinter v0.3.0 h1:JVDbMp08lVCP7Y6NP3qHroGAO6z2yGKQtS5JsjqtoFs= +github.com/yeya24/promlinter v0.3.0/go.mod h1:cDfJQQYv9uYciW60QT0eeHlFodotkYZlL+YcPQN+mW4= +github.com/ykadowak/zerologlint v0.1.5 h1:Gy/fMz1dFQN9JZTPjv1hxEk+sRWm05row04Yoolgdiw= +github.com/ykadowak/zerologlint v0.1.5/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.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= -gitlab.com/bosi/decorder v0.4.1 h1:VdsdfxhstabyhZovHafFw+9eJ6eU0d2CkFNJcZz/NU4= -gitlab.com/bosi/decorder v0.4.1/go.mod h1:jecSqWUew6Yle1pCr2eLWTensJMmsxHsBwt+PVbkAqA= -go-simpler.org/sloglint v0.1.2 h1:IjdhF8NPxyn0Ckn2+fuIof7ntSnVUAqBFcQRrnG9AiM= -go-simpler.org/sloglint v0.1.2/go.mod h1:2LL+QImPfTslD5muNPydAEYmpXIj6o/WYcqnJjLi4o4= +gitlab.com/bosi/decorder v0.4.2 h1:qbQaV3zgwnBZ4zPMhGLW4KZe7A7NwxEhJx39R3shffo= +gitlab.com/bosi/decorder v0.4.2/go.mod h1:muuhHoaJkA9QLcYHq4Mj8FJUwDZ+EirSHRiaTcTf6T8= +go-simpler.org/musttag v0.12.2 h1:J7lRc2ysXOq7eM8rwaTYnNrHd5JwjppzB6mScysB2Cs= +go-simpler.org/musttag v0.12.2/go.mod h1:uN1DVIasMTQKk6XSik7yrJoEysGtR2GRqvWnI9S7TYM= +go-simpler.org/sloglint v0.7.2 h1:Wc9Em/Zeuu7JYpl+oKoYOsQSy2X560aVueCW/m6IijY= +go-simpler.org/sloglint v0.7.2/go.mod h1:US+9C80ppl7VsThQclkM7BkCHQAzuz8kHLsW3ppuluo= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -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/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= 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= @@ -1330,55 +1360,56 @@ 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.tmz.dev/musttag v0.7.2 h1:1J6S9ipDbalBSODNT5jCep8dhZyMr4ttnjQagmGYR5s= -go.tmz.dev/musttag v0.7.2/go.mod h1:m6q5NiiSKMnQYokefa2xGoyoXnrswCbJ0AWYzf4Zs28= +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/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0 h1:r6I7RJCN86bpD/FQwedZ0vSixDpwuWREjW9oRMsmqDc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.54.0/go.mod h1:B9yO6b04uB80CzjedvewuqDhxJxi11s7/GtiGa8bAjI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 h1:TT4fX+nBOA/+LUkobKGW1ydGcn+G3vRw9+g5HwCphpk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0/go.mod h1:L7UH0GbB0p47T4Rri3uHjbpCFYrVrwc1I25QhNPiGK8= +go.opentelemetry.io/otel v1.29.0 h1:PdomN/Al4q/lN6iBJEN3AwPvUiHPMlt93c8bqTG5Llw= +go.opentelemetry.io/otel v1.29.0/go.mod h1:N/WtXPs1CNCUEx+Agz5uouwCba+i+bJGFicT8SR4NP8= +go.opentelemetry.io/otel/metric v1.29.0 h1:vPf/HFWTNkPu1aYeIsc98l4ktOQaL6LeSoeV2g+8YLc= +go.opentelemetry.io/otel/metric v1.29.0/go.mod h1:auu/QWieFVWx+DmQOUMgj0F8LHWdgalxXqvp7BII/W8= +go.opentelemetry.io/otel/sdk v1.29.0 h1:vkqKjk7gwhS8VaWb0POZKmIEDimRCMsopNYnriHyryo= +go.opentelemetry.io/otel/sdk v1.29.0/go.mod h1:pM8Dx5WKnvxLCb+8lG1PRNIDxu9g9b9g59Qr7hfAAok= +go.opentelemetry.io/otel/trace v1.29.0 h1:J/8ZNK4XgR7a21DZUAsbF8pZ5Jcw1VhACmnYt39JTi4= +go.opentelemetry.io/otel/trace v1.29.0/go.mod h1:eHl3w0sp3paPkYstJOmAimxhiFXPg+MMTlEh3nsQgWQ= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= 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.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= +go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= 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.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= 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= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= +go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= 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-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.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -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.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= +golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= 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= @@ -1389,13 +1420,13 @@ 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-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -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-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e h1:I88y4caeGeuDQxgdoFPUq097j7kNfw6uvuiNxUBfcBk= +golang.org/x/exp v0.0.0-20240904232852-e7e105dedf7e/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ= +golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f h1:phY1HzDcf18Aq9A8KkmRtY9WvOFIxN8wgfvy6Zm1DV8= +golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f/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= @@ -1418,10 +1449,12 @@ 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.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= -golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0= +golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -1431,7 +1464,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= @@ -1441,7 +1473,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= @@ -1459,21 +1490,30 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R 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-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/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-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +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.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-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.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4= +golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU= 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= @@ -1483,6 +1523,24 @@ 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-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.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA= +golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= @@ -1494,19 +1552,21 @@ 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.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= -golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +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.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -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= @@ -1514,9 +1574,7 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= 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= @@ -1527,7 +1585,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= @@ -1547,42 +1604,61 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w 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-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-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-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-20210220050731-9a76102bfb43/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-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-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-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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-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-20220315194320-039c03cc5b86/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-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.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.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.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.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= +golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= +golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= 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= @@ -1592,23 +1668,22 @@ 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.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= +golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= 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.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +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-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-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= @@ -1621,6 +1696,7 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtn 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= @@ -1629,7 +1705,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= @@ -1650,28 +1725,28 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/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-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-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/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.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= -golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24= +golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ= 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/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/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= @@ -1692,6 +1767,38 @@ 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.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.196.0 h1:k/RafYqebaIJBO3+SMnfEGtFVlvp5vSgqTUF54UN/zg= +google.golang.org/api v0.196.0/go.mod h1:g9IL21uGkYgvQ5BZg6BAtoGJQIm8r6EgaAbpNey5wBE= +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= @@ -1699,7 +1806,6 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww 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/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= @@ -1707,7 +1813,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= @@ -1715,7 +1820,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= @@ -1741,18 +1845,124 @@ google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= 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-20210226172003-ab064af71705/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-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-20230629202037-9506855d4529 h1:9JucMWR7sPvCxUFd6UsOUNmA5kCcWOfORaT3tpAsKQs= -google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e h1:AZX1ra8YbFMSb7+1pI8S9v4rrgRR7jU1FmuFSSjTVcQ= -google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 h1:2FZP5XuJY9zQyGM5N0rtovnoXjiMUEIUMvw0m9wlpLc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= -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-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +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-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1 h1:BulPr26Jqjnd4eYDVe+YvyR7Yc2vJGkO5/0UxD0/jZU= +google.golang.org/genproto v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:hL97c3SYopEHblzpxRL4lSs523++l8DYxGM1FQiYmb4= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed h1:3RgNmBoI9MZhsj3QxC+AP/qQhNwpCLOvYDYYsFrhFt0= +google.golang.org/genproto/googleapis/api v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkfo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +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.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.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= +google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +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= @@ -1765,8 +1975,11 @@ 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.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= 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= @@ -1775,21 +1988,15 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 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= @@ -1801,15 +2008,13 @@ 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= -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.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +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= @@ -1817,27 +2022,21 @@ 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= -honnef.co/go/tools v0.4.6 h1:oFEHCKeID7to/3autwsWfnuv69j3NsfcXbvJKuIcep8= -honnef.co/go/tools v0.4.6/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= -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 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +honnef.co/go/tools v0.5.1 h1:4bH5o3b5ZULQ4UrBmP+63W9r7qIkqJClEA9ko5YKx+I= +honnef.co/go/tools v0.5.1/go.mod h1:e9irvo83WDG9/irijV44wr3tbhcFeRnfpVlRqVwpzMs= +mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= +mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= +mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= +mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ= nhooyr.io/websocket v1.8.6/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= +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 v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/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= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/go.work b/go.work new file mode 100644 index 00000000..ae2ee307 --- /dev/null +++ b/go.work @@ -0,0 +1,6 @@ +go 1.22.7 + +use ( + . + e2e +) diff --git a/go.work.sum b/go.work.sum new file mode 100644 index 00000000..bd9c5600 --- /dev/null +++ b/go.work.sum @@ -0,0 +1,2193 @@ +bitbucket.org/creachadair/shell v0.0.6/go.mod h1:8Qqi/cYk7vPnsOePHroKXDJYmb5x7ENhtiFtfZq8K+M= +cel.dev/expr v0.15.0 h1:O1jzfJCQBfL5BFoYktaxwIhuttaQPsVWerH9/EEKx0w= +cel.dev/expr v0.15.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= +cel.dev/expr v0.16.0 h1:yloc84fytn4zmJX2GU3TkXGsaieaV7dQ057Qs4sIG2Y= +cel.dev/expr v0.16.0/go.mod h1:TRSuuV7DlVCE/uwv5QbAiW/v8l5O8C4eEPHeu7gf7Sg= +cloud.google.com/go v0.0.0-20170206221025-ce650573d812/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go v0.112.1/go.mod h1:+Vbu+Y1UU+I1rjmzeMOb/8RfkKJK2Gyxi1X6jJCZLo4= +cloud.google.com/go v0.112.2/go.mod h1:iEqjp//KquGIJV/m+Pk3xecgKNhV+ry+vVTsy4TbDms= +cloud.google.com/go v0.115.0 h1:CnFSK6Xo3lDYRoBKEcAtia6VSC837/ZkJuRduSFnr14= +cloud.google.com/go v0.115.0/go.mod h1:8jIM5vVgoAEoiVxQ/O4BFTfHqulPZgs/ufEzMcFMdWU= +cloud.google.com/go/accessapproval v1.7.8/go.mod h1:7xkMRHJmgTAb08b6mKdyYTfPBTwiw4XvnI1l+jTvrdk= +cloud.google.com/go/accessapproval v1.8.0 h1:DLU5ua2WQXvdUL6yd/D4XFPXyd6acv1hNJJBMdt6Fh0= +cloud.google.com/go/accessapproval v1.8.0/go.mod h1:ycc7qSIXOrH6gGOGQsuBwpRZw3QhZLi0OWeej3rA5Mg= +cloud.google.com/go/accesscontextmanager v1.8.8/go.mod h1:XmIMhWxcTG9GTEAOBm3geKRKdVxM35FY10FSBS8zaDs= +cloud.google.com/go/accesscontextmanager v1.9.0 h1:K0zCbd23A64sdJmOZDaW39dEMB6JVnGz2uycwd8PTu0= +cloud.google.com/go/accesscontextmanager v1.9.0/go.mod h1:EmdQRGq5FHLrjGjGTp2X2tlRBvU3LDCUqfnysFYooxQ= +cloud.google.com/go/ai v0.8.0/go.mod h1:t3Dfk4cM61sytiggo2UyGsDVW3RF1qGZaUKDrZFyqkE= +cloud.google.com/go/aiplatform v1.68.0 h1:EPPqgHDJpBZKRvv+OsB3cr0jYz3EL2pZ+802rBPcG8U= +cloud.google.com/go/aiplatform v1.68.0/go.mod h1:105MFA3svHjC3Oazl7yjXAmIR89LKhRAeNdnDKJczME= +cloud.google.com/go/analytics v0.23.3/go.mod h1:oZsWmFn+JlADKC2gc6/LYXYPh6gx+K14tymvQuT3sS4= +cloud.google.com/go/analytics v0.25.0 h1:vJdNlQCfvgwxHl7bn5pqON6k5/PzVA+Uk5m5nWaFh84= +cloud.google.com/go/analytics v0.25.0/go.mod h1:LZMfjJnKU1GDkvJV16dKnXm7KJJaMZfvUXx58ujgVLg= +cloud.google.com/go/apigateway v1.6.8/go.mod h1:j383LuqwSSi7WFJwQj8zRTsU9vCiR+GkWUHlJ6GerR0= +cloud.google.com/go/apigateway v1.7.0 h1:KfvzagH2g7O6K/egrXopAbpvsxeDGNf2dbG7F39/4Jk= +cloud.google.com/go/apigateway v1.7.0/go.mod h1:miZGNhmrC+SFhxjA7ayjKHk1cA+7vsSINp9K+JxKwZI= +cloud.google.com/go/apigeeconnect v1.6.8/go.mod h1:+XjRq6uKsjrswBCZf+BCWY7u0gJ9mRP9c34qqGVQBAw= +cloud.google.com/go/apigeeconnect v1.7.0 h1:/1m2gI6xt9146I8dhTtBKR8dGLb4WqYbMT7SViCkKEU= +cloud.google.com/go/apigeeconnect v1.7.0/go.mod h1:fd8NFqzu5aXGEUpxiyeCyb4LBLU7B/xIPztfBQi+1zg= +cloud.google.com/go/apigeeregistry v0.8.6/go.mod h1:Pvk3LJqhxKgkTyynwYK7MuJCbkTG0/JbisSazyu77FM= +cloud.google.com/go/apigeeregistry v0.9.0 h1:nDQW/S5YjH3wmHoUy53x4CIcccbukxjqEq0EjMJUYoA= +cloud.google.com/go/apigeeregistry v0.9.0/go.mod h1:4S/btGnijdt9LSIZwBDHgtYfYkFGekzNyWkyYTP8Qzs= +cloud.google.com/go/appengine v1.8.8/go.mod h1:l9QQeNodTtyhYz8Sd3cTZrocgj4y7yap5t6b9XD74HQ= +cloud.google.com/go/appengine v1.9.0 h1:8i/2xM6NrMI6Js2P5Ojsbr3J4SNOjLHpuqNeMsbvpp4= +cloud.google.com/go/appengine v1.9.0/go.mod h1:y5oI+JT3/6s77QmxbTnLHyiMKz3NPHYOjuhmVi+FyYU= +cloud.google.com/go/area120 v0.8.8/go.mod h1:L/VYdKO0xpgWvRgVwH4fiGIN2wBuBGHu15bSs1FnSRw= +cloud.google.com/go/area120 v0.9.0 h1:HdrEaFo0n28gOrPlB6BXEVPQ2x9GZep2rkCvPcMINIg= +cloud.google.com/go/area120 v0.9.0/go.mod h1:ujIhRz2gJXutmFYGAUgz3KZ5IRJ6vOwL4CYlNy/jDo4= +cloud.google.com/go/artifactregistry v1.14.10/go.mod h1:i1jzotcdypXuEx6oG7+y0moY7TWR+wBaOu6VA3fGefU= +cloud.google.com/go/artifactregistry v1.15.0 h1:fHsfq5+Vir1FjEMGn7lbiSygyG+TXdtb1uRXQ72SDg4= +cloud.google.com/go/artifactregistry v1.15.0/go.mod h1:4xrfigx32/3N7Pp7YSPOZZGs4VPhyYeRyJ67ZfVdOX4= +cloud.google.com/go/asset v1.19.2/go.mod h1:JJbMl9L3cWvgiBC0vRUl/uUJ1KLJD1zw4pKRsV/wQSI= +cloud.google.com/go/asset v1.20.0 h1:2kHJKyVUEbuisDjvOK9+XQrvoosEBqsb6yaEzq5gaWY= +cloud.google.com/go/asset v1.20.0/go.mod h1:CT3ME6xNZKsPSvi0lMBPgW3azvRhiurJTFSnNl6ahw8= +cloud.google.com/go/assuredworkloads v1.11.8/go.mod h1:VDrDAh06vxYbpTJQEcZf9ueXb2S++Bm3F2Tw+liBJBk= +cloud.google.com/go/assuredworkloads v1.12.0 h1:ZolaDkCGpBFrvrEc/lvdJ584NRmIahc8MMC9vqPkWrc= +cloud.google.com/go/assuredworkloads v1.12.0/go.mod h1:jX84R+0iANggmSbzvVgrGWaqdhRsQihAv4fF7IQ4r7Q= +cloud.google.com/go/auth v0.3.0/go.mod h1:lBv6NKTWp8E3LPzmO1TbiiRKc4drLOfHsgmlH9ogv5w= +cloud.google.com/go/auth v0.5.1/go.mod h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s= +cloud.google.com/go/auth v0.6.0 h1:5x+d6b5zdezZ7gmLWD1m/xNjnaQ2YDhmIz/HH3doy1g= +cloud.google.com/go/auth v0.6.0/go.mod h1:b4acV+jLQDyjwm4OXHYjNvRi4jvGBzHWJRtJcy+2P4g= +cloud.google.com/go/auth v0.6.1/go.mod h1:eFHG7zDzbXHKmjJddFG/rBlcGp6t25SwRUiEQSlO4x4= +cloud.google.com/go/auth v0.7.2/go.mod h1:VEc4p5NNxycWQTMQEDQF0bd6aTMb6VgYDXEwiJJQAbs= +cloud.google.com/go/auth v0.8.0/go.mod h1:qGVp/Y3kDRSDZ5gFD/XPUfYQ9xW1iI7q8RIRoCyBbJc= +cloud.google.com/go/auth v0.9.0/go.mod h1:2HsApZBr9zGZhC9QAXsYVYaWk8kNUt37uny+XVKi7wM= +cloud.google.com/go/auth/oauth2adapt v0.2.2 h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4= +cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q= +cloud.google.com/go/auth/oauth2adapt v0.2.3/go.mod h1:tMQXOfZzFuNuUxOypHlQEXgdfX5cuhwU+ffUuXRJE8I= +cloud.google.com/go/automl v1.13.8/go.mod h1:8O5i0OHiqRSnucux40rSMOfnBIarGxLMTQMOjpGxbB8= +cloud.google.com/go/automl v1.14.0 h1:SkYEYiiYHDZmnIdk5ZnCo6pTgOwKdpcOFma27ZDjh0o= +cloud.google.com/go/automl v1.14.0/go.mod h1:Kr7rN9ANSjlHyBLGvwhrnt35/vVZy3n/CP4Xmyj0shM= +cloud.google.com/go/baremetalsolution v1.2.7/go.mod h1:KvhbjdZzE1SR/GpgsE90pNWiglDY1vjzClYHB3NZseE= +cloud.google.com/go/baremetalsolution v1.3.0 h1:Ht+IPfbdjNGsOAaZqSkPJ+w/to4e7CzDZ1z9GaBkYV4= +cloud.google.com/go/baremetalsolution v1.3.0/go.mod h1:E+n44UaDVO5EeSa4SUsDFxQLt6dD1CoE2h+mtxxaJKo= +cloud.google.com/go/batch v1.8.8/go.mod h1:PvTk3Rq5mf6RFcQtF9MZEsv9LG9aUjlUuqlq6IJ866o= +cloud.google.com/go/batch v1.10.0 h1:yE/0VZZtAhsaPTEc3OqDXmsjFX/739HcRMfAy0OuiUU= +cloud.google.com/go/batch v1.10.0/go.mod h1:JlktZqyKbcUJWdHOV8juvAiQNH8xXHXTqLp6bD9qreE= +cloud.google.com/go/beyondcorp v1.0.7/go.mod h1:qiWZ0SIhhAB7wn5Vun0bNKdexl596QclVwWEUL+keK8= +cloud.google.com/go/beyondcorp v1.1.0 h1:xETx1qRUghe5f5pPIFLSmN+I3g3FNGiiftEX7cTYztI= +cloud.google.com/go/beyondcorp v1.1.0/go.mod h1:F6Rl20QbayaloWIsMhuz+DICcJxckdFKc7R2HCe6iNA= +cloud.google.com/go/bigquery v1.61.0/go.mod h1:PjZUje0IocbuTOdq4DBOJLNYB0WF3pAKBHzAYyxCwFo= +cloud.google.com/go/bigquery v1.62.0 h1:SYEA2f7fKqbSRRBHb7g0iHTtZvtPSPYdXfmqsjpsBwo= +cloud.google.com/go/bigquery v1.62.0/go.mod h1:5ee+ZkF1x/ntgCsFQJAQTM3QkAZOecfCmvxhkJsWRSA= +cloud.google.com/go/bigtable v1.31.0 h1:/uVLxGVRbK4mxK/iO89VqXcL/zoTSmkltVfIDYVBluQ= +cloud.google.com/go/bigtable v1.31.0/go.mod h1:N/mwZO+4TSHOeyiE1JxO+sRPnW4bnR7WLn9AEaiJqew= +cloud.google.com/go/billing v1.18.6/go.mod h1:3aQtpAKmI0wPI4Dcele7cp87jg59EjOA37y7iGrRLIc= +cloud.google.com/go/billing v1.19.0 h1:hnFBA+u/O7mP9a1z5Um4oZ5dONrKV9XSCrlpMGP73wk= +cloud.google.com/go/billing v1.19.0/go.mod h1:bGvChbZguyaWRGmu5pQHfFN1VxTDPFmabnCVA/dNdRM= +cloud.google.com/go/binaryauthorization v1.8.4/go.mod h1:q0t7+U6A4mv7UAtps89kiJ8TlSAIACUJABZH7jE+7uk= +cloud.google.com/go/binaryauthorization v1.9.0 h1:O6O31WTrJhuRsXfTAOPj5iRD4WUOeKskHrpuWKSiCP8= +cloud.google.com/go/binaryauthorization v1.9.0/go.mod h1:fssQuxfI9D6dPPqfvDmObof+ZBKsxA9iSigd8aSA1ik= +cloud.google.com/go/certificatemanager v1.8.2/go.mod h1:x/OhbhxXrbAzPfLLN/tECrkgfnfg6qr6decH1V21/kQ= +cloud.google.com/go/certificatemanager v1.9.0 h1:dQQxtb+HnS9GbylmAImWkC9QR8zy/xwRiQrIaewbwgE= +cloud.google.com/go/certificatemanager v1.9.0/go.mod h1:hQBpwtKNjUq+er6Rdg675N7lSsNGqMgt7Bt7Dbcm7d0= +cloud.google.com/go/channel v1.17.8/go.mod h1:xWbsExBg6rzMyUtQa2oaX8n3sdROQuWXLNoZp8X7ssI= +cloud.google.com/go/channel v1.18.0 h1:VqNv/GBepVRSaCKtD92bMZd/3siLlc8KFk4u21cUK/U= +cloud.google.com/go/channel v1.18.0/go.mod h1:gQr50HxC/FGvufmqXD631ldL1Ee7CNMU5F4pDyJWlt0= +cloud.google.com/go/cloudbuild v1.16.2/go.mod h1:CJuhrizzeQ79ryNUO0d227lHf5lqigvDngl4hvYwXiw= +cloud.google.com/go/cloudbuild v1.17.0 h1:tMKv6Gh7jPH3TM3QBHkdPzls80kQbUSH9Q20Hn3QD40= +cloud.google.com/go/cloudbuild v1.17.0/go.mod h1:/RbwgDlbQEwIKoWLIYnW72W3cWs+e83z7nU45xRKnj8= +cloud.google.com/go/clouddms v1.7.7/go.mod h1:ikAo+Ekli1/xPaZvuP/9rmsgd34oEk6OndgNEdC2KRA= +cloud.google.com/go/clouddms v1.8.0 h1:BBPvI//wT1n3ruqVGDgCxBdpu9/era/b3B/HsiY8SyU= +cloud.google.com/go/clouddms v1.8.0/go.mod h1:JUgTgqd1M9iPa7p3jodjLTuecdkGTcikrg7nz++XB5E= +cloud.google.com/go/cloudtasks v1.12.9/go.mod h1:ep1IV7Vud6LNy9JjJiYCcb/or8SO2h/He1gPQgF5Uqw= +cloud.google.com/go/cloudtasks v1.13.0 h1:rKVSsQwh0CI68n3RalLoGuW7sOtq2eil2gVZK4Pyi40= +cloud.google.com/go/cloudtasks v1.13.0/go.mod h1:O1jFRGb1Vm3sN2u/tBdPiVGVTWIsrsbEs3K3N3nNlEU= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= +cloud.google.com/go/compute v1.24.0 h1:phWcR2eWzRJaL/kOiJwfFsPs4BaKq1j6vnpZrc1YlVg= +cloud.google.com/go/compute v1.24.0/go.mod h1:kw1/T+h/+tK2LJK0wiPPx1intgdAM3j/g3hFDlscY40= +cloud.google.com/go/compute v1.27.1 h1:0WbBLIPNANheCRZ4h8QhgzjN53KMutbiVBOLtPiVzBU= +cloud.google.com/go/compute v1.27.1/go.mod h1:UVWm+bWKEKoM+PW2sZycP1Jgk3NhKwR2Iy2Cnp/G40I= +cloud.google.com/go/compute v1.28.0 h1:OPtBxMcheSS+DWfci803qvPly3d4w7Eu5ztKBcFfzwk= +cloud.google.com/go/compute v1.28.0/go.mod h1:DEqZBtYrDnD5PvjsKwb3onnhX+qjdCVM7eshj1XdjV4= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/contactcenterinsights v1.13.3/go.mod h1:W7J0KTaHlvbL4l0ZkoTmgkKRPN3LxkdGSVQnv2CQ9js= +cloud.google.com/go/contactcenterinsights v1.14.0 h1:hZSiEb53tyULmOSBlDPhEWPEe+vQ0F2gPQjOka1E5oE= +cloud.google.com/go/contactcenterinsights v1.14.0/go.mod h1:APmWYHDN4sASnUBnXs4o68t1EUfnqadA53//CzXZ1xE= +cloud.google.com/go/container v1.37.1/go.mod h1:8zwisvfdwqsXB/0TSxoUhTrfTrlfDV0pK9hcDtyFQ1c= +cloud.google.com/go/container v1.39.0 h1:Q1oW01ENxkkG3uf1oYoTmHPdvP+yhFCIuCJ4mk2RwkQ= +cloud.google.com/go/container v1.39.0/go.mod h1:gNgnvs1cRHXjYxrotVm+0nxDfZkqzBbXCffh5WtqieI= +cloud.google.com/go/containeranalysis v0.11.7/go.mod h1:1xt9ZDhrB9py0gThDIg0Lq6AXVsFHKbXKYlqNAVhjcc= +cloud.google.com/go/containeranalysis v0.13.0 h1:+pm0vZAyHlkflBQRcpTWowroofRcNyn6gr5gUivI6Cc= +cloud.google.com/go/containeranalysis v0.13.0/go.mod h1:OpufGxsNzMOZb6w5yqwUgHr5GHivsAD18KEI06yGkQs= +cloud.google.com/go/datacatalog v1.20.2/go.mod h1:OfoVR0QchMp2iwull28uaCkXsULClrVCe/Y5aBhwJpg= +cloud.google.com/go/datacatalog v1.22.0 h1:7e5/0B2LYbNx0BcUJbiCT8K2wCtcB5993z/v1JeLIdc= +cloud.google.com/go/datacatalog v1.22.0/go.mod h1:4Wff6GphTY6guF5WphrD76jOdfBiflDiRGFAxq7t//I= +cloud.google.com/go/dataflow v0.9.8/go.mod h1:0doO1EqzYcU/EAt/BsCZl+iOd9i/FwNGon6IgDBxAJU= +cloud.google.com/go/dataflow v0.10.0 h1:AKl2CoSEGRTCYV03YREEDYVcncjg3G6tf8CZx4k4cRo= +cloud.google.com/go/dataflow v0.10.0/go.mod h1:zAv3YUNe/2pXWKDSPvbf31mCIUuJa+IHtKmhfzaeGww= +cloud.google.com/go/dataform v0.9.5/go.mod h1:5FCHfsQNNmVvQJeI5XP7ftiOPlgHmYz4NUUhmCPrHag= +cloud.google.com/go/dataform v0.10.0 h1:yJ4RbaIw9ivlHrWCTxPxojM1VtCMSNCsF3xR8ohMGKc= +cloud.google.com/go/dataform v0.10.0/go.mod h1:0NKefI6v1ppBEDnwrp6gOMEA3s/RH3ypLUM0+YWqh6A= +cloud.google.com/go/datafusion v1.7.8/go.mod h1:VVkTWac1XVCVdf2nzlU68OvoDO7uc0E58pR1Q5zq8JQ= +cloud.google.com/go/datafusion v1.8.0 h1:87ukhTCPlWBYQSCExQRJcAa6HSp/g40hZsImQre9Ng8= +cloud.google.com/go/datafusion v1.8.0/go.mod h1:zHZ5dJYHhMP1P8SZDZm+6yRY9BCCcfm7Xg7YmP+iA6E= +cloud.google.com/go/datalabeling v0.8.8/go.mod h1:68L3luQpu2/KIQxK+B8ChR7c8id8wT7/txJNddsHpq0= +cloud.google.com/go/datalabeling v0.9.0 h1:7pIXkYYp6kya0XG27zOB0Tsnn3rjJ05xBIqvN4edzp4= +cloud.google.com/go/datalabeling v0.9.0/go.mod h1:GVX4sW4cY5OPKu/9v6dv20AU9xmGr4DXR6K26qN0mzw= +cloud.google.com/go/dataplex v1.17.0/go.mod h1:pSJPr0n+iu2/YKre2cRDwvdLrVg8EwGg483LB0AxA/g= +cloud.google.com/go/dataplex v1.19.0 h1:l3xIynMeZZi8U7bFTNTzPUiCrnBZLJMp62vlrcBRyeE= +cloud.google.com/go/dataplex v1.19.0/go.mod h1:5H9ftGuZWMtoEIUpTdGUtGgje36YGmtRXoC8wx6QSUc= +cloud.google.com/go/dataproc/v2 v2.5.0/go.mod h1:VV8BisKb9NpQsd/8XOriS5K0wpIlecTBrBm0ntvQ/g0= +cloud.google.com/go/dataproc/v2 v2.6.0 h1:YjgcpuzUYX+Q/xCbh/+5+Nwx0DGzsO9nss/O7Usy79c= +cloud.google.com/go/dataproc/v2 v2.6.0/go.mod h1:amsKInI+TU4GcXnz+gmmApYbiYM4Fw051SIMDoWCWeE= +cloud.google.com/go/dataqna v0.8.8/go.mod h1:DXb55JvGZN6EH3gvwu0JEbJvadxXOGL6grkhqP9y3QA= +cloud.google.com/go/dataqna v0.9.0 h1:Wk8s3XHBwmk+5pUtevnFxwQ57bXnTtvSswdJnEjssR4= +cloud.google.com/go/dataqna v0.9.0/go.mod h1:WlRhvLLZv7TfpONlb/rEQx5Qrr7b5sxgSuz5NP6amrw= +cloud.google.com/go/datastore v1.17.1/go.mod h1:mtzZ2HcVtz90OVrEXXGDc2pO4NM1kiBQy8YV4qGe0ZM= +cloud.google.com/go/datastore v1.19.0 h1:p5H3bUQltOa26GcMRAxPoNwoqGkq5v8ftx9/ZBB35MI= +cloud.google.com/go/datastore v1.19.0/go.mod h1:KGzkszuj87VT8tJe67GuB+qLolfsOt6bZq/KFuWaahc= +cloud.google.com/go/datastream v1.10.7/go.mod h1:wNlOxMpOCP/uaV+0O0PC5wlCmpHGDUhyRGQ5RBZAvSw= +cloud.google.com/go/datastream v1.11.0 h1:vSdeXl6b6apcOTWT6/NiHglc0eIEJ4z5yJXAsXT0WBo= +cloud.google.com/go/datastream v1.11.0/go.mod h1:vio/5TQ0qNtGcIj7sFb0gucFoqZW19gZ7HztYtkzq9g= +cloud.google.com/go/deploy v1.19.1/go.mod h1:y2DyvlK02aUlUFjDwTbEfOMTH29IGAjSniSGw+MceVM= +cloud.google.com/go/deploy v1.22.0 h1:fkBCtx9Qzr/vVokIALFdXb5cLVT0VJEfKWfOZftaGkI= +cloud.google.com/go/deploy v1.22.0/go.mod h1:qXJgBcnyetoOe+w/79sCC99c5PpHJsgUXCNhwMjG0e4= +cloud.google.com/go/dialogflow v1.54.1/go.mod h1:SDAvjPxEwb+DTRlxkCu0B5qilt0HtaV2GeoUBysvgCQ= +cloud.google.com/go/dialogflow v1.57.0 h1:tdeHPAjpTe+z5+YyYqEJwoZiOwgP+bML+zimEXo/6O0= +cloud.google.com/go/dialogflow v1.57.0/go.mod h1:wegtnocuYEfue6IGlX96n5mHu3JGZUaZxv1L5HzJUJY= +cloud.google.com/go/dlp v1.14.1/go.mod h1:nY5sIxqHm2APxYUpAoq8xOMtHLjFyBYUNbYjjnBptqY= +cloud.google.com/go/dlp v1.18.0 h1:wPts74+F848F/ACZqU+c32Xh91DaBXXZaE66vpN6FQA= +cloud.google.com/go/dlp v1.18.0/go.mod h1:RVO9zkh+xXgUa7+YOf9IFNHL/2FXt9Vnv/GKNYmc1fE= +cloud.google.com/go/documentai v1.30.2/go.mod h1:nMh79XZZ6dkXWZlh60vmyFPf9AySGM0QCYFJA39I2IU= +cloud.google.com/go/documentai v1.33.0 h1:MQbd4Bk3o7ckIiKZooXCVJfIDweO+B/XRAVsLdnSD/A= +cloud.google.com/go/documentai v1.33.0/go.mod h1:lI9Mti9COZ5qVjdpfDZxNjOrTVf6tJ//vaqbtt81214= +cloud.google.com/go/domains v0.9.8/go.mod h1:CJzupa3+HxdkCSn6hXu0tcdcsbZS2ZNK1zfSA+FqfPM= +cloud.google.com/go/domains v0.10.0 h1:+UAfUhEO9aINLqZjVkOKEG28+JKD+Zio0GmnOAXqKVY= +cloud.google.com/go/domains v0.10.0/go.mod h1:VpPXnkCNRsxkieDFDfjBIrLv3p1kRjJ03wLoPeL30To= +cloud.google.com/go/edgecontainer v1.2.2/go.mod h1:PwFM/JBBTJ1pXSNNHD+NCMEhZylPOy1FCXuYCbl7ACk= +cloud.google.com/go/edgecontainer v1.3.0 h1:szfTtWNXKviueQ58eZ2EDzbjvEQkfx4QNQa3KIaCweU= +cloud.google.com/go/edgecontainer v1.3.0/go.mod h1:dV1qTl2KAnQOYG+7plYr53KSq/37aga5/xPgOlYXh3A= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/errorreporting v0.3.1 h1:E/gLk+rL7u5JZB9oq72iL1bnhVlLrnfslrgcptjJEUE= +cloud.google.com/go/errorreporting v0.3.1/go.mod h1:6xVQXU1UuntfAf+bVkFk6nld41+CPyF2NSPCyXE3Ztk= +cloud.google.com/go/essentialcontacts v1.6.9/go.mod h1:wS/7YcnVzn82DqBv9lOQoHZpWOdgwGbWk02QH1460dU= +cloud.google.com/go/essentialcontacts v1.7.0 h1:Ddirv7AYVEQiTKpboCwNVpC9HHLYSaW7wAk2u/OXJHo= +cloud.google.com/go/essentialcontacts v1.7.0/go.mod h1:0JEcNuyjyg43H/RJynZzv2eo6MkmnvRPUouBpOh6akY= +cloud.google.com/go/eventarc v1.13.7/go.mod h1:yslFvubtw7PovgFr/Gg8GrqcOfJBAU4D5Qveds4vOzA= +cloud.google.com/go/eventarc v1.14.0 h1:ok7KHtdTSu8F7D8Sb+Ug5lrKcQk/1+Xq7cZjeydeXEo= +cloud.google.com/go/eventarc v1.14.0/go.mod h1:60ZzZfOekvsc/keHc7uGHcoEOMVa+p+ZgRmTjpdamnA= +cloud.google.com/go/filestore v1.8.4/go.mod h1:GnZEiebr0Eru+BALoYDsuOyqSzM4EV7n5HpCaXT0RT8= +cloud.google.com/go/filestore v1.9.0 h1:pI1dZzLjmH3NnuUKf13So4jP80mdZoWXB9etiV2zpso= +cloud.google.com/go/filestore v1.9.0/go.mod h1:GlQK+VBaAGb19HqprnOMqYYpn7Gev5ZA9SSHpxFKD7Q= +cloud.google.com/go/firestore v1.15.0 h1:/k8ppuWOtNuDHt2tsRV42yI21uaGnKDEQnRFeBpbFF8= +cloud.google.com/go/firestore v1.15.0/go.mod h1:GWOxFXcv8GZUtYpWHw/w6IuYNux/BtmeVTMmjrm4yhk= +cloud.google.com/go/firestore v1.16.0 h1:YwmDHcyrxVRErWcgxunzEaZxtNbc8QoFYA/JOEwDPgc= +cloud.google.com/go/firestore v1.16.0/go.mod h1:+22v/7p+WNBSQwdSwP57vz47aZiY+HrDkrOsJNhk7rg= +cloud.google.com/go/functions v1.16.3/go.mod h1:Uk3Bu1mv6+f27PHh+yOjMAMB0u4LRkn7dxsdHBZmPKM= +cloud.google.com/go/functions v1.19.0 h1:bO55p91lPY5JLg5MBdmt6G9n4kNeClX0lA9hdusDU6M= +cloud.google.com/go/functions v1.19.0/go.mod h1:WDreEDZoUVoOkXKDejFWGnprrGYn2cY2KHx73UQERC0= +cloud.google.com/go/gaming v1.6.0 h1:PKggmegChZulPW8yvtziF8P9UOuVFwbvylbEucTNups= +cloud.google.com/go/gkebackup v1.5.1/go.mod h1:FCz8M70up0yEwLXBmVJRckYoOh9x/eTo8aymJcdrMu4= +cloud.google.com/go/gkebackup v1.6.0 h1:MhJ+vTgc+UtU9Y0uRmWs1XpcN6qmUUzyn+tTBiKAjxk= +cloud.google.com/go/gkebackup v1.6.0/go.mod h1:1rskt7NgawoMDHTdLASX8caXXYG3MvDsoZ7qF4RMamQ= +cloud.google.com/go/gkeconnect v0.8.8/go.mod h1:S3UvXOu5vxZmeBU8YkpHMbcjsi9d0HDuJ+fB6ofHwKs= +cloud.google.com/go/gkeconnect v0.11.0 h1:JY9V0rYzRAXHpwwVfBvlphWP2CCUUiJrtCyZCMxYXEY= +cloud.google.com/go/gkeconnect v0.11.0/go.mod h1:l3iPZl1OfT+DUQ+QkmH1PC5RTLqxKQSVnboLiQGAcCA= +cloud.google.com/go/gkehub v0.14.8/go.mod h1:Tdd33Wg3Jeehu4mIt9Fkm/ryy5wtJ8a3bjnzEnuY8UU= +cloud.google.com/go/gkehub v0.15.0 h1:pA1mYF5jSC8C/oyjzsfBaznjejWwpxUFIlRjWUZKB/s= +cloud.google.com/go/gkehub v0.15.0/go.mod h1:obpeROly2mjxZJbRkFfHEflcH54XhJI+g2QgfHphL0I= +cloud.google.com/go/gkemulticloud v1.2.1/go.mod h1:9VT+++rL2+x7o9+hc0R4CO4ywFzqlvISPZxPM93p+pw= +cloud.google.com/go/gkemulticloud v1.3.0 h1:4wJPaNK7HFYLniVqMue+Eo/SpX+yf+aMvRITjUpirgM= +cloud.google.com/go/gkemulticloud v1.3.0/go.mod h1:XmcOUQ+hJI62fi/klCjEGs6lhQ56Zjs14sGPXsGP0mE= +cloud.google.com/go/grafeas v0.2.0 h1:CYjC+xzdPvbV65gi6Dr4YowKcmLo045pm18L0DhdELM= +cloud.google.com/go/grafeas v0.3.10 h1:D9uP/DjVHq9ZzCekVd+aNvQEHb3Hkwp8ki9FDnhRRJ0= +cloud.google.com/go/grafeas v0.3.10/go.mod h1:Mz/AoXmxNhj74VW0fz5Idc3kMN2VZMi4UT5+UPx5Pq0= +cloud.google.com/go/gsuiteaddons v1.6.8/go.mod h1:hxW23+rb48hDo82PVJJzWCHyOy7AyqgnZ8SnEUovIAE= +cloud.google.com/go/gsuiteaddons v1.7.0 h1:k+DNTzjW+hG+lfGsNbNCopicaUIyT0Q4B0xLYCwEnpo= +cloud.google.com/go/gsuiteaddons v1.7.0/go.mod h1:/B1L8ANPbiSvxCgdSwqH9CqHIJBzTt6v50fPr3vJCtg= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.1.6/go.mod h1:O0zxdPeGBoFdWW3HWmBxJsk0pfvNM/p/qa82rWOGTwI= +cloud.google.com/go/iam v1.1.8/go.mod h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE= +cloud.google.com/go/iam v1.1.9 h1:oSkYLVtVme29uGYrOcKcvJRht7cHJpYD09GM9JaR0TE= +cloud.google.com/go/iam v1.1.9/go.mod h1:Nt1eDWNYH9nGQg3d/mY7U1hvfGmsaG9o/kLGoLoLXjQ= +cloud.google.com/go/iam v1.1.12/go.mod h1:9LDX8J7dN5YRyzVHxwQzrQs9opFFqn0Mxs9nAeB+Hhg= +cloud.google.com/go/iap v1.9.7/go.mod h1:H/hF8BM9BMHRoHek60UMnJcNZpnMLdQYwc1L4OvFomk= +cloud.google.com/go/iap v1.10.0 h1:Er5DF68/1MMBQo62Vfs3XvOPmyqj9JgQniSCNKLHYK8= +cloud.google.com/go/iap v1.10.0/go.mod h1:gDT6LZnKnWNCaov/iQbj7NMUpknFDOkhhlH8PwIrpzU= +cloud.google.com/go/ids v1.4.8/go.mod h1:uW399c5bbwB5/YykcO2uQNwl3l+r6oMPEN2p9BmxCTY= +cloud.google.com/go/ids v1.5.0 h1:s14XF62E/BNe4jErHtgWaN1m5vrLkTMuG4gNRV0GRks= +cloud.google.com/go/ids v1.5.0/go.mod h1:4NOlC1m9hAJL50j2cRV4PS/J6x/f4BBM0Xg54JQLCWw= +cloud.google.com/go/iot v1.7.8/go.mod h1:WKcw6vyfKlHKWdT3Sht8IhcK2iMydEK0Qv4Mwy3p1ms= +cloud.google.com/go/iot v1.8.0 h1:Q2GdWBly1+5Enm1TcEWvmu3YTRw9IyS1PYR4gJHepVY= +cloud.google.com/go/iot v1.8.0/go.mod h1:/NMFENPnQ2t1UByUC1qFvA80fo1KFB920BlyUPn1m3s= +cloud.google.com/go/kms v1.18.1/go.mod h1:fOsmW0fzDVYXM0AOJWmpB0gFVOVgC33giwYi0kcTdBA= +cloud.google.com/go/kms v1.19.0 h1:x0OVJDl6UH1BSX4THKlMfdcFWoE4ruh90ZHuilZekrU= +cloud.google.com/go/kms v1.19.0/go.mod h1:e4imokuPJUc17Trz2s6lEXFDt8bgDmvpVynH39bdrHM= +cloud.google.com/go/language v1.12.6/go.mod h1:zbac+SstgMxDAOY5iCMeq5mKNkEYjposny9ZpdVUhMU= +cloud.google.com/go/language v1.14.0 h1:7e62MAtxUkjYzL3PnD5ZjJn81KV2hnau4EcS4LN73Lg= +cloud.google.com/go/language v1.14.0/go.mod h1:ldEdlZOFwZREnn/1yWtXdNzfD7hHi9rf87YDkOY9at4= +cloud.google.com/go/lifesciences v0.9.8/go.mod h1:3wKB6HF0My17uQ+bnReWumKiDksYnV3ItF4+bAA6IbQ= +cloud.google.com/go/lifesciences v0.10.0 h1:NxYwUD3BcxXKttOlbKsn84PacxjQPdCFSt6Kk4l6UW8= +cloud.google.com/go/lifesciences v0.10.0/go.mod h1:1zMhgXQ7LbMbA5n4AYguFgbulbounfUoYvkV8dtsLcA= +cloud.google.com/go/logging v1.10.0/go.mod h1:EHOwcxlltJrYGqMGfghSet736KR3hX1MAj614mrMk9I= +cloud.google.com/go/logging v1.11.0 h1:v3ktVzXMV7CwHq1MBF65wcqLMA7i+z3YxbUsoK7mOKs= +cloud.google.com/go/logging v1.11.0/go.mod h1:5LDiJC/RxTt+fHc1LAt20R9TKiUTReDg6RuuFOZ67+A= +cloud.google.com/go/longrunning v0.5.5 h1:GOE6pZFdSrTb4KAiKnXsJBtlE6mEyaW44oKyMILWnOg= +cloud.google.com/go/longrunning v0.5.5/go.mod h1:WV2LAxD8/rg5Z1cNW6FJ/ZpX4E4VnDnoTk0yawPBB7s= +cloud.google.com/go/longrunning v0.5.6/go.mod h1:vUaDrWYOMKRuhiv6JBnn49YxCPz2Ayn9GqyjaBT8/mA= +cloud.google.com/go/longrunning v0.5.7/go.mod h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng= +cloud.google.com/go/longrunning v0.5.8/go.mod h1:oJDErR/mm5h44gzsfjQlxd6jyjFvuBPOxR1TLy2+cQk= +cloud.google.com/go/longrunning v0.5.9/go.mod h1:HD+0l9/OOW0za6UWdKJtXoFAX/BGg/3Wj8p10NeWF7c= +cloud.google.com/go/longrunning v0.5.12/go.mod h1:S5hMV8CDJ6r50t2ubVJSKQVv5u0rmik5//KgLO3k4lU= +cloud.google.com/go/managedidentities v1.6.8/go.mod h1:Gl4bBPT4LV1vwWMHp+RNBWJA7P8e5bArg0YDbdERB3o= +cloud.google.com/go/managedidentities v1.7.0 h1:GRZPWk8g9g99CunSn6yvjCgWGmYlJImLb/oHHxNwujU= +cloud.google.com/go/managedidentities v1.7.0/go.mod h1:o4LqQkQvJ9Pt7Q8CyZV39HrzCfzyX8zBzm8KIhRw91E= +cloud.google.com/go/maps v1.11.2/go.mod h1:YzCIVDLDAAZQt+sTl+hZxanOmKc4v8aFSWZfxMdKAqw= +cloud.google.com/go/maps v1.12.0 h1:i+IeDDYWxW98EmLNQIuFdEVYBYc/VdQCKKrMa7W4Iyw= +cloud.google.com/go/maps v1.12.0/go.mod h1:qjErDNStn3BaGx06vHner5d75MRMgGflbgCuWTuslMc= +cloud.google.com/go/mediatranslation v0.8.8/go.mod h1:/2BevZygMTb57aSW5xxDnFkl/ohrs8T8O2+f5qGhMsE= +cloud.google.com/go/mediatranslation v0.9.0 h1:bA2Qid3TwvcAcOZp9Yj7GJSAi0N24G8cw+tlLBcIkV8= +cloud.google.com/go/mediatranslation v0.9.0/go.mod h1:udnxo0i4YJ5mZfkwvvQQrQ6ra47vcX8jeGV+6I5x+iU= +cloud.google.com/go/memcache v1.10.8/go.mod h1:ryDp9chCUWXkTYYNiTEE0o/RBjGrcThZ/EOb+iW/TMo= +cloud.google.com/go/memcache v1.11.0 h1:pbBvVeTgYKSJ0sxT2k+9OmDS1Kp+QnZkjzPg1+PvVN4= +cloud.google.com/go/memcache v1.11.0/go.mod h1:99MVF02m5TByT1NKxsoKDnw5kYmMrjbGSeikdyfCYZk= +cloud.google.com/go/metastore v1.13.7/go.mod h1:eQA2VqSDe1ooVQs8hteKUCBYf3wRlMAJiXZ+ru3QpnU= +cloud.google.com/go/metastore v1.14.0 h1:m7ICE3M+5jTwM6nHyv4/YcA1eeSYg3XtKpdQsB7QKP0= +cloud.google.com/go/metastore v1.14.0/go.mod h1:vtPt5oVF/+ocXO4rv4GUzC8Si5s8gfmo5OIt6bACDuE= +cloud.google.com/go/monitoring v1.20.0/go.mod h1:5oUy5KllE4yxpztDJuzq/VVck0Q0cn/ykC98C9MXux0= +cloud.google.com/go/monitoring v1.21.0 h1:EMc0tB+d3lUewT2NzKC/hr8cSR9WsUieVywzIHetGro= +cloud.google.com/go/monitoring v1.21.0/go.mod h1:tuJ+KNDdJbetSsbSGTqnaBvbauS5kr3Q/koy3Up6r+4= +cloud.google.com/go/networkconnectivity v1.14.7/go.mod h1:hdX86Gs4t3ZDv91Q7XFOxtWd9hcpkmZgVFoRoLDNsrU= +cloud.google.com/go/networkconnectivity v1.15.0 h1:NgR2Qz/d8TwT9k3E9Dw2DtdeCASlIsli9o/r9VSgUKk= +cloud.google.com/go/networkconnectivity v1.15.0/go.mod h1:uBQqx/YHI6gzqfV5J/7fkKwTGlXvQhHevUuzMpos9WY= +cloud.google.com/go/networkmanagement v1.13.3/go.mod h1:UVyvulpb1cOu2DfAHkxOGJTBVOC7nxjhaCKi3HMm70I= +cloud.google.com/go/networkmanagement v1.14.0 h1:HGbqaS352q7JLOpdmqHUXBeaJc6S6DtUSRJF9URtTBY= +cloud.google.com/go/networkmanagement v1.14.0/go.mod h1:4myfd4A0uULCOCGHL1npZN0U+kr1Z2ENlbHdCCX4cE8= +cloud.google.com/go/networksecurity v0.9.8/go.mod h1:8wCm5we0Aqf9ORfCUunupx5ipdfGFTL+PTTkYoBIFjE= +cloud.google.com/go/networksecurity v0.10.0 h1:SA+W7/GNJnrf1gINnIar4zpsRrQk9dLNN5uTuY4TO90= +cloud.google.com/go/networksecurity v0.10.0/go.mod h1:IcpI5pyzlZyYG8cNRCJmY1AYKajsd9Uz575HoeyYoII= +cloud.google.com/go/notebooks v1.11.6/go.mod h1:JoKKqNBlcs2f2K4L/Ao6FAUZI0Yw0j2cZOSRQFcHk8Q= +cloud.google.com/go/notebooks v1.12.0 h1:80/UfGbQeaY1zMcqf8za2T8u94wjMTTjeXEj5Bim1Q4= +cloud.google.com/go/notebooks v1.12.0/go.mod h1:euIZBbGY6G0J+UHzQ0XflysP0YoAUnDPZU7Fq0KXNw8= +cloud.google.com/go/optimization v1.6.6/go.mod h1:qFLRJ5h7HD9YydjM8F+uKkU++MHCvrGyakgiHSkL1KE= +cloud.google.com/go/optimization v1.7.0 h1:yDun269GdHx6gvcNJZeklF7uQw19a0LldSSiYtOYiR0= +cloud.google.com/go/optimization v1.7.0/go.mod h1:6KvAB1HtlsMMblT/lsQRIlLjUhKjmMWNqV1AJUctbWs= +cloud.google.com/go/orchestration v1.9.3/go.mod h1:6cOnot26ereouYWqhm5k8fX1dysq+e71bEjYro+8RYA= +cloud.google.com/go/orchestration v1.10.0 h1:cGj9njLm+uUa/YPxGx6X7OU5RBh2VbpDktetkaHOEPQ= +cloud.google.com/go/orchestration v1.10.0/go.mod h1:pGiFgTTU6c/nXHTPpfsGT8N4Dax8awccCe6kjhVdWjI= +cloud.google.com/go/orgpolicy v1.12.4/go.mod h1:lHr1a8OmY3aA+WMvNyX+ckZ47r5vp+NI1eeC0zKTQCs= +cloud.google.com/go/orgpolicy v1.13.0 h1:WaabiSAxtyi4JNFATvsPmQS2IWRjr1+pwU3/Bihj7eA= +cloud.google.com/go/orgpolicy v1.13.0/go.mod h1:oKtT56zEFSsYORUunkN2mWVQBc9WGP7yBAPOZW1XCXc= +cloud.google.com/go/osconfig v1.12.8/go.mod h1:GF1mHXXkpBlMhuHkZo58PPtbMEVapeNvT/wLYwjR+5g= +cloud.google.com/go/osconfig v1.14.0 h1:7XGKH/O0PGIoPIIYc+Ja5WD5Sc1nK0y5DT7jvSfyJVc= +cloud.google.com/go/osconfig v1.14.0/go.mod h1:GhZzWYVrnQ42r+K5pA/hJCsnWVW2lB6bmVg+GnZ6JkM= +cloud.google.com/go/oslogin v1.13.4/go.mod h1:ae2K89lAr0zkWP7CCqdGiCBZTis1ymCM0xhmpUfaQYY= +cloud.google.com/go/oslogin v1.14.0 h1:tgeFPXRtrXuS6MbBsevnntls4kQeD/QP3VUB9ZxmmMg= +cloud.google.com/go/oslogin v1.14.0/go.mod h1:VtMzdQPRP3T+w5OSFiYhaT/xOm7H1wo1HZUD2NAoVK4= +cloud.google.com/go/phishingprotection v0.8.8/go.mod h1:TjMWRJeTs/3TAVCuzhp6oQ+ng8FWz7PKmgJ8b2+eXkM= +cloud.google.com/go/phishingprotection v0.9.0 h1:TSua7OZWGInbjd9DiSNH1v4UqhrKwpw3q4RM6rzm+0I= +cloud.google.com/go/phishingprotection v0.9.0/go.mod h1:CzttceTk9UskH9a8BycYmHL64zakEt3EXaM53r4i0Iw= +cloud.google.com/go/policytroubleshooter v1.10.6/go.mod h1:mEYX75+EvMAoJVNqpJ88hcZjPiUTmOsjlaGpDu/ZrD0= +cloud.google.com/go/policytroubleshooter v1.11.0 h1:TUxMBu2SAWmo8RtWhKcgv7LjbmUEA2t5U4+abA3lXik= +cloud.google.com/go/policytroubleshooter v1.11.0/go.mod h1:yTqY8n60lPLdU5bRbImn9IazrmF1o5b0VBshVxPzblQ= +cloud.google.com/go/privatecatalog v0.9.8/go.mod h1:ki1VWJTD/fSDJibXDmrm9Mn+Tzrl3sQZq4pZh3VBU+c= +cloud.google.com/go/privatecatalog v0.10.0 h1:9ZescTLuQE6idHyXAGh7nDxer8UJXfACW7DLIuhtvOs= +cloud.google.com/go/privatecatalog v0.10.0/go.mod h1:/Lci3oPTxJpixjiTBoiVv3PmUZg/IdhPvKHcLEgObuc= +cloud.google.com/go/pubsub v1.5.0/go.mod h1:ZEwJccE3z93Z2HWvstpri00jOg7oO4UZDtKhwDwqF0w= +cloud.google.com/go/pubsub v1.40.0/go.mod h1:BVJI4sI2FyXp36KFKvFwcfDRDfR8MiLT8mMhmIhdAeA= +cloud.google.com/go/pubsub v1.42.0 h1:PVTbzorLryFL5ue8esTS2BfehUs0ahyNOY9qcd+HMOs= +cloud.google.com/go/pubsub v1.42.0/go.mod h1:KADJ6s4MbTwhXmse/50SebEhE4SmUwHi48z3/dHar1Y= +cloud.google.com/go/pubsublite v1.8.2 h1:jLQozsEVr+c6tOU13vDugtnaBSUy/PD5zK6mhm+uF1Y= +cloud.google.com/go/pubsublite v1.8.2/go.mod h1:4r8GSa9NznExjuLPEJlF1VjOPOpgf3IT6k8x/YgaOPI= +cloud.google.com/go/recaptchaenterprise v1.3.1 h1:u6EznTGzIdsyOsvm+Xkw0aSuKFXQlyjGE9a4exk6iNQ= +cloud.google.com/go/recaptchaenterprise/v2 v2.13.1/go.mod h1:z7FFKUnrk8oKc5WwLnuj6ae3uOjZGYY7tf4FIRjQD3Y= +cloud.google.com/go/recaptchaenterprise/v2 v2.17.0 h1:aXFHIGiFseHKdYxPtBaM18BvvK6CrG6yYM+IoWu3WDQ= +cloud.google.com/go/recaptchaenterprise/v2 v2.17.0/go.mod h1:SS4QDdlmJ3NvbOMCXQxaFhVGRjvNMfoKCoCdxqXadqs= +cloud.google.com/go/recommendationengine v0.8.8/go.mod h1:XHm+7adVfxfllhSTUbKyhdqzFyk15lbeCqaULzpT5LM= +cloud.google.com/go/recommendationengine v0.9.0 h1:w8YMuIJdZxMEptNXSiXYdqaiCL2rTweOoO71RNtcxNE= +cloud.google.com/go/recommendationengine v0.9.0/go.mod h1:59ydKXFyXO4Y8S0Bk224sKfj6YvIyzgcpG6w8kXIMm4= +cloud.google.com/go/recommender v1.12.4/go.mod h1:ZA02CeWOdH3Pw377pofqtdrIkN+Wh4vnZdDHl08KR/c= +cloud.google.com/go/recommender v1.13.0 h1:ZyKUB5CddfFGD1qiTKbF3t59OxXPIE7+3lzy59i7hvs= +cloud.google.com/go/recommender v1.13.0/go.mod h1:+XkXkeB9k6zG222ZH70U6DBkmvEL0na+pSjZRmlWcrk= +cloud.google.com/go/redis v1.16.1/go.mod h1:KI+VIUVSXZUmbCkhCbbGitRqZGLmlz9BAhAyHgBTRE4= +cloud.google.com/go/redis v1.17.0 h1:YItghJ0VY98gJperCaTVEe7g+QZWz1nsN5ioJcSxkDY= +cloud.google.com/go/redis v1.17.0/go.mod h1:pzTdaIhriMLiXu8nn2CgiS52SYko0tO1Du4d3MPOG5I= +cloud.google.com/go/resourcemanager v1.9.8/go.mod h1:L3cVnfsZ1Wsw4f9hBNmZ7O1/ahJRPn8Ltg03ifaqsIw= +cloud.google.com/go/resourcemanager v1.10.0 h1:oqO6UInOJ1ZBBEYTKPJms2+FKdGmZEYAYBKyt0oqpEI= +cloud.google.com/go/resourcemanager v1.10.0/go.mod h1:kIx3TWDCjLnUQUdjQ/e8EXsS9GJEzvcY+YMOHpADxrk= +cloud.google.com/go/resourcesettings v1.7.1/go.mod h1:f2WI2DpFghwCHYfyht0vMX2UKqJ9FRbXixXHBT3BmFQ= +cloud.google.com/go/resourcesettings v1.8.0 h1:r2AHqVv9E6Toxiuwo905fFjy50pfKamehDBlQfhqblM= +cloud.google.com/go/resourcesettings v1.8.0/go.mod h1:/hleuSOq8E6mF1sRYZrSzib8BxFHprQXrPluWTuZ6Ys= +cloud.google.com/go/retail v1.17.1/go.mod h1:UXtxpeokEUhbMRgq2dJH08Z5QTZgRzYR6sGES87xDkA= +cloud.google.com/go/retail v1.18.0 h1:8Ck0ZsfHzEdhd4BAzHJ0YcPq7poCPMMHM3BLJ0yk4WE= +cloud.google.com/go/retail v1.18.0/go.mod h1:vaCabihbSrq88mKGKcKc4/FDHvVcPP0sQDAt0INM+v8= +cloud.google.com/go/run v1.3.8/go.mod h1:dFsJfGTEVGW37sCqzJ/kLMmRS2/wfwGsUMOEuv0ryL0= +cloud.google.com/go/run v1.5.0 h1:1hfJ4418lukwslnbuMZx/t4MxBd0FDo4d/38NvAP5Yo= +cloud.google.com/go/run v1.5.0/go.mod h1:Z4Tv/XNC/veO6rEpF0waVhR7vEu5RN1uJQ8dD1PeMtI= +cloud.google.com/go/scheduler v1.10.9/go.mod h1:nhiBshhr2jJggklptGgj33DF+aQ3/4CWaTeazS/8Qm0= +cloud.google.com/go/scheduler v1.11.0 h1:9Hc+L8YEgci20BFkQNsgsb5UJFfUbylfHAKgfXkNRWU= +cloud.google.com/go/scheduler v1.11.0/go.mod h1:RBSu5/rIsF5mDbQUiruvIE6FnfKpLd3HlTDu8aWk0jw= +cloud.google.com/go/secretmanager v1.13.2/go.mod h1:rB3lORY7QZrjACov35PX0KXMM0bKlbkL0/eFlS312wk= +cloud.google.com/go/secretmanager v1.14.0 h1:P2RRu2NEsQyOjplhUPvWKqzDXUKzwejHLuSUBHI8c4w= +cloud.google.com/go/secretmanager v1.14.0/go.mod h1:q0hSFHzoW7eRgyYFH8trqEFavgrMeiJI4FETNN78vhM= +cloud.google.com/go/security v1.17.1/go.mod h1:i/v+U4Jxs8mTFXmB/eYIYBdRl7mFmeo3VrcFw+r6e9o= +cloud.google.com/go/security v1.18.0 h1:CjBd67GVb+Oenjt4VsUw0RUQktSIgexTJN3UQta7XRE= +cloud.google.com/go/security v1.18.0/go.mod h1:oS/kRVUNmkwEqzCgSmK2EaGd8SbDUvliEiADjSb/8Mo= +cloud.google.com/go/securitycenter v1.31.0/go.mod h1:6nVpMYo9Q02wR7ql1L17R1vE2KNvcooSkyKoJWB4Ox4= +cloud.google.com/go/securitycenter v1.35.0 h1:XsBzOeMRGs0/JkXXkbjhjjtAtlVGPR1GZ235gH25XMk= +cloud.google.com/go/securitycenter v1.35.0/go.mod h1:gotw8mBfCxX0CGrRK917CP/l+Z+QoDchJ9HDpSR8eDc= +cloud.google.com/go/servicedirectory v1.11.8/go.mod h1:BCapDXmWzKx42Ffd/j8q7m5GNIH0JkolKhwK2quAm94= +cloud.google.com/go/servicedirectory v1.12.0 h1:uieHG59ROehbCEtd+YINNgjXEDyidH0ye+REZzDVe6Y= +cloud.google.com/go/servicedirectory v1.12.0/go.mod h1:lKKBoVStJa+8S+iH7h/YRBMUkkqFjfPirkOTEyYAIUk= +cloud.google.com/go/shell v1.7.8/go.mod h1:07qTjW9lCuFbkb2G0hzqvNELK5nwT5aSsn6Own/a5bE= +cloud.google.com/go/shell v1.8.0 h1:kCkIEXYPqrhHay46HjyhuOk/C1x7Qva4Lw968UVPcEo= +cloud.google.com/go/shell v1.8.0/go.mod h1:EoQR8uXuEWHUAMoB4+ijXqRVYatDCdKYOLAaay1R/yw= +cloud.google.com/go/spanner v1.7.0/go.mod h1:sd3K2gZ9Fd0vMPLXzeCrF6fq4i63Q7aTLW/lBIfBkIk= +cloud.google.com/go/spanner v1.64.0/go.mod h1:TOFx3pb2UwPsDGlE1gTehW+y6YlU4IFk+VdDHSGQS/M= +cloud.google.com/go/spanner v1.67.0 h1:h8xfobxh5lQu4qJVMPH+wSiyU+ZM6ZTxRNqGeu9iIVA= +cloud.google.com/go/spanner v1.67.0/go.mod h1:Um+TNmxfcCHqNCKid4rmAMvoe/Iu1vdz6UfxJ9GPxRQ= +cloud.google.com/go/speech v1.23.2/go.mod h1:U3p1TXiaFNMw/bs593/9cx6zehLkhcxx1aTMMnMgefM= +cloud.google.com/go/speech v1.25.0 h1:q/ZPuG5G//DHm9hBehaP5c/wuD2qP77OpiPQrE7hEbg= +cloud.google.com/go/speech v1.25.0/go.mod h1:2IUTYClcJhqPgee5Ko+qJqq29/bglVizgIap0c5MvYs= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.38.0/go.mod h1:tlUADB0mAb9BgYls9lq+8MGkfzOXuLrnHXlpHmvFJoY= +cloud.google.com/go/storage v1.41.0 h1:RusiwatSu6lHeEXe3kglxakAmAbfV+rhtPqA6i8RBx0= +cloud.google.com/go/storage v1.41.0/go.mod h1:J1WCa/Z2FcgdEDuPUY8DxT5I+d9mFKsCepp5vR6Sq80= +cloud.google.com/go/storagetransfer v1.10.7/go.mod h1:vc58NUgvigCZtNvmnMPir9QSsOri8yfOIpL4KvNsnnw= +cloud.google.com/go/storagetransfer v1.11.0 h1:URBQgN/5pyGGq/kE6z2HUYzAG2lhsvJWcjrNnqrjaxU= +cloud.google.com/go/storagetransfer v1.11.0/go.mod h1:arcvgzVC4HPcSikqV8D4h4PwrvGQHfKtbL4OwKPirjs= +cloud.google.com/go/talent v1.6.9/go.mod h1:wvqO09RhWW8EfZBPcG/2FRT9SDbi2vsVXfV+jMzJD/w= +cloud.google.com/go/talent v1.7.0 h1:2zqgG97bPfr259+xsJu1coFlvXzq+D9OD8mL8atgWeU= +cloud.google.com/go/talent v1.7.0/go.mod h1:8zfRPWWV4GNZuUmBwQub0gWAe2KaKhsthyGtV8fV1bY= +cloud.google.com/go/texttospeech v1.7.8/go.mod h1:ynSE4aBS/J/hwi8U8Aa+gwtOlwwCeymOniUSrx4eYyg= +cloud.google.com/go/texttospeech v1.8.0 h1:ZDftBGozfB/ITwvYiYHHeSDQ5Yc9azNphHMjIzakwVQ= +cloud.google.com/go/texttospeech v1.8.0/go.mod h1:hAgeA01K5QNfLy2sPUAVETE0L4WdEpaCMfwKH1qjCQU= +cloud.google.com/go/tpu v1.6.8/go.mod h1:+u/GrLBfe2MAf33D9cyU36dOy7XKtfar4IRrO2k5rCI= +cloud.google.com/go/tpu v1.7.0 h1:mRFFdrJ/DuymJehZ0SJXKgMQ1eoWtOhgrStf/eQrlsw= +cloud.google.com/go/tpu v1.7.0/go.mod h1:/J6Co458YHMD60nM3cCjA0msvFU/miCGMfx/nYyxv/o= +cloud.google.com/go/trace v1.10.8/go.mod h1:zu8PHOoxf4f4qUl81OFdVn02fmje7v79wo57Fz7oIPo= +cloud.google.com/go/trace v1.11.0 h1:UHX6cOJm45Zw/KIbqHe4kII8PupLt/V5tscZUkeiJVI= +cloud.google.com/go/trace v1.11.0/go.mod h1:Aiemdi52635dBR7o3zuc9lLjXo3BwGaChEjCa3tJNmM= +cloud.google.com/go/translate v1.10.3/go.mod h1:GW0vC1qvPtd3pgtypCv4k4U8B7EdgK9/QEF2aJEUovs= +cloud.google.com/go/translate v1.10.4/go.mod h1:8zF+IIQKPtqi2ebyISjgZDwj095cceaj0dDX2mI9WiU= +cloud.google.com/go/translate v1.12.0 h1:NoO50ycJWq7GPZEjuPz8Ye926uLko/gbxWnQ9mtQrDs= +cloud.google.com/go/translate v1.12.0/go.mod h1:4/C4shFIY5hSZ3b3g+xXWM5xhBLqcUqksSMrQ7tyFtc= +cloud.google.com/go/video v1.21.1/go.mod h1:m5bJKcdJ9sKTMJO6EWmtLXhmvEWbrDSSmzpo2sxTP9c= +cloud.google.com/go/video v1.23.0 h1:DTnNFkbpmPunk+V3WKmjs46EbdW5QevSy0KJ9JmlUus= +cloud.google.com/go/video v1.23.0/go.mod h1:EGLQv3Ce/VNqcl/+Amq7jlrnpg+KMgQcr6YOOBfE9oc= +cloud.google.com/go/videointelligence v1.11.8/go.mod h1:pwQD5fVcMPPAcovgt+ywF1OaLD+V1EDxG7RX4Q+1r4k= +cloud.google.com/go/videointelligence v1.12.0 h1:nM9O0Pw3XcQpLHHfSSlzbytBRXh5ATrEnY4Cbmv4RVs= +cloud.google.com/go/videointelligence v1.12.0/go.mod h1:3rjmafNpCEqAb1CElGTA7dsg8dFDsx7RQNHS7o088D0= +cloud.google.com/go/vision v1.2.0 h1:/CsSTkbmO9HC8iQpxbK8ATms3OQaX3YQUeTMGCxlaK4= +cloud.google.com/go/vision/v2 v2.8.3/go.mod h1:MeN2uM4T5MSOULtIIJEW/Ymr6It6eSP0ZdqCGuGKFXw= +cloud.google.com/go/vision/v2 v2.9.0 h1:q3psn2Ea+EgUH7nefR0S9k9u08QTYhUI3PPm44FNqnM= +cloud.google.com/go/vision/v2 v2.9.0/go.mod h1:sejxShqNOEucObbGNV5Gk85hPCgiVPP4sWv0GrgKuNw= +cloud.google.com/go/vmmigration v1.7.8/go.mod h1:ARowCnYGN1+cFTdMR6FMsUSHuC2v1PmLRM35JfanA8c= +cloud.google.com/go/vmmigration v1.8.0 h1:YH4XwJirujDvpPWVjzAxLUc97UfKs48+RDNpHzodRyc= +cloud.google.com/go/vmmigration v1.8.0/go.mod h1:+AQnGUabjpYKnkfdXJZ5nteUfzNDCmwbj/HSLGPFG5E= +cloud.google.com/go/vmwareengine v1.1.4/go.mod h1:v+UndgfEEMePkZ8eXqzzFODipi/ls657S3MoSLI9JZ4= +cloud.google.com/go/vmwareengine v1.3.0 h1:Yd8NnmkjUTWouvtQySzZJKzzUO+21hRnlji/oHjWRrc= +cloud.google.com/go/vmwareengine v1.3.0/go.mod h1:7W/C/YFpelGyZzRUfOYkbgUfbN1CK5ME3++doIkh1Vk= +cloud.google.com/go/vpcaccess v1.7.8/go.mod h1:fOd55qBAQiAFPA/hYwnOWgYNjcbvRMxd0rLvvojH/nU= +cloud.google.com/go/vpcaccess v1.8.0 h1:jJ6cyLNDcdQYZBXdqucqneR9D3MQzAoEmokE9gD5uVU= +cloud.google.com/go/vpcaccess v1.8.0/go.mod h1:7fz79sxE9DbGm9dbbIdir3tsJhwCxiNAs8aFG8MEhR8= +cloud.google.com/go/webrisk v1.9.8/go.mod h1:ywUL9x0E81fft6TYggLWc+HUaCkuhMBl/RHnG8q5d5M= +cloud.google.com/go/webrisk v1.10.0 h1:Knhx8eILUwXmH6UnKF5h5GLuLy1eRrasm21s6DQtOHQ= +cloud.google.com/go/webrisk v1.10.0/go.mod h1:ztRr0MCLtksoeSOQCEERZXdzwJGoH+RGYQ2qodGOy2U= +cloud.google.com/go/websecurityscanner v1.6.8/go.mod h1:VyEfLCEjX9PN6mhOzuuuIVKHQ9FLHPKsbSg+KxzTW8k= +cloud.google.com/go/websecurityscanner v1.7.0 h1:2+X6oSpyKlCPN43j5xXVHMBLajVsh4BYFUpQNUk6Y+Q= +cloud.google.com/go/websecurityscanner v1.7.0/go.mod h1:d5OGdHnbky9MAZ8SGzdWIm3/c9p0r7t+5BerY5JYdZc= +cloud.google.com/go/workflows v1.12.7/go.mod h1:W33pjrwjgNIDBYY5xdQfHeUxE3icFjO5x7Fh9kA4P2M= +cloud.google.com/go/workflows v1.13.0 h1:LHZQw+fkCWN/zRSHEWcwEnh8xHGt76yd/4Gf6Pt0zbU= +cloud.google.com/go/workflows v1.13.0/go.mod h1:StCuY3jhBj1HYMjCPqZs7J0deQLHPhF6hDtzWJaVF+Y= +contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +cosmossdk.io/api v0.7.0/go.mod h1:kJFAEMLN57y0viszHDPLMmieF0471o5QAwwApa+270M= +cosmossdk.io/api v0.7.4/go.mod h1:IcxpYS5fMemZGqyYtErK7OqvdM0C8kdW3dq8Q/XIG38= +cosmossdk.io/client/v2 v2.0.0-beta.3/go.mod h1:CZcL41HpJPOOayTCO28j8weNBQprG+SRiKX39votypo= +cosmossdk.io/core v0.11.0/go.mod h1:LaTtayWBSoacF5xNzoF8tmLhehqlA9z1SWiPuNC6X1w= +cosmossdk.io/depinject v1.0.0-alpha.4/go.mod h1:HeDk7IkR5ckZ3lMGs/o91AVUc7E596vMaOmslGFM3yU= +cosmossdk.io/errors v1.0.0/go.mod h1:+hJZLuhdDE0pYN8HkOrVNwrIOYvUGnn6+4fjnJs/oV0= +cosmossdk.io/log v1.2.0/go.mod h1:GNSCc/6+DhFIj1aLn/j7Id7PaO8DzNylUZoOYBL9+I4= +cosmossdk.io/log v1.3.1/go.mod h1:2/dIomt8mKdk6vl3OWJcPk2be3pGOS8OQaLUM/3/tCM= +cosmossdk.io/log v1.4.0/go.mod h1:k08v0Pyq+gCP6phvdI6RCGhLf/r425UT6Rk/m+o74rU= +cosmossdk.io/math v1.1.2/go.mod h1:l2Gnda87F0su8a/7FEKJfFdJrM0JZRXQaohlgJeyQh0= +cosmossdk.io/store v1.1.0/go.mod h1:oZfW/4Fc/zYqu3JmQcQdUJ3fqu5vnYTn3LZFFy8P8ng= +cosmossdk.io/x/tx v0.13.3/go.mod h1:I8xaHv0rhUdIvIdptKIqzYy27+n2+zBVaxO6fscFhys= +cosmossdk.io/x/tx v0.13.4/go.mod h1:BkFqrnGGgW50Y6cwTy+JvgAhiffbGEKW6KF9ufcDpvk= +cosmossdk.io/x/upgrade v0.1.1/go.mod h1:MNLptLPcIFK9CWt7Ra//8WUZAxweyRDNcbs5nkOcQy0= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= +filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/4meepo/tagalign v1.3.3/go.mod h1:Q9c1rYMZJc9dPRkbQPpcBNCLEmY2njbAsXhQOZFE2dE= +github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/Abirdcfly/dupword v0.0.11/go.mod h1:wH8mVGuf3CP5fsBTkfWwwwKTjDnVVCxtU8d8rgeVYXA= +github.com/Abirdcfly/dupword v0.0.14/go.mod h1:VKDAbxdY8YbKUByLGg8EETzYSuC4crm9WwI6Y3S0cLI= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 h1:cTp8I5+VIoKjsnZuH8vjyaysT/ses3EvZeaV/1UkF2M= +github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Antonboom/errname v0.1.9/go.mod h1:nLTcJzevREuAsgTbG85UsuiWpMpAqbKD1HNZ29OzE58= +github.com/Antonboom/errname v0.1.12/go.mod h1:bK7todrzvlaZoQagP1orKzWXv59X/x0W0Io2XT1Ssro= +github.com/Antonboom/nilnil v0.1.3/go.mod h1:iOov/7gRcXkeEU+EMGpBu2ORih3iyVEiWjeste1SJm8= +github.com/Antonboom/nilnil v0.1.7/go.mod h1:TP+ScQWVEq0eSIxqU8CbdT5DFWoHp0MbP+KMUO1BKYQ= +github.com/Antonboom/testifylint v1.2.0/go.mod h1:rkmEqjqVnHDRNsinyN6fPSLnoajzFwsCcguJgwADBkw= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0 h1:8q4SaHjFsClSvuVne0ID/5Ka8u3fcIHyqkLjcFpNRHQ= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 h1:Ma67P/GGprNwsslzEH6+Kb8nybI8jpDTm4Wmzu2ReK8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= +github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53 h1:sR+/8Yb4slttB4vD+b9btVEnWgL3Q00OBTzVT8B9C0c= +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/v6 v6.2.0 h1:EpcZ6SR9n28BUGtNJSvlBqf90IpjeFr36Tizxhn/oME= +github.com/CloudyKit/jet/v6 v6.2.0/go.mod h1:d3ypHeIRNo2+XyqnGA8s+aphtcVpjP5hPwP/Lzo7Ro4= +github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2 h1:j8J9LnhC6IikohLEYMAFX0xPQmgPez9vsj0rNQISkiE= +github.com/CosmWasm/wasmd v0.42.1-0.20230928145107-894076a25cb2/go.mod h1:3sCglc35LoFUGmh4a/auoJALitaE4qw+jAqK53ak7+s= +github.com/CosmWasm/wasmvm v1.4.0/go.mod h1:vW/E3h8j9xBQs9bCoijDuawKo9kCtxOaS8N8J7KFtkc= +github.com/CosmWasm/wasmvm v1.5.4 h1:Opqy65ubJ8bMsT08dn85VjRdsLJVPIAgIXif92qOMGc= +github.com/CosmWasm/wasmvm v1.5.4/go.mod h1:Q0bSEtlktzh7W2hhEaifrFp1Erx11ckQZmjq8FLCyys= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= +github.com/GaijinEntertainment/go-exhaustruct/v3 v3.2.0/go.mod h1:Nl76DrGNJTA1KJ0LePKBw/vznBX1EHbAZX8mwjR82nI= +github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190129172621-c8b1d7a94ddf/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= +github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 h1:oVLqHXhnYtUwM89y9T1fXGaK9wTkXHgNp8/ZNMQzUxE= +github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0/go.mod h1:dppbR7CwXD4pgtV9t3wD1812RaLDcBjtblcDF5f1vI0= +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/Joker/jade v1.1.3 h1:Qbeh12Vq6BxURXT1qZBRHsDxeURB8ztcL6f3EXSGeHk= +github.com/Joker/jade v1.1.3/go.mod h1:T+2WLyt7VH6Lp0TRxQrUYEs64nRc83wkMQrfeIQKduM= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= +github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/sprig v2.15.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= +github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06 h1:KkH3I3sJuOLP3TjA/dfr4NAY8bghDwnXiU7cTKxQqo0= +github.com/Shopify/goreferrer v0.0.0-20220729165902-8cddb4f5de06/go.mod h1:7erjKLwalezA0k99cWs5L11HWOAPNjdUZ6RxH1BXbbM= +github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= +github.com/aclements/go-gg v0.0.0-20170118225347-6dbb4e4fefb0/go.mod h1:55qNq4vcpkIuHowELi5C8e+1yUHtoLoOUR9QU5j7Tes= +github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794 h1:xlwdaKcTNVW4PtpQb8aKA4Pjy0CdJHEqvFbAnvR5m2g= +github.com/aclements/go-moremath v0.0.0-20210112150236-f10218a38794/go.mod h1:7e+I0LQFUI9AXWxOfsQROs9xPhoJtbsyWcjJqDd4KPY= +github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/aead/siphash v1.0.1 h1:FwHfE/T45KPKYuuSAKyyvE+oPWcaQ+CUmFW0bPlM+kg= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20210923152817-c3b6e2f0c527/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/kingpin/v2 v2.4.0 h1:f48lwail6p8zpO1bC4TxtqACaGqHYA22qkHjHpqDjYY= +github.com/alecthomas/kingpin/v2 v2.4.0/go.mod h1:0gyi0zQnjuFk8xrkNKamJoyUo382HRL7ATRpFZCw6tE= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 h1:s6gZFSlWYmbqAuRjVTiNNhvNRfY2Wxp9nhfyel4rklc= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= +github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= +github.com/apache/arrow/go/v15 v15.0.2 h1:60IliRbiyTWCWjERBCkO1W4Qun9svcYoZrSLcyOsMLE= +github.com/apache/arrow/go/v15 v15.0.2/go.mod h1:DGXsR3ajT524njufqf95822i+KTh+yea1jass9YXgjA= +github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= +github.com/ashanbrown/forbidigo v1.5.1/go.mod h1:Y8j9jy9ZYAEHXdu723cUlraTqbzjKF1MUyfOKL+AjcU= +github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= +github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= +github.com/avast/retry-go/v4 v4.3.4/go.mod h1:rv+Nla6Vk3/ilU0H51VHddWHiwimzX66yZ0JT6T+UvE= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= +github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v1.9.1/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2 v1.21.2 h1:+LXZ0sgo8quN9UOKXXzAWRT3FWd4NxeXWOZom9pE7GA= +github.com/aws/aws-sdk-go-v2 v1.21.2/go.mod h1:ErQhvNuEMhJjweavOYhxVkn2RUx7kQXVATHrjKtxIpM= +github.com/aws/aws-sdk-go-v2/config v1.18.45 h1:Aka9bI7n8ysuwPeFdm77nfbyHCAKQ3z9ghB3S/38zes= +github.com/aws/aws-sdk-go-v2/config v1.18.45/go.mod h1:ZwDUgFnQgsazQTnWfeLWk5GjeqTQTL8lMkoE1UXzxdE= +github.com/aws/aws-sdk-go-v2/credentials v1.13.43 h1:LU8vo40zBlo3R7bAvBVy/ku4nxGEyZe9N8MqAeFTzF8= +github.com/aws/aws-sdk-go-v2/credentials v1.13.43/go.mod h1:zWJBz1Yf1ZtX5NGax9ZdNjhhI4rgjfgsyk6vTY1yfVg= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13 h1:PIktER+hwIG286DqXyvVENjgLTAwGgoeriLDD5C+YlQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.13/go.mod h1:f/Ib/qYjhV2/qdsf79H3QP/eRE4AkVyEf6sk7XfZ1tg= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43 h1:nFBQlGtkbPzp/NjZLuFxRqmT91rLJkgvsEQs68h962Y= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.43/go.mod h1:auo+PiyLl0n1l8A0e8RIeR8tOzYPfZZH/JNlrJ8igTQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37 h1:JRVhO25+r3ar2mKGP7E0LDl8K9/G36gjlqca5iQbaqc= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.37/go.mod h1:Qe+2KtKml+FEsQF/DHmDV+xjtche/hwoF75EG4UlHW8= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45 h1:hze8YsjSh8Wl1rYa1CJpRmXP21BvOBuc76YhW0HsuQ4= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.45/go.mod h1:lD5M20o09/LCuQ2mE62Mb/iSdSlCNuj6H5ci7tW7OsE= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1 h1:w/fPGB0t5rWwA43mux4e9ozFSH5zF1moQemlA131PWc= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnOQKwDc7H1KwXTz+h61oUSHyhV0b3o= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37 h1:WWZA/I2K4ptBS1kg0kV1JbBtG/umed0vwHRrmcr9z7k= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.37/go.mod h1:vBmDnwWXWxNPFRMmG2m/3MKOe+xEcMDo1tanpaWCcck= +github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2 h1:/RPQNjh1sDIezpXaFIkZb7MlXnSyAqjVdAwcJuGYTqg= +github.com/aws/aws-sdk-go-v2/service/route53 v1.30.2/go.mod h1:TQZBt/WaQy+zTHoW++rnl8JBrmZ0VO6EUbVua1+foCA= +github.com/aws/aws-sdk-go-v2/service/sso v1.15.2 h1:JuPGc7IkOP4AaqcZSIcyqLpFSqBWK32rM9+a1g6u73k= +github.com/aws/aws-sdk-go-v2/service/sso v1.15.2/go.mod h1:gsL4keucRCgW+xA85ALBpRFfdSLH4kHOVSnLMSuBECo= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3 h1:HFiiRkf1SdaAmV3/BHOFZ9DjFynPHj8G/UIO1lQS+fk= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.17.3/go.mod h1:a7bHA82fyUXOm+ZSWKU6PIoBxrjSprdLoM8xPYvzYVg= +github.com/aws/aws-sdk-go-v2/service/sts v1.23.2 h1:0BkLfgeDjfZnZ+MhB3ONb01u9pwFYTCZVhlsSSBvlbU= +github.com/aws/aws-sdk-go-v2/service/sts v1.23.2/go.mod h1:Eows6e1uQEsc4ZaHANmsPRzAKcVDrcmjjWiih2+HUUQ= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/aws/smithy-go v1.15.0 h1:PS/durmlzvAFpQHDs4wi4sNNP9ExsqZh6IlfdHXgKK8= +github.com/aws/smithy-go v1.15.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= +github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= +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/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/bits-and-blooms/bitset v1.8.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= +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/bombsimon/wsl/v4 v4.2.1/go.mod h1:Xu/kDxGZTofQcDGCtQe9KCzhHphIe0fDuyWTxER9Feo= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/breml/bidichk v0.2.4/go.mod h1:7Zk0kRFt1LIZxtQdl9W9JwGAcLTTkOs+tN7wuEYGJ3s= +github.com/breml/errchkjson v0.3.1/go.mod h1:XroxrzKjdiutFyW3nWhw34VGg7kiMsDQox73yWCGI2U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo= +github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd h1:R/opQEbFEy9JGkIguV40SvRY1uliPX8ifOvi6ICsFCw= +github.com/btcsuite/goleveldb v1.0.0 h1:Tvd0BfvqX9o823q1j2UZ/epQo09eJh6dTcRp79ilIN4= +github.com/btcsuite/snappy-go v1.0.0 h1:ZxaA6lo2EpxGddsA8JwWOcxlzRybb444sgmeJQMJGQE= +github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792 h1:R8vQdOQdZ9Y3SkEwmHoWBmX1DNXhXZqlTpq6s4tyJGc= +github.com/btcsuite/winsvc v1.0.0 h1:J9B4L7e3oqhXOcm+2IuNApwzQec85lE+QaikUcCs+dk= +github.com/bufbuild/buf v1.15.1 h1:v7sK2uMEsGX4Z2hvu+xiMheH3C3AKBGfxPBgdUZYDQ8= +github.com/bufbuild/buf v1.15.1/go.mod h1:TQeGKam1QMfHy/xsSnnMpxN3JK5HBb6aNvZj4m52gkE= +github.com/bufbuild/connect-go v1.5.2 h1:G4EZd5gF1U1ZhhbVJXplbuUnfKpBZ5j5izqIwu2g2W8= +github.com/bufbuild/connect-go v1.5.2/go.mod h1:GmMJYR6orFqD0Y6ZgX8pwQ8j9baizDrIQMm1/a6LnHk= +github.com/bufbuild/protocompile v0.5.1/go.mod h1:G5iLmavmF4NsYtpZFvE3B/zFch2GIY8+wjsYLR/lc40= +github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/butuzov/mirror v1.1.0/go.mod h1:8Q0BdQU6rC6WILDiBM60DBfvV78OLJmMmixe7GF45AE= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/casbin/casbin/v2 v2.37.0 h1:/poEwPSovi4bTOcP752/CsTQiRz2xycyVKFG7GUhbDw= +github.com/casbin/casbin/v2 v2.37.0/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= +github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chavacava/garif v0.0.0-20230227094218-b8c73b2037b8/go.mod h1:gakxgyXaaPkxvLw1XQxNGK4I37ys9iBRzNUx/B7pUCo= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/cheekybits/is v0.0.0-20150225183255-68e9c0620927/go.mod h1:h/aW8ynjgkuj+NQRlZcDbAbM1ORAbXjXX77sX7T289U= +github.com/cheggaaa/pb v1.0.27 h1:wIkZHkNfC7R6GI5w7l/PdAdzXzlrbcI3p8OAlnkTsnc= +github.com/chigopher/pathlib v0.12.0 h1:1GM7fN/IwXXmOHbd1jkMqHD2wUhYqUvafgxTwmLT/q8= +github.com/chigopher/pathlib v0.12.0/go.mod h1:EJ5UtJ/sK8Nt6q3VWN+EwZLZ3g0afJiG8NegYiQQ/gQ= +github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= +github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs= +github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= +github.com/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436/go.mod h1:ssEHJqFI1f4a5sLtZ7qeYJ7/75LzDgzbBv4C9as3y3w= +github.com/circlefin/noble-fiattokenfactory v0.0.0-20231026180023-32fd993c1f60/go.mod h1:rcUYSPnkN4M+epaMh2Y31V16rMDFQiY+OjRF+dwHDxE= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY= +github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA= +github.com/ckaznocha/intrange v0.1.1/go.mod h1:RWffCw/vKBwHeOEwWdCikAtY0q4gGt8VhJZEEA5n+RE= +github.com/clbanning/mxj v1.8.4 h1:HuhwZtbyvyOw+3Z1AowPkU87JkJUSv751ELWaiTpj8I= +github.com/clbanning/mxj v1.8.4/go.mod h1:BVjHeAH+rl9rs6f+QIpeRl0tfu10SXn1pUSa5PVGJng= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= +github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cloudflare/cloudflare-go v0.79.0 h1:ErwCYDjFCYppDJlDJ/5WhsSmzegAUe2+K9qgFyQDg3M= +github.com/cloudflare/cloudflare-go v0.79.0/go.mod h1:gkHQf9xEubaQPEuerBuoinR9P8bf8a05Lq0X6WKy1Oc= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe h1:QQ3GSy+MqSHxm/d8nCtnAiZdYFd45cYZPs8vOOIYKfk= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240822171458-6449f94b4d59 h1:fLZ97KE86ELjEYJCEUVzmbhfzDxHHGwBrDVMd4XL6Bs= +github.com/cncf/xds/go v0.0.0-20240822171458-6449f94b4d59/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +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/datadriven v1.0.3-0.20230413201302-be42291fc80f/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.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677/go.mod h1:890yq1fUb9b6dGNwssgeUO5vQV9qfXnCPxAJhBQfXw0= +github.com/cockroachdb/pebble v0.0.0-20230525220056-bb4fc9527b3b/go.mod h1:TkdVsGYRqtULUppt2RbC+YaKtTHnHoWa2apfFrSKABw= +github.com/cockroachdb/pebble v1.1.0/go.mod h1:sEHm5NOXxyiAoKWhoFxT8xMgd/f3RA6qUqQ1BXKrh2E= +github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM= +github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/cometbft/cometbft v0.38.9/go.mod h1:xOoGZrtUT+A5izWfHSJgl0gYZUE7lu7Z2XIS1vWG/QQ= +github.com/cometbft/cometbft v0.38.10/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= +github.com/cometbft/cometbft v0.38.11/go.mod h1:jHPx9vQpWzPHEAiYI/7EDKaB1NXhK6o3SArrrY8ExKc= +github.com/cometbft/cometbft-db v0.9.1/go.mod h1:iliyWaoV0mRwBJoizElCwwRA9Tf7jZJOURcRZF9m60U= +github.com/cometbft/cometbft-db v0.10.0/go.mod h1:7RR7NRv99j7keWJ5IkE9iZibUTKYdtepXTp7Ra0FxKk= +github.com/cometbft/cometbft-db v0.11.0/go.mod h1:GDPJAC/iFHNjmZZPN8V8C1yr/eyityhi2W1hz2MGKSc= +github.com/confio/ics23/go v0.9.1/go.mod h1:4LPZ2NYqnYIVRklaozjNR1FScgDJ2s5Xrp+e/mYVRak= +github.com/consensys/gnark-crypto v0.10.0/go.mod h1:Iq/P3HHl0ElSjsg2E1gsMwhAyxnxoKK5nVyZKd+/KhU= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/containerd v1.6.8/go.mod h1:By6p5KqPK0/7/CgO/A6t/Gz+CUYUu2zf1hUaaymVXB0= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible h1:bXhRBIXoTm9BYHS3gE0TtQuyNZyeEMux2sDi4oo5YOo= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190620071333-e64a0ec8b42a/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +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 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf h1:CAKfRE2YtTUIjjh1bkBtyYFaUT/WmOqsJjgtihT0vMI= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/cosmos-db v1.0.0/go.mod h1:iBvi1TtqaedwLdcrZVYRSSCb6eSy61NLj4UNmdIgs0U= +github.com/cosmos/cosmos-proto v1.0.0-beta.3/go.mod h1:t8IASdLaAq+bbHbjq4p960BvcTqtwuAxid3b/2rOD6I= +github.com/cosmos/cosmos-sdk v0.50.6/go.mod h1:lVkRY6cdMJ0fG3gp8y4hFrsKZqF4z7y0M2UXFb9Yt40= +github.com/cosmos/cosmos-sdk v0.50.7/go.mod h1:84xDDJEHttRT7NDGwBaUOLVOMN0JNE9x7NbsYIxXs1s= +github.com/cosmos/cosmos-sdk v0.50.9/go.mod h1:TMH6wpoYBcg7Cp5BEg8fneLr+8XloNQkf2MRNF9V6JE= +github.com/cosmos/gogoproto v1.4.3/go.mod h1:0hLIG5TR7IvV1fme1HCFKjfzW9X2x0Mo+RooWXCnOWU= +github.com/cosmos/gogoproto v1.4.11/go.mod h1:/g39Mh8m17X8Q/GDEs5zYTSNaNnInBSohtaxzQnYq1Y= +github.com/cosmos/gogoproto v1.5.0/go.mod h1:iUM31aofn3ymidYG6bUR5ZFrk+Om8p5s754eMUcyp8I= +github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= +github.com/cosmos/iavl v1.1.2/go.mod h1:jLeUvm6bGT1YutCaL2fIar/8vGUE8cPZvh/gXEWDaDM= +github.com/cosmos/ibc-go/v4 v4.5.0 h1:pjYO0/PbqbRxcRyptwjA6M4hUSnzxEoGp5G56/VVQoQ= +github.com/cosmos/ibc-go/v4 v4.5.0/go.mod h1:2EOi40Bx/j6rJrtP1ui8k8yUAMpGybmL1EjakYqYv5U= +github.com/cosmos/ibc-go/v4 v4.5.1 h1:+P73X7aIikGAXBUJ9vP9rEbvdSuekt3KGXmAWCSYets= +github.com/cosmos/ibc-go/v4 v4.5.1/go.mod h1:2EOi40Bx/j6rJrtP1ui8k8yUAMpGybmL1EjakYqYv5U= +github.com/cosmos/ibc-go/v4 v4.6.0/go.mod h1:ksiZHUypws0NVP50E3ea0ivVFO/bfS8q8yLg8yZ2ATQ= +github.com/cosmos/ibc-go/v8 v8.3.2/go.mod h1:WVVIsG39jGrF9Cjggjci6LzySyWGloz194sjTxiGNIE= +github.com/cosmos/ics23/go v0.10.0/go.mod h1:ZfJSmng/TBNTBkFemHHHj5YY7VAU/MBU980F4VU1NG0= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/crate-crypto/go-ipa v0.0.0-20220523130400-f11357ae11c7/go.mod h1:gFnFS95y8HstDP6P9pPwzrxOOC5TRDkwbM+ao15ChAI= +github.com/crate-crypto/go-kzg-4844 v0.2.0/go.mod h1:SBP7ikXEgDnUPONgm33HtuDZEDtWa3L4QtN1ocJSEQ4= +github.com/creachadair/command v0.0.0-20220916173946-56a74cdd66b6 h1:uKuolOJonQOb/2+z/wFSJeVREP6fSoigr/X4Wlfhwwg= +github.com/creachadair/command v0.0.0-20220916173946-56a74cdd66b6/go.mod h1:jN7ZJM5YSVtD3SHmkAdN/cOC1dXiqg2Y9K5Sr5a8Nxw= +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/go.mod h1:qiXUOSrbwAY3u0JPGTzObbE3yf9hcXHDKBZ2ZjpCbgM= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/cristalhq/acmd v0.12.0/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c h1:/ovYnF02fwL0kvspmy9AuyKg1JhdTRUgPw4nUxd9oZM= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/daixiang0/gci v0.10.1/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/daixiang0/gci v0.12.3/go.mod h1:xtHP9N7AHdNvtRNfcx9gwTDfw7FRJx4bZUsiEfiNNAI= +github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/deckarep/golang-set/v2 v2.1.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= +github.com/decred/dcrd/lru v1.0.0 h1:Kbsb1SFDsIlaupWPwsPp+dkxiBY1frcS07PCPgotKz8= +github.com/deepmap/oapi-codegen v1.6.0 h1:w/d1ntwh91XI0b/8ja7+u5SvA4IFfM0UNNLmiDR1gg0= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2 h1:SegyeYGcdi0jLLrpbCMoJxnUUn8GBXHsvr4rbzjuhfU= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger v1.6.2 h1:mNw0qs90GVgGGWylh0umH5iag1j6n/PeJtNvL6KY/x8= +github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= +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/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/djherbis/atime v1.1.0/go.mod h1:28OF6Y8s3NQWwacXc5eZTsEsiMzp7LF8MbXE+XJPdBE= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= +github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/docker/cli v23.0.1+incompatible h1:LRyWITpGzl2C9e9uGxzisptnxAn1zfZKXy13Ul2Q5oM= +github.com/docker/cli v23.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v23.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= +github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/donovanhide/eventsource v0.0.0-20210830082556-c59027999da0 h1:C7t6eeMaEQVy6e8CarIhscYQlNmw5e3G36y7l7Y21Ao= +github.com/donovanhide/eventsource v0.0.0-20210830082556-c59027999da0/go.mod h1:56wL82FO0bfMU5RvfXoIwSOP2ggqqxT+tAfNEIyxuHw= +github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja v0.0.0-20230122112309-96b1610dd4f7/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= +github.com/dop251/goja v0.0.0-20230605162241-28ee0ee714f3 h1:+3HCtB74++ClLy8GgjUQYeC8R4ILzVcIe8+5edAJJnE= +github.com/dop251/goja v0.0.0-20230605162241-28ee0ee714f3/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= +github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d h1:W1n4DvpzZGOISgp7wWNtraLcHtnmnTwBlJidqtMIuwQ= +github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385 h1:clC1lXBpe2kTj2VHdaIu9ajZQe4kcEY9j0NsnDDBZ3o= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= +github.com/elastic/gosigar v0.14.2 h1:Dg80n8cr90OZ7x+bAax/QjoW/XqTI11RmA79ZwIm9/4= +github.com/elastic/gosigar v0.14.2/go.mod h1:iXRIGg2tLnu7LBdpqzyQfGDEidKCfWcCMS0WKyPWoMs= +github.com/emicklei/dot v1.4.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= +github.com/envoyproxy/go-control-plane v0.12.0/go.mod h1:ZBTaoJ23lqITozF0M6G4/IragXCQKCnYbmlmtHvwRG0= +github.com/envoyproxy/go-control-plane v0.12.1-0.20240621013728-1eb8caab5155 h1:IgJPqnrlY2Mr4pYB6oaMKvFvwJ9H+X6CCY5x1vCTcpc= +github.com/envoyproxy/go-control-plane v0.12.1-0.20240621013728-1eb8caab5155/go.mod h1:5Wkq+JduFtdAXihLmeTJf+tRYIT4KBc2vPXDhwVo1pA= +github.com/envoyproxy/go-control-plane v0.13.0 h1:HzkeUz1Knt+3bK+8LG1bxOO/jzWZmdxpwC51i202les= +github.com/envoyproxy/go-control-plane v0.13.0/go.mod h1:GRaKG3dwvFoTg4nj7aXdZnvMg4d7nvT/wl9WgVXn3Q8= +github.com/envoyproxy/protoc-gen-validate v0.0.14/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= +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/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/ethereum/c-kzg-4844 v0.2.0/go.mod h1:WI2Nd82DMZAAZI1wV2neKGost9EKjvbpQR9OqE5Qqa8= +github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/fgprof v0.9.3 h1:VvyZxILNuCiUCSXtPtYmmtGvb65nqXh2QFWc0Wpf2/g= +github.com/felixge/fgprof v0.9.3/go.mod h1:RdbpDgzqYVh/T9fPELJyV7EYJuHB55UTEULNun8eiPw= +github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/ferranbt/fastssz v0.1.2 h1:Dky6dXlngF6Qjc+EfDipAkE83N5I5DE68bY6O0VLNPk= +github.com/ferranbt/fastssz v0.1.2/go.mod h1:X5UPrE2u1UJjxHA8X54u04SBwdAQjG2sFtWs39YxyWs= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e h1:bBLctRc7kr01YGvaDfgLbTwjFNW5jdp5y5rj8XXBHfY= +github.com/fjl/gencodec v0.0.0-20230517082657-f9840df7b83e/go.mod h1:AzA8Lj6YtixmJWL+wkKoBGsLWy9gFrAzi4g+5bCKwpY= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c= +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/flosch/pongo2/v4 v4.0.2 h1:gv+5Pe3vaSVmiJvh/BZa82b7/00YUGm0PIyVVLop0Hw= +github.com/flosch/pongo2/v4 v4.0.2/go.mod h1:B5ObFANs/36VwxxlgKpdchIJHMvHB562PW+BWPhwZD8= +github.com/flynn/noise v1.0.0 h1:DlTHqmzmvcEiKj+4RYo/imoswx/4r6iBlCMfVtrMXpQ= +github.com/flynn/noise v1.0.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/francoispqt/gojay v1.2.13 h1:d2m3sFjloqoIUQU3TsHBgj6qg/BVGlTBeHDUmyJnXKk= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= +github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61 h1:IZqZOB2fydHte3kUgxrzK5E1fW7RQGeDwE8F/ZZnUYc= +github.com/garslo/gogen v0.0.0-20170306192744-1d203ffc1f61/go.mod h1:Q0X6pkwTILDlzrGEckF6HKjXe48EgsY/l7K7vhY4MW8= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= +github.com/gballet/go-verkle v0.0.0-20220902153445-097bd83b7732 h1:AB7YjNrzlVHsYz06zCULVV2zYCEft82P86dSmtwxKL0= +github.com/gballet/go-verkle v0.0.0-20220902153445-097bd83b7732/go.mod h1:o/XfIXWi4/GqbQirfRm5uTbXMG5NpqxkxblnbZ+QM9I= +github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko= +github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= +github.com/gdamore/tcell/v2 v2.7.4 h1:sg6/UnTM9jGpZU+oFYAsDahfchWAFW8Xx2yFinNSAYU= +github.com/gdamore/tcell/v2 v2.7.4/go.mod h1:dSXtXTSK0VsW1biw65DZLZ2NKr7j0qP/0J7ONmsraWg= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0 h1:6awGqF5nG5zkVpMsAih1QH4VgzS8phTxECUWIFo7zko= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.23.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9 h1:r5GgOLGbza2wVHRzK7aAj6lWZjfbAwiu/RDCVOKjRyM= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghostiam/protogetter v0.3.5/go.mod h1:7lpeDnEJ1ZjL/YtyoN99ljO4z0pd3H0d18/t2dPBxHw= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= +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-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= +github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-critic/go-critic v0.7.0/go.mod h1:moYzd7GdVXE2C2hYTwd7h0CPcqlUeclsyBRwMa38v64= +github.com/go-critic/go-critic v0.11.2/go.mod h1:OePaicfjsf+KPy33yq4gzv6CO7TEQ9Rom6ns1KsJnl8= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-playground/validator/v10 v10.11.1/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= +github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= +github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= +github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.1.0/go.mod h1:sedf7VIdCL22LD8qIvv7Nn9MuWJruQA/ysswh64lffQ= +github.com/go-toolsmith/pkgload v1.2.2/go.mod h1:R2hxLNRKuAsiXCo2i5J6ZQPhnPMOVtU+f0arbFPWCus= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-zookeeper/zk v1.0.2 h1:4mx0EYENAdX/B/rbunjlt5+4RTA/a9SMHBRuSKdGxPM= +github.com/go-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= +github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk= +github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gofrs/uuid v4.4.0+incompatible h1:3qXRTX8/NbyulANqlc0lchS1gqAVxRgsuW1YrTJupqA= +github.com/gofrs/uuid v4.4.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid/v5 v5.0.0 h1:p544++a97kEL+svbcFbCQVM9KFu0Yo25UoISXGNNH9M= +github.com/gofrs/uuid/v5 v5.0.0/go.mod h1:CDOjlDMVAtN56jqyRUZh58JT31Tiw7/oQyEXZV+9bD8= +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/gogo/status v1.1.0 h1:+eIkrewn5q6b30y+g/BJINVVdi2xH7je5MPJ3ZPK3JA= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.2.0/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +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/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/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= +github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e/go.mod h1:Pm5KhLPA8gSnQwrQ6ukebRcapGb/BG9iUkdaiCcGHJM= +github.com/golangci/golangci-lint v1.52.0/go.mod h1:wlTh+d/oVlgZC2yCe6nlxrxNAnuhEQC0Zdygoh72Uak= +github.com/golangci/golangci-lint v1.57.2/go.mod h1:ApiG3S3Ca23QyfGp5BmsorTiVxJpr5jGiNS0BkdSidg= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +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.0/go.mod h1:W6O/bwV6lGDxUCChm2ykw9NQdd5bYd1Xkjo88UcWyJc= +github.com/golangci/misspell v0.4.1/go.mod h1:9mAN1quEo3DlpbaIKKyEvRxK1pwqR9s/Sea1bJCtlNI= +github.com/golangci/modinfo v0.3.3/go.mod h1:wytF1M5xl9u0ij8YSvhkEVPP3M5Mc7XLl1pxH3B2aUM= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= +github.com/golangci/revgrep v0.5.2/go.mod h1:bjAMA+Sh/QUfTDcHzxfyHxr4xKvllVr/0sCv2e7jJHA= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= +github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= +github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A= +github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= +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/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/certificate-transparency-go v1.1.1/go.mod h1:FDKqPvSXawb2ecErVRrD+nfy23RCzyl7eqVCEmlT1Zs= +github.com/google/flatbuffers v1.12.1 h1:MVlul7pQNoDzWRLTw5imwYsl+usrS1TXG2H4jg6ImGw= +github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/generative-ai-go v0.17.0/go.mod h1:JYolL13VG7j79kM5BtHz4qwONHkeJQzOCkKXnpqtS/E= +github.com/google/go-containerregistry v0.13.0 h1:y1C7Z3e149OJbOPDBxLYR8ITPz8dTKqQwjErKVHJC8k= +github.com/google/go-containerregistry v0.13.0/go.mod h1:J9FQ+eSS4a1aC2GNZxvNpbWhgp0487v+cgiilB4FqDo= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-pkcs11 v0.3.0 h1:PVRnTgtArZ3QQqTGtbtjtnIkzl2iY2kt24yqbrf7td8= +github.com/google/go-pkcs11 v0.3.0/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gopacket v1.1.19 h1:ves8RnFZPGiFnTS0uPQStjwru6uO6h+nlr9j6fL7kF8= +github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo/Vo+TKTo= +github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10 h1:CqYfpuYIjnlNxM3msdyPRKabhXZWbKjf3Q8BWROFBso= +github.com/google/pprof v0.0.0-20230228050547-1710fef4ab10/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/safehtml v0.0.2/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= +github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE= +github.com/google/trillian v1.3.11/go.mod h1:0tPraVHrSDkA3BO6vKX67zgLXs6SsOAbHEivX+9mPgw= +github.com/google/uuid v0.0.0-20161128191214-064e2069ce9c/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.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/cloud-bigtable-clients-test v0.0.2 h1:S+sCHWAiAc+urcEnvg5JYJUOdlQEm/SEzQ/c/IdAH5M= +github.com/googleapis/cloud-bigtable-clients-test v0.0.2/go.mod h1:mk3CrkrouRgtnhID6UZQDK3DrFFa7cYCAJcEmNsHYrY= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e h1:CYRpN206UTHUinz3VJoLaBdy1gEGeJNsqT0mvswDcMw= +github.com/googleapis/gax-go v0.0.0-20161107002406-da06d194a00e/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.12.3/go.mod h1:AKloxT6GtNbaLm8QTNSidHUVsHYcBHwWRvkNFJUQcS4= +github.com/googleapis/gax-go/v2 v2.12.4/go.mod h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI= +github.com/googleapis/gax-go/v2 v2.12.5 h1:8gw9KZK8TiVKB6q3zHY3SBzLnrGp6HQjyfYBYGmXdxA= +github.com/googleapis/gax-go/v2 v2.12.5/go.mod h1:BUDKcWo+RaKq5SC9vVYL0wLADa3VcfswbOMMRmB9H3E= +github.com/googleapis/go-type-adapters v1.0.0 h1:9XdMn+d/G57qq1s8dNc5IesGCXHf6V2HZ2JwRxfA2tA= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720 h1:zC34cGQu69FG7qzJ3WiKW244WfhDC3xxYMeNOX2gtUQ= +github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= +github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= +github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= +github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= +github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +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/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/guptarohit/asciigraph v0.5.5 h1:ccFnUF8xYIOUPPY3tmdvRyHqmn1MYI9iv1pLKX+/ZkQ= +github.com/guptarohit/asciigraph v0.5.5/go.mod h1:dYl5wwK4gNsnFf9Zp+l06rFiDZ5YtXM6x7SRWZ3KGag= +github.com/hashicorp/consul/api v1.28.2 h1:mXfkRHrpHN4YY3RqL09nXU1eHKLNiuAN4kHvDQ16k/8= +github.com/hashicorp/consul/api v1.28.2/go.mod h1:KyzqzgMEya+IZPcD65YFoOVAgPpbfERu4I/tzG6/ueE= +github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= +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-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-metrics v0.5.1/go.mod h1:KEjodfebIOuBYSAe/bHTm+HChmKSxAOXPBieMLYozDE= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +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.7.4 h1:ZQgVdpTdAL7WpMIwLzCfbalOcSUdkDZnpUv3/+BxzFA= +github.com/hashicorp/go-retryablehttp v0.7.4/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5 h1:l2zaLDubNhW4XO3LnliVj0GXO3+/CGNJAg1dcN2Fpfw= +github.com/hashicorp/golang-lru/arc/v2 v2.0.5/go.mod h1:ny6zBSQZi2JxIeYcv7kt2sH2PXJtirBN7RDhRpxPkxU= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= +github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= +github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/hudl/fargo v1.4.0 h1:ZDDILMbB37UlAVLlWcJ2Iz1XuahZZTDZfdCKeclfq2s= +github.com/hudl/fargo v1.4.0/go.mod h1:9Ai6uvFy5fQNq6VPKtg+Ceq1+eTY4nKUlR2JElEOcDo= +github.com/huin/goupnp v1.0.3/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= +github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/hydrogen18/memlistener v1.0.0 h1:JR7eDj8HD6eXrc5fWLbSUnfcQFL06PYvCc0DKQnWfaU= +github.com/hydrogen18/memlistener v1.0.0/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20220517205856-0058ec4f073c/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465 h1:KwWnWVWCNtNq/ewIX7HIKnELmEx2nDP42yskD/pi7QE= +github.com/ianlancetaylor/demangle v0.0.0-20240312041847-bd984b5ce465/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= +github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb-client-go/v2 v2.4.0 h1:HGBfZYStlx3Kqvsv1h2pJixbCl/jhnFtxpKFAv9Tu5k= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= +github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c h1:qSHzRbhzK8RdXOsAdfDgO49TtqC1oZ+acxPrkfTxcCs= +github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097 h1:vilfsDSy7TDxedi9gyBkMvAirat/oRcL0lFdJBf6tdM= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/informalsystems/itf-go v0.0.1 h1:lVvdg3v+IMWOsVfIvOOGy1hHFO5KxoS8b8EiwKLbQDg= +github.com/informalsystems/itf-go v0.0.1/go.mod h1:wgqaQ/yl2kbNlgw6GaleuHEefpZvkZo6Hc0jc8cGG9M= +github.com/informalsystems/tm-load-test v1.3.0 h1:FGjKy7vBw6mXNakt+wmNWKggQZRsKkEYpaFk/zR64VA= +github.com/informalsystems/tm-load-test v1.3.0/go.mod h1:OQ5AQ9TbT5hKWBNIwsMjn6Bf4O0U4b1kRc+0qZlQJKw= +github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk= +github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8= +github.com/ipfs/go-ds-badger v0.3.0 h1:xREL3V0EH9S219kFFueOYJJTcjgNSZ2HY1iSvN7U1Ro= +github.com/ipfs/go-ds-badger v0.3.0/go.mod h1:1ke6mXNqeV8K3y5Ak2bAA0osoTfmxUdupVCGm4QUIek= +github.com/ipfs/go-ds-leveldb v0.5.0 h1:s++MEBbD3ZKc9/8/njrn4flZLnCuY9I79v94gBUNumo= +github.com/ipfs/go-ds-leveldb v0.5.0/go.mod h1:d3XG9RUDzQ6V4SHi8+Xgj9j1XuEk1z82lquxrVbml/Q= +github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY= +github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI= +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/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/iris-contrib/schema v0.0.6 h1:CPSBLyx2e91H2yJzPuhGuifVRnZBBJ3pCOMbOvPZaTw= +github.com/iris-contrib/schema v0.0.6/go.mod h1:iYszG0IOsuIsfzjymw1kMzTL8YQcCWlm65f3wX8J5iA= +github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= +github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= +github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= +github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o= +github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4= +github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84 h1:2uT3aivO7NVpUPGcQX7RbHijHMyWix/yCnIrCWc+5co= +github.com/jdxcode/netrc v0.0.0-20221124155335-4616370d1a84/go.mod h1:Zi/ZFkEqFHTm7qkjyNJjaWH4LQA9LQhGJyF0lTYGpxw= +github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267 h1:TMtDYDHKYY15rFihtRfck/bfFqNfvcabqvXAFQfAUpY= +github.com/jedisct1/go-minisign v0.0.0-20230811132847-661be99b8267/go.mod h1:h1nSAbGFqGVzn6Jyl1R/iCcBUHN4g+gW1u9CoBTrb9E= +github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= +github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4= +github.com/jinzhu/copier v0.3.5 h1:GlvfUwHk62RokgqVNvYsku0TATCF7bAHVwEXoBh3iJg= +github.com/jinzhu/copier v0.3.5/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg= +github.com/jjti/go-spancheck v0.5.3/go.mod h1:eQdOX1k3T+nAKvZDyLC3Eby0La4dZ+I19iOl5NzSPFE= +github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ= +github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= +github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= +github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/josharian/txtarfs v0.0.0-20210218200122-0702f000015a/go.mod h1:izVPOvVRsHiKkeGCT6tYBNWyDVuzj9wAaBb5R9qamfw= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= +github.com/jrick/logrotate v1.0.0 h1:lQ1bL/n9mBNeIXoTUoYRlK4dHuNJVofX9oWqBtPnSzI= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= +github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= +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/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/junk1tm/musttag v0.5.0 h1:bV1DTdi38Hi4pG4OVWa7Kap0hi0o7EczuK6wQt9zPOM= +github.com/junk1tm/musttag v0.5.0/go.mod h1:PcR7BA+oREQYvHwgjIDmw3exJeds5JzRcvEJTfjrA0M= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52 h1:msKODTL1m0wigztaqILOtla9HeW1ciscYG4xjLtvk5I= +github.com/karalabe/hid v1.0.1-0.20240306101548-573246063e52/go.mod h1:qk1sX/IBgppQNcGCRoj90u6EGC056EBoIc1oEjCWla8= +github.com/karalabe/usb v0.0.2 h1:M6QQBNxF+CQ8OFvxrT90BA0qBOXymndZnk5q235mFc4= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/karamaru-alpha/copyloopvar v1.0.10/go.mod h1:u7CIfztblY0jZLOQZgH3oYsJzpC2A7S6u/lfgSXHy0k= +github.com/kataras/blocks v0.0.7 h1:cF3RDY/vxnSRezc7vLFlQFTYXG/yAr1o7WImJuZbzC4= +github.com/kataras/blocks v0.0.7/go.mod h1:UJIU97CluDo0f+zEjbnbkeMRlvYORtmc1304EeyXf4I= +github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= +github.com/kataras/golog v0.1.8 h1:isP8th4PJH2SrbkciKnylaND9xoTtfxv++NB+DF0l9g= +github.com/kataras/golog v0.1.8/go.mod h1:rGPAin4hYROfk1qT9wZP6VY2rsb4zzc37QpdPjdkqVw= +github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= +github.com/kataras/iris/v12 v12.2.0 h1:WzDY5nGuW/LgVaFS5BtTkW3crdSKJ/FEgWnxPnIVVLI= +github.com/kataras/iris/v12 v12.2.0/go.mod h1:BLzBpEunc41GbE68OUaQlqX4jzi791mx5HU04uPb90Y= +github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= +github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= +github.com/kataras/pio v0.0.11 h1:kqreJ5KOEXGMwHAWHDwIl+mjfNCPhAwZPa8gK7MKlyw= +github.com/kataras/pio v0.0.11/go.mod h1:38hH6SWH6m4DKSYmRhlrCJ5WItwWgCVrTNU62XZyUvI= +github.com/kataras/sitemap v0.0.6 h1:w71CRMMKYMJh6LR2wTgnk5hSgjVNB9KL60n5e2KHvLY= +github.com/kataras/sitemap v0.0.6/go.mod h1:dW4dOCNs896OR1HmG+dMLdT7JjDk7mYBzoIRwuj5jA4= +github.com/kataras/tunnel v0.0.4 h1:sCAqWuJV7nPzGrlb0os3j49lk2JhILT0rID38NHNLpA= +github.com/kataras/tunnel v0.0.4/go.mod h1:9FkU4LaeifdMWqZu7o20ojmW4B7hdhv2CMLwfnHGpYw= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kilic/bls12-381 v0.1.0 h1:encrdjqKMEvabVQ7qYOKu1OvhqpK4s47wDYtNiPtlp4= +github.com/kilic/bls12-381 v0.1.0/go.mod h1:vDTTHJONJ6G+P2R74EhnyotQDTliQDnFEwhdmfzw1ig= +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/kkHAIKE/contextcheck v1.1.4/go.mod h1:1+i/gWqokIa+dm31mqGLZhZJ7Uh44DJGZVmr6QRBNJg= +github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23 h1:FOOIBWrEkLgmlgGfMuZT83xIwfPDxEI2OHu6xUmJMFE= +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.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= +github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.2/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.7/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid v1.2.1 h1:vJi+O/nMdFt0vqm8NZBI6wzALWdA2X+egi0ogNyrC/w= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= +github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= +github.com/koron/go-ssdp v0.0.4 h1:1IDwrghSKYM7yLf7XCzbByg2sJ/JcNOZRXS2jczTwz0= +github.com/koron/go-ssdp v0.0.4/go.mod h1:oDXq+E5IL5q0U8uSBcoAXzTzInwy5lEgC91HoKtbmZk= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= +github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= +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.10.0 h1:5CiyngihEO4HXsz3vVsJn7f8xAlWwRr3aY6Ih280ZKA= +github.com/labstack/echo/v4 v4.10.0/go.mod h1:S/T/5fy/GigaXnHTkh0ZGe4LpkkQysvRjFMSUTkDRNQ= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/labstack/gommon v0.4.0 h1:y7cvthEAEbU0yHOf4axH8ZG2NH8knB9iNSoTO8dyIk8= +github.com/labstack/gommon v0.4.0/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.4.0/go.mod h1:mNtTfrHy2haaBAw+VT7IBV6VXBThS7TCreYWbBcJ87I= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/leonklingele/grouper v1.1.1/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/letsencrypt/pkcs11key/v4 v4.0.0/go.mod h1:EFUvBDay26dErnNb70Nd0/VW3tJiIbETBPTl9ATXQag= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38yPW7c= +github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= +github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= +github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= +github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= +github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= +github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= +github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= +github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= +github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= +github.com/libp2p/zeroconf/v2 v2.2.0 h1:Cup06Jv6u81HLhIj1KasuNM/RHHrJ8T7wOTS4+Tv53Q= +github.com/libp2p/zeroconf/v2 v2.2.0/go.mod h1:fuJqLnUwZTshS3U/bMRJ3+ow/v9oid1n0DmyYyNO1Xs= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= +github.com/lightstep/lightstep-tracer-go v0.18.1 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= +github.com/linxGnu/grocksdb v1.7.15/go.mod h1:pY55D0o+r8yUYLq70QmhdudxYvoDb9F+9puf4m3/W+U= +github.com/linxGnu/grocksdb v1.7.16/go.mod h1:JkS7pl5qWpGpuVb3bPqTz8nC12X3YtPZT+Xq7+QfQo4= +github.com/linxGnu/grocksdb v1.8.12/go.mod h1:xZCIb5Muw+nhbDK4Y5UJuOrin5MceOuiXkVUR7vp4WY= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4 h1:sIXJOMrYnQZJu7OB7ANSF4MYri2fTEGIsRLz6LwI4xE= +github.com/lyft/protoc-gen-star/v2 v2.0.4-0.20230330145011-496ad1ac90a4/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailgun/raymond/v2 v2.0.48 h1:5dmlB680ZkFG2RN/0lvTAghrSxIESeu9/2aeDqACtjw= +github.com/mailgun/raymond/v2 v2.0.48/go.mod h1:lsgvL50kgt1ylcFJYZiULi5fjPBkkhNfj4KA0W54Z18= +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/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd h1:HvFwW+cm9bCbZ/+vuGNq7CRWXql8c0y8nGeYpqmpvmk= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= +github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +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.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +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.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.5/go.mod h1:WVKg1VTActs4Qso6iwGbiFih2UIHo0ENGwNd0Lj+XmI= +github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= +github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +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/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= +github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= +github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +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/mgechev/dots v0.0.0-20210922191527-e955255bf517/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= +github.com/mgechev/revive v1.3.1/go.mod h1:YlD6TTWl2B8A103R9KWJSPVI9DrEf+oqr15q21Ld+5I= +github.com/mgechev/revive v1.3.7/go.mod h1:RJ16jUbF0OWC3co/+XTxmFNgEpUPwnnA0BRllX2aDNA= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/microcosm-cc/bluemonday v1.0.23 h1:SMZe2IGa0NuHvnVNAZ+6B38gsTbi5e4sViiWJyDDqFY= +github.com/microcosm-cc/bluemonday v1.0.23/go.mod h1:mN70sk7UkkF8TUr2IGBpNN0jAgStuPzlK76QuruE/z4= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= +github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/miekg/pkcs11 v1.0.2/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mmcloughlin/profile v0.1.1 h1:jhDmAqPyebOsVDOCICJoINoLb/AnLBaUw58nFzxWS2w= +github.com/moby/buildkit v0.10.4/go.mod h1:Yajz9vt1Zw5q9Pp4pdb3TCSUXJBIroIQGQ3TTs/sLug= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/monerium/module-noble v1.0.0 h1:MSdGacwXDMeV11MedvIjtfAKJ4QLOTKWpCRJBs+uvjI= +github.com/moricho/tparallel v0.3.0/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/mozilla/scribe v0.0.0-20180711195314-fb71baf557c1/go.mod h1:FIczTrinKo8VaLxe6PWTPEXRXDIHz2QAwiaBaP5/4a8= +github.com/mozilla/tls-observatory v0.0.0-20210609171429-7bc42856d2e5/go.mod h1:FUqVoUPHSEdDR0MnFM3Dh8AU0pZHLXUD127SAJGER/s= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= +github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multistream v0.4.1 h1:rFy0Iiyn3YT0asivDUIR05leAdwZq3de4741sbiSdfo= +github.com/multiformats/go-multistream v0.4.1/go.mod h1:Mz5eykRVAjJWckE2U78c6xqdtyNUEhKSM0Lwar2p77Q= +github.com/mwitkow/go-proto-validators v0.0.0-20180403085117-0950a7990007/go.mod h1:m2XC9Qq0AlmmVksL6FktJCdTYyLk7V3fKyp0sl1yWQo= +github.com/mwitkow/go-proto-validators v0.2.0/go.mod h1:ZfA1hW+UH/2ZHOWvQ3HnQaU0DtnpXu850MZiy+YUgcc= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76 h1:0xuRacu/Zr+jX+KyLLPPktbwXqyOvnOPUQmMLzX1jxU= +github.com/naoina/go-stringutil v0.1.0 h1:rCUeRUHjBjGTSHl0VC00jUPLz8/F9dDzYI70Hzifhks= +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 h1:shk/vn9oCoOTmwcouEdwIeOtOGA/ELRUw/GwvxwfT+0= +github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= +github.com/nats-io/jwt/v2 v2.0.3 h1:i/O6cmIsjpcQyWDYNcq2JyZ3/VTF8SJ4JWluI5OhpvI= +github.com/nats-io/jwt/v2 v2.0.3/go.mod h1:VRP+deawSXyhNjXmxPCHskrR6Mq50BqpEI5SEcNiGlY= +github.com/nats-io/nats-server/v2 v2.5.0 h1:wsnVaaXH9VRSg+A2MVg5Q727/CqxnmPLGFQ3YZYKTQg= +github.com/nats-io/nats-server/v2 v2.5.0/go.mod h1:Kj86UtrXAL6LwYRA6H4RqzkHhK0Vcv2ZnKD5WbQ1t3g= +github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= +github.com/nats-io/nats.go v1.34.0 h1:fnxnPCNiwIG5w08rlMcEKTUw4AV/nKyGCOJE8TdhSPk= +github.com/nats-io/nats.go v1.34.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8= +github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= +github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI= +github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= +github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= +github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= +github.com/nishanths/exhaustive v0.9.5/go.mod h1:IbwrGdVMizvDcIxPYGVdQn5BqWJaOwpCvg4RGb8r/TA= +github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= +github.com/noble-assets/halo v1.0.1 h1:Fndy4JaAAvEd5SDGECnkoWJ2uVG1XCF47L67Px9ickE= +github.com/nunnatsa/ginkgolinter v0.9.0/go.mod h1:FHaMLURXP7qImeH6bvxWJUpyH+2tuqe5j4rW1gxJRmI= +github.com/oasisprotocol/curve25519-voi v0.0.0-20220708102147-0a8a51822cae/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= +github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= +github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ= +github.com/ondoprotocol/usdy-noble v1.0.0 h1:uwWFimg10MVF4d6hmh8w5in8Vb9zEqWQpo8Q1FUhCak= +github.com/ondoprotocol/usdy-noble/v2 v2.0.0-20241002161528-0a224c2fc5fd/go.mod h1:A/Umwmq1X+YXJbjaQApNnZzdTTrInRxPRXxRtz4QU70= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= +github.com/onsi/ginkgo/v2 v2.20.1 h1:YlVIbqct+ZmnEph770q9Q7NVAz4wwIiVNahee6JyUzo= +github.com/onsi/ginkgo/v2 v2.20.1/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI= +github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.28.0 h1:i2rg/p9n/UqIDAMFUJ6qIUUMcsqOuUHgbpbu235Vr1c= +github.com/onsi/gomega v1.28.0/go.mod h1:A1H2JE76sI14WIP57LMKj7FVfCHx3g3BcZVjJG8bjX8= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0 h1:HHUyrt9mwHUjtasSbXSMvs4cyFxh+Bll4AjJ9odEGpg= +github.com/opencontainers/runtime-spec v1.1.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= +github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= +github.com/openzipkin/zipkin-go v0.2.5 h1:UwtQQx2pyPIgWYHRg+epgdx1/HnBQTgN3/oIYEJTQzU= +github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w= +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/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= +github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= +github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= +github.com/performancecopilot/speed/v4 v4.0.0 h1:VxEDCmdkfbQYDlcr/GC9YoN9PQ6p8ulk9xVsepYy9ZY= +github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= +github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= +github.com/petermattis/goid v0.0.0-20221215004737-a150e88a970d/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= +github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= +github.com/pkg/profile v1.7.0 h1:hnbDkaNWPCLMO9wGLdBFTIZvzDrDfBM2072E1S9gJkA= +github.com/pkg/profile v1.7.0/go.mod h1:8Uer0jas47ZQMJ7VD+OHknK4YDY07LPUC6dEvqDjvNo= +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/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= +github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.4.5/go.mod h1:sIZEbFoDOCnTYYZoVkjc4hTnM459tuWA9H/EkdXwsKk= +github.com/polyfloyd/go-errorlint v1.4.8/go.mod h1:NNCxFcFjZcw3xNjVdCchERkEM6Oz7wta2XJVxRftwO4= +github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.0/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= +github.com/prometheus/client_model v0.2.1-0.20210607210712-147c58e9608a/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +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.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= +github.com/prometheus/common v0.52.2/go.mod h1:lrWtQx+iDfn2mbH5GUzlH9TSHyfZpHkSiG1W7y3sF2Q= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +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.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/protolambda/bls12-381-util v0.0.0-20220416220906-d8552aa452c7/go.mod h1:IToEjHuttnUzwZI5KBSM/LOOW3qLbbrHOEfp3SbECGY= +github.com/protolambda/bls12-381-util v0.1.0 h1:05DU2wJN7DTU7z28+Q+zejXkIsA/MF8JZQGhtBZZiWk= +github.com/protolambda/bls12-381-util v0.1.0/go.mod h1:cdkysJTRpeFeuUVx/TXGDQNMTiRAalk1vQw3TYTHcE4= +github.com/protolambda/messagediff v1.4.0 h1:fk6gxK7WybJCaeOFK1yuh2Ldplx7qYMLibiMwWFcSZY= +github.com/protolambda/messagediff v1.4.0/go.mod h1:LboJp0EwIbJsePYpzh5Op/9G1/4mIztMRYzzwR0dR2M= +github.com/protolambda/zrnt v0.32.2 h1:KZ48T+3UhsPXNdtE/5QEvGc9DGjUaRI17nJaoznoIaM= +github.com/protolambda/zrnt v0.32.2/go.mod h1:A0fezkp9Tt3GBLATSPIbuY4ywYESyAuc/FFmPKg8Lqs= +github.com/protolambda/ztyp v0.2.2 h1:rVcL3vBu9W/aV646zF6caLS/dyn9BN8NYiuJzicLNyY= +github.com/protolambda/ztyp v0.2.2/go.mod h1:9bYgKGqg3wJqT9ac1gI2hnVb0STQq7p/1lapqrqY1dU= +github.com/prysmaticlabs/gohashtree v0.0.1-alpha.0.20220714111606-acbb2962fb48 h1:cSo6/vk8YpvkLbk9v3FO97cakNmUoxwi2KMP8hd5WIw= +github.com/prysmaticlabs/gohashtree v0.0.1-alpha.0.20220714111606-acbb2962fb48/go.mod h1:4pWaT30XoEx1j8KNJf3TV+E3mQkaufn7mf+jRNb/Fuk= +github.com/pseudomuto/protoc-gen-doc v1.3.2/go.mod h1:y5+P6n3iGrbKG+9O04V5ld71in3v/bX88wUwgt+U8EA= +github.com/pseudomuto/protokit v0.2.0/go.mod h1:2PdH30hxVHsup8KpBTOXTBeMVhJZVio3Q8ViKSAXT0Q= +github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= +github.com/quasilyte/go-ruleguard v0.4.0/go.mod h1:Eu76Z/R8IXtViWUIHkE3p8gdH3/PKk1eh3YGfaEof10= +github.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= +github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/qtls-go1-20 v0.3.3 h1:17/glZSLI9P9fDAeyCHBFSWSqJcwx1byhLwP5eUIDCM= +github.com/quic-go/qtls-go1-20 v0.3.3/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.38.1 h1:M36YWA5dEhEeT+slOu/SwMEucbYd0YFidxG3KlGPZaE= +github.com/quic-go/quic-go v0.38.1/go.mod h1:ijnZM7JsFIkp4cRyjxJNIzdSfCLmUMg9wdyhGmg+SN4= +github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= +github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= +github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= +github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= +github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= +github.com/raulk/go-watchdog v1.3.0/go.mod h1:fIvOnLbF0b0ZwkB9YU4mOW9Did//4vPZtDqv66NfsMU= +github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8 h1:xe+mmCnDN82KhC010l3NfYlA8ZbOuzbXAzSYBa6wbMc= +github.com/rivo/tview v0.0.0-20220307222120-9994674d60a8/go.mod h1:WIfMkQNY+oq/mWwtsjOYHIZBuwthioY2srOmljJkTnk= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rs/cors v1.8.3/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= +github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc= +github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0= +github.com/rs/zerolog v1.30.0/go.mod h1:/tk+P47gFdPXq4QYjvCmT5/Gsug2nagsFWBWhAiSi1w= +github.com/rs/zerolog v1.32.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 v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/ryancurrah/gomodguard v1.3.0/go.mod h1:ggBxb3luypPEzqVtq33ee7YSN35V28XeGnid8dnni50= +github.com/ryancurrah/gomodguard v1.3.1/go.mod h1:DGFHzEhi6iJ0oIDfMuo3TgrS+L9gZvrEfmjjuelnRU0= +github.com/ryanrolds/sqlclosecheck v0.4.0/go.mod h1:TBRRjzL31JONc9i4XMinicuo+s+E8yKZ5FN8X3G6CKQ= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/crypt v0.19.0 h1:WMyLTjHBo64UvNcWqpzY3pbZTYgnemZU8FBZigKc42E= +github.com/sagikazarmark/crypt v0.19.0/go.mod h1:c6vimRziqqERhtSe0MhIvzE1w54FrCHtrXb5NH/ja78= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= +github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU= +github.com/sashamelentyev/usestdlibvars v1.25.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/schollz/closestmatch v2.1.0+incompatible h1:Uel2GXEpJqOWBrlyI+oY9LTiyyjYS17cCYRqP13/SHk= +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/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8= +github.com/securego/gosec/v2 v2.19.0/go.mod h1:hOkDcHz9J/XIgIlPDXalxjeVYsHxoWUc5zJSHxcB8YM= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +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 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= +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/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= +github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa h1:YJfZp12Z3AFhSBeXOlv4BO55RMwPn2NoQeDsrdWnBtY= +github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= +github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.4.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.10.0/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/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= +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= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/spf13/viper v1.18.2/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= +github.com/streadway/amqp v1.0.0 h1:kuuDrUJFZL1QYL9hUNuCxNObNzB0bV/ZG5jV3RWAQgo= +github.com/streadway/amqp v1.0.0/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e h1:mOtuXaRAbVZsxAHVdPR3IjfmN8T1h2iczJLynhLybf8= +github.com/streadway/handy v0.0.0-20200128134331-0f66f006fb2e/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20170130113145-4d4bfba8f1d1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/supranational/blst v0.3.11-0.20230406105308-e9dfc5ee724b/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +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/tdewolff/minify/v2 v2.12.4 h1:kejsHQMM17n6/gwdw53qsi6lg0TGddZADVyQOz1KMdE= +github.com/tdewolff/minify/v2 v2.12.4/go.mod h1:h+SRvSIX3kwgwTFOpSckvSxgax3uy8kZTSF1Ojrr3bk= +github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ= +github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs= +github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= +github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= +github.com/tetafro/godot v1.4.16/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= +github.com/timakin/bodyclose v0.0.0-20221125081123-e39cf3fc478e/go.mod h1:27bSVNWSBOHm+qRp1T9qzaIpsWEP6TbUnei/43HK+PQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomarrell/wrapcheck/v2 v2.8.1/go.mod h1:/n2Q3NZ4XFT50ho6Hbxg+RV1uyo2Uow/Vdm9NQcl5SE= +github.com/tomarrell/wrapcheck/v2 v2.8.3/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= +github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= +github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/ultraware/whitespace v0.1.0/go.mod h1:/se4r3beMFNmewJ4Xmz0nMQ941GJt+qmSHGP9emHYe0= +github.com/urfave/cli/v2 v2.17.2-0.20221006022127-8f469abc00aa/go.mod h1:1CNUng3PtjQMtRzJO4FMXBQvkGtuYRxxiR9xMa7jMwI= +github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= +github.com/uudashr/gocognit v1.1.2/go.mod h1:aAVdLURqcanke8h3vg35BC++eseDm66Z7KmchI5et4k= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +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/fasthttp v1.40.0 h1:CRq/00MfruPGFLTQKY8b+8SfdK60TxNztjRMnH0t1Yc= +github.com/valyala/fasthttp v1.40.0/go.mod h1:t/G+3rLek+CyY9bnIE+YlMRddxVAAGjhxndDB4i4C0I= +github.com/valyala/fasthttp v1.55.0/go.mod h1:NkY9JtkrpPKmgwV3HTaS2HWaJss9RSIsRVfcxxoHiOM= +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/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo= +github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/quicktemplate v1.8.0/go.mod h1:qIqW8/igXt8fdrUln5kOSb+KWMaJ4Y8QUsfd1k6L2jM= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +github.com/vektra/mockery/v2 v2.23.1 h1:N59FENM2d/gWE6Ns5JPuf9a7jqQWeheGefZqvuvb1dM= +github.com/vektra/mockery/v2 v2.23.1/go.mod h1:Zh3Kv1ckKs6FokhlVLcCu6UTyzfS3M8mpROz1lBNp+w= +github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= +github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= +github.com/vmihailenco/msgpack/v5 v5.3.5 h1:5gO0H1iULLWGhs2H5tbAHIZTV8/cYafcFOr9znI5mJU= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/xhit/go-str2duration/v2 v2.1.0 h1:lxklc02Drh6ynqX+DdPyp5pCKLUQpRT8bp8Ydu2Bstc= +github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= +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/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +github.com/yosssi/ace v0.0.5 h1:tUkIP/BLdKqrlrPwcmH0shwEEhTRHoGnc1wFIWmaBUA= +github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= +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/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13 h1:fVcFKWvrslecOb/tg+Cc05dkeYx540o0FuFt3nUVDoE= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= +gitlab.com/bosi/decorder v0.4.1/go.mod h1:jecSqWUew6Yle1pCr2eLWTensJMmsxHsBwt+PVbkAqA= +go-simpler.org/assert v0.9.0/go.mod h1:74Eqh5eI6vCK6Y5l3PI8ZYFXG4Sa+tkr70OIPJAUr28= +go-simpler.org/musttag v0.9.0/go.mod h1:gA9nThnalvNSKpEoyp3Ko4/vCX2xTpqKoUtNqXOnVR4= +go-simpler.org/sloglint v0.5.0/go.mod h1:EUknX5s8iXqf18KQxKnaBHUPVriiPnOrPjjJcsaTcSQ= +go.einride.tech/aip v0.67.1 h1:d/4TW92OxXBngkSOwWS2CH5rez869KpKMaN44mdxkFI= +go.einride.tech/aip v0.67.1/go.mod h1:ZGX4/zKw8dcgzdLsrvpOOGxfxI2QSk12SlP7d6c0/XI= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= +go.etcd.io/bbolt v1.3.10/go.mod h1:bK3UQLPJZly7IlNmV7uVHJDxfe5aK9Ll93e/74Y9oEQ= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738 h1:VcrIfasaLFkyjk6KNlXQSzO+B0fZcnECiDrKJsfxka0= +go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= +go.etcd.io/etcd/api/v3 v3.5.12 h1:W4sw5ZoU2Juc9gBWuLk5U6fHfNVyY1WC5g9uiXZio/c= +go.etcd.io/etcd/api/v3 v3.5.12/go.mod h1:Ot+o0SWSyT6uHhA56al1oCED0JImsRiU9Dc26+C2a+4= +go.etcd.io/etcd/client/pkg/v3 v3.5.12 h1:EYDL6pWwyOsylrQyLp2w+HkQ46ATiOvoEdMarindU2A= +go.etcd.io/etcd/client/pkg/v3 v3.5.12/go.mod h1:seTzl2d9APP8R5Y2hFL3NVlD6qC/dOT+3kvrqPyTas4= +go.etcd.io/etcd/client/v2 v2.305.12 h1:0m4ovXYo1CHaA/Mp3X/Fak5sRNIWf01wk/X1/G3sGKI= +go.etcd.io/etcd/client/v2 v2.305.12/go.mod h1:aQ/yhsxMu+Oht1FOupSr60oBvcS9cKXHrzBpDsPTf9E= +go.etcd.io/etcd/client/v3 v3.5.12 h1:v5lCPXn1pf1Uu3M4laUE2hp/geOTc5uPcYYsNe1lDxg= +go.etcd.io/etcd/client/v3 v3.5.12/go.mod h1:tSbBCakoWmmddL+BKVAJHa9km+O/E+bumDe9mSbPiqw= +go.etcd.io/gofail v0.1.0 h1:XItAMIhOojXFQMgrxjnd2EIIHun/d5qL0Pf7FzVTkFg= +go.etcd.io/gofail v0.1.0/go.mod h1:VZBCXYGZhHAinaBiiqYvuDynvahNsAyLFwB3kEHKz1M= +go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 h1:4Pp6oUg3+e/6M4C0A/3kJ2VYa++dsWVTtGgLVj5xtHg= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0/go.mod h1:Mjt1i1INqiaoZOMGR1RIUJN+i3ChKoFRqzrRQhlkbs0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.52.0/go.mod h1:BMsdeOxN04K0L5FNUBfjFdvwWGNe/rkmSwH4Aelu/X0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 h1:jq9TW8u3so/bN+JPT166wjOI6/vQPF6Xe7nMNIltagk= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0/go.mod h1:p8pYQP+m5XfbZm9fxtSKAbM6oIllS7s2AfxrChvc7iw= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.24.0 h1:0LAOdjNmQeSTzGBzduGe/rU4tZhMwL5rWgtp9Ku5Jfo= +go.opentelemetry.io/otel v1.24.0/go.mod h1:W7b9Ozg4nkF5tWI5zsXkaKKDjdVjpD4oAt9Qi/MArHo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/metric v1.24.0 h1:6EhoGWWK28x1fbpA4tYTOWBkPefTDQnb8WSGXlc88kI= +go.opentelemetry.io/otel/metric v1.24.0/go.mod h1:VYhLe1rFfxuTXLgj4CBiyz+9WYBA8pNGJgDcSFRKBco= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/sdk v1.24.0/go.mod h1:KVrIYw6tEubO9E96HQpcmpTKDVn9gdv35HoYiQWGDFg= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/sdk/metric v1.29.0 h1:K2CfmJohnRgvZ9UAj2/FhIf/okdWcNdBwe1m8xFXiSY= +go.opentelemetry.io/otel/sdk/metric v1.29.0/go.mod h1:6zZLdCl2fkauYoZIOn/soQIDSWFmNSRcICarHfuhNJQ= +go.opentelemetry.io/otel/trace v1.24.0 h1:CsKnnL4dUAr/0llH9FKuc698G04IrpWV0MQA/Y1YELI= +go.opentelemetry.io/otel/trace v1.24.0/go.mod h1:HPc3Xr/cOApsBI154IU0OI0HJexz+aw5uPdbs3UCjNU= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= +go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= +go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= +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.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/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= +go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/automaxprocs v1.5.2/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/dig v1.17.0 h1:5Chju+tUvcC+N7N6EV08BJz41UZuO3BmHcN4A287ZLI= +go.uber.org/dig v1.17.0/go.mod h1:rTxpf7l5I0eBTlE6/9RL+lDybC7WFwY2QH55ZSjy1mU= +go.uber.org/fx v1.20.0 h1:ZMC/pnRvhsthOZh9MZjMq5U8Or3mA9zBSPaLnzs3ihQ= +go.uber.org/fx v1.20.0/go.mod h1:qCUj0btiR3/JnanEr1TYEePfSw6o/4qYJscgvzQ5Ub0= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= +go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +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-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-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/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.2.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= +golang.org/x/crypto v0.26.0/go.mod h1:GY7jblb9wI+FOo5y8/S2oY4zWP07AkOJ4+jxCqdqn54= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= +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/exp v0.0.0-20181106170214-d68db9428509/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-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230811145659-89c5cff77bcb/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= +golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= +golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= +golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8/go.mod h1:jj3sYF3dwk5D+ghuXyeI3r5MFf+NT2An6/9dOA95KSI= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +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/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20231108232855-2478ac86f678/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20240213143201-ec583247a57a/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= +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/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.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.19.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/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.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +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.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +golang.org/x/oauth2 v0.0.0-20170207211851-4464e7848382/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.19.0/go.mod h1:vYi7skDa1x015PmRRYZ7+s1cWyPgrPiSYRe4rnsexc8= +golang.org/x/oauth2 v0.20.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5 h1:ObuXPmIgI4ZMyQLIz48cJYgSyWdjUXc2SZAdyJMwEAU= +golang.org/x/perf v0.0.0-20230113213139-801c7ef9e5c5/go.mod h1:UBKtEnL8aqnd+0JHqZ+2qoMDwtuy6cYhhKNoHLBiTQc= +golang.org/x/sync v0.0.0-20190412183630-56d357773e84/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/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/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-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/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-20211007075335-d3039528d8ac/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-20211103235746-7861aae1554b/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-20211116061358-0a5406a5449c/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-20220325203850-36772127a21f/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-20220704084225-05e143d24a9e/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-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457 h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk= +golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +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.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= +golang.org/x/term v0.23.0/go.mod h1:DgV24QBUrK6jhZXl+20l6UWznPlwAHm1Q1mGHtydmSk= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.5.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.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/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/time v0.2.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/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-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/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-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191010075000-0337d82405ff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +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-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200630154851-b2d8b0336632/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200706234117-b22de6825cf7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +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-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +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.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.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.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= +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.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= +golang.org/x/tools v0.16.1/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg= +golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240531212143-b6235391adb3/go.mod h1:bqv7PJ/TtlrzgJKhOAGdDUkUltQapRik/UEHubLVBWo= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 h1:LLhsEBxRTBLuKlQxFBYUOU8xyFgXv6cOTp2HASDlsDk= +golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/gonum v0.12.0 h1:xKuo6hzt+gMav00meVPUlXwSdoEJP46BR+wdxQEFK2o= +gonum.org/v1/gonum v0.12.0/go.mod h1:73TDxJfAAHeA8Mk9mf8NlIppyhQNo5GLTcYeqgo2lvY= +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= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.0/go.mod h1:JWIHJ7U20drSQb/aDpTetJzfC1KlAPldJLpkSy88dvQ= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= +google.golang.org/api v0.0.0-20170206182103-3d017632ea10/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.10.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.152.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.169.0/go.mod h1:gpNOiMA2tZ4mf5R9Iwf4rK/Dcz0fbdIgWYWVoxmsyLg= +google.golang.org/api v0.171.0/go.mod h1:Hnq5AHm4OTMt2BUVjael2CWZFD6vksJdWCWiUAmjC9o= +google.golang.org/api v0.177.0/go.mod h1:srbhue4MLjkjbkux5p3dw/ocYOSZTaIEvf7bCOnFQDw= +google.golang.org/api v0.178.0/go.mod h1:84/k2v8DFpDRebpGcooklv/lais3MEfqpaBLA12gl2U= +google.golang.org/api v0.183.0/go.mod h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ= +google.golang.org/api v0.184.0/go.mod h1:CeDTtUEiYENAf8PPG5VZW2yNp2VM3VWbCeTioAZBTBA= +google.golang.org/api v0.186.0 h1:n2OPp+PPXX0Axh4GuSsL5QL8xQCTb2oDwyzPnQvqUug= +google.golang.org/api v0.186.0/go.mod h1:hvRbBmgoje49RV3xqVXrmP6w93n6ehGgIVPYrGtBFFc= +google.golang.org/api v0.187.0/go.mod h1:KIHlTc4x7N7gKKuVsdmfBXN13yEEWXWFURWY6SBp2gk= +google.golang.org/api v0.188.0/go.mod h1:VR0d+2SIiWOYG3r/jdm7adPW9hI2aRv9ETOSCQ9Beag= +google.golang.org/api v0.189.0/go.mod h1:FLWGJKb0hb+pU2j+rJqwbnsF+ym+fQs73rbJ+KAUgy8= +google.golang.org/api v0.191.0/go.mod h1:tD5dsFGxFza0hnQveGfVk9QQYKcfp+VzgRqyXFxE0+E= +google.golang.org/api v0.193.0/go.mod h1:Po3YMV1XZx+mTku3cfJrlIYR03wiGrCOsdpC67hjZvw= +google.golang.org/appengine v1.6.2/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= +google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181107211654-5fc9ac540362/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20200626011028-ee7919e894b5/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200707001353-8e8330bf89df/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-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20231002182017-d307bd883b97/go.mod h1:t1VqOqqvce95G3hIDCT5FeO3YUc6Q4Oe24L/+rNMxRk= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto v0.0.0-20240213162025-012b6fc9bca9/go.mod h1:mqHbVIp48Muh7Ywss/AD6I5kNVKZMmAa/QEW58Gxp2s= +google.golang.org/genproto v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:VUhTRKeHn9wwcdrk73nvdC9gF178Tzhmt/qyaFcPLSo= +google.golang.org/genproto v0.0.0-20240401170217-c3f982113cda/go.mod h1:g2LLCvCeCSir/JJSWosk19BR4NVxGqHUC6rxIRsd7Aw= +google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ= +google.golang.org/genproto v0.0.0-20240617180043-68d350f18fd4/go.mod h1:EvuUDCulqGgV80RvP1BHuom+smhX4qtlhnNatHuroGQ= +google.golang.org/genproto v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:s7iA721uChleev562UJO2OYB0PPT9CMFjV+Ce7VJH5M= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094 h1:6whtk83KtD3FkGrVb2hFXuQ+ZMbCNdakARIn/aHMmG8= +google.golang.org/genproto v0.0.0-20240701130421-f6361c86f094/go.mod h1:Zs4wYw8z1zr6RNF4cwYb31mvN/EGaKAdQjNCF3DW6K4= +google.golang.org/genproto v0.0.0-20240722135656-d784300faade/go.mod h1:FfBgJBJg9GcpPvKIuHSZ/aE1g2ecGL74upMzGZjiGEY= +google.golang.org/genproto v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:mCr1K1c8kX+1iSBREvU3Juo11CB+QOEWxbRS01wWl5M= +google.golang.org/genproto v0.0.0-20240814211410-ddb44dafa142/go.mod h1:G11eXq53iI5Q+kyNOmCvnzBaxEA2Q/Ik5Tj7nqBE8j4= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:RdyHbowztCGQySiCvQPgWQWgWhGnouTdCflKoDBt32U= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:5iCWqnniDlqZHrd3neWVTOwvh/v6s3232omMecelax8= +google.golang.org/genproto/googleapis/api v0.0.0-20240311132316-a219d84964c2/go.mod h1:O1cOfN1Cy6QEYr7VxtjOyP5AdAuR0aJ/MYZaaof623Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240318140521-94a12d6c2237/go.mod h1:Z5Iiy3jtmioajWHDGFk7CeugTyHtPvMHA4UTmUkyalE= +google.golang.org/genproto/googleapis/api v0.0.0-20240429193739-8cf5692501f6/go.mod h1:10yRODfgim2/T8csjQsMPgZOMvtytXKTDRzH6HRGzRw= +google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae/go.mod h1:FfiGhwUm6CJviekPrc0oJ+7h29e+DmWU6UtjX0ZvI7Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240528184218-531527333157/go.mod h1:99sLkeliLXfdj2J75X3Ho+rrVCaJze0uwN7zDDkjPVU= +google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117/go.mod h1:OimBR/bc1wPO9iV4NC2bpyjy3VnAwZh5EBPQdtaE5oo= +google.golang.org/genproto/googleapis/api v0.0.0-20240610135401-a8a62080eff3/go.mod h1:kdrSS/OiLkPrNUpzD4aHgCq2rVuC/YRxok32HXZ4vRE= +google.golang.org/genproto/googleapis/api v0.0.0-20240617180043-68d350f18fd4/go.mod h1:px9SlOOZBg1wM1zdnr8jEL4CNGUBZ+ZKYtNPApNQc4c= +google.golang.org/genproto/googleapis/api v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Od4k8V1LQSizPRUK4OzZ7TBE/20k+jPczUDAEyvn69Y= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= +google.golang.org/genproto/googleapis/api v0.0.0-20240711142825-46eb208f015d/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= +google.golang.org/genproto/googleapis/api v0.0.0-20240722135656-d784300faade/go.mod h1:mw8MG/Qz5wfgYr6VqVCiZcHe/GJEfI+oGGDCohaVgB0= +google.golang.org/genproto/googleapis/api v0.0.0-20240725223205-93522f1f2a9f/go.mod h1:AHT0dDg3SoMOgZGnZk29b5xTbPHMoEC8qthmBLJCpys= +google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4 h1:ABEBT/sZ7We8zd7A5f3KO6zMQe+s3901H7l8Whhijt0= +google.golang.org/genproto/googleapis/api v0.0.0-20240805194559-2c9e96a0b5d4/go.mod h1:4+X6GvPs+25wZKbQq9qyAXrwIRExv7w0Ea6MgZLZiDM= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240617180043-68d350f18fd4/go.mod h1:/oe3+SiHAwz6s+M25PyTygWm3lnrhmGqIuIfkoUocqk= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240903143218-8af14fe29dc1 h1:W0PHii1rtgc5UgBtJif8xGePValKeZRomnuC5hatKME= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:q0eWNnCW04EJlyrmLT+ZHsjuoUiZ36/eAEdCCezZoco= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.mod h1:FUoWkonphQm3RhTS+kOEhF8h0iDpm4tdXolVCeZ9KKA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240314234333-6e1732d8331c/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240415180920-8c6c420018be/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240610135401-a8a62080eff3/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240617180043-68d350f18fd4/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240624140628-dc46fd24d27d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240709173604-40e1e62336c5/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240711142825-46eb208f015d/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240722135656-d784300faade/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240823204242-4ba0660f739c/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240827150818-7e3bb234dfed/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/grpc v0.0.0-20170208002647-2a6bf6142e96/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM= +google.golang.org/grpc v1.62.1/go.mod h1:IWTG0VlJLCh1SkC58F7np9ka9mx/WNkjl4PGJaiq+QE= +google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= +google.golang.org/grpc v1.64.1/go.mod h1:hiQF4LFZelK2WKaP6W0L92zGHtiQdZxk8CrSdvyjeP0= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/protobuf v1.29.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/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27 h1:kJdccidYzt3CaHD1crCFTS1hxyhSi059NhOFUf03YFo= +gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= +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.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= +gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= +gopkg.in/yaml.v2 v2.2.6/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.4.3/go.mod h1:36ZgoUOrqOk1GxwHhyryEkq8FQWkUO2xGuSMhUCcdvA= +honnef.co/go/tools v0.4.7/go.mod h1:+rnGS1THNh8zMwnd2oVOTL9QF6vmfyG6ZXBULae2uc0= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/cc/v3 v3.41.0/go.mod h1:Ni4zjJYJ04CDOhG7dn640WGfwBzfE0ecX8TyMB0Fv0Y= +modernc.org/cc/v4 v4.13.2/go.mod h1:IuZuuyktDzNOStVJJN2bRWEpDI1nwsbeTIDnJArdYF0= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/ccgo/v3 v3.17.0/go.mod h1:Sg3fwVpmLvCUTaqEUjiBDAvshIaKDB0RXaf+zgqFu8I= +modernc.org/ccgo/v4 v4.0.0-20230827202736-8661c3d9955b/go.mod h1:/akHR5EF8jcGu98UNYVwz45iMTr/7g9n/toQoK8ASlQ= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/ccorpus2 v1.5.1/go.mod h1:Wifvo4Q/qS/h1aRoC2TffcHsnxwTikmi1AuLANuucJQ= +modernc.org/fileutil v1.1.2/go.mod h1:HdjlliqRHrMAI4nVOvvpYVzVgvRSK7WnoCiG0GUWJNo= +modernc.org/gc/v2 v2.3.0/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/lex v1.1.1/go.mod h1:6r8o8DLJkAnOsQaGi8fMoi+Vt6LTbDaCrkUK729D8xM= +modernc.org/lexer v1.0.4/go.mod h1:tOajb8S4sdfOYitzCgXDFmbVJ/LE0v1fNJ7annTw36U= +modernc.org/libc v1.22.5/go.mod h1:jj+Z7dTNX8fBScMVNRAYZ/jF91K8fdT2hYMThc3YjBY= +modernc.org/libc v1.24.1/go.mod h1:FmfO1RLrU3MHJfyi9eYYmZBfi/R+tqZ6+hQ3yQQUkak= +modernc.org/libc v1.51.0/go.mod h1:15P6ublJ9FJR8YQCGy8DeQ2Uwur7iW9Hserr/T3OFZE= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/memory v1.7.0/go.mod h1:NO4NVCQy0N7ln+T9ngWqOQfi7ley4vpwvARR+Hjw95E= +modernc.org/scannertest v1.0.2/go.mod h1:RzTm5RwglF/6shsKoEivo8N91nQIoWtcWI7ns+zPyGA= +modernc.org/sqlite v1.23.1/go.mod h1:OrDj17Mggn6MhE+iPbBNf7RGKODDE9NFT0f3EwDzJqk= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/token v1.0.1/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= +mvdan.cc/gofumpt v0.5.0/go.mod h1:HBeVDtMKRZpXyxFciAirzdKklDlGu8aAy1wEbH5Y9js= +mvdan.cc/gofumpt v0.6.0/go.mod h1:4L0wf+kgIPZtcCWXynNS2e6bhmj73umwnuXSZarixzA= +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/go.mod h1:IeHQjmn6TOD+e4Z3RFiZMMsLVL+A96Nvptar8Fj71is= +mvdan.cc/unparam v0.0.0-20240104100049-c549a3470d14/go.mod h1:ZzZjEpJDOmx8TdVU6umamY3Xy0UAQUI2DHbf05USVbI= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= diff --git a/interchaintest/cctp_deposit_for_burn_test.go b/interchaintest/cctp_deposit_for_burn_test.go deleted file mode 100644 index 6ae45a68..00000000 --- a/interchaintest/cctp_deposit_for_burn_test.go +++ /dev/null @@ -1,224 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/hex" - "testing" - "time" - - "github.com/ethereum/go-ethereum/crypto" - - cosmossdk_io_math "cosmossdk.io/math" - cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/ethereum/go-ethereum/common" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// run `make local-image`to rebuild updated binary before running test -func TestCCTP_DepositForBurn(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, true, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // SET UP FIAT TOKEN FACTORY AND MINT - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), gw.fiatTfRoles.Minter.FormattedAddress(), "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter controller tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", gw.fiatTfRoles.Minter.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.Minter.KeyName(), - "fiat-tokenfactory", "mint", gw.extraWallets.User.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute mint to user tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), cctptypes.ModuleAddress.String(), "-b", "block", - ) - require.NoError(t, err, "failed to configure cctp minter controller") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctptypes.ModuleAddress.String(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to configure cctp minter") - - // ---- - - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - burnToken := make([]byte, 32) - copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) - - tokenMessenger := make([]byte, 32) - copy(tokenMessenger[12:], common.FromHex("0xD0C3da58f55358142b8d3e06C1C30c5C6114EFE8")) - - msgs := []sdk.Msg{} - - msgs = append(msgs, &cctptypes.MsgAddRemoteTokenMessenger{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - DomainId: 0, - Address: tokenMessenger, - }) - - msgs = append(msgs, &cctptypes.MsgLinkTokenPair{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }) - - bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) - defer bCancel() - - tx, err := cosmos.BroadcastTx( - bCtx, - broadcaster, - gw.fiatTfRoles.Owner, - msgs..., - ) - require.NoError(t, err, "error configuring remote domain") - require.Zero(t, tx.Code, "configuring remote domain failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - beforeBurnBal, err := noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err) - - mintRecipient := make([]byte, 32) - copy(mintRecipient[12:], common.FromHex("0xfCE4cE85e1F74C01e0ecccd8BbC4606f83D3FC90")) - - depositForBurnNoble := &cctptypes.MsgDepositForBurn{ - From: gw.extraWallets.User.FormattedAddress(), - Amount: cosmossdk_io_math.NewInt(1000000), - BurnToken: denomMetadataUsdc.Base, - DestinationDomain: 0, - MintRecipient: mintRecipient, - } - - tx, err = cosmos.BroadcastTx( - bCtx, - broadcaster, - gw.extraWallets.User, - depositForBurnNoble, - ) - require.NoError(t, err, "error broadcasting msgDepositForBurn") - require.Zero(t, tx.Code, "msgDepositForBurn failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - afterBurnBal, err := noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err) - - require.Equal(t, afterBurnBal, beforeBurnBal-1000000) - - for _, rawEvent := range tx.Events { - switch rawEvent.Type { - case "circle.cctp.v1.DepositForBurn": - parsedEvent, err := sdk.ParseTypedEvent(rawEvent) - require.NoError(t, err) - depositForBurn, ok := parsedEvent.(*cctptypes.DepositForBurn) - require.True(t, ok) - - expectedBurnToken := hex.EncodeToString(crypto.Keccak256([]byte(denomMetadataUsdc.Base))) - - require.Equal(t, uint64(0), depositForBurn.Nonce) - require.Equal(t, expectedBurnToken, depositForBurn.BurnToken) - require.Equal(t, depositForBurnNoble.Amount, depositForBurn.Amount) - require.Equal(t, gw.extraWallets.User.FormattedAddress(), depositForBurn.Depositor) - require.Equal(t, mintRecipient, depositForBurn.MintRecipient) - require.Equal(t, uint32(0), depositForBurn.DestinationDomain) - require.Equal(t, tokenMessenger, depositForBurn.DestinationTokenMessenger) - require.Equal(t, []byte{}, depositForBurn.DestinationCaller) - - case "circle.cctp.v1.MessageSent": - parsedEvent, err := sdk.ParseTypedEvent(rawEvent) - require.NoError(t, err) - event, ok := parsedEvent.(*cctptypes.MessageSent) - require.True(t, ok) - - message, err := new(cctptypes.Message).Parse(event.Message) - require.NoError(t, err) - - messageSender := make([]byte, 32) - copy(messageSender[12:], sdk.MustAccAddressFromBech32(cctptypes.ModuleAddress.String())) - - expectedBurnToken := crypto.Keccak256([]byte(depositForBurnNoble.BurnToken)) - - moduleAddress := make([]byte, 32) - copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(gw.extraWallets.User.FormattedAddress())) - - destinationCaller := make([]byte, 32) - - require.Equal(t, uint32(0), message.Version) - require.Equal(t, uint32(4), message.SourceDomain) - require.Equal(t, uint32(0), message.DestinationDomain) - require.Equal(t, uint64(0), message.Nonce) - require.Equal(t, messageSender, message.Sender) - require.Equal(t, tokenMessenger, message.Recipient) - require.Equal(t, destinationCaller, message.DestinationCaller) - - body, err := new(cctptypes.BurnMessage).Parse(message.MessageBody) - require.NoError(t, err) - - require.Equal(t, uint32(0), body.Version) - require.Equal(t, mintRecipient, body.MintRecipient) - require.Equal(t, depositForBurnNoble.Amount, body.Amount) - require.Equal(t, expectedBurnToken, body.BurnToken) - require.Equal(t, moduleAddress, body.MessageSender) - } - } -} diff --git a/interchaintest/cctp_deposit_for_burn_with_caller_test.go b/interchaintest/cctp_deposit_for_burn_with_caller_test.go deleted file mode 100644 index 9d9dcde8..00000000 --- a/interchaintest/cctp_deposit_for_burn_with_caller_test.go +++ /dev/null @@ -1,225 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/hex" - "testing" - "time" - - "github.com/ethereum/go-ethereum/crypto" - - cosmossdk_io_math "cosmossdk.io/math" - cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/ethereum/go-ethereum/common" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// run `make local-image`to rebuild updated binary before running test -func TestCCTP_DepositForBurnWithCaller(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, true, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // SET UP FIAT TOKEN FACTORY AND MINT - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), gw.fiatTfRoles.Minter.FormattedAddress(), "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter controller tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", gw.fiatTfRoles.Minter.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.Minter.KeyName(), - "fiat-tokenfactory", "mint", gw.extraWallets.User.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute mint to user tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), cctptypes.ModuleAddress.String(), "-b", "block", - ) - require.NoError(t, err, "failed to configure cctp minter controller") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctptypes.ModuleAddress.String(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to configure cctp minter") - - // ---- - - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - burnToken := make([]byte, 32) - copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) - - tokenMessenger := make([]byte, 32) - copy(tokenMessenger[12:], common.FromHex("0xD0C3da58f55358142b8d3e06C1C30c5C6114EFE8")) - - msgs := []sdk.Msg{} - - msgs = append(msgs, &cctptypes.MsgAddRemoteTokenMessenger{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - DomainId: 0, - Address: tokenMessenger, - }) - - msgs = append(msgs, &cctptypes.MsgLinkTokenPair{ - From: gw.fiatTfRoles.Owner.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }) - - bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) - defer bCancel() - - tx, err := cosmos.BroadcastTx( - bCtx, - broadcaster, - gw.fiatTfRoles.Owner, - msgs..., - ) - require.NoError(t, err, "error configuring remote domain") - require.Zero(t, tx.Code, "configuring remote domain failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - beforeBurnBal, err := noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err) - - mintRecipient := make([]byte, 32) - copy(mintRecipient[12:], common.FromHex("0xfCE4cE85e1F74C01e0ecccd8BbC4606f83D3FC90")) - - destinationCaller := []byte("12345678901234567890123456789012") - - depositForBurnWithCallerNoble := &cctptypes.MsgDepositForBurnWithCaller{ - From: gw.extraWallets.User.FormattedAddress(), - Amount: cosmossdk_io_math.NewInt(1000000), - BurnToken: denomMetadataUsdc.Base, - DestinationDomain: 0, - MintRecipient: mintRecipient, - DestinationCaller: destinationCaller, - } - - tx, err = cosmos.BroadcastTx( - bCtx, - broadcaster, - gw.extraWallets.User, - depositForBurnWithCallerNoble, - ) - require.NoError(t, err, "error broadcasting msgDepositForBurnWithCaller") - require.Zero(t, tx.Code, "msgDepositForBurnWithCaller failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - afterBurnBal, err := noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err) - - require.Equal(t, afterBurnBal, beforeBurnBal-1000000) - - for _, rawEvent := range tx.Events { - switch rawEvent.Type { - case "circle.cctp.v1.DepositForBurn": - parsedEvent, err := sdk.ParseTypedEvent(rawEvent) - require.NoError(t, err) - depositForBurn, ok := parsedEvent.(*cctptypes.DepositForBurn) - require.True(t, ok) - - expectedBurnToken := hex.EncodeToString(crypto.Keccak256([]byte(denomMetadataUsdc.Base))) - - require.Equal(t, uint64(0), depositForBurn.Nonce) - require.Equal(t, expectedBurnToken, depositForBurn.BurnToken) - require.Equal(t, depositForBurnWithCallerNoble.Amount, depositForBurn.Amount) - require.Equal(t, gw.extraWallets.User.FormattedAddress(), depositForBurn.Depositor) - require.Equal(t, mintRecipient, depositForBurn.MintRecipient) - require.Equal(t, uint32(0), depositForBurn.DestinationDomain) - require.Equal(t, tokenMessenger, depositForBurn.DestinationTokenMessenger) - require.Equal(t, destinationCaller, depositForBurn.DestinationCaller) - - case "circle.cctp.v1.MessageSent": - parsedEvent, err := sdk.ParseTypedEvent(rawEvent) - require.NoError(t, err) - event, ok := parsedEvent.(*cctptypes.MessageSent) - require.True(t, ok) - - message, err := new(cctptypes.Message).Parse(event.Message) - require.NoError(t, err) - - messageSender := make([]byte, 32) - copy(messageSender[12:], sdk.MustAccAddressFromBech32(cctptypes.ModuleAddress.String())) - - expectedBurnToken := crypto.Keccak256([]byte(depositForBurnWithCallerNoble.BurnToken)) - - moduleAddress := make([]byte, 32) - copy(moduleAddress[12:], sdk.MustAccAddressFromBech32(gw.extraWallets.User.FormattedAddress())) - - require.Equal(t, uint32(0), message.Version) - require.Equal(t, uint32(4), message.SourceDomain) - require.Equal(t, uint32(0), message.DestinationDomain) - require.Equal(t, uint64(0), message.Nonce) - require.Equal(t, messageSender, message.Sender) - require.Equal(t, tokenMessenger, message.Recipient) - require.Equal(t, destinationCaller, message.DestinationCaller) - - body, err := new(cctptypes.BurnMessage).Parse(message.MessageBody) - require.NoError(t, err) - - require.Equal(t, uint32(0), body.Version) - require.Equal(t, mintRecipient, body.MintRecipient) - require.Equal(t, depositForBurnWithCallerNoble.Amount, body.Amount) - require.Equal(t, expectedBurnToken, body.BurnToken) - require.Equal(t, moduleAddress, body.MessageSender) - } - } -} diff --git a/interchaintest/cctp_roles_test.go b/interchaintest/cctp_roles_test.go deleted file mode 100644 index 1e7fc087..00000000 --- a/interchaintest/cctp_roles_test.go +++ /dev/null @@ -1,282 +0,0 @@ -package interchaintest_test - -import ( - "context" - "testing" - - "github.com/circlefin/noble-cctp/x/cctp/types" - "github.com/gogo/protobuf/jsonpb" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -func TestCCTP_UpdateOwner(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, false, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // - - currentOwner := gw.fiatTfRoles.Owner - newOwner := gw.extraWallets.User - - _, err = nobleValidator.ExecTx(ctx, currentOwner.KeyName(), - "cctp", "update-owner", newOwner.FormattedAddress(), - ) - require.NoError(t, err, "failed to execute update owner tx") - - roles, err := getRoles(nobleValidator, ctx) - require.NoError(t, err, "failed to query roles") - require.Equal(t, currentOwner.FormattedAddress(), roles.Owner) - - _, err = nobleValidator.ExecTx(ctx, newOwner.KeyName(), - "cctp", "accept-owner", - ) - require.NoError(t, err, "failed to execute accept owner tx") - - roles, err = getRoles(nobleValidator, ctx) - require.NoError(t, err, "failed to query roles") - require.Equal(t, newOwner.FormattedAddress(), roles.Owner) -} - -func TestCCTP_UpdateAttesterManager(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, false, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // - - currentAttesterManager := gw.fiatTfRoles.Owner - newAttesterManager := gw.extraWallets.User - - _, err = nobleValidator.ExecTx(ctx, currentAttesterManager.KeyName(), - "cctp", "update-attester-manager", newAttesterManager.FormattedAddress(), - ) - require.NoError(t, err, "failed to execute update attester manager tx") - - roles, err := getRoles(nobleValidator, ctx) - require.NoError(t, err, "failed to query roles") - require.Equal(t, newAttesterManager.FormattedAddress(), roles.AttesterManager) -} - -func TestCCTP_UpdatePauser(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, false, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // - - currentPauser := gw.fiatTfRoles.Owner - newPauser := gw.extraWallets.User - - _, err = nobleValidator.ExecTx(ctx, currentPauser.KeyName(), - "cctp", "update-pauser", newPauser.FormattedAddress(), - ) - require.NoError(t, err, "failed to execute update pauser tx") - - roles, err := getRoles(nobleValidator, ctx) - require.NoError(t, err, "failed to query roles") - require.Equal(t, newPauser.FormattedAddress(), roles.Pauser) -} - -func TestCCTP_UpdateTokenController(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "grand-1", nv, nf, false, false, false, false), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - cmd.SetPrefixes(noble.Config().Bech32Prefix) - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - // - - currentTokenController := gw.fiatTfRoles.Owner - newTokenController := gw.extraWallets.User - - _, err = nobleValidator.ExecTx(ctx, currentTokenController.KeyName(), - "cctp", "update-token-controller", newTokenController.FormattedAddress(), - ) - require.NoError(t, err, "failed to execute update token controller tx") - - roles, err := getRoles(nobleValidator, ctx) - require.NoError(t, err, "failed to query roles") - require.Equal(t, newTokenController.FormattedAddress(), roles.TokenController) -} - -func getRoles(validator *cosmos.ChainNode, ctx context.Context) (roles types.QueryRolesResponse, err error) { - res, _, err := validator.ExecQuery(ctx, "cctp", "roles") - if err != nil { - return - } - - err = jsonpb.UnmarshalString(string(res), &roles) - return -} diff --git a/interchaintest/forwarding_test.go b/interchaintest/forwarding_test.go deleted file mode 100644 index 098ed1a9..00000000 --- a/interchaintest/forwarding_test.go +++ /dev/null @@ -1,341 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "fmt" - "testing" - "time" - - sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" - "github.com/gogo/protobuf/jsonpb" - "github.com/icza/dyno" - forwardingtypes "github.com/noble-assets/forwarding/x/forwarding/types" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/relayer/hermes" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -func TestForwarding_RegisterOnNoble(t *testing.T) { - t.Parallel() - - ctx, wrapper, gaia, _, _, sender, receiver := ForwardingSuite(t) - validator := wrapper.chain.Validators[0] - - address, exists := ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - _, err := validator.ExecTx(ctx, sender.KeyName(), "forwarding", "register-account", "channel-0", receiver.FormattedAddress()) - require.NoError(t, err) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.True(t, exists) - - require.NoError(t, validator.SendFunds(ctx, sender.KeyName(), ibc.WalletAmount{ - Address: address, - Denom: "uusdc", - Amount: 1_000_000, - })) - require.NoError(t, testutil.WaitForBlocks(ctx, 10, wrapper.chain, gaia)) - - senderBalance, err := wrapper.chain.AllBalances(ctx, sender.FormattedAddress()) - require.NoError(t, err) - require.True(t, senderBalance.IsZero()) - - balance, err := wrapper.chain.AllBalances(ctx, address) - require.NoError(t, err) - require.True(t, balance.IsZero()) - - receiverBalance, err := gaia.GetBalance(ctx, receiver.FormattedAddress(), transfertypes.DenomTrace{ - Path: "transfer/channel-0", - BaseDenom: "uusdc", - }.IBCDenom()) - require.NoError(t, err) - require.Equal(t, int64(1_000_000), receiverBalance) - - stats := ForwardingStats(t, ctx, validator) - require.Equal(t, uint64(1), stats.NumOfAccounts) - require.Equal(t, uint64(1), stats.NumOfForwards) - require.Equal(t, sdk.NewCoins(sdk.NewCoin("uusdc", sdk.NewInt(1_000_000))), stats.TotalForwarded) -} - -func TestForwarding_RegisterViaTransfer(t *testing.T) { - t.Parallel() - - ctx, wrapper, gaia, _, _, _, receiver := ForwardingSuite(t) - validator := wrapper.chain.Validators[0] - - address, exists := ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - _, err := gaia.SendIBCTransfer(ctx, "channel-0", receiver.KeyName(), ibc.WalletAmount{ - Address: address, - Denom: "uatom", - Amount: 100_000, - }, ibc.TransferOptions{ - Memo: fmt.Sprintf("{\"noble\":{\"forwarding\":{\"recipient\":\"%s\"}}}", receiver.FormattedAddress()), - }) - require.NoError(t, err) - - require.NoError(t, testutil.WaitForBlocks(ctx, 10, wrapper.chain, gaia)) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.True(t, exists) - - balance, err := wrapper.chain.AllBalances(ctx, address) - require.NoError(t, err) - require.True(t, balance.IsZero()) - - receiverBalance, err := gaia.GetBalance(ctx, receiver.FormattedAddress(), "uatom") - require.NoError(t, err) - require.Equal(t, int64(998_000), receiverBalance) - - stats := ForwardingStats(t, ctx, validator) - require.Equal(t, uint64(1), stats.NumOfAccounts) - require.Equal(t, uint64(1), stats.NumOfForwards) - require.Equal(t, sdk.NewCoins(sdk.NewCoin(transfertypes.DenomTrace{ - Path: "transfer/channel-0", - BaseDenom: "uatom", - }.IBCDenom(), sdk.NewInt(100_000))), stats.TotalForwarded) -} - -func TestForwarding_RegisterViaPacket(t *testing.T) { - t.Skip() -} - -func TestForwarding_FrontRunAccount(t *testing.T) { - t.Parallel() - - ctx, wrapper, gaia, _, _, sender, receiver := ForwardingSuite(t) - validator := wrapper.chain.Validators[0] - - address, exists := ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - require.NoError(t, validator.SendFunds(ctx, sender.KeyName(), ibc.WalletAmount{ - Address: address, - Denom: "uusdc", - Amount: 1_000_000, - })) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - _, err := validator.ExecTx(ctx, sender.KeyName(), "forwarding", "register-account", "channel-0", receiver.FormattedAddress()) - require.NoError(t, err) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.True(t, exists) - - require.NoError(t, testutil.WaitForBlocks(ctx, 10, wrapper.chain, gaia)) - - senderBalance, err := wrapper.chain.AllBalances(ctx, sender.FormattedAddress()) - require.NoError(t, err) - require.True(t, senderBalance.IsZero()) - - balance, err := wrapper.chain.AllBalances(ctx, address) - require.NoError(t, err) - require.True(t, balance.IsZero()) - - receiverBalance, err := gaia.GetBalance(ctx, receiver.FormattedAddress(), transfertypes.DenomTrace{ - Path: "transfer/channel-0", - BaseDenom: "uusdc", - }.IBCDenom()) - require.NoError(t, err) - require.Equal(t, int64(1_000_000), receiverBalance) - - stats := ForwardingStats(t, ctx, validator) - require.Equal(t, uint64(1), stats.NumOfAccounts) - require.Equal(t, uint64(1), stats.NumOfForwards) - require.Equal(t, sdk.NewCoins(sdk.NewCoin("uusdc", sdk.NewInt(1_000_000))), stats.TotalForwarded) -} - -func TestForwarding_ClearAccount(t *testing.T) { - if testing.Short() { - t.Skip() - } - t.Parallel() - - ctx, wrapper, gaia, rly, execReporter, sender, receiver := ForwardingSuite(t) - validator := wrapper.chain.Validators[0] - - require.NoError(t, rly.StopRelayer(ctx, execReporter)) - - address, exists := ForwardingAccount(t, ctx, validator, receiver) - require.False(t, exists) - - _, err := validator.ExecTx(ctx, sender.KeyName(), "forwarding", "register-account", "channel-0", receiver.FormattedAddress()) - require.NoError(t, err) - - _, exists = ForwardingAccount(t, ctx, validator, receiver) - require.True(t, exists) - - require.NoError(t, validator.SendFunds(ctx, sender.KeyName(), ibc.WalletAmount{ - Address: address, - Denom: "uusdc", - Amount: 1_000_000, - })) - - time.Sleep(10 * time.Minute) - - require.NoError(t, rly.StartRelayer(ctx, execReporter)) - require.NoError(t, testutil.WaitForBlocks(ctx, 10, wrapper.chain, gaia)) - - senderBalance, err := wrapper.chain.AllBalances(ctx, sender.FormattedAddress()) - require.NoError(t, err) - require.True(t, senderBalance.IsZero()) - - balance, err := wrapper.chain.GetBalance(ctx, address, "uusdc") - require.NoError(t, err) - require.Equal(t, int64(1_000_000), balance) - - receiverBalance, err := gaia.GetBalance(ctx, receiver.FormattedAddress(), transfertypes.DenomTrace{ - Path: "transfer/channel-0", - BaseDenom: "uusdc", - }.IBCDenom()) - require.NoError(t, err) - require.Equal(t, int64(0), receiverBalance) - - _, err = validator.ExecTx(ctx, sender.KeyName(), "forwarding", "clear-account", address) - require.NoError(t, err) - require.NoError(t, testutil.WaitForBlocks(ctx, 10, wrapper.chain, gaia)) - - senderBalance, err = wrapper.chain.AllBalances(ctx, sender.FormattedAddress()) - require.NoError(t, err) - require.True(t, senderBalance.IsZero()) - - balance, err = wrapper.chain.GetBalance(ctx, address, "uusdc") - require.NoError(t, err) - require.Equal(t, int64(0), balance) - - receiverBalance, err = gaia.GetBalance(ctx, receiver.FormattedAddress(), transfertypes.DenomTrace{ - Path: "transfer/channel-0", - BaseDenom: "uusdc", - }.IBCDenom()) - require.NoError(t, err) - require.Equal(t, int64(1_000_000), receiverBalance) -} - -// - -func ForwardingAccount(t *testing.T, ctx context.Context, validator *cosmos.ChainNode, receiver ibc.Wallet) (address string, exists bool) { - raw, _, err := validator.ExecQuery(ctx, "forwarding", "address", "channel-0", receiver.FormattedAddress()) - require.NoError(t, err) - - var res forwardingtypes.QueryAddressResponse - require.NoError(t, json.Unmarshal(raw, &res)) - - return res.Address, res.Exists -} - -func ForwardingStats(t *testing.T, ctx context.Context, validator *cosmos.ChainNode) forwardingtypes.QueryStatsByChannelResponse { - raw, _, err := validator.ExecQuery(ctx, "forwarding", "stats", "channel-0") - require.NoError(t, err) - - var res forwardingtypes.QueryStatsByChannelResponse - require.NoError(t, jsonpb.UnmarshalString(string(raw), &res)) - - return res -} - -func ForwardingSuite(t *testing.T) (ctx context.Context, wrapper genesisWrapper, gaia *cosmos.CosmosChain, rly *hermes.Relayer, execReporter *testreporter.RelayerExecReporter, sender ibc.Wallet, receiver ibc.Wallet) { - ctx = context.Background() - logger := zaptest.NewLogger(t) - reporter := testreporter.NewNopReporter() - execReporter = reporter.RelayerExecReporter(t) - client, network := interchaintest.DockerSetup(t) - - numValidators, numFullNodes := 1, 0 - - spec := nobleChainSpec(ctx, &wrapper, "noble-1", numValidators, numFullNodes, false, false, false, false) - spec.ModifyGenesis = func(cfg ibc.ChainConfig, bz []byte) ([]byte, error) { - bz, err := modifyGenesisAll(&wrapper, false, false)(cfg, bz) - if err != nil { - return nil, err - } - - genesis := make(map[string]interface{}) - if err := json.Unmarshal(bz, &genesis); err != nil { - return nil, err - } - - if err := dyno.Set(genesis, "0", "app_state", "tariff", "params", "transfer_fee_bps"); err != nil { - return nil, err - } - if err := dyno.Set(genesis, "0", "app_state", "tariff", "params", "transfer_fee_max"); err != nil { - return nil, err - } - - return json.Marshal(&genesis) - } - - factory := interchaintest.NewBuiltinChainFactory(logger, []*interchaintest.ChainSpec{ - spec, - { - Name: "gaia", - Version: "v14.1.0", - NumValidators: &numValidators, - NumFullNodes: &numFullNodes, - ChainConfig: ibc.ChainConfig{ - ChainID: "cosmoshub-4", - }, - }, - }) - - chains, err := factory.Chains(t.Name()) - require.NoError(t, err) - - noble := chains[0].(*cosmos.CosmosChain) - gaia = chains[1].(*cosmos.CosmosChain) - wrapper.chain = noble - - rly = interchaintest.NewBuiltinRelayerFactory( - ibc.Hermes, - logger, - ).Build(t, client, network).(*hermes.Relayer) - - interchain := interchaintest.NewInterchain(). - AddChain(noble). - AddChain(gaia). - AddRelayer(rly, "rly"). - AddLink(interchaintest.InterchainLink{ - Chain1: noble, - Chain2: gaia, - Relayer: rly, - Path: "transfer", - }) - - require.NoError(t, interchain.Build(ctx, execReporter, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - })) - - t.Cleanup(func() { - _ = interchain.Close() - }) - - require.NoError(t, rly.StartRelayer(ctx, execReporter)) - - roles := wrapper.fiatTfRoles - sender = wrapper.extraWallets.User - validator := noble.Validators[0] - - _, err = validator.ExecTx(ctx, roles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", roles.MinterController.FormattedAddress(), roles.Minter.FormattedAddress(), "-b", "block") - require.NoError(t, err) - _, err = validator.ExecTx(ctx, roles.MinterController.KeyName(), "fiat-tokenfactory", "configure-minter", roles.Minter.FormattedAddress(), "1000000uusdc", "-b", "block") - require.NoError(t, err) - _, err = validator.ExecTx(ctx, roles.Minter.KeyName(), "fiat-tokenfactory", "mint", sender.FormattedAddress(), "1000000uusdc", "-b", "block") - require.NoError(t, err) - - receivers := interchaintest.GetAndFundTestUsers(t, ctx, "receiver", 1_000_000, gaia) - receiver = receivers[0] - - return -} diff --git a/interchaintest/genesis_test.go b/interchaintest/genesis_test.go deleted file mode 100644 index eb4e0854..00000000 --- a/interchaintest/genesis_test.go +++ /dev/null @@ -1,600 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "fmt" - - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/cosmos/cosmos-sdk/types" - "github.com/icza/dyno" - tokenfactorytypes "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/relayer" - "github.com/strangelove-ventures/interchaintest/v4/relayer/rly" - proposaltypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" - upgradetypes "github.com/strangelove-ventures/paramauthority/x/upgrade/types" -) - -var nobleImageInfo = []ibc.DockerImage{ - { - Repository: "noble", - Version: "local", - UidGid: "1025:1025", - }, -} - -var ( - denomMetadataFrienzies = DenomMetadata{ - Display: "ufrienzies", - Base: "ufrienzies", - Name: "frienzies", - Symbol: "FRNZ", - DenomUnits: []DenomUnit{ - { - Denom: "ufrienzies", - Aliases: []string{ - "microfrienzies", - }, - Exponent: "0", - }, - { - Denom: "mfrienzies", - Aliases: []string{ - "millifrienzies", - }, - Exponent: "3", - }, - { - Denom: "frienzies", - Exponent: "6", - }, - }, - } - - denomMetadataUsdc = DenomMetadata{ - Display: "usdc", - Name: "usdc", - Base: "uusdc", - DenomUnits: []DenomUnit{ - { - Denom: "uusdc", - Aliases: []string{ - "microusdc", - }, - Exponent: "0", - }, - { - Denom: "usdc", - Exponent: "6", - }, - }, - } - - defaultShare = "0.8" - defaultDistributionEntityShare = "1.0" - defaultTransferBPSFee = "1" - defaultTransferMaxFee = "5000000" - defaultTransferFeeDenom = denomMetadataUsdc.Base - - relayerImage = relayer.CustomDockerImage("ghcr.io/cosmos/relayer", "v2.4.2", rly.RlyDefaultUidGid) -) - -type DenomMetadata struct { - Display string `json:"display"` - Base string `json:"base"` - Name string `json:"name"` - Symbol string `json:"symbol"` - DenomUnits []DenomUnit `json:"denom_units"` -} - -type DenomUnit struct { - Denom string `json:"denom"` - Aliases []string `json:"aliases"` - Exponent string `json:"exponent"` -} - -type TokenFactoryAddress struct { - Address string `json:"address"` -} - -type ParamAuthAddress struct { - Address string `json:"address"` -} - -type TokenFactoryPaused struct { - Paused bool `json:"paused"` -} - -type TokenFactoryDenom struct { - Denom string `json:"denom"` -} - -type DistributionEntity struct { - Address string `json:"address"` - Share string `json:"share"` -} - -type CCTPAmount struct { - Amount string `json:"amount"` -} - -type CCTPPerMessageBurnLimit struct { - Amount string `json:"amount"` - Denom string `json:"denom"` -} - -type CCTPNumber struct { - Amount string `json:"amount"` -} - -type CCTPNonce struct { - Nonce string `json:"nonce"` -} - -type Attester struct { - Attester string `json:"attester"` -} - -func NobleEncoding() *simappparams.EncodingConfig { - cfg := cosmos.DefaultEncoding() - - // register custom types - tokenfactorytypes.RegisterInterfaces(cfg.InterfaceRegistry) - proposaltypes.RegisterInterfaces(cfg.InterfaceRegistry) - upgradetypes.RegisterInterfaces(cfg.InterfaceRegistry) - - return &cfg -} - -type ExtraWallets struct { - User ibc.Wallet - User2 ibc.Wallet - Alice ibc.Wallet -} - -type NobleRoles struct { - Owner ibc.Wallet - Owner2 ibc.Wallet - MasterMinter ibc.Wallet - MinterController ibc.Wallet - MinterController2 ibc.Wallet - Minter ibc.Wallet - Blacklister ibc.Wallet - Pauser ibc.Wallet -} - -// Creates tokenfactory wallets. Meant to run pre-genesis. -// It then recovers the key on the specified validator. -func createTokenfactoryRoles(ctx context.Context, denomMetadata DenomMetadata, val *cosmos.ChainNode, minSetup bool) (NobleRoles, error) { - chainCfg := val.Chain.Config() - nobleVal := val.Chain - - var err error - - nobleRoles := NobleRoles{} - - nobleRoles.Owner, err = nobleVal.BuildRelayerWallet(ctx, "owner-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create wallet: %w", err) - } - - if err := val.RecoverKey(ctx, nobleRoles.Owner.KeyName(), nobleRoles.Owner.Mnemonic()); err != nil { - return NobleRoles{}, fmt.Errorf("failed to restore %s wallet: %w", nobleRoles.Owner.KeyName(), err) - } - - genesisWallet := ibc.WalletAmount{ - Address: nobleRoles.Owner.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - } - err = val.AddGenesisAccount(ctx, genesisWallet.Address, []types.Coin{types.NewCoin(genesisWallet.Denom, types.NewIntFromUint64(uint64(genesisWallet.Amount)))}) - if err != nil { - return NobleRoles{}, err - } - if minSetup { - return nobleRoles, nil - } - - nobleRoles.Owner2, err = nobleVal.BuildRelayerWallet(ctx, "owner2-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "owner2", err) - } - nobleRoles.MasterMinter, err = nobleVal.BuildRelayerWallet(ctx, "masterminter-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "masterminter", err) - } - nobleRoles.MinterController, err = nobleVal.BuildRelayerWallet(ctx, "mintercontroller-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "mintercontroller", err) - } - nobleRoles.MinterController2, err = nobleVal.BuildRelayerWallet(ctx, "mintercontroller2-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "mintercontroller2", err) - } - nobleRoles.Minter, err = nobleVal.BuildRelayerWallet(ctx, "minter-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "minter", err) - } - nobleRoles.Blacklister, err = nobleVal.BuildRelayerWallet(ctx, "blacklister-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "blacklister", err) - } - nobleRoles.Pauser, err = nobleVal.BuildRelayerWallet(ctx, "pauser-"+denomMetadata.Base) - if err != nil { - return NobleRoles{}, fmt.Errorf("failed to create %s wallet: %w", "pauser", err) - } - - walletsToRestore := []ibc.Wallet{nobleRoles.Owner2, nobleRoles.MasterMinter, nobleRoles.MinterController, nobleRoles.MinterController2, nobleRoles.Minter, nobleRoles.Blacklister, nobleRoles.Pauser} - for _, wallet := range walletsToRestore { - if err = val.RecoverKey(ctx, wallet.KeyName(), wallet.Mnemonic()); err != nil { - return NobleRoles{}, fmt.Errorf("failed to restore %s wallet: %w", wallet.KeyName(), err) - } - } - - genesisWallets := []ibc.WalletAmount{ - { - Address: nobleRoles.Owner2.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.MasterMinter.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.MinterController.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.MinterController2.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.Minter.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.Blacklister.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: nobleRoles.Pauser.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - } - - for _, wallet := range genesisWallets { - err = val.AddGenesisAccount(ctx, wallet.Address, []types.Coin{types.NewCoin(wallet.Denom, types.NewIntFromUint64(uint64(wallet.Amount)))}) - if err != nil { - return NobleRoles{}, err - } - } - - return nobleRoles, nil -} - -// Creates extra wallets used for testing. Meant to run pre-genesis. -// It then recovers the key on the specified validator. -func createParamAuthAtGenesis(ctx context.Context, val *cosmos.ChainNode) (ibc.Wallet, error) { - chainCfg := val.Chain.Config() - - // Test address: noble127de05h6z3a3rh5jf0rjepa48zpgxtesfywgtf - wallet, err := val.Chain.BuildWallet(ctx, "authority", "index grain inform faith cave know pluck avoid supply zoo retreat system perfect aware shuffle abuse fat security cash amount night return grape candy") - if err != nil { - return nil, fmt.Errorf("failed to create wallet: %w", err) - } - - genesisWallet := ibc.WalletAmount{ - Address: wallet.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - } - - err = val.AddGenesisAccount(ctx, genesisWallet.Address, []types.Coin{types.NewCoin(genesisWallet.Denom, types.NewIntFromUint64(uint64(genesisWallet.Amount)))}) - if err != nil { - return nil, err - } - return wallet, nil -} - -// Creates extra wallets used for testing. Meant to run pre-genesis. -// It then recovers the key on the specified validator. -func createExtraWalletsAtGenesis(ctx context.Context, val *cosmos.ChainNode) (ExtraWallets, error) { - chainCfg := val.Chain.Config() - nobleVal := val.Chain - - var err error - - extraWallets := &ExtraWallets{} - - extraWallets.User, err = nobleVal.BuildRelayerWallet(ctx, "user") - if err != nil { - return ExtraWallets{}, fmt.Errorf("failed to create wallet: %w", err) - } - extraWallets.User2, err = nobleVal.BuildRelayerWallet(ctx, "user2") - if err != nil { - return ExtraWallets{}, fmt.Errorf("failed to create wallet: %w", err) - } - extraWallets.Alice, err = nobleVal.BuildRelayerWallet(ctx, "alice") - if err != nil { - return ExtraWallets{}, fmt.Errorf("failed to create wallet: %w", err) - } - - walletsToRestore := []ibc.Wallet{extraWallets.User, extraWallets.User2, extraWallets.Alice} - for _, wallet := range walletsToRestore { - if err = val.RecoverKey(ctx, wallet.KeyName(), wallet.Mnemonic()); err != nil { - return ExtraWallets{}, fmt.Errorf("failed to restore %s wallet: %w", wallet.KeyName(), err) - } - } - - genesisWallets := []ibc.WalletAmount{ - { - Address: extraWallets.User.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - { - Address: extraWallets.User2.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 10_000, - }, - { - Address: extraWallets.Alice.FormattedAddress(), - Denom: chainCfg.Denom, - Amount: 0, - }, - } - - for _, wallet := range genesisWallets { - err = val.AddGenesisAccount(ctx, wallet.Address, []types.Coin{types.NewCoin(wallet.Denom, types.NewIntFromUint64(uint64(wallet.Amount)))}) - if err != nil { - return ExtraWallets{}, err - } - } - return *extraWallets, nil -} - -type genesisWrapper struct { - chain *cosmos.CosmosChain - tfRoles NobleRoles - fiatTfRoles NobleRoles - paramAuthority ibc.Wallet - extraWallets ExtraWallets -} - -func nobleChainSpec( - ctx context.Context, - gw *genesisWrapper, - chainID string, - nv, nf int, - minSetupTf, minSetupFiatTf bool, - minModifyTf, minModifyFiatTf bool, -) *interchaintest.ChainSpec { - return &interchaintest.ChainSpec{ - NumValidators: &nv, - NumFullNodes: &nf, - ChainConfig: ibc.ChainConfig{ - Type: "cosmos", - Name: "noble", - ChainID: chainID, - Bin: "nobled", - Denom: "token", - Bech32Prefix: "noble", - CoinType: "118", - GasPrices: "0.0token", - GasAdjustment: 1.1, - TrustingPeriod: "504h", - NoHostMount: false, - Images: nobleImageInfo, - EncodingConfig: NobleEncoding(), - PreGenesis: preGenesisAll(ctx, gw, minSetupTf, minSetupFiatTf), - ModifyGenesis: modifyGenesisAll(gw, minModifyTf, minModifyFiatTf), - }, - } -} - -func preGenesisAll(ctx context.Context, gw *genesisWrapper, minSetupTf, minSetupFiatTf bool) func(ibc.ChainConfig) error { - return func(cc ibc.ChainConfig) (err error) { - val := gw.chain.Validators[0] - - gw.tfRoles, err = createTokenfactoryRoles(ctx, denomMetadataFrienzies, val, minSetupTf) - if err != nil { - return err - } - - gw.fiatTfRoles, err = createTokenfactoryRoles(ctx, denomMetadataUsdc, val, minSetupFiatTf) - if err != nil { - return err - } - - gw.extraWallets, err = createExtraWalletsAtGenesis(ctx, val) - if err != nil { - return err - } - - gw.paramAuthority, err = createParamAuthAtGenesis(ctx, val) - return err - } -} - -func modifyGenesisAll(gw *genesisWrapper, minSetupTf, minSetupFiatTf bool) func(cc ibc.ChainConfig, b []byte) ([]byte, error) { - return func(cc ibc.ChainConfig, b []byte) ([]byte, error) { - g := make(map[string]interface{}) - - if err := json.Unmarshal(b, &g); err != nil { - return nil, fmt.Errorf("failed to unmarshal genesis file: %w", err) - } - - if err := modifyGenesisTokenfactory(g, "tokenfactory", denomMetadataFrienzies, gw.tfRoles, minSetupTf); err != nil { - return nil, err - } - - if err := modifyGenesisTokenfactory(g, "fiat-tokenfactory", denomMetadataUsdc, gw.fiatTfRoles, minSetupFiatTf); err != nil { - return nil, err - } - - authority := gw.paramAuthority.FormattedAddress() - - if err := modifyGenesisParamAuthority(g, authority); err != nil { - return nil, err - } - - if err := modifyGenesisTariffDefaults(g, authority); err != nil { - return nil, err - } - - if err := modifyGenesisCCTP(g, gw.fiatTfRoles.Owner.FormattedAddress()); err != nil { - return nil, err - } - - out, err := json.Marshal(&g) - if err != nil { - return nil, fmt.Errorf("failed to marshal genesis bytes to json: %w", err) - } - - return out, nil - } -} - -// Modifies tokenfactory genesis accounts. -// If minSetup = true, only the owner address, paused state, and denom is setup in genesis. -// These are minimum requirements to start the chain. Otherwise all tokenfactory accounts are created. -func modifyGenesisTokenfactory(g map[string]interface{}, tokenfactoryModName string, denomMetadata DenomMetadata, roles NobleRoles, minSetup bool) error { - if err := dyno.Set(g, TokenFactoryAddress{roles.Owner.FormattedAddress()}, "app_state", tokenfactoryModName, "owner"); err != nil { - return fmt.Errorf("failed to set owner address in genesis json: %w", err) - } - if err := dyno.Set(g, TokenFactoryPaused{false}, "app_state", tokenfactoryModName, "paused"); err != nil { - return fmt.Errorf("failed to set paused in genesis json: %w", err) - } - if err := dyno.Set(g, TokenFactoryDenom{denomMetadata.Base}, "app_state", tokenfactoryModName, "mintingDenom"); err != nil { - return fmt.Errorf("failed to set minting denom in genesis json: %w", err) - } - if err := dyno.Append(g, denomMetadata, "app_state", "bank", "denom_metadata"); err != nil { - return fmt.Errorf("failed to set denom metadata in genesis json: %w", err) - } - if minSetup { - return nil - } - if err := dyno.Set(g, TokenFactoryAddress{roles.MasterMinter.FormattedAddress()}, "app_state", tokenfactoryModName, "masterMinter"); err != nil { - return fmt.Errorf("failed to set owner address in genesis json: %w", err) - } - if err := dyno.Set(g, TokenFactoryAddress{roles.Blacklister.FormattedAddress()}, "app_state", tokenfactoryModName, "blacklister"); err != nil { - return fmt.Errorf("failed to set owner address in genesis json: %w", err) - } - if err := dyno.Set(g, TokenFactoryAddress{roles.Pauser.FormattedAddress()}, "app_state", tokenfactoryModName, "pauser"); err != nil { - return fmt.Errorf("failed to set owner address in genesis json: %w", err) - } - return nil -} - -func modifyGenesisParamAuthority(genbz map[string]interface{}, authorityAddress string) error { - if err := dyno.Set(genbz, authorityAddress, "app_state", "params", "params", "authority"); err != nil { - return fmt.Errorf("failed to set params authority in genesis json: %w", err) - } - if err := dyno.Set(genbz, authorityAddress, "app_state", "upgrade", "params", "authority"); err != nil { - return fmt.Errorf("failed to set upgrade authority address in genesis json: %w", err) - } - - return nil -} - -// "params": {}, -// "authority": "our address", -// "attester_list": [], -// "per_message_burn_limit_list": [], -// "burning_and_minting_paused": false, -// "sending_and_receiving_messages_paused": false, -// "max_message_body_size": 8000, -// "next_available_nonce": 0, -// "signature_threshold": 2, -// "token_pair_list": [], -// "used_nonces_list": [] -// "token_messenger_list": [] -func modifyGenesisCCTP(genbz map[string]interface{}, authority string) error { - if err := dyno.Set(genbz, authority, "app_state", "cctp", "owner"); err != nil { - return fmt.Errorf("failed to set cctp authority address in genesis json: %w", err) - } - if err := dyno.Set(genbz, authority, "app_state", "cctp", "attester_manager"); err != nil { - return fmt.Errorf("failed to set cctp authority address in genesis json: %w", err) - } - if err := dyno.Set(genbz, authority, "app_state", "cctp", "pauser"); err != nil { - return fmt.Errorf("failed to set cctp authority address in genesis json: %w", err) - } - if err := dyno.Set(genbz, authority, "app_state", "cctp", "token_controller"); err != nil { - return fmt.Errorf("failed to set cctp authority address in genesis json: %w", err) - } - if err := dyno.Set(genbz, []CCTPPerMessageBurnLimit{{Amount: "99999999", Denom: denomMetadataUsdc.Base}}, "app_state", "cctp", "per_message_burn_limit_list"); err != nil { - return fmt.Errorf("failed to set cctp perMessageBurnLimit in genesis json: %w", err) - } - if err := dyno.Set(genbz, CCTPAmount{Amount: "8000"}, "app_state", "cctp", "max_message_body_size"); err != nil { - return fmt.Errorf("failed to set cctp maxMessageBodySize in genesis json: %w", err) - } - if err := dyno.Set(genbz, CCTPNonce{Nonce: "0"}, "app_state", "cctp", "next_available_nonce"); err != nil { - return fmt.Errorf("failed to set cctp nonce in genesis json: %w", err) - } - if err := dyno.Set(genbz, CCTPAmount{Amount: "2"}, "app_state", "cctp", "signature_threshold"); err != nil { - return fmt.Errorf("failed to set cctp signatureThreshold in genesis json: %w", err) - } - //if err := dyno.Set(genbz, Attester{Attester: "0xE2fEfe09E74b921CbbFF229E7cD40009231501CA"}, "app_state", "cctp", "attes"); err != nil { - // return fmt.Errorf("failed to set cctp signatureThreshold in genesis json: %w", err) - //} - //if err := dyno.Set(genbz, Attester{Attester: "0xb0Ea8E1bE37F346C7EA7ec708834D0db18A17361"}, "app_state", "cctp", "attes"); err != nil { - // return fmt.Errorf("failed to set cctp signatureThreshold in genesis json: %w", err) - //} - - return nil -} - -func modifyGenesisTariffDefaults( - genbz map[string]interface{}, - distributionEntity string, -) error { - return modifyGenesisTariff(genbz, defaultShare, distributionEntity, - defaultDistributionEntityShare, defaultTransferBPSFee, defaultTransferMaxFee, defaultTransferFeeDenom) -} - -func modifyGenesisTariff( - genbz map[string]interface{}, - share string, - distributionEntity string, - distributionEntityShare string, - transferBPSFee string, - transferMaxFee string, - transferDenom string, -) error { - if err := dyno.Set(genbz, share, "app_state", "tariff", "params", "share"); err != nil { - return fmt.Errorf("failed to set params authority in genesis json: %w", err) - } - distributionEntities := []DistributionEntity{ - { - Address: distributionEntity, - Share: distributionEntityShare, - }, - } - if err := dyno.Set(genbz, distributionEntities, "app_state", "tariff", "params", "distribution_entities"); err != nil { - return fmt.Errorf("failed to set upgrade authority address in genesis json: %w", err) - } - if err := dyno.Set(genbz, transferBPSFee, "app_state", "tariff", "params", "transfer_fee_bps"); err != nil { - return fmt.Errorf("failed to set params authority in genesis json: %w", err) - } - if err := dyno.Set(genbz, transferMaxFee, "app_state", "tariff", "params", "transfer_fee_max"); err != nil { - return fmt.Errorf("failed to set params authority in genesis json: %w", err) - } - if err := dyno.Set(genbz, transferDenom, "app_state", "tariff", "params", "transfer_fee_denom"); err != nil { - return fmt.Errorf("failed to set params authority in genesis json: %w", err) - } - return nil -} - -func modifyGenesisDowntimeWindow(bz map[string]interface{}) error { - return dyno.Set(bz, "5", "app_state", "slashing", "params", "signed_blocks_window") -} diff --git a/interchaintest/globalfee_test.go b/interchaintest/globalfee_test.go deleted file mode 100644 index 50c3ddb3..00000000 --- a/interchaintest/globalfee_test.go +++ /dev/null @@ -1,141 +0,0 @@ -package interchaintest_test - -import ( - "context" - "fmt" - "testing" - - "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - proposaltypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// run `make local-image`to rebuild updated binary before running test -func TestGlobalFee(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", 2, 0, false, true, false, true), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - chainCfg := noble.Config() - - cmd.SetPrefixes(chainCfg.Bech32Prefix) - - nobleValidator := noble.Validators[0] - - sendAmount100 := fmt.Sprintf("100%s", chainCfg.Denom) - minGasPriceAmount := "0.00001" - - minGasPrice := minGasPriceAmount + chainCfg.Denom - zeroGasPrice := "0.0" + chainCfg.Denom - - // send tx with zero fees with the default MinimumGasPricesParam of 0 (null) - tx should succeed - _, err = nobleValidator.ExecTx(ctx, gw.extraWallets.User2.KeyName(), "bank", "send", gw.extraWallets.User2.KeyName(), gw.extraWallets.Alice.FormattedAddress(), sendAmount100, "--gas-prices", zeroGasPrice) - require.NoError(t, err, "failed sending transaction") - - msgUpdateParams := proposaltypes.MsgUpdateParams{ - ChangeProposal: proposal.NewParameterChangeProposal( - "Global Fees Param Change", - "Update global fees", - []proposal.ParamChange{ - { - Subspace: "globalfee", - Key: "MinimumGasPricesParam", - Value: fmt.Sprintf(`[{"denom":"%s", "amount":"%s"}]`, chainCfg.Denom, minGasPriceAmount), - }, - }), - Authority: gw.paramAuthority.FormattedAddress(), - } - - broadcaster := cosmos.NewBroadcaster(t, noble) - - wallet := cosmos.NewWallet( - gw.paramAuthority.KeyName(), - gw.paramAuthority.Address(), - gw.paramAuthority.Mnemonic(), - chainCfg, - ) - - tx, err := cosmos.BroadcastTx( - ctx, - broadcaster, - wallet, - &msgUpdateParams, - ) - require.NoError(t, err, "failed to broadcast tx") - require.Equal(t, uint32(0), tx.Code, "tx proposal failed") - - // send tx with zero fees while the default MinimumGasPricesParam requires fees - tx should fail - _, err = nobleValidator.ExecTx(ctx, gw.extraWallets.User2.KeyName(), - "bank", "send", - gw.extraWallets.User2.FormattedAddress(), gw.extraWallets.Alice.FormattedAddress(), sendAmount100, - "--gas-prices", zeroGasPrice, - "-b", "block", - ) - require.Error(t, err, "tx should not have succeeded with zero fees") - - // send tx with the gas price set by MinimumGasPricesParam - tx should succeed - _, err = nobleValidator.ExecTx(ctx, gw.extraWallets.User2.KeyName(), - "bank", "send", - gw.extraWallets.User2.FormattedAddress(), gw.extraWallets.Alice.FormattedAddress(), sendAmount100, - "--gas-prices", minGasPrice, - "-b", "block", - ) - require.NoError(t, err, "tx should have succeeded") - - // send tx with zero fees while the default MinimumGasPricesParam requires fees, but update owner msg is in the bypass min fee msgs list - tx should succeed - _, err = nobleValidator.ExecTx(ctx, gw.tfRoles.Owner.KeyName(), - "tokenfactory", "update-owner", gw.tfRoles.Owner2.FormattedAddress(), - "--gas-prices", zeroGasPrice, - "-b", "block", - ) - require.NoError(t, err, "failed to execute update owner tx with zero fees") - - // send tx with zero fees while the default MinimumGasPricesParam requires fees, but accept owner msg is in the bypass min fee msgs list - tx should succeed - _, err = nobleValidator.ExecTx(ctx, gw.tfRoles.Owner2.KeyName(), - "tokenfactory", "accept-owner", - "--gas-prices", zeroGasPrice, - "-b", "block", - ) - require.NoError(t, err, "failed to execute tx to accept ownership with zero fees") - -} diff --git a/interchaintest/go.mod b/interchaintest/go.mod deleted file mode 100644 index 05383967..00000000 --- a/interchaintest/go.mod +++ /dev/null @@ -1,200 +0,0 @@ -module github.com/noble-assets/noble/interchaintest - -go 1.21 - -require ( - cosmossdk.io/math v1.0.1 - github.com/circlefin/noble-cctp v0.0.0-20240510135541-253cf7eb9436 - github.com/circlefin/noble-fiattokenfactory v0.0.0-20240502160322-738932cb316d - github.com/cosmos/cosmos-sdk v0.45.16 - github.com/cosmos/ibc-go/v4 v4.6.0 - github.com/ethereum/go-ethereum v1.12.2 - github.com/gogo/protobuf v1.3.3 - github.com/icza/dyno v0.0.0-20220812133438-f0b6f8a18845 - github.com/noble-assets/forwarding v1.1.0 - github.com/noble-assets/noble/v7 v7.0.0 - github.com/strangelove-ventures/interchaintest/v4 v4.0.0-20231026153934-334934f17a68 - github.com/strangelove-ventures/paramauthority v1.1.0 - github.com/stretchr/testify v1.8.4 - go.uber.org/zap v1.24.0 -) - -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 // indirect - github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect - github.com/99designs/keyring v1.2.2 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect - github.com/ChainSafe/go-schnorrkel v1.0.0 // indirect - github.com/DataDog/zstd v1.5.2 // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect - github.com/Workiva/go-datastructures v1.0.53 // indirect - github.com/armon/go-metrics v0.4.1 // indirect - github.com/avast/retry-go/v4 v4.3.4 // indirect - github.com/benbjohnson/clock v1.3.0 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect - github.com/btcsuite/btcd/btcec/v2 v2.3.2 // 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/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811 // 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/confio/ics23/go v0.9.1 // indirect - github.com/cosmos/btcutil v1.0.5 // indirect - github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 // indirect - github.com/cosmos/cosmos-proto v1.0.0-beta.2 // indirect - github.com/cosmos/go-bip39 v1.0.0 // indirect - github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect - github.com/creachadair/taskgroup v0.4.2 // 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.1.0 // 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.1 // indirect - github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker v24.0.1+incompatible // indirect - github.com/docker/go-connections v0.4.0 // indirect - github.com/docker/go-units v0.5.0 // indirect - github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.5.0 // indirect - github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.18.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.6.0 // indirect - github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect - github.com/gogo/gateway v1.1.0 // indirect - github.com/golang/glog v1.1.0 // indirect - github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect - github.com/google/btree v1.1.2 // indirect - github.com/google/orderedcode v0.0.1 // indirect - github.com/google/uuid v1.3.0 // 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/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/go-immutable-radix v1.3.1 // 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.1.0 // indirect - github.com/holiman/uint256 v1.2.3 // indirect - github.com/improbable-eng/grpc-web v0.15.0 // indirect - github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/jmhodges/levigo v1.0.0 // indirect - github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // 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/lib/pq v1.10.9 // 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.7 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect - github.com/mimoo/StrobeGo v0.0.0-20220103164710-9a04d6ca976b // indirect - github.com/minio/highwayhash v1.0.2 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mtibben/percent v0.2.1 // indirect - github.com/opencontainers/go-digest v1.0.0 // indirect - github.com/opencontainers/image-spec v1.1.0-rc2 // indirect - github.com/pelletier/go-toml v1.9.5 // 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_golang v1.15.0 // indirect - github.com/prometheus/client_model v0.3.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.9.0 // 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/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect - github.com/rs/cors v1.8.3 // indirect - github.com/rs/zerolog v1.27.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.9.3 // indirect - github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/cobra v1.7.0 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.15.0 // indirect - github.com/subosito/gotenv v1.4.2 // indirect - github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect - github.com/tendermint/go-amino v0.16.0 // indirect - github.com/tendermint/tendermint v0.34.27 // indirect - github.com/tendermint/tm-db v0.6.7 // indirect - github.com/tidwall/btree v1.5.0 // indirect - github.com/zondax/hid v0.9.2 // indirect - github.com/zondax/ledger-go v0.14.3 // indirect - go.etcd.io/bbolt v1.3.7 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect - golang.org/x/mod v0.13.0 // indirect - golang.org/x/net v0.17.0 // indirect - golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect - golang.org/x/tools v0.14.0 // indirect - google.golang.org/genproto v0.0.0-20230629202037-9506855d4529 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230526203410-71b5a4ffd15e // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130 // indirect - google.golang.org/grpc v1.56.2 // 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 - gopkg.in/yaml.v3 v3.0.1 // indirect - lukechampine.com/uint128 v1.2.0 // indirect - modernc.org/cc/v3 v3.40.0 // indirect - modernc.org/ccgo/v3 v3.16.13 // indirect - modernc.org/libc v1.22.5 // indirect - modernc.org/mathutil v1.5.0 // indirect - modernc.org/memory v1.5.0 // indirect - modernc.org/opt v0.1.3 // indirect - modernc.org/sqlite v1.23.1 // indirect - modernc.org/strutil v1.1.3 // indirect - modernc.org/token v1.0.1 // indirect - nhooyr.io/websocket v1.8.7 // indirect -) - -replace ( - // use cosmos compatible ChainSafe/go-schnorrkel - github.com/ChainSafe/go-schnorrkel => github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d - - // use cosmos flavored gogo/protobuf - // https://github.com/cosmos/cosmos-sdk/issues/8469 - github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1 - - // use local version of noble - github.com/noble-assets/noble/v7 => ./.. - - // use cosmos compatible syndtr/goleveldb - github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 - - // use cometbft - github.com/tendermint/tendermint => github.com/cometbft/cometbft v0.34.27 -) diff --git a/interchaintest/ibc_bps_fee_test.go b/interchaintest/ibc_bps_fee_test.go deleted file mode 100644 index 1a050528..00000000 --- a/interchaintest/ibc_bps_fee_test.go +++ /dev/null @@ -1,175 +0,0 @@ -package interchaintest_test - -import ( - "context" - "testing" - - transfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// run `make local-image`to rebuild updated binary before running test -func TestICS20BPSFees(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", nv, nf, false, false, true, false), - { - Name: "gaia", - Version: "v9.0.2", - NumValidators: &nv, - NumFullNodes: &nf, - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - r := interchaintest.NewBuiltinRelayerFactory( - ibc.CosmosRly, - zaptest.NewLogger(t), - relayerImage, - ).Build(t, client, network) - - var gaia *cosmos.CosmosChain - gw.chain, gaia = chains[0].(*cosmos.CosmosChain), chains[1].(*cosmos.CosmosChain) - noble := gw.chain - - path := "p" - - ic := interchaintest.NewInterchain(). - AddChain(noble). - AddChain(gaia). - AddRelayer(r, "relayer"). - AddLink(interchaintest.InterchainLink{ - Chain1: noble, - Chain2: gaia, - Path: path, - Relayer: r, - }) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleValidator := noble.Validators[0] - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", gw.fiatTfRoles.MinterController.FormattedAddress(), gw.fiatTfRoles.Minter.FormattedAddress(), "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter controller tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.MinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", gw.fiatTfRoles.Minter.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter tx") - - _, err = nobleValidator.ExecTx(ctx, gw.fiatTfRoles.Minter.KeyName(), - "fiat-tokenfactory", "mint", gw.extraWallets.User.FormattedAddress(), "1000000000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute mint to user tx") - - userBalance, err := noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err, "failed to get user balance") - require.Equalf(t, int64(1000000000000), userBalance, "failed to mint %s to user", denomMetadataUsdc.Base) - - nobleChans, err := r.GetChannels(ctx, eRep, noble.Config().ChainID) - require.NoError(t, err, "failed to get noble channels") - require.Len(t, nobleChans, 1, "more than one channel found") - nobleChan := nobleChans[0] - - gaiaReceiver := "cosmos169xaqmxumqa829gg73nxrenkhhd2mrs36j3vrz" - - err = r.StartRelayer(ctx, eRep, path) - require.NoError(t, err, "failed to start relayer") - defer r.StopRelayer(ctx, eRep) - - height, err := noble.Height(ctx) - require.NoError(t, err, "failed to get noble height") - - // First, test BPS below max fees - tx, err := noble.SendIBCTransfer(ctx, nobleChan.ChannelID, gw.extraWallets.User.KeyName(), ibc.WalletAmount{ - Address: gaiaReceiver, - Denom: denomMetadataUsdc.Base, - Amount: 100000000, - }, ibc.TransferOptions{}) - require.NoError(t, err, "failed to send ibc transfer from noble") - - _, err = testutil.PollForAck(ctx, noble, height, height+10, tx.Packet) - require.NoError(t, err, "failed to find ack for ibc transfer") - - userBalance, err = noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err, "failed to get user balance") - require.Equal(t, int64(999900000000), userBalance, "user balance is incorrect") - - prefixedDenom := transfertypes.GetPrefixedDenom(nobleChan.Counterparty.PortID, nobleChan.Counterparty.ChannelID, denomMetadataUsdc.Base) - denomTrace := transfertypes.ParseDenomTrace(prefixedDenom) - ibcDenom := denomTrace.IBCDenom() - - // 100000000 (Transfer Amount) * .0001 (1 BPS) = 10000 taken as fees - receiverBalance, err := gaia.GetBalance(ctx, gaiaReceiver, ibcDenom) - require.NoError(t, err, "failed to get receiver balance") - require.Equal(t, int64(99990000), receiverBalance, "receiver balance incorrect") - - // of the 10000 taken as fees, 80% goes to distribution entity (8000) - distributionEntityBalance, err := noble.GetBalance(ctx, gw.paramAuthority.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err, "failed to get distribution entity balance") - require.Equal(t, int64(8000), distributionEntityBalance, "distribution entity balance incorrect") - - // Now test max fee - tx, err = noble.SendIBCTransfer(ctx, nobleChan.ChannelID, gw.extraWallets.User.FormattedAddress(), ibc.WalletAmount{ - Address: gaiaReceiver, - Denom: denomMetadataUsdc.Base, - Amount: 100000000000, - }, ibc.TransferOptions{}) - require.NoError(t, err, "failed to send ibc transfer from noble") - - _, err = testutil.PollForAck(ctx, noble, height, height+10, tx.Packet) - require.NoError(t, err, "failed to find ack for ibc transfer") - - // 999900000000 user balance from prior test, now subtract 100000000000 = 899900000000 - userBalance, err = noble.GetBalance(ctx, gw.extraWallets.User.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err, "failed to get user balance") - require.Equal(t, int64(899900000000), userBalance, "user balance is incorrect") - - // fees will max, 5000000 is taken off of transfer amount - // prior receiver balance 99990000. add 100000000000 transfer amount but subtracted 5000000 in bps fees (max) = 100094990000 - receiverBalance, err = gaia.GetBalance(ctx, gaiaReceiver, ibcDenom) - require.NoError(t, err, "failed to get receiver balance") - require.Equal(t, int64(100094990000), receiverBalance, "receiver balance incorrect") - - // prior balance 8000, add 80% of the 5000000 fee (4000000) = 4008000 - distributionEntityBalance, err = noble.GetBalance(ctx, gw.paramAuthority.FormattedAddress(), denomMetadataUsdc.Base) - require.NoError(t, err, "failed to get distribution entity balance") - require.Equal(t, int64(4008000), distributionEntityBalance, "distribution entity balance incorrect") - -} diff --git a/interchaintest/ibc_client_expire_substitute_test.go b/interchaintest/ibc_client_expire_substitute_test.go deleted file mode 100644 index f40427bc..00000000 --- a/interchaintest/ibc_client_expire_substitute_test.go +++ /dev/null @@ -1,181 +0,0 @@ -package interchaintest_test - -import ( - "context" - "testing" - - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -// run `make local-image`to rebuild updated binary before running test -func TestClientSubstitution(t *testing.T) { - if testing.Short() { - t.Skip() - } - t.Log("hi") - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - nv := 1 - nf := 0 - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", nv, nf, true, true, true, true), - { - Name: "gaia", - Version: "v10.0.2", - NumValidators: &nv, - NumFullNodes: &nf, - }, - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - gaia := chains[1].(*cosmos.CosmosChain) - - r := interchaintest.NewBuiltinRelayerFactory( - ibc.CosmosRly, - zaptest.NewLogger(t), - relayerImage, - ).Build(t, client, network) - - pathName := "noble-gaia" - - ic := interchaintest.NewInterchain(). - AddChain(noble). - AddChain(gaia). - AddRelayer(r, "r"). - AddLink(interchaintest.InterchainLink{ - Chain1: noble, - Chain2: gaia, - Relayer: r, - Path: pathName, - }) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: true, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - nobleChainID := noble.Config().ChainID - gaiaChainID := gaia.Config().ChainID - - err = r.GeneratePath(ctx, eRep, nobleChainID, gaiaChainID, pathName) - require.NoError(t, err) - - // create client on noble with short trusting period which will expire. - res := r.Exec(ctx, eRep, []string{"rly", "tx", "client", nobleChainID, gaiaChainID, pathName, "--client-tp", "20s", "--home", "/home/relayer"}, nil) - require.NoError(t, res.Err) - - // create client on gaia with longer trusting period so it won't expire for this test. - res = r.Exec(ctx, eRep, []string{"rly", "tx", "client", gaiaChainID, nobleChainID, pathName, "--home", "/home/relayer"}, nil) - require.NoError(t, res.Err) - - err = testutil.WaitForBlocks(ctx, 2, noble, gaia) - require.NoError(t, err) - - err = r.CreateConnections(ctx, eRep, pathName) - require.NoError(t, err) - - err = testutil.WaitForBlocks(ctx, 2, noble, gaia) - require.NoError(t, err) - - err = r.CreateChannel(ctx, eRep, pathName, ibc.CreateChannelOptions{ - SourcePortName: "transfer", - DestPortName: "transfer", - Order: ibc.Unordered, - Version: "ics20-1", - }) - require.NoError(t, err) - - const userFunds = int64(10_000_000_000) - users := interchaintest.GetAndFundTestUsers(t, ctx, t.Name(), userFunds, noble, gaia) - - nobleClients, err := r.GetClients(ctx, eRep, nobleChainID) - require.NoError(t, err) - require.Len(t, nobleClients, 1) - - nobleClient := nobleClients[0] - - nobleChannels, err := r.GetChannels(ctx, eRep, nobleChainID) - require.NoError(t, err) - require.Len(t, nobleChannels, 1) - nobleChannel := nobleChannels[0] - - err = testutil.WaitForBlocks(ctx, 20, noble) - require.NoError(t, err) - - // client should now be expired, no relayer was running to update the clients during the 20s trusting period. - - _, err = noble.SendIBCTransfer(ctx, nobleChannel.ChannelID, users[0].KeyName(), ibc.WalletAmount{ - Address: users[1].FormattedAddress(), - Amount: 1000000, - Denom: noble.Config().Denom, - }, ibc.TransferOptions{}) - - require.Error(t, err) - require.ErrorContains(t, err, "status Expired: client is not active") - - // create new client on noble - res = r.Exec(ctx, eRep, []string{"rly", "tx", "client", nobleChainID, gaiaChainID, pathName, "--override", "--home", "/home/relayer"}, nil) - require.NoError(t, res.Err) - - nobleClients, err = r.GetClients(ctx, eRep, nobleChainID) - require.NoError(t, err) - require.Len(t, nobleClients, 2) - - newNobleClient := nobleClients[1] - - // substitute new client state into old client - _, err = noble.Validators[0].ExecTx(ctx, gw.paramAuthority.KeyName(), "ibc-authority", "update-client", nobleClient.ClientID, newNobleClient.ClientID) - require.NoError(t, err) - - // update config to old client ID - res = r.Exec(ctx, eRep, []string{"rly", "paths", "update", pathName, "--src-client-id", nobleClient.ClientID, "--home", "/home/relayer"}, nil) - require.NoError(t, res.Err) - - // start up relayer and test a transfer - err = r.StartRelayer(ctx, eRep, pathName) - require.NoError(t, err) - - t.Cleanup(func() { - _ = r.StopRelayer(ctx, eRep) - }) - - nobleHeight, err := noble.Height(ctx) - require.NoError(t, err) - - // send a packet on the same channel with new client, should succeed. - tx, err := noble.SendIBCTransfer(ctx, nobleChannel.ChannelID, users[0].KeyName(), ibc.WalletAmount{ - Address: users[1].FormattedAddress(), - Amount: 1000000, - Denom: noble.Config().Denom, - }, ibc.TransferOptions{}) - require.NoError(t, err) - - _, err = testutil.PollForAck(ctx, noble, nobleHeight, nobleHeight+10, tx.Packet) - require.NoError(t, err) -} diff --git a/interchaintest/paramauthority_test.go b/interchaintest/paramauthority_test.go deleted file mode 100644 index b14b5ea7..00000000 --- a/interchaintest/paramauthority_test.go +++ /dev/null @@ -1,196 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "fmt" - "testing" - - "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - "github.com/icza/dyno" - "github.com/noble-assets/noble/v7/cmd" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - proposaltypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" - "github.com/stretchr/testify/require" - "go.uber.org/zap/zaptest" -) - -type ParamsCase struct { - title string - description string - newAuthority string - msgAuthority string - signer ibc.Wallet - shouldSucceed bool -} - -func testParamsCase(t *testing.T, ctx context.Context, broadcaster *cosmos.Broadcaster, testCase ParamsCase, chainCfg ibc.ChainConfig) { - t.Logf( - "SIGNER: %s\nMSG AUTHORITY: %s\n", - testCase.signer.FormattedAddress(), - testCase.msgAuthority, - ) - msgUpdateParams := proposaltypes.MsgUpdateParams{ - ChangeProposal: proposal.NewParameterChangeProposal( - testCase.title, - testCase.description, - []proposal.ParamChange{ - { - Subspace: "params", - Key: "authority", - Value: fmt.Sprintf(`"%s"`, testCase.newAuthority), - }, - }), - Authority: testCase.msgAuthority, - } - - wallet := cosmos.NewWallet( - testCase.signer.KeyName(), - testCase.signer.Address(), - testCase.signer.Mnemonic(), - chainCfg, - ) - - tx, err := cosmos.BroadcastTx( - ctx, - broadcaster, - wallet, - &msgUpdateParams, - ) - require.NoError(t, err, "failed to broadcast tx") - - t.Logf("TX: %+v\n", tx) - - if testCase.shouldSucceed { - require.Equal(t, uint32(0), tx.Code, "changing authority failed") - } else { - require.NotEqual(t, uint32(0), tx.Code, "changing authority succeeded when it should have failed") - } -} - -// run `make local-image`to rebuild updated binary before running test -func TestNobleParamAuthority(t *testing.T) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - cf := interchaintest.NewBuiltinChainFactory(zaptest.NewLogger(t), []*interchaintest.ChainSpec{ - nobleChainSpec(ctx, &gw, "noble-1", 1, 0, true, true, true, true), - }) - - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - chainCfg := noble.Config() - - cmd.SetPrefixes(chainCfg.Bech32Prefix) - - broadcaster := cosmos.NewBroadcaster(t, noble) - - var orderedTestCases = []ParamsCase{ - { - title: "change authority to alice from incorrect msg authority and signer", - description: "change params and upgrade authority to alice's address", - newAuthority: gw.extraWallets.Alice.FormattedAddress(), - msgAuthority: gw.extraWallets.User.FormattedAddress(), // matches signer, but this is not the params authority. - signer: gw.extraWallets.User, - shouldSucceed: false, - }, - { - title: "change authority to alice from correct signer but incorrect msg authority", - description: "change params and upgrade authority to alice's address", - newAuthority: gw.extraWallets.Alice.FormattedAddress(), - msgAuthority: gw.extraWallets.User.FormattedAddress(), // this is not the params authority. - signer: gw.paramAuthority, // this is the params authority, but does not match msgAuthority - shouldSucceed: false, - }, - { - title: "change authority to alice from correct msg authority but incorrect signer", - description: "change params and upgrade authority to alice's address", - newAuthority: gw.extraWallets.Alice.FormattedAddress(), - msgAuthority: gw.paramAuthority.FormattedAddress(), // this is the params authority. - signer: gw.extraWallets.User, // this is not the params authority. - shouldSucceed: false, - }, - { - title: "change authority to alice from correct signer and msg authority", - description: "change params and upgrade authority to alice's address", - newAuthority: gw.extraWallets.Alice.FormattedAddress(), - msgAuthority: gw.paramAuthority.FormattedAddress(), // this is the params authority. - signer: gw.paramAuthority, // this is the params authority. - shouldSucceed: true, - }, - { - title: "change authority to user2 from prior authority", - description: "change params and upgrade authority to user2's address", - newAuthority: gw.extraWallets.User2.FormattedAddress(), - msgAuthority: gw.paramAuthority.FormattedAddress(), // this account is no longer the params authority. - signer: gw.paramAuthority, // this account is no longer the params authority. - shouldSucceed: false, - }, - { - title: "change authority to user2 from new authority", - description: "change params and upgrade authority to user2's address", - newAuthority: gw.extraWallets.User2.FormattedAddress(), - msgAuthority: gw.extraWallets.Alice.FormattedAddress(), // this account is the new params authority. - signer: gw.extraWallets.Alice, // this account is the new params authority. - shouldSucceed: true, - }, - } - - for _, testCase := range orderedTestCases { - t.Run(testCase.title, func(t *testing.T) { - testParamsCase(t, ctx, broadcaster, testCase, chainCfg) - }) - } - - height, err := noble.Height(ctx) - require.NoError(t, err, "failed to get noble height") - - err = noble.StopAllNodes(ctx) - require.NoError(t, err, "failed to stop noble chain") - - state, err := noble.ExportState(ctx, int64(height)) - require.NoError(t, err, "failed to export noble state") - - var gs interface{} - err = json.Unmarshal([]byte(state), &gs) - require.NoError(t, err, "failed to unmarshal state export") - - authority, err := dyno.Get(gs, "app_state", "params", "params", "authority") - require.NoError(t, err, "failed to get authority from state export") - - require.Equal(t, gw.extraWallets.User2.FormattedAddress(), authority, "authority does not match") - -} diff --git a/interchaintest/upgrade_argon_test.go b/interchaintest/upgrade_argon_test.go deleted file mode 100644 index b0c31272..00000000 --- a/interchaintest/upgrade_argon_test.go +++ /dev/null @@ -1,292 +0,0 @@ -package interchaintest_test - -import ( - "bytes" - "context" - "crypto/ecdsa" - "crypto/elliptic" - "encoding/hex" - "encoding/json" - "sort" - "testing" - "time" - - cosmossdk_io_math "cosmossdk.io/math" - cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - sdkclient "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/crypto" - "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" -) - -func testPostArgonUpgrade( - t *testing.T, - ctx context.Context, - noble *cosmos.CosmosChain, - paramAuthority ibc.Wallet, -) { - nobleChainCfg := noble.Config() - - fiatOwner, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "fiat-owner", "leg stove oblige forest occur range jar observe ahead morning street forward amazing negative digital syrup bar doctor fortune purpose buddy quote laptop civil", 1, noble) - require.NoError(t, err) - - fiatPauser, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "fiat-pauser", "", 1, noble) - require.NoError(t, err) - - fiatMasterMinter, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "fiat-master-minter", "", 1, noble) - require.NoError(t, err) - - fiatMinterController, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "fiat-minter-controller", "", 1, noble) - require.NoError(t, err) - - cctpAttesterManager, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "cctp-attester-manager", "", 1, noble) - require.NoError(t, err) - - cctpTokenController, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "cctp-token-controller", "", 1, noble) - require.NoError(t, err) - - cctpPauser, err := interchaintest.GetAndFundTestUserWithMnemonic(ctx, "cctp-pauser", "", 1, noble) - require.NoError(t, err) - - err = testutil.WaitForBlocks(ctx, 2, noble) - require.NoError(t, err) - - val := noble.Validators[0] - - // keysToRestore := []ibc.Wallet{fiatOwner, fiatMasterMinter, fiatMinterController, fiatPauser} - // for _, wallet := range keysToRestore { - // val.RecoverKey(ctx, wallet.KeyName(), wallet.Mnemonic()) - // } - - _, err = val.ExecTx(ctx, fiatOwner.KeyName(), - "fiat-tokenfactory", "update-pauser", fiatPauser.FormattedAddress(), "-b", "block", - ) - require.NoError(t, err, "failed to update pauser") - - _, err = val.ExecTx(ctx, fiatPauser.KeyName(), "fiat-tokenfactory", "unpause") - require.NoError(t, err, "failed to set fiat-tokenfactory paused state") - - _, err = val.ExecTx(ctx, paramAuthority.KeyName(), "cctp", "update-attester-manager", cctpAttesterManager.FormattedAddress()) - require.NoError(t, err, "error updating attester manager") - - _, err = val.ExecTx(ctx, paramAuthority.KeyName(), "cctp", "update-token-controller", cctpTokenController.FormattedAddress()) - require.NoError(t, err, "error updating token controller") - - _, err = val.ExecTx(ctx, paramAuthority.KeyName(), "cctp", "update-pauser", cctpPauser.FormattedAddress()) - require.NoError(t, err, "error updating pauser") - - queryRolesResults, _, err := val.ExecQuery(ctx, "cctp", "roles") - require.NoError(t, err, "error querying cctp roles") - - var cctpRoles cctptypes.QueryRolesResponse - err = json.Unmarshal(queryRolesResults, &cctpRoles) - require.NoError(t, err, "failed to unmarshall cctp roles") - - // For CI testing purposes, the paramauthority and cctp owner are the same. - require.Equal(t, paramAuthority.FormattedAddress(), cctpRoles.Owner) - require.Equal(t, cctpAttesterManager.FormattedAddress(), cctpRoles.AttesterManager) - require.Equal(t, cctpTokenController.FormattedAddress(), cctpRoles.TokenController) - require.Equal(t, cctpPauser.FormattedAddress(), cctpRoles.Pauser) - - _, err = val.ExecTx(ctx, paramAuthority.KeyName(), "cctp", "update-max-message-body-size", "9000") - require.NoError(t, err, "error updating max message body size") - - queryMaxMsgBodySize, _, err := val.ExecQuery(ctx, "cctp", "show-max-message-body-size") - require.NoError(t, err, "error querying cctp max message body size") - - t.Logf("Max message body size: %s", string(queryMaxMsgBodySize)) - - // err = json.Unmarshal(queryMaxMsgBodySize, &maxMsgBodySize) - // require.NoError(t, err, "failed to unmarshall max message body size") - - // require.Equal(t, uint64(500), maxMsgBodySize.Amount.Amount) - - attesters := make([]*ecdsa.PrivateKey, 2) - msgs := make([]sdk.Msg, 2) - - // attester - ECDSA public key (Circle will own these keys for mainnet) - for i := range attesters { - p, err := crypto.GenerateKey() // private key - require.NoError(t, err) - - attesters[i] = p - - pubKey := elliptic.Marshal(p.PublicKey, p.PublicKey.X, p.PublicKey.Y) //public key - - attesterPub := hex.EncodeToString(pubKey) - - // Adding an attester to protocol - msgs[i] = &cctptypes.MsgEnableAttester{ - From: cctpAttesterManager.FormattedAddress(), - Attester: attesterPub, - } - } - - broadcaster := cosmos.NewBroadcaster(t, noble) - broadcaster.ConfigureClientContextOptions(func(clientContext sdkclient.Context) sdkclient.Context { - return clientContext.WithBroadcastMode(flags.BroadcastBlock) - }) - - t.Log("preparing to submit add public keys tx") - - burnToken := make([]byte, 32) - copy(burnToken[12:], common.FromHex("0x07865c6E87B9F70255377e024ace6630C1Eaa37F")) - - tokenMessenger := make([]byte, 32) - copy(tokenMessenger[12:], common.FromHex("0xBd3fa81B58Ba92a82136038B25aDec7066af3155")) - - bCtx, bCancel := context.WithTimeout(ctx, 20*time.Second) - defer bCancel() - - tx, err := cosmos.BroadcastTx( - bCtx, - broadcaster, - cctpAttesterManager, - msgs..., - ) - require.NoError(t, err, "error submitting add public keys tx") - require.Zero(t, tx.Code, "cctp add pub keys transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - t.Logf("Submitted add public keys tx: %s", tx.TxHash) - - tx, err = cosmos.BroadcastTx( - bCtx, - broadcaster, - cctpTokenController, - // maps remote token on remote domain to a local token -- used for minting - &cctptypes.MsgLinkTokenPair{ - From: cctpTokenController.FormattedAddress(), - RemoteDomain: 0, - RemoteToken: burnToken, - LocalToken: denomMetadataUsdc.Base, - }, - ) - require.NoError(t, err, "error submitting add token pair tx") - require.Zero(t, tx.Code, "cctp add token pair transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - t.Logf("Submitted add token pair tx: %s", tx.TxHash) - - tx, err = cosmos.BroadcastTx( - bCtx, - broadcaster, - paramAuthority, - &cctptypes.MsgAddRemoteTokenMessenger{ - From: paramAuthority.FormattedAddress(), - DomainId: 0, - Address: tokenMessenger, - }, - ) - require.NoError(t, err, "error submitting add remote token messenger tx") - require.Zero(t, tx.Code, "cctp add remote token messenger transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - t.Logf("Submitted add remote token messenger tx: %s", tx.TxHash) - - cctpModuleAccount := authtypes.NewModuleAddress(cctptypes.ModuleName).String() - - // by using mock images `mock-v2.0.0` or `mock-v0.4.2`, we have access to the fiat-tokenfactory owner accout - _, err = val.ExecTx(ctx, fiatOwner.KeyName(), - "fiat-tokenfactory", "update-master-minter", fiatMasterMinter.FormattedAddress(), "-b", "block") - require.NoError(t, err, "failed to execute update master minter tx") - - _, err = val.ExecTx(ctx, fiatMasterMinter.KeyName(), - "fiat-tokenfactory", "configure-minter-controller", fiatMinterController.FormattedAddress(), cctpModuleAccount, "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter controller tx") - - _, err = val.ExecTx(ctx, fiatMinterController.KeyName(), - "fiat-tokenfactory", "configure-minter", cctpModuleAccount, "1000000"+denomMetadataUsdc.Base, "-b", "block", - ) - require.NoError(t, err, "failed to execute configure minter tx") - - const receiver = "9B6CA0C13EB603EF207C4657E1E619EF531A4D27" //account - - receiverBz, err := hex.DecodeString(receiver) - require.NoError(t, err) - - nobleReceiver, err := bech32.ConvertAndEncode(nobleChainCfg.Bech32Prefix, receiverBz) - require.NoError(t, err) - - burnRecipientPadded := append([]byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, receiverBz...) - - // someone burned USDC on Ethereum -> Mint on Noble - depositForBurn := cctptypes.BurnMessage{ - BurnToken: burnToken, - MintRecipient: burnRecipientPadded, - Amount: cosmossdk_io_math.NewInt(1000000), - MessageSender: burnRecipientPadded, - } - - depositForBurnBz, err := depositForBurn.Bytes() - require.NoError(t, err) - - const destinationCallerKeyName = "destination-caller" - destinationCallerUser := interchaintest.GetAndFundTestUsers(t, ctx, destinationCallerKeyName, 1, noble) - - destinationCaller := make([]byte, 32) - copy(destinationCaller[12:], destinationCallerUser[0].Address()) - - wrappedDepositForBurn := cctptypes.Message{ - Version: 0, - SourceDomain: 0, - DestinationDomain: 4, // Noble is 4 - Nonce: 0, // dif per message - Sender: tokenMessenger, - Recipient: cctptypes.PaddedModuleAddress, - DestinationCaller: destinationCaller, - MessageBody: depositForBurnBz, - } - - wrappedDepositForBurnBz, err := wrappedDepositForBurn.Bytes() - require.NoError(t, err) - - digestBurn := crypto.Keccak256(wrappedDepositForBurnBz) // hashed message is the key to the attestation - - attestationBurn := make([]byte, 0, len(attesters)*65) //65 byte - - // CCTP requires attestations to have signatures sorted by address - sort.Slice(attesters, func(i, j int) bool { - return bytes.Compare( - crypto.PubkeyToAddress(attesters[i].PublicKey).Bytes(), - crypto.PubkeyToAddress(attesters[j].PublicKey).Bytes(), - ) < 0 - }) - - for i := range attesters { - sig, err := crypto.Sign(digestBurn, attesters[i]) - require.NoError(t, err) - - attestationBurn = append(attestationBurn, sig...) - } - - t.Logf("Attested to messages: %s", tx.TxHash) - - bCtx, bCancel = context.WithTimeout(ctx, 20*time.Second) - defer bCancel() - tx, err = cosmos.BroadcastTx( - bCtx, - broadcaster, - destinationCallerUser[0], - &cctptypes.MsgReceiveMessage{ //note: all messages that go to noble go through MsgReceiveMessage - From: destinationCallerUser[0].FormattedAddress(), - Message: wrappedDepositForBurnBz, - Attestation: attestationBurn, - }, - ) - require.NoError(t, err, "error submitting cctp burn recv tx") - require.Zerof(t, tx.Code, "cctp burn recv transaction failed: %s - %s - %s", tx.Codespace, tx.RawLog, tx.Data) - - t.Logf("CCTP burn message successfully received: %s", tx.TxHash) - - balance, err := noble.GetBalance(ctx, nobleReceiver, denomMetadataUsdc.Base) - require.NoError(t, err) - - require.Equal(t, int64(1000000), balance) -} diff --git a/interchaintest/upgrade_grand-1_test.go b/interchaintest/upgrade_grand-1_test.go deleted file mode 100644 index ffa33576..00000000 --- a/interchaintest/upgrade_grand-1_test.go +++ /dev/null @@ -1,166 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "testing" - "time" - - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" -) - -// run `make local-image`to rebuild updated binary before running test -func TestGrand1ChainUpgrade(t *testing.T) { - const ( - numValidators = 4 - numFullNodes = 0 - ) - - genesis := ghcrImage("v0.3.0") - - upgrades := []chainUpgrade{ - { - // The upgrade was registered on-chain with name "v0.4.1" accidentally, - // when "neon" was the upgrade name in the v0.4.1 code. - // As such, v0.4.2 was required to complete the upgrade, which changed the upgrade - // name in the code to "v0.4.1" as a workaround. - upgradeName: "v0.4.1", - // this is a mock image that gives us control of the - // fiat-tokenfactory owner for testing purposes (postUpgrade tests) - image: ghcrImage("mock-v0.4.2"), - }, - { - upgradeName: "radon", - image: ghcrImage("v0.5.1"), // testnet actually upgraded to v0.5.0, but that required a hack to fix the consensus min fee. v0.5.1 fixes that - postUpgrade: testPostRadonUpgrade, - }, - { - // post radon patch upgrade (will be applied as rolling upgrade due to lack of upgradeName) - image: ghcrImage("v3.0.0"), - }, - { - upgradeName: "argon", - image: ghcrImage("v4.0.0-alpha1"), - }, - { - // post argon patch upgrade (will be applied as rolling upgrade due to lack of upgradeName) - // This upgrade is only relevant to the grand-1 testnet - image: ghcrImage("v4.0.0-alpha2"), - }, - { - // This upgrade is only relevant to the grand-1 testnet - upgradeName: "argon2", - image: ghcrImage("v4.0.0-alpha3"), - }, - { - // This upgrade is only relevant to the grand-1 testnet - upgradeName: "argon3", - image: ghcrImage("v4.0.0-beta1"), - }, - { - // This upgrade is only relevant to the grand-1 testnet - upgradeName: "v4.0.0-beta2", - image: ghcrImage("v4.0.0-beta2"), - }, - { - upgradeName: "v4.0.0-rc0", - image: ghcrImage("v4.0.0-rc0"), - postUpgrade: testPostArgonUpgrade, - }, - { - upgradeName: "v4.1.0-rc.0", - image: ghcrImage("v4.1.0-rc.0"), - }, - { - // v4.1.0-rc.1 is a patch release to fix a consensus failure caused by a validator going offline. - // The preUpgrade logic replicates this failure by bringing one validator offline. - // The postUpgrade logic verifies that after applying the emergency upgrade, the offline validator is jailed. - emergency: true, - image: ghcrImage("v4.1.0-rc.1"), - preUpgrade: func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) { - // Select one validator to go offline. - validator := noble.Validators[numValidators-1] - - // Take the selected validator offline. - require.NoError(t, validator.StopContainer(ctx)) - - // Wait 5 blocks (+1) to exceed the downtime window. - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, 42*time.Second) - defer timeoutCtxCancel() - - _ = testutil.WaitForBlocks(timeoutCtx, 6, noble) - }, - postUpgrade: func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) { - raw, _, err := noble.Validators[0].ExecQuery(ctx, "staking", "validators") - require.NoError(t, err) - - var res QueryValidatorsResponse - require.NoError(t, json.Unmarshal(raw, &res)) - - numJailed := 0 - for _, validator := range res.Validators { - if validator.Jailed { - numJailed += 1 - } - } - - require.Equal(t, numJailed, 1) - }, - }, - { - // v4.1.0-rc.2 is a new release candidate that introduced a new - // forwarding module, among other changes. - upgradeName: "v4.1.0-rc.2", - image: ghcrImage("v4.1.0-rc.2"), - }, - { - // v4.1.0-rc.3 is a patch release that upgraded two core dependencies. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.0-rc.3"), - }, - { - // fusion is a new release candidate that introduced audit fixes. - upgradeName: "fusion", - image: ghcrImage("v4.1.0-rc.4"), - }, - { - // v4.1.1 is a patch release that resolved a consensus failure. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.1"), - }, - { - // v4.1.2 is a patch release that upgraded one core dependency. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.2"), - }, - { - // v4.1.3 is a patch release that upgraded one core dependency. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.3"), - }, - { - // krypton is a major release that introduced the aura module. - upgradeName: "krypton", - image: ghcrImage("v5.0.0-rc.0"), - }, - { - // xenon is a major release that introduced the halo module. - upgradeName: "xenon", - image: ghcrImage("v6.0.0-rc.0"), - }, - { - // numus is a major release that introduced the florin module. - upgradeName: "numus", - image: ghcrImage("v7.0.0-rc.0"), - }, - } - - testNobleChainUpgrade(t, "grand-1", genesis, denomMetadataUsdc, numValidators, numFullNodes, upgrades) -} diff --git a/interchaintest/upgrade_noble-1_test.go b/interchaintest/upgrade_noble-1_test.go deleted file mode 100644 index 78305e9b..00000000 --- a/interchaintest/upgrade_noble-1_test.go +++ /dev/null @@ -1,153 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "testing" - "time" - - tarifftypes "github.com/noble-assets/noble/v7/x/tariff/types" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - "github.com/stretchr/testify/require" -) - -type QueryValidatorsResponse struct { - Validators []Validator `json:"validators"` -} -type Validator struct { - Jailed bool `json:"jailed"` -} - -// run `make local-image`to rebuild updated binary before running test -func TestNoble1ChainUpgrade(t *testing.T) { - const ( - numValidators = 4 - numFullNodes = 0 - ) - - genesis := ghcrImage("v1.0.0") - - upgrades := []chainUpgrade{ - { - upgradeName: "neon", - // this is a mock image that gives us control of the - // fiat-tokenfactory owner for testing purposes (postUpgrade tests) - image: ghcrImage("mock-v2.0.0"), - }, - { - // omitting upgradeName due to huckleberry patch - image: ghcrImage("v2.0.1"), - }, - { - upgradeName: "radon", - image: ghcrImage("v3.0.0"), - postUpgrade: testPostRadonUpgrade, - }, - { - upgradeName: "v3.1.0", - image: ghcrImage("v3.1.0"), - }, - { - upgradeName: "argon", - // this is a mock image that gives us control of the - // cctp owner for testing purposes (postUpgrade tests) - // (this is not needed for the `upgrade_grand-1_test` because - // the v4.0.0-alpha1 upgrade handler was only run in the testnet - // making the cctp owner the same as the paramauthority. This is - // not the case in mainnet; the cctp owner is a separate wallet) - image: ghcrImage("mock-v4.0.0"), - postUpgrade: testPostArgonUpgrade, - }, - { - // v4.0.1 is a patch release to fix a consensus failure caused by a validator going offline. - // The preUpgrade logic replicates this failure by bringing one validator offline. - // The postUpgrade logic verifies that after applying the emergency upgrade, the offline validator is jailed. - emergency: true, - image: ghcrImage("v4.0.1"), - preUpgrade: func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) { - // Select one validator to go offline. - validator := noble.Validators[numValidators-1] - - // Take the selected validator offline. - require.NoError(t, validator.StopContainer(ctx)) - - // Wait 5 blocks (+1) to exceed the downtime window. - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, 42*time.Second) - defer timeoutCtxCancel() - - _ = testutil.WaitForBlocks(timeoutCtx, 6, noble) - }, - postUpgrade: func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) { - raw, _, err := noble.Validators[0].ExecQuery(ctx, "staking", "validators") - require.NoError(t, err) - - var res QueryValidatorsResponse - require.NoError(t, json.Unmarshal(raw, &res)) - - numJailed := 0 - for _, validator := range res.Validators { - if validator.Jailed { - numJailed += 1 - } - } - - require.Equal(t, numJailed, 1) - }, - }, - { - // v4.0.2 is a patch release that introduces a new query to the tariff module. - // It is non-consensus breaking, and therefore is applied as a rolling upgrade. - image: ghcrImage("v4.0.2"), - postUpgrade: func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) { - raw, _, err := noble.Validators[0].ExecQuery(ctx, "tariff", "params") - require.NoError(t, err) - - var res tarifftypes.QueryParamsResponse - require.NoError(t, json.Unmarshal(raw, &res)) - }, - }, - { - // v4.0.3 is a patch release that upgraded two core dependencies. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.0.3"), - }, - { - // fusion is a minor release to the v4 argon line, that introduced a new forwarding module. - // v4.1.0 was retracted due to a consensus failure, and so we use v4.1.1. - upgradeName: "fusion", - image: ghcrImage("v4.1.1"), - }, - { - // v4.1.2 is a patch release that upgraded one core dependency. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.2"), - }, - { - // v4.1.3 is a patch release that upgraded one core dependency. - // It is consensus breaking, and therefore is applied as an emergency upgrade. - emergency: true, - image: ghcrImage("v4.1.3"), - }, - { - // krypton is a major release that introduced the aura module. - upgradeName: "krypton", - image: ghcrImage("v5.0.0"), - }, - { - // xenon is a major release that introduced the halo module. - upgradeName: "xenon", - image: ghcrImage("v6.0.0"), - }, - { - // numus is a major release that introduced the florin module. - upgradeName: "numus", - image: nobleImageInfo[0], - }, - } - - testNobleChainUpgrade(t, "noble-1", genesis, denomMetadataFrienzies, numValidators, numFullNodes, upgrades) -} diff --git a/interchaintest/upgrade_radon_test.go b/interchaintest/upgrade_radon_test.go deleted file mode 100644 index ac159502..00000000 --- a/interchaintest/upgrade_radon_test.go +++ /dev/null @@ -1,106 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "testing" - - fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" - sdk "github.com/cosmos/cosmos-sdk/types" - globalfeetypes "github.com/noble-assets/noble/v7/x/globalfee/types" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/stretchr/testify/require" -) - -func testPostRadonUpgrade( - t *testing.T, - ctx context.Context, - noble *cosmos.CosmosChain, - paramAuthority ibc.Wallet, -) { - queryResult, _, err := noble.Validators[0].ExecQuery(ctx, "globalfee", "parameters") - require.NoError(t, err, "error querying globalfee params") - - var globalFeeParams globalfeetypes.Params - err = json.Unmarshal(queryResult, &globalFeeParams) - require.NoError(t, err, "failed to unmarshall globalfee params") - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "fiat-tokenfactory", "show-minting-denom") - require.NoError(t, err, "error querying minting denom") - - var mintingDenomResponse fiattokenfactorytypes.QueryGetMintingDenomResponse - err = json.Unmarshal(queryResult, &mintingDenomResponse) - require.NoError(t, err, "failed to unmarshall globalfee params") - - expectedMinGasPrices := sdk.DecCoins{ - sdk.NewDecCoinFromDec(mintingDenomResponse.MintingDenom.Denom, sdk.NewDec(0)), - } - require.Equal(t, expectedMinGasPrices, globalFeeParams.MinimumGasPrices, "global fee min gas prices are not as expected") - - require.Equal(t, globalfeetypes.DefaultParams().BypassMinFeeMsgTypes, globalFeeParams.BypassMinFeeMsgTypes, "global fee bypass message types are not as expected") - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "params", "subspace", "tariff", "Share") - require.NoError(t, err, "error querying tariff 'Share' param") - - var tariffParamShare ParamsQueryResponse - - err = json.Unmarshal(queryResult, &tariffParamShare) - require.NoError(t, err, "failed to unmarshall tariff share param") - - require.Equal(t, `"`+sdk.NewDecWithPrec(8, 1).String()+`"`, tariffParamShare.Value) - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "params", "subspace", "tariff", "DistributionEntities") - require.NoError(t, err, "error querying tariff 'DistributionEntities' param") - - var tariffParamDistributionentities ParamsQueryResponse - - err = json.Unmarshal(queryResult, &tariffParamDistributionentities) - require.NoError(t, err, "failed to unmarshall tariff DistributionEntities param") - - var distributionEntities []DistributionEntity - - err = json.Unmarshal([]byte(tariffParamDistributionentities.Value), &distributionEntities) - require.NoError(t, err, "failed to unmarshall tariff distribution_entities param") - require.Len(t, distributionEntities, 1) - require.Equal(t, paramAuthority.FormattedAddress(), distributionEntities[0].Address) - require.Equal(t, sdk.OneDec().String(), distributionEntities[0].Share) - require.Equal(t, `"`+sdk.NewDecWithPrec(8, 1).String()+`"`, tariffParamShare.Value) - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "params", "subspace", "tariff", "TransferFeeBPS") - require.NoError(t, err, "failed to unmarshall tariff TransferFeeBPS param") - - var tariffParamTransferFeeBPS ParamsQueryResponse - - err = json.Unmarshal(queryResult, &tariffParamTransferFeeBPS) - require.NoError(t, err, "failed to unmarshall tariff transfer fee BPS param") - - require.Equal(t, `"`+sdk.OneInt().String()+`"`, tariffParamTransferFeeBPS.Value) - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "params", "subspace", "tariff", "TransferFeeMax") - require.NoError(t, err, "failed to unmarshall tariff TransferFeeMax param") - - var tariffParamTransferFeeMax ParamsQueryResponse - - err = json.Unmarshal(queryResult, &tariffParamTransferFeeMax) - require.NoError(t, err, "failed to unmarshall tariff transfer fee BPS param") - - require.Equal(t, `"`+sdk.NewInt(5000000).String()+`"`, tariffParamTransferFeeMax.Value) - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "params", "subspace", "tariff", "TransferFeeDenom") - require.NoError(t, err, "failed to unmarshall tariff TransferFeeDenom param") - - var tariffParamTransferFeeDenom ParamsQueryResponse - - err = json.Unmarshal(queryResult, &tariffParamTransferFeeDenom) - require.NoError(t, err, "failed to unmarshall tariff transfer fee BPS param") - - queryResult, _, err = noble.Validators[0].ExecQuery(ctx, "fiat-tokenfactory", "show-minting-denom") - require.NoError(t, err, "failed to query minting denom") - var mintingDenom fiattokenfactorytypes.QueryGetMintingDenomResponse - - err = json.Unmarshal(queryResult, &mintingDenom) - require.NoError(t, err, "failed to unmarshall minting denom") - - require.Equal(t, `"`+mintingDenom.MintingDenom.Denom+`"`, tariffParamTransferFeeDenom.Value) -} diff --git a/interchaintest/upgrade_test.go b/interchaintest/upgrade_test.go deleted file mode 100644 index 285e62f2..00000000 --- a/interchaintest/upgrade_test.go +++ /dev/null @@ -1,293 +0,0 @@ -package interchaintest_test - -import ( - "context" - "encoding/json" - "fmt" - "testing" - "time" - - sdkupgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/noble-assets/noble/v7/cmd" - interchaintest "github.com/strangelove-ventures/interchaintest/v4" - "github.com/strangelove-ventures/interchaintest/v4/chain/cosmos" - "github.com/strangelove-ventures/interchaintest/v4/ibc" - "github.com/strangelove-ventures/interchaintest/v4/testreporter" - "github.com/strangelove-ventures/interchaintest/v4/testutil" - upgradetypes "github.com/strangelove-ventures/paramauthority/x/upgrade/types" - "github.com/stretchr/testify/require" - "go.uber.org/zap" - "go.uber.org/zap/zaptest" -) - -const ( - ghcrRepo = "ghcr.io/noble-assets/noble" - containerUidGid = "1025:1025" - - haltHeightDelta = uint64(10) // will propose upgrade this many blocks in the future - blocksAfterUpgrade = uint64(10) -) - -type ParamsQueryResponse struct { - Subspace string `json:"subspace"` - Key string `json:"key"` - Value string `json:"value"` -} - -type chainUpgrade struct { - image ibc.DockerImage - upgradeName string // if upgradeName is empty, assumes patch/rolling update - emergency bool - preUpgrade func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) - postUpgrade func(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, paramAuthority ibc.Wallet) -} - -func ghcrImage(version string) ibc.DockerImage { - return ibc.DockerImage{ - Repository: ghcrRepo, - Version: version, - UidGid: containerUidGid, - } -} - -func testNobleChainUpgrade( - t *testing.T, - chainID string, - genesisVersionImage ibc.DockerImage, - genesisTokenFactoryDenomMetadata DenomMetadata, - numberOfValidators int, - numberOfFullNodes int, - upgrades []chainUpgrade, -) { - if testing.Short() { - t.Skip() - } - - t.Parallel() - - ctx := context.Background() - - rep := testreporter.NewNopReporter() - eRep := rep.RelayerExecReporter(t) - - client, network := interchaintest.DockerSetup(t) - - var gw genesisWrapper - - cs := nobleChainSpec(ctx, &gw, chainID, numberOfValidators, numberOfFullNodes, false, false, false, false) - - cs.ChainConfig.PreGenesis = func(cc ibc.ChainConfig) error { - val := gw.chain.Validators[0] - var err error - gw.tfRoles, err = createTokenfactoryRoles(ctx, genesisTokenFactoryDenomMetadata, val, true) - if err != nil { - return err - } - gw.paramAuthority, err = createParamAuthAtGenesis(ctx, val) - return err - } - - cs.ChainConfig.ModifyGenesis = func(cc ibc.ChainConfig, b []byte) ([]byte, error) { - g := make(map[string]interface{}) - if err := json.Unmarshal(b, &g); err != nil { - return nil, fmt.Errorf("failed to unmarshal genesis file: %w", err) - } - if err := modifyGenesisTokenfactory(g, "tokenfactory", genesisTokenFactoryDenomMetadata, gw.tfRoles, true); err != nil { - return nil, err - } - if err := modifyGenesisParamAuthority(g, gw.paramAuthority.FormattedAddress()); err != nil { - return nil, err - } - if err := modifyGenesisDowntimeWindow(g); err != nil { - return nil, err - } - out, err := json.Marshal(&g) - if err != nil { - return nil, fmt.Errorf("failed to marshal genesis bytes to json: %w", err) - } - return out, nil - } - - cs.ChainConfig.Images = []ibc.DockerImage{genesisVersionImage} - - logger := zaptest.NewLogger(t) - - cf := interchaintest.NewBuiltinChainFactory(logger, []*interchaintest.ChainSpec{cs}) - chains, err := cf.Chains(t.Name()) - require.NoError(t, err) - - gw.chain = chains[0].(*cosmos.CosmosChain) - noble := gw.chain - - ic := interchaintest.NewInterchain(). - AddChain(noble) - - require.NoError(t, ic.Build(ctx, eRep, interchaintest.InterchainBuildOptions{ - TestName: t.Name(), - Client: client, - NetworkID: network, - // BlockDatabaseFile: interchaintest.DefaultBlockDatabaseFilepath(), - - SkipPathCreation: false, - })) - t.Cleanup(func() { - _ = ic.Close() - }) - - chainCfg := noble.Config() - - cmd.SetPrefixes(chainCfg.Bech32Prefix) - - for _, upgrade := range upgrades { - if upgrade.preUpgrade != nil { - upgrade.preUpgrade(t, ctx, noble, gw.paramAuthority) - } - - if upgrade.upgradeName == "" { - // patch/rolling upgrade - if upgrade.emergency { - err = noble.StopAllNodes(ctx) - require.NoError(t, err, "could not stop nodes for emergency upgrade") - - noble.UpgradeVersion(ctx, client, upgrade.image.Repository, upgrade.image.Version) - - err = noble.StartAllNodes(ctx) - require.NoError(t, err, "could not start nodes for emergency upgrade") - - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - err = testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), noble) - require.NoError(t, err, "chain did not produce blocks after emergency upgrade") - } else { - // stage new version - for _, n := range noble.Nodes() { - n.Image = upgrade.image - } - noble.UpgradeVersion(ctx, client, upgrade.image.Repository, upgrade.image.Version) - - // do rolling update on half the vals - for i, n := range noble.Validators { - if i%2 == 0 { - continue - } - // shutdown - require.NoError(t, n.StopContainer(ctx)) - require.NoError(t, n.RemoveContainer(ctx)) - - // startup - require.NoError(t, n.CreateNodeContainer(ctx)) - require.NoError(t, n.StartContainer(ctx)) - - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - require.NoError(t, testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), noble)) - } - - // blocks should still be produced after rolling update - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - err = testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), noble) - require.NoError(t, err, "chain did not produce blocks after upgrade") - - // stop all nodes to bring rest of vals up to date - err = noble.StopAllNodes(ctx) - require.NoError(t, err, "error stopping node(s)") - - err = noble.StartAllNodes(ctx) - require.NoError(t, err, "error starting upgraded node(s)") - - timeoutCtx, timeoutCtxCancel = context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - err = testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), noble) - require.NoError(t, err, "chain did not produce blocks after upgrade") - } - } else { - // halt upgrade - height, err := noble.Height(ctx) - require.NoError(t, err, "error fetching height before submit upgrade proposal") - - haltHeight := height + haltHeightDelta - - broadcaster := cosmos.NewBroadcaster(t, noble) - - upgradePlan := sdkupgradetypes.Plan{ - Name: upgrade.upgradeName, - Height: int64(haltHeight), - Info: upgrade.upgradeName + " chain upgrade", - } - - wallet := cosmos.NewWallet( - gw.paramAuthority.KeyName(), - gw.paramAuthority.Address(), - gw.paramAuthority.Mnemonic(), - chainCfg, - ) - - _, err = cosmos.BroadcastTx( - ctx, - broadcaster, - wallet, - &upgradetypes.MsgSoftwareUpgrade{ - Authority: gw.paramAuthority.FormattedAddress(), - Plan: upgradePlan, - }, - ) - require.NoError(t, err, "error submitting software upgrade tx") - - stdout, stderr, err := noble.Validators[0].ExecQuery(ctx, "upgrade", "plan") - require.NoError(t, err, "error submitting software upgrade tx") - - logger.Debug("Upgrade", zap.String("plan_stdout", string(stdout)), zap.String("plan_stderr", string(stderr))) - - timeoutCtx, timeoutCtxCancel := context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - height, err = noble.Height(ctx) - require.NoError(t, err, "error fetching height before upgrade") - - // this should timeout due to chain halt at upgrade height. - _ = testutil.WaitForBlocks(timeoutCtx, int(haltHeight-height)+1, noble) - - height, err = noble.Height(ctx) - require.NoError(t, err, "error fetching height after chain should have halted") - - // make sure that chain is halted - require.Equal(t, haltHeight, height, "height is not equal to halt height") - - // bring down nodes to prepare for upgrade - err = noble.StopAllNodes(ctx) - require.NoError(t, err, "error stopping node(s)") - - // upgrade all nodes - for _, n := range noble.Nodes() { - n.Image = upgrade.image - } - noble.UpgradeVersion(ctx, client, upgrade.image.Repository, upgrade.image.Version) - - // start all nodes back up. - // validators reach consensus on first block after upgrade height - // and chain block production resumes. - err = noble.StartAllNodes(ctx) - require.NoError(t, err, "error starting upgraded node(s)") - - timeoutCtx, timeoutCtxCancel = context.WithTimeout(ctx, time.Second*45) - defer timeoutCtxCancel() - - err = testutil.WaitForBlocks(timeoutCtx, int(blocksAfterUpgrade), noble) - require.NoError(t, err, "chain did not produce blocks after upgrade") - - height, err = noble.Height(ctx) - require.NoError(t, err, "error fetching height after upgrade") - - require.GreaterOrEqual(t, height, haltHeight+blocksAfterUpgrade, "height did not increment enough after upgrade") - } - - if upgrade.postUpgrade != nil { - upgrade.postUpgrade(t, ctx, noble, gw.paramAuthority) - } - } -} diff --git a/legacy.go b/legacy.go new file mode 100644 index 00000000..d7b450d7 --- /dev/null +++ b/legacy.go @@ -0,0 +1,130 @@ +package noble + +import ( + storetypes "cosmossdk.io/store/types" + "github.com/circlefin/noble-fiattokenfactory/x/blockibc" + pfm "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward" + pfmkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/keeper" + pfmtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v8/packetforward/types" + "github.com/cosmos/ibc-go/modules/capability" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" + ica "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts" + icahost "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" + "github.com/cosmos/ibc-go/v8/modules/apps/transfer" + transferkeeper "github.com/cosmos/ibc-go/v8/modules/apps/transfer/keeper" + transfertypes "github.com/cosmos/ibc-go/v8/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v8/modules/core" + clienttypes "github.com/cosmos/ibc-go/v8/modules/core/02-client/types" + connectiontypes "github.com/cosmos/ibc-go/v8/modules/core/03-connection/types" + porttypes "github.com/cosmos/ibc-go/v8/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v8/modules/core/keeper" + soloclient "github.com/cosmos/ibc-go/v8/modules/light-clients/06-solomachine" + tmclient "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint" + authoritytypes "github.com/noble-assets/authority/types" + "github.com/noble-assets/forwarding/v2/x/forwarding" +) + +func (app *App) RegisterLegacyModules() error { + if err := app.RegisterStores( + storetypes.NewKVStoreKey(capabilitytypes.StoreKey), + storetypes.NewMemoryStoreKey(capabilitytypes.MemStoreKey), + storetypes.NewKVStoreKey(ibcexported.StoreKey), + storetypes.NewKVStoreKey(icahosttypes.StoreKey), + storetypes.NewKVStoreKey(pfmtypes.StoreKey), + storetypes.NewKVStoreKey(transfertypes.StoreKey), + ); err != nil { + return err + } + + app.ParamsKeeper.Subspace(ibcexported.ModuleName).WithKeyTable(clienttypes.ParamKeyTable().RegisterParamSet(&connectiontypes.Params{})) + app.ParamsKeeper.Subspace(icahosttypes.SubModuleName).WithKeyTable(icahosttypes.ParamKeyTable()) + app.ParamsKeeper.Subspace(pfmtypes.ModuleName).WithKeyTable(pfmtypes.ParamKeyTable()) + app.ParamsKeeper.Subspace(transfertypes.ModuleName).WithKeyTable(transfertypes.ParamKeyTable()) + + app.CapabilityKeeper = capabilitykeeper.NewKeeper( + app.appCodec, + app.GetKey(capabilitytypes.StoreKey), + app.GetMemKey(capabilitytypes.MemStoreKey), + ) + + scopedIBCKeeper := app.CapabilityKeeper.ScopeToModule(ibcexported.ModuleName) + app.IBCKeeper = ibckeeper.NewKeeper( + app.appCodec, + app.GetKey(ibcexported.StoreKey), + app.GetSubspace(ibcexported.ModuleName), + app.StakingKeeper, + app.UpgradeKeeper, + scopedIBCKeeper, + authoritytypes.ModuleAddress.String(), + ) + + scopedICAHostKeeper := app.CapabilityKeeper.ScopeToModule(icahosttypes.SubModuleName) + app.ICAHostKeeper = icahostkeeper.NewKeeper( + app.appCodec, + app.GetKey(icahosttypes.StoreKey), + app.GetSubspace(icahosttypes.SubModuleName), + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.PortKeeper, + app.AccountKeeper, + scopedICAHostKeeper, + app.MsgServiceRouter(), + authoritytypes.ModuleAddress.String(), + ) + app.ICAHostKeeper.WithQueryRouter(app.GRPCQueryRouter()) + + scopedTransferKeeper := app.CapabilityKeeper.ScopeToModule(transfertypes.ModuleName) + app.TransferKeeper = transferkeeper.NewKeeper( + app.appCodec, + app.GetKey(transfertypes.StoreKey), + app.GetSubspace(transfertypes.ModuleName), + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.ChannelKeeper, + app.IBCKeeper.PortKeeper, + app.AccountKeeper, + app.BankKeeper, + scopedTransferKeeper, + authoritytypes.ModuleAddress.String(), + ) + app.PFMKeeper = pfmkeeper.NewKeeper( + app.appCodec, + app.GetKey(pfmtypes.StoreKey), + app.TransferKeeper, + app.IBCKeeper.ChannelKeeper, + nil, + app.BankKeeper, + app.IBCKeeper.ChannelKeeper, + authoritytypes.ModuleAddress.String(), + ) + + var transferStack porttypes.IBCModule + transferStack = transfer.NewIBCModule(app.TransferKeeper) + transferStack = forwarding.NewMiddleware(transferStack, app.AccountKeeper, app.ForwardingKeeper) + transferStack = pfm.NewIBCMiddleware( + transferStack, + app.PFMKeeper, + 0, + pfmkeeper.DefaultForwardTransferPacketTimeoutTimestamp, + pfmkeeper.DefaultRefundTransferPacketTimeoutTimestamp, + ) + transferStack = blockibc.NewIBCMiddleware(transferStack, app.FTFKeeper) + + ibcRouter := porttypes.NewRouter(). + AddRoute(icahosttypes.SubModuleName, icahost.NewIBCModule(app.ICAHostKeeper)). + AddRoute(transfertypes.ModuleName, transferStack) + app.IBCKeeper.SetRouter(ibcRouter) + + return app.RegisterModules( + capability.NewAppModule(app.appCodec, *app.CapabilityKeeper, true), + ibc.NewAppModule(app.IBCKeeper), + ica.NewAppModule(nil, &app.ICAHostKeeper), + pfm.NewAppModule(app.PFMKeeper, app.GetSubspace(pfmtypes.ModuleName)), + transfer.NewAppModule(app.TransferKeeper), + tmclient.NewAppModule(), + soloclient.NewAppModule(), + ) +} diff --git a/local.sh b/local.sh new file mode 100644 index 00000000..159b877d --- /dev/null +++ b/local.sh @@ -0,0 +1,36 @@ +alias nobled=./build/nobled + +for arg in "$@" +do + case $arg in + -r|--reset) + rm -rf .duke + shift + ;; + esac +done + +if ! [ -f .duke/data/priv_validator_state.json ]; then + nobled init validator --chain-id "duke-1" --home .duke &> /dev/null + + nobled keys add validator --home .duke --keyring-backend test &> /dev/null + nobled genesis add-genesis-account validator 1000000ustake --home .duke --keyring-backend test + AUTHORITY=$(nobled keys add authority --home .duke --keyring-backend test --output json | jq .address) + nobled genesis add-genesis-account authority 4000000ustake --home .duke --keyring-backend test + + TEMP=.duke/genesis.json + touch $TEMP && jq '.app_state.authority.owner = '$AUTHORITY'' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state.bank.denom_metadata += [{ "description": "Circle USD Coin", "denom_units": [{ "denom": "uusdc", "exponent": 0, "aliases": ["microusdc"] }, { "denom": "usdc", "exponent": 6 }], "base": "uusdc", "display": "usdc", "name": "Circle USD Coin", "symbol": "USDC" }]' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state.bank.denom_metadata += [{ "description": "Ondo US Dollar Yield", "denom_units": [{ "denom": "ausdy", "exponent": 0, "aliases": ["attousdy"] }, { "denom": "usdy", "exponent": 18 }], "base": "ausdy", "display": "usdy", "name": "Ondo US Dollar Yield", "symbol": "USDY" }]' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state.bank.denom_metadata += [{ "description": "Hashnote US Yield Coin", "denom_units": [{ "denom": "uusyc", "exponent": 0, "aliases": ["microusyc"] }, { "denom": "usyc", "exponent": 6 }], "base": "uusyc", "display": "usyc", "name": "Hashnote US Yield Coin", "symbol": "USYC" }]' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state.bank.denom_metadata += [{ "description": "Monerium EUR emoney", "denom_units": [{ "denom": "ueure", "exponent": 0, "aliases": ["microeure"] }, { "denom": "eure", "exponent": 6 }], "base": "ueure", "display": "eure", "name": "Monerium EUR emoney", "symbol": "EURe" }]' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state."fiat-tokenfactory".mintingDenom = { "denom": "uusdc" }' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + touch $TEMP && jq '.app_state.staking.params.bond_denom = "ustake"' .duke/config/genesis.json > $TEMP && mv $TEMP .duke/config/genesis.json + + nobled genesis gentx validator 1000000ustake --chain-id "duke-1" --home .duke --keyring-backend test &> /dev/null + nobled genesis collect-gentxs --home .duke &> /dev/null + + sed -i '' 's/timeout_commit = "5s"/timeout_commit = "1s"/g' .duke/config/config.toml +fi + +nobled start --home .duke diff --git a/play.sh b/play.sh deleted file mode 100755 index 64c3635c..00000000 --- a/play.sh +++ /dev/null @@ -1,158 +0,0 @@ -#!/bin/bash - -# !! PLEASE ONLY RUN THIS SCRIPT IN A TESTING ENVIRONMENT !! -# THIS SCRIPT: -# - Stops/starts noble binary - -# This script is meant for quick experimentation of the Tokenfactory Module and Noble Chain functionality. -# - Starts Noble chain -# - Delagates and funds all privledged accounts for the `tokenfactory`. -# - Only the "owner" account in the `fiat-tokenfactory` is set. -# - The "owner" account is both the `tokenfactory` Owner AND the Param Authority - - -killall nobled -[ -d "play_sh" ] && rm -r "play_sh" - - -BINARY="nobled" -CHAINID="noble-1" -CHAINDIR="play_sh" -RPCPORT="26657" -P2PPORT="26656" -PROFPORT="6060" -GRPCPORT="9090" -DENOM="stake" -BASEDENOM="ustake" - -KEYRING="--keyring-backend test" - -# tokenfactory -TF1_MINTING_DENOM='token' -TF1_MINTING_BASEDENOM="u$TF1_MINTING_DENOM" - -TF2_MINTING_DENOM='rupees' -TF2_MINTING_BASEDENOM="u$TF2_MINTING_DENOM" - - -SILENT=1 - -redirect() { - if [ "$SILENT" -eq 1 ]; then - "$@" > /dev/null 2>&1 - else - "$@" - fi -} - -# Add dir for chain, exit if error -if ! mkdir -p $CHAINDIR/$CHAINID 2>/dev/null; then - echo "Failed to create chain folder. Aborting..." - exit 1 -fi - -# Build genesis file incl account for passed address -coins="100000000000$DENOM,100000000000$BASEDENOM" -delegate="100000000000$DENOM" - -redirect nobled --home $CHAINDIR/$CHAINID --chain-id $CHAINID init $CHAINID -sleep 1 -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add validator --output json > $CHAINDIR/$CHAINID/validator_seed.json 2>&1 -sleep 1 -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add tf1_owner --output json > $CHAINDIR/$CHAINID/tf1_ownerSeed.json 2>&1 -sleep 1 -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add tf2_owner --output json > $CHAINDIR/$CHAINID/tf2_ownerSeed.json 2>&1 -sleep 1 -redirect nobled --home $CHAINDIR/$CHAINID $KEYRING add-genesis-account $(nobled --home $CHAINDIR/$CHAINID keys $KEYRING show tf1_owner -a) $coins -sleep 1 -redirect nobled --home $CHAINDIR/$CHAINID $KEYRING add-genesis-account $(nobled --home $CHAINDIR/$CHAINID keys $KEYRING show validator -a) $coins -sleep 1 -redirect nobled --home $CHAINDIR/$CHAINID $KEYRING gentx validator $delegate --chain-id $CHAINID -sleep 1 -redirect nobled --home $CHAINDIR/$CHAINID collect-gentxs -sleep 1 - -TF1_OWNER=$(jq '.address' $CHAINDIR/$CHAINID/tf1_ownerSeed.json) -TF2_OWNER=$(jq '.address' $CHAINDIR/$CHAINID/tf2_ownerSeed.json) - -# Check platform -platform='unknown' -unamestr=`uname` -if [ "$unamestr" = 'Linux' ]; then - platform='linux' -fi - -# Set proper defaults and change ports (use a different sed for Mac or Linux) -echo "Change settings in config.toml and genesis.json files..." -if [ $platform = 'linux' ]; then - sed -i 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's#"localhost:6060"#"localhost:'"$P2PPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's/index_all_keys = false/index_all_keys = true/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i 's/"bond_denom": "stake"/"bond_denom": "'"$DENOM"'"/g' $CHAINDIR/$CHAINID/config/genesis.json - sed -i 's/"denom_metadata": \[]/"denom_metadata": [ { "display": "'$TF1_MINTING_DENOM'", "base": "'$TF1_MINTING_BASEDENOM'", "name": "'$TF1_MINTING_DENOM'", "symbol": "'$TF1_MINTING_DENOM'", "denom_units": [ { "denom": "'$TF1_MINTING_DENOM'", "aliases": [ "micro'$TF1_MINTING_DENOM'" ], "exponent": "0" }, { "denom": "m'$TF1_MINTING_DENOM'", "aliases": [ "mili'$TF1_MINTING_DENOM'" ], "exponent": "3" }, { "denom": "'$TF1_MINTING_BASEDENOM'", "aliases": null, "exponent": "6" } ] }, { "display": "'$TF2_MINTING_DENOM'", "base": "'$TF2_MINTING_BASEDENOM'", "name": "'$TF2_MINTING_DENOM'", "symbol": "'$TF2_MINTING_DENOM'", "denom_units": [ { "denom": "'$TF2_MINTING_DENOM'", "aliases": [ "micro'$TF2_MINTING_DENOM'" ], "exponent": "0" }, { "denom": "m'$TF2_MINTING_DENOM'", "aliases": [ "mili'$TF2_MINTING_DENOM'" ], "exponent": "3" }, { "denom": "'$TF2_MINTING_BASEDENOM'", "aliases": null, "exponent": "6" } ] } ]/g' $CHAINDIR/$CHAINID/config/genesis.json - sed -i 's/"authority": ""/"authority": '"$TF1_OWNER"'/g' $CHAINDIR/$CHAINID/config/genesis.json -else - sed -i '' 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's#"localhost:6060"#"localhost:'"$P2PPORT"'"#g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's/index_all_keys = false/index_all_keys = true/g' $CHAINDIR/$CHAINID/config/config.toml - sed -i '' 's/"bond_denom": "stake"/"bond_denom": "'"$DENOM"'"/g' $CHAINDIR/$CHAINID/config/genesis.json - sed -i '' 's/"denom_metadata": \[]/"denom_metadata": [ { "display": "'$TF1_MINTING_DENOM'", "base": "'$TF1_MINTING_BASEDENOM'", "name": "'$TF1_MINTING_DENOM'", "symbol": "'$TF1_MINTING_DENOM'", "denom_units": [ { "denom": "'$TF1_MINTING_DENOM'", "aliases": [ "micro'$TF1_MINTING_DENOM'" ], "exponent": "0" }, { "denom": "m'$TF1_MINTING_DENOM'", "aliases": [ "mili'$TF1_MINTING_DENOM'" ], "exponent": "3" }, { "denom": "'$TF1_MINTING_BASEDENOM'", "aliases": null, "exponent": "6" } ] }, { "display": "'$TF2_MINTING_DENOM'", "base": "'$TF2_MINTING_BASEDENOM'", "name": "'$TF2_MINTING_DENOM'", "symbol": "'$TF2_MINTING_DENOM'", "denom_units": [ { "denom": "'$TF2_MINTING_DENOM'", "aliases": [ "micro'$TF2_MINTING_DENOM'" ], "exponent": "0" }, { "denom": "m'$TF2_MINTING_DENOM'", "aliases": [ "mili'$TF2_MINTING_DENOM'" ], "exponent": "3" }, { "denom": "'$TF2_MINTING_BASEDENOM'", "aliases": null, "exponent": "6" } ] } ]/g' $CHAINDIR/$CHAINID/config/genesis.json - sed -i '' 's/"authority": ""/"authority": '"$TF1_OWNER"'/g' $CHAINDIR/$CHAINID/config/genesis.json -fi - -TMPGEN=tempGen.json -touch $TMPGEN && jq '.app_state.tokenfactory.owner.address = '$TF1_OWNER'' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json -touch $TMPGEN && jq '.app_state.tokenfactory.mintingDenom.denom = "'$TF1_MINTING_BASEDENOM'"' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json -touch $TMPGEN && jq '.app_state.tokenfactory.paused.paused = false' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json - -touch $TMPGEN && jq '.app_state."fiat-tokenfactory".owner.address = '$TF2_OWNER'' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json -touch $TMPGEN && jq '.app_state."fiat-tokenfactory".mintingDenom.denom = "'$TF1_MINTING_BASEDENOM'"' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json -touch $TMPGEN && jq '.app_state."fiat-tokenfactory".paused.paused = false' $CHAINDIR/$CHAINID/config/genesis.json > $TMPGEN && mv $TMPGEN $CHAINDIR/$CHAINID/config/genesis.json - - - -# Start -nobled --home $CHAINDIR/$CHAINID start --pruning=nothing --grpc-web.enable=false --grpc.address="0.0.0.0:$GRPCPORT" > $CHAINDIR/$CHAINID.log 2>&1 & - -OWNER_MN=$(jq .mnemonic $CHAINDIR/$CHAINID/tf1_ownerSeed.json) -OWNER_MN=$(echo $OWNER_MN | cut -d "\"" -f 2) - -# Create keys -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add masterminter -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add mintercontroller -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add minter -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add blacklister -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add pauser -nobled --home $CHAINDIR/$CHAINID $KEYRING keys add user - -# Fund accounts -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show masterminter -a) 50ustake -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show mintercontroller -a) 50ustake -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show minter -a) 50ustake -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show blacklister -a) 50ustake -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show pauser -a) 50ustake -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx bank send tf1_owner $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show user -a) 50ustake -y -sleep 2 - -# Delegate privledges -nobled --home $CHAINDIR/$CHAINID $KEYRING tx tokenfactory update-master-minter $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show masterminter -a) --from tf1_owner -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx tokenfactory configure-minter-controller $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show mintercontroller -a) $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show minter -a) --from masterminter -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx tokenfactory configure-minter $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show minter -a) 1000$TF1_MINTING_BASEDENOM --from mintercontroller -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx tokenfactory update-blacklister $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show blacklister -a) --from tf1_owner -y -sleep 2 -nobled --home $CHAINDIR/$CHAINID $KEYRING tx tokenfactory update-pauser $(nobled --home $CHAINDIR/$CHAINID $KEYRING keys show pauser -a) --from tf1_owner -y diff --git a/proto/Dockerfile b/proto/Dockerfile deleted file mode 100644 index 3d9f9439..00000000 --- a/proto/Dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM bufbuild/buf:1.39 as BUILDER -FROM golang:1.21-alpine - -RUN apk add --no-cache \ - nodejs \ - npm \ - git \ - make - -RUN go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@latest - -RUN git clone https://github.com/regen-network/protobuf.git; \ - cd protobuf; \ - go mod download; \ - make install; \ - cd .. - -RUN git clone https://github.com/regen-network/cosmos-proto.git; \ - cd cosmos-proto/protoc-gen-gocosmos; \ - go install .; \ - cd .. - -COPY --from=BUILDER /usr/local/bin /usr/local/bin diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml deleted file mode 100644 index eab53cd6..00000000 --- a/proto/buf.gen.yaml +++ /dev/null @@ -1,8 +0,0 @@ -version: v1 -plugins: - - name: gocosmos - out: .. - opt: - - plugins=grpc - - name: grpc-gateway - out: .. diff --git a/proto/buf.lock b/proto/buf.lock deleted file mode 100644 index bc3f9cf6..00000000 --- a/proto/buf.lock +++ /dev/null @@ -1,8 +0,0 @@ -# Generated by buf. DO NOT EDIT. -version: v1 -deps: - - remote: buf.build - owner: noble - repository: cosmos-sdk - commit: b18b492ea3364d5fa88fe3ead0b57a95 - digest: shake256:ce3896962b4241dbaa0776fa00e661184b8bdba629722b9f38bc7e221e04d379b3ad18531f33e2552ba675cca39381dcf0df693ec146c14db719741510c24852 diff --git a/proto/buf.yaml b/proto/buf.yaml deleted file mode 100644 index 26497ea0..00000000 --- a/proto/buf.yaml +++ /dev/null @@ -1,17 +0,0 @@ -version: v1 -deps: - - buf.build/noble/cosmos-sdk:v0.45.16 -breaking: - use: - - FILE -lint: - use: - - DEFAULT - except: - - SERVICE_SUFFIX - - RPC_REQUEST_STANDARD_NAME - - RPC_RESPONSE_STANDARD_NAME - # TODO: Remove the following exceptions later! - - FIELD_LOWER_SNAKE_CASE - - PACKAGE_DIRECTORY_MATCH - - PACKAGE_VERSION_SUFFIX diff --git a/proto/generate.sh b/proto/generate.sh deleted file mode 100644 index 29caaaf8..00000000 --- a/proto/generate.sh +++ /dev/null @@ -1,6 +0,0 @@ -cd proto -buf generate -cd .. - -cp -r github.com/noble-assets/noble/v7/* ./ -rm -rf github.com diff --git a/proto/globalfee/genesis.proto b/proto/globalfee/genesis.proto deleted file mode 100644 index 79c0bcda..00000000 --- a/proto/globalfee/genesis.proto +++ /dev/null @@ -1,35 +0,0 @@ -syntax = "proto3"; -package noble.globalfee; - -import "cosmos/base/v1beta1/coin.proto"; -import "gogoproto/gogo.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/globalfee/types"; - -// GenesisState - initial state of module -message GenesisState { - // Params of this module - Params params = 1 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "params,omitempty" - ]; -} - -// Params defines the set of module parameters. -message Params { - // Minimum stores the minimum gas price(s) for all TX on the chain. - // When multiple coins are defined then they are accepted alternatively. - // The list must be sorted by denoms asc. No duplicate denoms or zero amount - // values allowed. For more information see - // https://docs.cosmos.network/main/modules/auth#concepts - repeated cosmos.base.v1beta1.DecCoin minimum_gas_prices = 1 [ - (gogoproto.nullable) = false, - (gogoproto.jsontag) = "minimum_gas_prices,omitempty", - (gogoproto.moretags) = "yaml:\"minimum_gas_prices\"", - (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.DecCoins" - ]; - repeated string bypass_min_fee_msg_types = 2 [ - (gogoproto.jsontag) = "bypass_min_fee_msg_types,omitempty", - (gogoproto.moretags) = "yaml:\"bypass_min_fee_msg_types\"" - ]; -} diff --git a/proto/globalfee/query.proto b/proto/globalfee/query.proto deleted file mode 100644 index 7a80cfb6..00000000 --- a/proto/globalfee/query.proto +++ /dev/null @@ -1,23 +0,0 @@ -syntax = "proto3"; -package noble.globalfee; - -import "globalfee/genesis.proto"; -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/globalfee/types"; - -// Query defines the gRPC querier service. -service Query { - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/noble/globalfee/v1beta1/params"; - } -} - -// QueryParamsRequest is the request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is the response type for the Query/Params RPC method. -message QueryParamsResponse { - Params params = 1 [(gogoproto.nullable) = false]; -} diff --git a/proto/tariff/genesis.proto b/proto/tariff/genesis.proto deleted file mode 100644 index 146c12db..00000000 --- a/proto/tariff/genesis.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; -package noble.tariff; - -import "gogoproto/gogo.proto"; -import "tariff/params.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tariff/types"; - -// GenesisState defines the tariff module's genesis state. -message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; -} diff --git a/proto/tariff/params.proto b/proto/tariff/params.proto deleted file mode 100644 index 6ca89840..00000000 --- a/proto/tariff/params.proto +++ /dev/null @@ -1,49 +0,0 @@ -syntax = "proto3"; -package noble.tariff; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tariff/types"; -option (gogoproto.equal_all) = true; - -// Params defines the set of params for the distribution module. -message Params { - option (gogoproto.goproto_stringer) = false; - // share is % of tx fees or rewards allocated to distribution_entities - string share = 1 [ - (gogoproto.moretags) = "yaml:\"share\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; - - // % of tx fees or rewards allocated to a set of global distribution entities - // these shares must add up to 1 - repeated DistributionEntity distribution_entities = 2 [ - (gogoproto.moretags) = "yaml:\"distribution_entities\"", - (gogoproto.nullable) = false - ]; - - string transfer_fee_bps = 3 [ - (gogoproto.moretags) = "yaml:\"transfer_fee_bps\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - - string transfer_fee_max = 4 [ - (gogoproto.moretags) = "yaml:\"transfer_fee_max\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - (gogoproto.nullable) = false - ]; - - string transfer_fee_denom = 5 [(gogoproto.moretags) = "yaml:\"transfer_fee_denom\""]; -} - -// DistributionEntity defines a distribution entity -message DistributionEntity { - string address = 1; - string share = 2 [ - (gogoproto.moretags) = "yaml:\"share\"", - (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", - (gogoproto.nullable) = false - ]; -} diff --git a/proto/tariff/query.proto b/proto/tariff/query.proto deleted file mode 100644 index 754f2771..00000000 --- a/proto/tariff/query.proto +++ /dev/null @@ -1,21 +0,0 @@ -syntax = "proto3"; - -package noble.tariff; - -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "tariff/params.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tariff/types"; - -service Query { - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/noble/tariff/v1/params"; - } -} - -message QueryParamsRequest {} - -message QueryParamsResponse { - Params params = 1 [(gogoproto.nullable) = false]; -} diff --git a/proto/tokenfactory/blacklisted.proto b/proto/tokenfactory/blacklisted.proto deleted file mode 100644 index 171e174f..00000000 --- a/proto/tokenfactory/blacklisted.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Blacklisted { - bytes addressBz = 1; -} diff --git a/proto/tokenfactory/blacklister.proto b/proto/tokenfactory/blacklister.proto deleted file mode 100644 index 36f17dab..00000000 --- a/proto/tokenfactory/blacklister.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Blacklister { - string address = 1; -} diff --git a/proto/tokenfactory/genesis.proto b/proto/tokenfactory/genesis.proto deleted file mode 100644 index 8cd5220a..00000000 --- a/proto/tokenfactory/genesis.proto +++ /dev/null @@ -1,32 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -import "gogoproto/gogo.proto"; -import "tokenfactory/blacklisted.proto"; -import "tokenfactory/blacklister.proto"; -import "tokenfactory/master_minter.proto"; -import "tokenfactory/minter_controller.proto"; -import "tokenfactory/minters.proto"; -import "tokenfactory/minting_denom.proto"; -import "tokenfactory/owner.proto"; -import "tokenfactory/params.proto"; -import "tokenfactory/paused.proto"; -import "tokenfactory/pauser.proto"; -// this line is used by starport scaffolding # genesis/proto/import - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -// GenesisState defines the tokenfactory module's genesis state. -message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; - repeated Blacklisted blacklistedList = 2 [(gogoproto.nullable) = false]; - Paused paused = 3; - MasterMinter masterMinter = 4; - repeated Minters mintersList = 5 [(gogoproto.nullable) = false]; - Pauser pauser = 6; - Blacklister blacklister = 7; - Owner owner = 8; - repeated MinterController minterControllerList = 9 [(gogoproto.nullable) = false]; - MintingDenom mintingDenom = 10; - // this line is used by starport scaffolding # genesis/proto/state -} diff --git a/proto/tokenfactory/master_minter.proto b/proto/tokenfactory/master_minter.proto deleted file mode 100644 index 8dae9579..00000000 --- a/proto/tokenfactory/master_minter.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message MasterMinter { - string address = 1; -} diff --git a/proto/tokenfactory/minter_controller.proto b/proto/tokenfactory/minter_controller.proto deleted file mode 100644 index 13a9f34b..00000000 --- a/proto/tokenfactory/minter_controller.proto +++ /dev/null @@ -1,9 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message MinterController { - string minter = 1; - string controller = 2; -} diff --git a/proto/tokenfactory/minters.proto b/proto/tokenfactory/minters.proto deleted file mode 100644 index 8ae42ef5..00000000 --- a/proto/tokenfactory/minters.proto +++ /dev/null @@ -1,12 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -import "cosmos/base/v1beta1/coin.proto"; -import "gogoproto/gogo.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Minters { - string address = 1; - cosmos.base.v1beta1.Coin allowance = 2 [(gogoproto.nullable) = false]; -} diff --git a/proto/tokenfactory/minting_denom.proto b/proto/tokenfactory/minting_denom.proto deleted file mode 100644 index 6b54864a..00000000 --- a/proto/tokenfactory/minting_denom.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message MintingDenom { - string denom = 1; -} diff --git a/proto/tokenfactory/owner.proto b/proto/tokenfactory/owner.proto deleted file mode 100644 index 2b4bef5f..00000000 --- a/proto/tokenfactory/owner.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Owner { - string address = 1; -} diff --git a/proto/tokenfactory/params.proto b/proto/tokenfactory/params.proto deleted file mode 100644 index 68ff4bf9..00000000 --- a/proto/tokenfactory/params.proto +++ /dev/null @@ -1,11 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -// Params defines the parameters for the module. -message Params { - option (gogoproto.goproto_stringer) = false; -} diff --git a/proto/tokenfactory/paused.proto b/proto/tokenfactory/paused.proto deleted file mode 100644 index a6f8f6eb..00000000 --- a/proto/tokenfactory/paused.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Paused { - bool paused = 1; -} diff --git a/proto/tokenfactory/pauser.proto b/proto/tokenfactory/pauser.proto deleted file mode 100644 index 2fe87c6f..00000000 --- a/proto/tokenfactory/pauser.proto +++ /dev/null @@ -1,8 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -message Pauser { - string address = 1; -} diff --git a/proto/tokenfactory/query.proto b/proto/tokenfactory/query.proto deleted file mode 100644 index 2141bea5..00000000 --- a/proto/tokenfactory/query.proto +++ /dev/null @@ -1,175 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -import "cosmos/base/query/v1beta1/pagination.proto"; -// this line is used by starport scaffolding # 1 -import "gogoproto/gogo.proto"; -import "google/api/annotations.proto"; -import "tokenfactory/blacklisted.proto"; -import "tokenfactory/blacklister.proto"; -import "tokenfactory/master_minter.proto"; -import "tokenfactory/minter_controller.proto"; -import "tokenfactory/minters.proto"; -import "tokenfactory/minting_denom.proto"; -import "tokenfactory/owner.proto"; -import "tokenfactory/params.proto"; -import "tokenfactory/paused.proto"; -import "tokenfactory/pauser.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -// Query defines the gRPC querier service. -service Query { - // Parameters queries the parameters of the module. - rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { - option (google.api.http).get = "/noble/tokenfactory/params"; - } - // Queries a Blacklisted by index. - rpc Blacklisted(QueryGetBlacklistedRequest) returns (QueryGetBlacklistedResponse) { - option (google.api.http).get = "/noble/tokenfactory/blacklisted/{address}"; - } - - // Queries a list of Blacklisted items. - rpc BlacklistedAll(QueryAllBlacklistedRequest) returns (QueryAllBlacklistedResponse) { - option (google.api.http).get = "/noble/tokenfactory/blacklisted"; - } - - // Queries a Paused by index. - rpc Paused(QueryGetPausedRequest) returns (QueryGetPausedResponse) { - option (google.api.http).get = "/noble/tokenfactory/paused"; - } - // Queries a MasterMinter by index. - rpc MasterMinter(QueryGetMasterMinterRequest) returns (QueryGetMasterMinterResponse) { - option (google.api.http).get = "/noble/tokenfactory/master_minter"; - } - // Queries a Minters by index. - rpc Minters(QueryGetMintersRequest) returns (QueryGetMintersResponse) { - option (google.api.http).get = "/noble/tokenfactory/minters/{address}"; - } - - // Queries a list of Minters items. - rpc MintersAll(QueryAllMintersRequest) returns (QueryAllMintersResponse) { - option (google.api.http).get = "/noble/tokenfactory/minters"; - } - - // Queries a Pauser by index. - rpc Pauser(QueryGetPauserRequest) returns (QueryGetPauserResponse) { - option (google.api.http).get = "/noble/tokenfactory/pauser"; - } - // Queries a Blacklister by index. - rpc Blacklister(QueryGetBlacklisterRequest) returns (QueryGetBlacklisterResponse) { - option (google.api.http).get = "/noble/tokenfactory/blacklister"; - } - // Queries a Owner by index. - rpc Owner(QueryGetOwnerRequest) returns (QueryGetOwnerResponse) { - option (google.api.http).get = "/noble/tokenfactory/owner"; - } - // Queries a MinterController by index. - rpc MinterController(QueryGetMinterControllerRequest) returns (QueryGetMinterControllerResponse) { - option (google.api.http).get = "/noble/tokenfactory/minter_controller/{controllerAddress}"; - } - - // Queries a list of MinterController items. - rpc MinterControllerAll(QueryAllMinterControllerRequest) returns (QueryAllMinterControllerResponse) { - option (google.api.http).get = "/noble/tokenfactory/minter_controller"; - } - - // Queries a MintingDenom by index. - rpc MintingDenom(QueryGetMintingDenomRequest) returns (QueryGetMintingDenomResponse) { - option (google.api.http).get = "/noble/tokenfactory/minting_denom"; - } - // this line is used by starport scaffolding # 2 -} - -// QueryParamsRequest is request type for the Query/Params RPC method. -message QueryParamsRequest {} - -// QueryParamsResponse is response type for the Query/Params RPC method. -message QueryParamsResponse { - // params holds all the parameters of this module. - Params params = 1 [(gogoproto.nullable) = false]; -} - -message QueryGetBlacklistedRequest { - string address = 1; -} - -message QueryGetBlacklistedResponse { - Blacklisted blacklisted = 1 [(gogoproto.nullable) = false]; -} - -message QueryAllBlacklistedRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllBlacklistedResponse { - repeated Blacklisted blacklisted = 1 [(gogoproto.nullable) = false]; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -message QueryGetPausedRequest {} - -message QueryGetPausedResponse { - Paused paused = 1 [(gogoproto.nullable) = false]; -} -message QueryGetMasterMinterRequest {} - -message QueryGetMasterMinterResponse { - MasterMinter masterMinter = 1 [(gogoproto.nullable) = false]; -} -message QueryGetMintersRequest { - string address = 1; -} - -message QueryGetMintersResponse { - Minters minters = 1 [(gogoproto.nullable) = false]; -} - -message QueryAllMintersRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllMintersResponse { - repeated Minters minters = 1 [(gogoproto.nullable) = false]; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -message QueryGetPauserRequest {} - -message QueryGetPauserResponse { - Pauser pauser = 1 [(gogoproto.nullable) = false]; -} -message QueryGetBlacklisterRequest {} - -message QueryGetBlacklisterResponse { - Blacklister blacklister = 1 [(gogoproto.nullable) = false]; -} -message QueryGetOwnerRequest {} - -message QueryGetOwnerResponse { - Owner owner = 1 [(gogoproto.nullable) = false]; -} - -message QueryGetMinterControllerRequest { - string controllerAddress = 1; -} - -message QueryGetMinterControllerResponse { - MinterController minterController = 1 [(gogoproto.nullable) = false]; -} - -message QueryAllMinterControllerRequest { - cosmos.base.query.v1beta1.PageRequest pagination = 1; -} - -message QueryAllMinterControllerResponse { - repeated MinterController minterController = 1 [(gogoproto.nullable) = false]; - cosmos.base.query.v1beta1.PageResponse pagination = 2; -} - -message QueryGetMintingDenomRequest {} - -message QueryGetMintingDenomResponse { - MintingDenom mintingDenom = 1 [(gogoproto.nullable) = false]; -} -// this line is used by starport scaffolding # 3 diff --git a/proto/tokenfactory/tx.proto b/proto/tokenfactory/tx.proto deleted file mode 100644 index 627eb14f..00000000 --- a/proto/tokenfactory/tx.proto +++ /dev/null @@ -1,135 +0,0 @@ -syntax = "proto3"; -package noble.tokenfactory; - -// this line is used by starport scaffolding # proto/tx/import -import "cosmos/base/v1beta1/coin.proto"; -import "gogoproto/gogo.proto"; - -option go_package = "github.com/noble-assets/noble/v7/x/tokenfactory/types"; - -// Msg defines the Msg service. -service Msg { - rpc UpdateMasterMinter(MsgUpdateMasterMinter) returns (MsgUpdateMasterMinterResponse); - rpc UpdatePauser(MsgUpdatePauser) returns (MsgUpdatePauserResponse); - rpc UpdateBlacklister(MsgUpdateBlacklister) returns (MsgUpdateBlacklisterResponse); - rpc UpdateOwner(MsgUpdateOwner) returns (MsgUpdateOwnerResponse); - rpc AcceptOwner(MsgAcceptOwner) returns (MsgAcceptOwnerResponse); - rpc ConfigureMinter(MsgConfigureMinter) returns (MsgConfigureMinterResponse); - rpc RemoveMinter(MsgRemoveMinter) returns (MsgRemoveMinterResponse); - rpc Mint(MsgMint) returns (MsgMintResponse); - rpc Burn(MsgBurn) returns (MsgBurnResponse); - rpc Blacklist(MsgBlacklist) returns (MsgBlacklistResponse); - rpc Unblacklist(MsgUnblacklist) returns (MsgUnblacklistResponse); - rpc Pause(MsgPause) returns (MsgPauseResponse); - rpc Unpause(MsgUnpause) returns (MsgUnpauseResponse); - rpc ConfigureMinterController(MsgConfigureMinterController) returns (MsgConfigureMinterControllerResponse); - rpc RemoveMinterController(MsgRemoveMinterController) returns (MsgRemoveMinterControllerResponse); - // this line is used by starport scaffolding # proto/tx/rpc -} - -message MsgUpdateMasterMinter { - string from = 1; - string address = 2; -} - -message MsgUpdateMasterMinterResponse {} - -message MsgUpdatePauser { - string from = 1; - string address = 2; -} - -message MsgUpdatePauserResponse {} - -message MsgUpdateBlacklister { - string from = 1; - string address = 2; -} - -message MsgUpdateBlacklisterResponse {} - -message MsgUpdateOwner { - string from = 1; - string address = 2; -} - -message MsgUpdateOwnerResponse {} - -message MsgAcceptOwner { - string from = 1; -} - -message MsgAcceptOwnerResponse {} - -message MsgConfigureMinter { - string from = 1; - string address = 2; - cosmos.base.v1beta1.Coin allowance = 3 [(gogoproto.nullable) = false]; -} - -message MsgConfigureMinterResponse {} - -message MsgRemoveMinter { - string from = 1; - string address = 2; -} - -message MsgRemoveMinterResponse {} - -message MsgMint { - string from = 1; - string address = 2; - cosmos.base.v1beta1.Coin amount = 3 [(gogoproto.nullable) = false]; -} - -message MsgMintResponse {} - -message MsgBurn { - string from = 1; - cosmos.base.v1beta1.Coin amount = 2 [(gogoproto.nullable) = false]; -} - -message MsgBurnResponse {} - -message MsgBlacklist { - string from = 1; - string address = 2; -} - -message MsgBlacklistResponse {} - -message MsgUnblacklist { - string from = 1; - string address = 2; -} - -message MsgUnblacklistResponse {} - -message MsgPause { - string from = 1; -} - -message MsgPauseResponse {} - -message MsgUnpause { - string from = 1; -} - -message MsgUnpauseResponse {} - -message MsgConfigureMinterController { - string from = 1; - string controller = 2; - string minter = 3; -} - -message MsgConfigureMinterControllerResponse {} - -message MsgRemoveMinterController { - string from = 1; - string controller = 2; -} - -message MsgRemoveMinterControllerResponse {} - -// this line is used by starport scaffolding # proto/tx/message diff --git a/testutil/keeper/bankkeeper.go b/testutil/keeper/bankkeeper.go deleted file mode 100644 index 8dd3f87b..00000000 --- a/testutil/keeper/bankkeeper.go +++ /dev/null @@ -1,27 +0,0 @@ -package keeper - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -type MockBankKeeper struct{} - -func (MockBankKeeper) SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins { - return nil -} -func (MockBankKeeper) MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error { - return nil -} -func (MockBankKeeper) BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error { - return nil -} -func (MockBankKeeper) SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error { - return nil -} -func (MockBankKeeper) SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error { - return nil -} -func (MockBankKeeper) GetDenomMetaData(ctx sdk.Context, denom string) (banktypes.Metadata, bool) { - return banktypes.Metadata{}, true -} diff --git a/testutil/keeper/fiattokenfactory.go b/testutil/keeper/fiattokenfactory.go deleted file mode 100644 index 884758a8..00000000 --- a/testutil/keeper/fiattokenfactory.go +++ /dev/null @@ -1,50 +0,0 @@ -package keeper - -import ( - "testing" - - "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/keeper" - "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/store" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - typesparams "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmdb "github.com/tendermint/tm-db" -) - -func FiatTokenfactoryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { - storeKey := sdk.NewKVStoreKey(types.StoreKey) - - db := tmdb.NewMemDB() - stateStore := store.NewCommitMultiStore(db) - stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) - require.NoError(t, stateStore.LoadLatestVersion()) - - registry := codectypes.NewInterfaceRegistry() - cdc := codec.NewProtoCodec(registry) - - paramsSubspace := typesparams.NewSubspace(cdc, - codec.NewLegacyAmino(), - storeKey, - nil, - "TokenfactoryParams", - ) - k := keeper.NewKeeper( - cdc, - storeKey, - paramsSubspace, - MockBankKeeper{}, - ) - - ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) - - // Initialize params - k.SetParams(ctx, types.DefaultParams()) - - return k, ctx -} diff --git a/testutil/keeper/tokenfactory.go b/testutil/keeper/tokenfactory.go deleted file mode 100644 index bbe3e92c..00000000 --- a/testutil/keeper/tokenfactory.go +++ /dev/null @@ -1,50 +0,0 @@ -package keeper - -import ( - "testing" - - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - "github.com/cosmos/cosmos-sdk/store" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - typesparams "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmdb "github.com/tendermint/tm-db" -) - -func TokenfactoryKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { - storeKey := sdk.NewKVStoreKey(types.StoreKey) - - db := tmdb.NewMemDB() - stateStore := store.NewCommitMultiStore(db) - stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) - require.NoError(t, stateStore.LoadLatestVersion()) - - registry := codectypes.NewInterfaceRegistry() - cdc := codec.NewProtoCodec(registry) - - paramsSubspace := typesparams.NewSubspace(cdc, - codec.NewLegacyAmino(), - storeKey, - nil, - "TokenfactoryParams", - ) - k := keeper.NewKeeper( - cdc, - storeKey, - paramsSubspace, - MockBankKeeper{}, - ) - - ctx := sdk.NewContext(stateStore, tmproto.Header{}, false, log.NewNopLogger()) - - // Initialize params - k.SetParams(ctx, types.DefaultParams()) - - return k, ctx -} diff --git a/testutil/network/network.go b/testutil/network/network.go deleted file mode 100644 index db29e087..00000000 --- a/testutil/network/network.go +++ /dev/null @@ -1,136 +0,0 @@ -package network - -import ( - "fmt" - fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "testing" - "time" - - "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/crypto/hd" - "github.com/cosmos/cosmos-sdk/crypto/keyring" - servertypes "github.com/cosmos/cosmos-sdk/server/types" - "github.com/cosmos/cosmos-sdk/simapp" - pruningtypes "github.com/cosmos/cosmos-sdk/store/types" - "github.com/cosmos/cosmos-sdk/testutil/network" - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - tmrand "github.com/tendermint/tendermint/libs/rand" - tmdb "github.com/tendermint/tm-db" - - cctptypes "github.com/circlefin/noble-cctp/x/cctp/types" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types/proposal" - upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - "github.com/noble-assets/noble/v7/app" - "github.com/noble-assets/noble/v7/cmd" - "github.com/noble-assets/noble/v7/testutil/sample" - paramauthoritytypes "github.com/strangelove-ventures/paramauthority/x/params/types/proposal" - paramauthorityupgradetypes "github.com/strangelove-ventures/paramauthority/x/upgrade/types" -) - -type ( - Network = network.Network - Config = network.Config -) - -// New creates instance with fully configured cosmos network. -// Accepts optional config, that will be used in place of the DefaultConfig() if provided. -func New(t *testing.T, configs ...network.Config) *network.Network { - if len(configs) > 1 { - panic("at most one config should be provided") - } - var cfg network.Config - if len(configs) == 0 { - cfg = DefaultConfig() - } else { - cfg = configs[0] - } - net := network.New(t, cfg) - t.Cleanup(net.Cleanup) - return net -} - -// DefaultConfig will initialize config for the network with custom application, -// genesis and single validator. All other parameters are inherited from cosmos-sdk/testutil/network.DefaultConfig -func DefaultConfig() network.Config { - encoding := cmd.MakeEncodingConfig(app.ModuleBasics) - - genesisState := app.ModuleBasics.DefaultGenesis(encoding.Marshaler) - bankGenesisState := banktypes.DefaultGenesisState() - bankGenesisState.DenomMetadata = []banktypes.Metadata{ - { - Description: "Circle USD Coin", - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: "uusdc", - Exponent: 0, - Aliases: []string{"microusdc"}, - }, - { - Denom: "usdc", - Exponent: 6, - }, - }, - Base: "uusdc", - Display: "usdc", - Name: "Circle USD Coin", - Symbol: "USDC", - }, - } - genesisState[banktypes.ModuleName] = encoding.Marshaler.MustMarshalJSON(bankGenesisState) - ftfGenesisState := fiattokenfactorytypes.DefaultGenesis() - ftfGenesisState.MintingDenom = &fiattokenfactorytypes.MintingDenom{Denom: "uusdc"} - genesisState[fiattokenfactorytypes.ModuleName] = encoding.Marshaler.MustMarshalJSON(ftfGenesisState) - - cfg := network.Config{ - Codec: encoding.Marshaler, - TxConfig: encoding.TxConfig, - LegacyAmino: encoding.Amino, - InterfaceRegistry: encoding.InterfaceRegistry, - AccountRetriever: authtypes.AccountRetriever{}, - AppConstructor: func(val network.Validator) servertypes.Application { - return app.New( - val.Ctx.Logger, tmdb.NewMemDB(), nil, true, map[int64]bool{}, val.Ctx.Config.RootDir, 0, - encoding, - simapp.EmptyAppOptions{}, - baseapp.SetPruning(pruningtypes.NewPruningOptionsFromString(val.AppConfig.Pruning)), - baseapp.SetMinGasPrices(val.AppConfig.MinGasPrices), - ) - }, - GenesisState: genesisState, - TimeoutCommit: 2 * time.Second, - ChainID: "chain-" + tmrand.NewRand().Str(6), - // Some changes are introduced to make the tests run as if Noble is a standalone chain. - // This will only work if NumValidators is set to 1. - NumValidators: 1, - BondDenom: sdk.DefaultBondDenom, - MinGasPrices: fmt.Sprintf("0.000006%s", sdk.DefaultBondDenom), - AccountTokens: sdk.TokensFromConsensusPower(1000, sdk.DefaultPowerReduction), - StakingTokens: sdk.TokensFromConsensusPower(500, sdk.DefaultPowerReduction), - BondedTokens: sdk.TokensFromConsensusPower(100, sdk.DefaultPowerReduction), - PruningStrategy: pruningtypes.PruningOptionNothing, - CleanupDir: true, - SigningAlgo: string(hd.Secp256k1Type), - KeyringOptions: []keyring.Option{}, - } - - // Authority needs to be present to pass genesis validation - params := paramauthoritytypes.DefaultGenesis() - params.Params.Authority = sample.AccAddress() - cfg.GenesisState[paramstypes.ModuleName] = encoding.Marshaler.MustMarshalJSON(params) - - // Authority needs to be present to pass genesis validation - upgrade := paramauthorityupgradetypes.DefaultGenesis() - upgrade.Params.Authority = sample.AccAddress() - cfg.GenesisState[upgradetypes.ModuleName] = encoding.Marshaler.MustMarshalJSON(upgrade) - - cctp := cctptypes.DefaultGenesis() - cctp.Owner = sample.AccAddress() - cctp.AttesterManager = sample.AccAddress() - cctp.Pauser = sample.AccAddress() - cctp.TokenController = sample.AccAddress() - cfg.GenesisState[cctptypes.ModuleName] = encoding.Marshaler.MustMarshalJSON(cctp) - - return cfg -} diff --git a/testutil/nullify/nullify.go b/testutil/nullify/nullify.go deleted file mode 100644 index 3b968c09..00000000 --- a/testutil/nullify/nullify.go +++ /dev/null @@ -1,57 +0,0 @@ -// Package nullify provides methods to init nil values structs for test assertion. -package nullify - -import ( - "reflect" - "unsafe" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -var ( - coinType = reflect.TypeOf(sdk.Coin{}) - coinsType = reflect.TypeOf(sdk.Coins{}) -) - -// Fill analyze all struct fields and slices with -// reflection and initialize the nil and empty slices, -// structs, and pointers. -func Fill(x interface{}) interface{} { - v := reflect.Indirect(reflect.ValueOf(x)) - switch v.Kind() { - case reflect.Slice: - for i := 0; i < v.Len(); i++ { - obj := v.Index(i) - objPt := reflect.NewAt(obj.Type(), unsafe.Pointer(obj.UnsafeAddr())).Interface() - objPt = Fill(objPt) - obj.Set(reflect.ValueOf(objPt)) - } - case reflect.Struct: - for i := 0; i < v.NumField(); i++ { - f := reflect.Indirect(v.Field(i)) - if !f.CanSet() { - continue - } - switch f.Kind() { - case reflect.Slice: - f.Set(reflect.MakeSlice(f.Type(), 0, 0)) - case reflect.Struct: - switch f.Type() { - case coinType: - coin := reflect.New(coinType).Interface() - s := reflect.ValueOf(coin).Elem() - f.Set(s) - case coinsType: - coins := reflect.New(coinsType).Interface() - s := reflect.ValueOf(coins).Elem() - f.Set(s) - default: - objPt := reflect.NewAt(f.Type(), unsafe.Pointer(f.UnsafeAddr())).Interface() - s := Fill(objPt) - f.Set(reflect.ValueOf(s)) - } - } - } - } - return reflect.Indirect(v).Interface() -} diff --git a/testutil/sample/sample.go b/testutil/sample/sample.go deleted file mode 100644 index 76f1e972..00000000 --- a/testutil/sample/sample.go +++ /dev/null @@ -1,39 +0,0 @@ -package sample - -import ( - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" -) - -// AccAddress returns a sample account address -func AccAddress() string { - pk := ed25519.GenPrivKey().PubKey() - addr := pk.Address() - return sdk.AccAddress(addr).String() -} - -// AddressBz returns a slice of base64 encoded bytes representing an address. -func AddressBz() []byte { - pk := ed25519.GenPrivKey().PubKey() - address := sdk.AccAddress(pk.Address()).String() - _, bz, _ := bech32.DecodeAndConvert(address) - return bz -} - -// Account represents a bech32 encoded address and the base64 encoded slice of bytes representing said address. -type Account struct { - Address string - AddressBz []byte -} - -// TestAccount returns an Account representing a newly generated PubKey. -func TestAccount() Account { - pk := ed25519.GenPrivKey().PubKey() - address := sdk.AccAddress(pk.Address()).String() - _, bz, _ := bech32.DecodeAndConvert(address) - return Account{ - Address: address, - AddressBz: bz, - } -} diff --git a/upgrade/constants.go b/upgrade/constants.go new file mode 100644 index 00000000..ae86366f --- /dev/null +++ b/upgrade/constants.go @@ -0,0 +1,12 @@ +package upgrade + +// UpgradeName is the name of this specific software upgrade used on-chain. +const UpgradeName = "helium" + +const UpgradeASCII = ` + _ _ _ _ +| | | | ___| (_)_ _ _ __ ___ +| |_| |/ _ \ | | | | | _ _ \ +| _ | __/ | | |_| | | | | | | +|_| |_|\___|_|_|\__,_|_| |_| |_| +` diff --git a/upgrade/store.go b/upgrade/store.go new file mode 100644 index 00000000..2c6129a8 --- /dev/null +++ b/upgrade/store.go @@ -0,0 +1,22 @@ +package upgrade + +import ( + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/baseapp" + consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + authoritytypes "github.com/noble-assets/authority/types" +) + +func CreateStoreLoader(upgradeHeight int64) baseapp.StoreLoader { + storeUpgrades := storetypes.StoreUpgrades{ + Added: []string{ + // Cosmos Modules + consensustypes.StoreKey, + // Noble Modules + authoritytypes.ModuleName, + }, + } + + return upgradetypes.UpgradeStoreLoader(upgradeHeight, &storeUpgrades) +} diff --git a/upgrade/upgrade.go b/upgrade/upgrade.go new file mode 100644 index 00000000..46fd4c25 --- /dev/null +++ b/upgrade/upgrade.go @@ -0,0 +1,202 @@ +package upgrade + +import ( + "context" + + "cosmossdk.io/errors" + "cosmossdk.io/log" + "cosmossdk.io/math" + storetypes "cosmossdk.io/store/types" + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" + consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" + distributiontypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" + paramstypes "github.com/cosmos/cosmos-sdk/x/params/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" + capabilitykeeper "github.com/cosmos/ibc-go/modules/capability/keeper" + v6 "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/controller/migrations/v6" + icahosttypes "github.com/cosmos/ibc-go/v8/modules/apps/27-interchain-accounts/host/types" + clientkeeper "github.com/cosmos/ibc-go/v8/modules/core/02-client/keeper" + "github.com/cosmos/ibc-go/v8/modules/core/exported" + ibctmmigrations "github.com/cosmos/ibc-go/v8/modules/light-clients/07-tendermint/migrations" + authoritykeeper "github.com/noble-assets/authority/keeper" + authoritytypes "github.com/noble-assets/authority/types" +) + +func CreateUpgradeHandler( + mm *module.Manager, + cfg module.Configurator, + cdc codec.Codec, + logger log.Logger, + capabilityStoreKey *storetypes.KVStoreKey, + accountKeeper authkeeper.AccountKeeper, + authorityKeeper *authoritykeeper.Keeper, + bankKeeper bankkeeper.Keeper, + capabilityKeeper *capabilitykeeper.Keeper, + clientKeeper clientkeeper.Keeper, + consensusKeeper consensuskeeper.Keeper, + paramsKeeper paramskeeper.Keeper, + stakingKeeper *stakingkeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + sdkCtx := sdk.UnwrapSDKContext(ctx) + + // Initialize legacy param subspaces with key tables for migration. + // NOTE: This must be done before RunMigrations is executed. + for _, subspace := range paramsKeeper.GetSubspaces() { + var keyTable paramstypes.KeyTable + switch subspace.Name() { + case authtypes.ModuleName: + keyTable = authtypes.ParamKeyTable() //nolint:staticcheck + case banktypes.ModuleName: + keyTable = banktypes.ParamKeyTable() //nolint:staticcheck + case crisistypes.ModuleName: + keyTable = crisistypes.ParamKeyTable() //nolint:staticcheck + case distributiontypes.ModuleName: + keyTable = distributiontypes.ParamKeyTable() //nolint:staticcheck + case slashingtypes.ModuleName: + keyTable = slashingtypes.ParamKeyTable() //nolint:staticcheck + case stakingtypes.ModuleName: + keyTable = stakingtypes.ParamKeyTable() //nolint:staticcheck + + } + + if !subspace.HasKeyTable() { + subspace.WithKeyTable(keyTable) + } + } + + // Don't run InitGenesis on x/authority module, so we can migrate the + // legacy ParamAuthority address later. + vm[authoritytypes.ModuleName] = 1 + + vm, err := mm.RunMigrations(ctx, cfg, vm) + if err != nil { + return vm, err + } + + // ----- IBC Specific Logic ----- + // https://github.com/cosmos/ibc-go/blob/v8.2.1/testing/simapp/upgrades/upgrades.go + + // IBC v5 -> v6: Migrate ICS-27 channel capabilities. + // https://ibc.cosmos.network/main/migrations/v5-to-v6 + err = v6.MigrateICS27ChannelCapability(sdkCtx, cdc, capabilityStoreKey, capabilityKeeper, icahosttypes.SubModuleName) + if err != nil { + return nil, errors.Wrap(err, "failed to migrate ICS-27 channel capabilities") + } + // IBC v6 -> v7: Prune the consensus states of expired Tendermint light clients. + // https://ibc.cosmos.network/main/migrations/v6-to-v7 + _, err = ibctmmigrations.PruneExpiredConsensusStates(sdkCtx, cdc, clientKeeper) + if err != nil { + return nil, errors.Wrap(err, "failed to prune expired consensus states") + } + // IBC v7 -> v7.1: Register 09-localhost as an allowed light client. + // https://ibc.cosmos.network/main/migrations/v7-to-v7_1 + params := clientKeeper.GetParams(sdkCtx) + params.AllowedClients = append(params.AllowedClients, exported.Localhost) + clientKeeper.SetParams(sdkCtx, params) + + // ----- SDK Specific Logic ----- + // https://docs.cosmos.network/main/build/migrations/upgrading + + // SDK v0.46 -> v0.47: Migrate CometBFT params to x/consensus module. + // https://docs.cosmos.network/main/build/migrations/upgrading#xconsensus + subspace := paramsKeeper.Subspace(baseapp.Paramspace).WithKeyTable(paramstypes.ConsensusParamsKeyTable()) //nolint:staticcheck + err = baseapp.MigrateParams(sdkCtx, subspace, consensusKeeper.ParamsStore) + if err != nil { + return nil, errors.Wrap(err, "failed to migrate consensus params") + } + + // ----- Noble Specific Logic ----- + + // Migrate ParamAuthority address to x/authority module. + var authority string + subspace = paramsKeeper.Subspace(paramstypes.ModuleName).WithKeyTable(authoritytypes.ParamKeyTable()) //nolint:staticcheck + subspace.Get(sdkCtx, authoritytypes.AuthorityKey, &authority) + err = authorityKeeper.Owner.Set(ctx, authority) + if err != nil { + return vm, errors.Wrap(err, "failed to migrate authority address") + } + + MigrateValidatorAccounts(ctx, accountKeeper, stakingKeeper) + err = BurnSurplusSupply(ctx, authority, accountKeeper, bankKeeper) + if err != nil { + return vm, err + } + + logger.Info(UpgradeASCII) + return vm, nil + } +} + +// MigrateValidatorAccounts performs a migration of all validator operators to +// permanently locked vesting accounts. NOTE: In a future upgrade, think about +// clawing back inactive validator staking tokens. +func MigrateValidatorAccounts(ctx context.Context, accountKeeper authkeeper.AccountKeeper, stakingKeeper *stakingkeeper.Keeper) { + validators, _ := stakingKeeper.GetAllValidators(ctx) + for _, validator := range validators { + operator, _ := stakingKeeper.ValidatorAddressCodec().StringToBytes(validator.OperatorAddress) + rawAccount := accountKeeper.GetAccount(ctx, operator) + + switch account := rawAccount.(type) { + case *vestingtypes.ContinuousVestingAccount: + rawAccount = &vestingtypes.PermanentLockedAccount{ + BaseVestingAccount: &vestingtypes.BaseVestingAccount{ + BaseAccount: account.BaseAccount, + OriginalVesting: account.OriginalVesting, + DelegatedFree: sdk.NewCoins(), + DelegatedVesting: account.OriginalVesting, + EndTime: 0, + }, + } + case *vestingtypes.DelayedVestingAccount: + rawAccount = &vestingtypes.PermanentLockedAccount{ + BaseVestingAccount: &vestingtypes.BaseVestingAccount{ + BaseAccount: account.BaseAccount, + OriginalVesting: account.OriginalVesting, + DelegatedFree: sdk.NewCoins(), + DelegatedVesting: account.OriginalVesting, + EndTime: 0, + }, + } + } + + accountKeeper.SetAccount(ctx, rawAccount) + } +} + +// BurnSurplusSupply performs a burn of the surplus $STAKE supply. +func BurnSurplusSupply(ctx context.Context, authority string, accountKeeper authkeeper.AccountKeeper, bankKeeper bankkeeper.Keeper) error { + supply := bankKeeper.GetSupply(ctx, "ustake") + surplus := supply.Sub(sdk.NewCoin( + "ustake", math.NewInt(1_000_000_000_000_000), + )) + + if !surplus.IsPositive() { + return nil + } + + address, err := accountKeeper.AddressCodec().StringToBytes(authority) + if err != nil { + return err + } + err = bankKeeper.SendCoinsFromAccountToModule(ctx, address, upgradetypes.ModuleName, sdk.NewCoins(surplus)) + if err != nil { + return err + } + + err = bankKeeper.BurnCoins(ctx, upgradetypes.ModuleName, sdk.NewCoins(surplus)) + return err +} diff --git a/x/globalfee/README.md b/x/globalfee/README.md deleted file mode 100644 index 746d5c14..00000000 --- a/x/globalfee/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Global fee module - -The Global fee module was supplied by the great folks at [TGrade](https://github.com/confio/tgrade) 👋, with minor modifications. All credits and big thanks go to the original authors. - -More information about Cosmoshub fee system please check [here](../../docs/modules/globalfee.md). diff --git a/x/globalfee/alias.go b/x/globalfee/alias.go deleted file mode 100644 index 4a681bb8..00000000 --- a/x/globalfee/alias.go +++ /dev/null @@ -1,9 +0,0 @@ -package globalfee - -import ( - "github.com/noble-assets/noble/v7/x/globalfee/types" -) - -const ( - ModuleName = types.ModuleName -) diff --git a/x/globalfee/ante/antetest/fee_test.go b/x/globalfee/ante/antetest/fee_test.go deleted file mode 100644 index 52ddff3f..00000000 --- a/x/globalfee/ante/antetest/fee_test.go +++ /dev/null @@ -1,625 +0,0 @@ -package antetest - -// func TestIntegrationTestSuite(t *testing.T) { -// suite.Run(t, new(IntegrationTestSuite)) -// } - -// func (s *IntegrationTestSuite) TestGetDefaultGlobalFees() { -// // set globalfees and min gas price -// globalfeeSubspace := s.SetupTestGlobalFeeStoreAndMinGasPrice([]sdk.DecCoin{}, &globfeetypes.Params{}) - -// // set staking params -// stakingParam := stakingtypes.DefaultParams() -// bondDenom := "uatom" -// stakingParam.BondDenom = bondDenom -// stakingSubspace := s.SetupTestStakingSubspace(stakingParam) - -// // setup antehandler -// mfd := gaiafeeante.NewFeeDecorator(gaiaapp.GetDefaultBypassFeeMessages(), globalfeeSubspace, stakingSubspace, newTestGasLimit()) - -// defaultGlobalFees, err := mfd.DefaultZeroGlobalFee(s.ctx) -// s.Require().NoError(err) -// s.Require().Greater(len(defaultGlobalFees), 0) - -// if defaultGlobalFees[0].Denom != bondDenom { -// s.T().Fatalf("bond denom: %s, default global fee denom: %s", bondDenom, defaultGlobalFees[0].Denom) -// } -// } - -// // test global fees and min_gas_price with bypass msg types. -// // please note even globalfee=0, min_gas_price=0, we do not let fee=0random_denom pass -// // paid fees are already sanitized by removing zero coins(through feeFlag parsing), so use sdk.NewCoins() to create it. -// func (s *IntegrationTestSuite) TestGlobalFeeMinimumGasFeeAnteHandler() { -// // setup test -// s.SetupTest() -// s.txBuilder = s.clientCtx.TxConfig.NewTxBuilder() -// priv1, _, addr1 := testdata.KeyTestPubAddr() -// privs, accNums, accSeqs := []cryptotypes.PrivKey{priv1}, []uint64{0}, []uint64{0} - -// denominator := int64(100000) -// high := sdk.NewDec(400).Quo(sdk.NewDec(denominator)) // 0.004 -// med := sdk.NewDec(200).Quo(sdk.NewDec(denominator)) // 0.002 -// low := sdk.NewDec(100).Quo(sdk.NewDec(denominator)) // 0.001 - -// highFeeAmt := sdk.NewInt(high.MulInt64(int64(2) * denominator).RoundInt64()) -// medFeeAmt := sdk.NewInt(med.MulInt64(int64(2) * denominator).RoundInt64()) -// lowFeeAmt := sdk.NewInt(low.MulInt64(int64(2) * denominator).RoundInt64()) - -// globalfeeParamsEmpty := &globfeetypes.Params{MinimumGasPrices: []sdk.DecCoin{}} -// minGasPriceEmpty := []sdk.DecCoin{} -// globalfeeParams0 := &globfeetypes.Params{MinimumGasPrices: []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("photon", sdk.NewDec(0)), -// sdk.NewDecCoinFromDec("uatom", sdk.NewDec(0)), -// }} -// globalfeeParamsContain0 := &globfeetypes.Params{MinimumGasPrices: []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("photon", med), -// sdk.NewDecCoinFromDec("uatom", sdk.NewDec(0)), -// }} -// minGasPrice0 := []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("stake", sdk.NewDec(0)), -// sdk.NewDecCoinFromDec("uatom", sdk.NewDec(0)), -// } -// globalfeeParamsHigh := &globfeetypes.Params{ -// MinimumGasPrices: []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("uatom", high), -// }, -// } -// minGasPrice := []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("uatom", med), -// sdk.NewDecCoinFromDec("stake", med), -// } -// globalfeeParamsLow := &globfeetypes.Params{ -// MinimumGasPrices: []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("uatom", low), -// }, -// } -// // global fee must be sorted in denom -// globalfeeParamsNewDenom := &globfeetypes.Params{ -// MinimumGasPrices: []sdk.DecCoin{ -// sdk.NewDecCoinFromDec("photon", high), -// sdk.NewDecCoinFromDec("quark", high), -// }, -// } -// testCases := map[string]struct { -// minGasPrice []sdk.DecCoin -// globalFeeParams *globfeetypes.Params -// gasPrice sdk.Coins -// gasLimit sdk.Gas -// txMsg sdk.Msg -// txCheck bool -// expErr bool -// }{ -// // test fees -// // empty min_gas_price or empty global fee -// "empty min_gas_price, nonempty global fee, fee higher/equal than global_fee": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParamsHigh, -// // sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()) -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", highFeeAmt)), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "empty min_gas_price, nonempty global fee, fee lower than global_fee": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParamsHigh, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "nonempty min_gas_price with defaultGlobalFee denom, empty global fee, fee higher/equal than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsEmpty, // default 0uatom -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", medFeeAmt)), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "nonempty min_gas_price with defaultGlobalFee denom, empty global fee, fee lower than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "empty min_gas_price, empty global fee, empty fee": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.Coins{}, -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// // zero min_gas_price or zero global fee -// "zero min_gas_price, zero global fee, zero fee in global fee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt()), sdk.NewCoin("photon", sdk.ZeroInt())), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, zero global fee, empty fee": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.Coins{}, -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// // zero global fee -// "zero min_gas_price, zero global fee, zero fee not in globalfee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", sdk.ZeroInt())), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, zero global fee, zero fees one in, one not in globalfee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("stake", sdk.ZeroInt()), -// sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// // zero min_gas_price and empty global fee -// "zero min_gas_price, empty global fee, zero fee in min_gas_price_denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", sdk.ZeroInt())), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, empty global fee, zero fee not in min_gas_price denom, not in defaultZeroGlobalFee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("quark", sdk.ZeroInt())), -// gasLimit: testdata.NewTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, empty global fee, zero fee in defaultZeroGlobalFee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, empty global fee, nonzero fee in defaultZeroGlobalFee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "zero min_gas_price, empty global fee, nonzero fee not in defaultZeroGlobalFee denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsEmpty, -// gasPrice: sdk.NewCoins(sdk.NewCoin("quark", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// // empty min_gas_price, zero global fee -// "empty min_gas_price, zero global fee, zero fee in global fee denom": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "empty min_gas_price, zero global fee, zero fee not in global fee denom": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "empty min_gas_price, zero global fee, nonzero fee in global fee denom": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "empty min_gas_price, zero global fee, nonzero fee not in global fee denom": { -// minGasPrice: minGasPriceEmpty, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// // zero min_gas_price, nonzero global fee -// "zero min_gas_price, nonzero global fee, fee is higher than global fee": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// // nonzero min_gas_price, nonzero global fee -// "fee higher/equal than globalfee and min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsHigh, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "fee lower than globalfee and min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsHigh, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "fee with one denom higher/equal, one denom lower than globalfee and min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsNewDenom, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("photon", lowFeeAmt), -// sdk.NewCoin("quark", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "globalfee > min_gas_price, fee higher/equal than min_gas_price, lower than globalfee": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsHigh, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", medFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "globalfee < min_gas_price, fee higher/equal than globalfee and lower than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// // nonzero min_gas_price, zero global fee -// "nonzero min_gas_price, zero global fee, fee is in global fee denom and lower than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "nonzero min_gas_price, zero global fee, fee is in global fee denom and higher/equal than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", medFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "nonzero min_gas_price, zero global fee, fee is in min_gas_price denom which is not in global fee default, but higher/equal than min_gas_price": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParams0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// // fee denom tests -// "min_gas_price denom is not subset of global fee denom , fee paying in global fee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsNewDenom, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "min_gas_price denom is not subset of global fee denom, fee paying in min_gas_price denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsNewDenom, -// gasPrice: sdk.NewCoins(sdk.NewCoin("stake", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "fees contain denom not in globalfee": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("uatom", highFeeAmt), -// sdk.NewCoin("quark", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "fees contain denom not in globalfee with zero amount": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", highFeeAmt), -// sdk.NewCoin("quark", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// // cases from https://github.com/cosmos/gaia/pull/1570#issuecomment-1190524402 -// // note: this is kind of a silly scenario but technically correct -// // if there is a zero coin in the globalfee, the user could pay 0fees -// // if the user includes any fee at all in the non-zero denom, it must be higher than that non-zero fee -// // unlikely we will ever see zero and non-zero together but technically possible -// "globalfee contains zero coin and non-zero coin, fee is lower than the nonzero coin": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", lowFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "globalfee contains zero coin, fee contains zero coins of the same denom and a lower fee of the other denom in global fee": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("photon", lowFeeAmt), -// sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "globalfee contains zero coin, fee is empty": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.Coins{}, -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "globalfee contains zero coin, fee contains lower fee of zero coins's denom, globalfee also contains nonzero coin,fee contains higher fee of nonzero coins's denom, ": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("photon", lowFeeAmt), -// sdk.NewCoin("uatom", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "globalfee contains zero coin, fee is all zero coins but in global fee's denom": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.NewCoins( -// sdk.NewCoin("photon", sdk.ZeroInt()), -// sdk.NewCoin("uatom", sdk.ZeroInt()), -// ), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "globalfee contains zero coin, fee is higher than the nonzero coin": { -// minGasPrice: minGasPrice0, -// globalFeeParams: globalfeeParamsContain0, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "bypass msg type: ibc.core.channel.v1.MsgRecvPacket": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgRecvPacket( -// ibcchanneltypes.Packet{}, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "bypass msg type: ibc.core.channel.v1.MsgTimeout": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgTimeout( -// ibcchanneltypes.Packet{}, 1, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "bypass msg type: ibc.core.channel.v1.MsgTimeoutOnClose": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgTimeout( -// ibcchanneltypes.Packet{}, 2, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "bypass msg gas usage exceeds maxTotalBypassMinFeeMsgGasUsage": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: 2 * newTestMaxTotalBypassMinFeeMsgGasUsage(), -// txMsg: ibcchanneltypes.NewMsgTimeout( -// ibcchanneltypes.Packet{}, 2, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: true, -// }, -// "bypass msg gas usage equals to maxTotalBypassMinFeeMsgGasUsage": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestMaxTotalBypassMinFeeMsgGasUsage(), -// txMsg: ibcchanneltypes.NewMsgTimeout( -// ibcchanneltypes.Packet{}, 3, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "msg type ibc, zero fee not in globalfee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgRecvPacket( -// ibcchanneltypes.Packet{}, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "msg type ibc, nonzero fee in globalfee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgRecvPacket( -// ibcchanneltypes.Packet{}, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "msg type ibc, nonzero fee not in globalfee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgRecvPacket( -// ibcchanneltypes.Packet{}, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: true, -// }, -// "msg type ibc, empty fee": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.Coins{}, -// gasLimit: newTestGasLimit(), -// txMsg: ibcchanneltypes.NewMsgRecvPacket( -// ibcchanneltypes.Packet{}, nil, ibcclienttypes.Height{}, ""), -// txCheck: true, -// expErr: false, -// }, -// "msg type non-ibc, nonzero fee in globalfee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: false, -// }, -// "msg type non-ibc, empty fee": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.Coins{}, -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "msg type non-ibc, nonzero fee not in globalfee denom": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("photon", highFeeAmt)), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: true, -// expErr: true, -// }, -// "disable checkTx: no fee check. min_gas_price is low, global fee is low, tx fee is zero": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("uatom", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: false, -// expErr: false, -// }, -// "disable checkTx: no fee check. min_gas_price is low, global fee is low, tx fee's denom is not in global fees denoms set": { -// minGasPrice: minGasPrice, -// globalFeeParams: globalfeeParamsLow, -// gasPrice: sdk.NewCoins(sdk.NewCoin("quark", sdk.ZeroInt())), -// gasLimit: newTestGasLimit(), -// txMsg: testdata.NewTestMsg(addr1), -// txCheck: false, -// expErr: false, -// }, -// } -// for name, testCase := range testCases { -// s.Run(name, func() { -// // set globalfees and min gas price -// globalfeeSubspace := s.SetupTestGlobalFeeStoreAndMinGasPrice(testCase.minGasPrice, testCase.globalFeeParams) -// stakingParam := stakingtypes.DefaultParams() -// stakingParam.BondDenom = "uatom" -// stakingSubspace := s.SetupTestStakingSubspace(stakingParam) -// // setup antehandler -// mfd := gaiafeeante.NewFeeDecorator(gaiaapp.GetDefaultBypassFeeMessages(), globalfeeSubspace, stakingSubspace, newTestMaxTotalBypassMinFeeMsgGasUsage()) -// antehandler := sdk.ChainAnteDecorators(mfd) -// s.Require().NoError(s.txBuilder.SetMsgs(testCase.txMsg)) -// s.txBuilder.SetFeeAmount(testCase.gasPrice) -// s.txBuilder.SetGasLimit(testCase.gasLimit) -// tx, err := s.CreateTestTx(privs, accNums, accSeqs, s.ctx.ChainID()) -// s.Require().NoError(err) - -// s.ctx = s.ctx.WithIsCheckTx(testCase.txCheck) -// _, err = antehandler(s.ctx, tx, false) -// if !testCase.expErr { -// s.Require().NoError(err) -// } else { -// s.Require().Error(err) -// } -// }) -// } -// } - -// // helpers -// func newTestGasLimit() uint64 { -// return 200000 -// } - -// func newTestMaxTotalBypassMinFeeMsgGasUsage() uint64 { -// return 1000000 -// } diff --git a/x/globalfee/ante/antetest/fee_test_setup.go b/x/globalfee/ante/antetest/fee_test_setup.go deleted file mode 100644 index 0bcd6177..00000000 --- a/x/globalfee/ante/antetest/fee_test_setup.go +++ /dev/null @@ -1,90 +0,0 @@ -package antetest - -// gaiaapp "github.com/cosmos/gaia/v9/app" - -// type IntegrationTestSuite struct { -// suite.Suite - -// app *gaiaapp.GaiaApp -// ctx sdk.Context -// clientCtx client.Context -// txBuilder client.TxBuilder -// } - -// func (s *IntegrationTestSuite) SetupTest() { -// app := gaiahelpers.Setup(s.T()) -// ctx := app.BaseApp.NewContext(false, tmproto.Header{ -// ChainID: fmt.Sprintf("test-chain-%s", tmrand.Str(4)), -// Height: 1, -// }) - -// encodingConfig := gaiaapp.MakeTestEncodingConfig() -// encodingConfig.Amino.RegisterConcrete(&testdata.TestMsg{}, "testdata.TestMsg", nil) -// testdata.RegisterInterfaces(encodingConfig.InterfaceRegistry) - -// s.app = app -// s.ctx = ctx -// s.clientCtx = client.Context{}.WithTxConfig(encodingConfig.TxConfig) -// } - -// func (s *IntegrationTestSuite) SetupTestGlobalFeeStoreAndMinGasPrice(minGasPrice []sdk.DecCoin, globalFeeParams *globfeetypes.Params) types.Subspace { -// subspace := s.app.GetSubspace(globalfee.ModuleName) -// subspace.SetParamSet(s.ctx, globalFeeParams) -// s.ctx = s.ctx.WithMinGasPrices(minGasPrice).WithIsCheckTx(true) - -// return subspace -// } - -// // SetupTestStakingSubspace sets uatom as bond denom for the fee tests. -// func (s *IntegrationTestSuite) SetupTestStakingSubspace(params stakingtypes.Params) types.Subspace { -// s.app.GetSubspace(stakingtypes.ModuleName).SetParamSet(s.ctx, ¶ms) -// return s.app.GetSubspace(stakingtypes.ModuleName) -// } - -// func (s *IntegrationTestSuite) CreateTestTx(privs []cryptotypes.PrivKey, accNums []uint64, accSeqs []uint64, chainID string) (xauthsigning.Tx, error) { -// var sigsV2 []signing.SignatureV2 -// for i, priv := range privs { -// sigV2 := signing.SignatureV2{ -// PubKey: priv.PubKey(), -// Data: &signing.SingleSignatureData{ -// SignMode: s.clientCtx.TxConfig.SignModeHandler().DefaultMode(), -// Signature: nil, -// }, -// Sequence: accSeqs[i], -// } - -// sigsV2 = append(sigsV2, sigV2) -// } - -// if err := s.txBuilder.SetSignatures(sigsV2...); err != nil { -// return nil, err -// } - -// sigsV2 = []signing.SignatureV2{} -// for i, priv := range privs { -// signerData := xauthsigning.SignerData{ -// ChainID: chainID, -// AccountNumber: accNums[i], -// Sequence: accSeqs[i], -// } -// sigV2, err := tx.SignWithPrivKey( -// s.clientCtx.TxConfig.SignModeHandler().DefaultMode(), -// signerData, -// s.txBuilder, -// priv, -// s.clientCtx.TxConfig, -// accSeqs[i], -// ) -// if err != nil { -// return nil, err -// } - -// sigsV2 = append(sigsV2, sigV2) -// } - -// if err := s.txBuilder.SetSignatures(sigsV2...); err != nil { -// return nil, err -// } - -// return s.txBuilder.GetTx(), nil -// } diff --git a/x/globalfee/ante/antetest/fee_utils_test.go b/x/globalfee/ante/antetest/fee_utils_test.go deleted file mode 100644 index 6dcf67f4..00000000 --- a/x/globalfee/ante/antetest/fee_utils_test.go +++ /dev/null @@ -1,415 +0,0 @@ -package antetest - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/suite" - - "github.com/noble-assets/noble/v7/x/globalfee/ante" -) - -type feeUtilsTestSuite struct { - suite.Suite -} - -func TestFeeUtilsTestSuite(t *testing.T) { - suite.Run(t, new(feeUtilsTestSuite)) -} - -func (s *feeUtilsTestSuite) TestContainZeroCoins() { - zeroCoin1 := sdk.NewCoin("photon", sdk.ZeroInt()) - zeroCoin2 := sdk.NewCoin("stake", sdk.ZeroInt()) - coin1 := sdk.NewCoin("photon", sdk.NewInt(1)) - coin2 := sdk.NewCoin("stake", sdk.NewInt(2)) - coin3 := sdk.NewCoin("quark", sdk.NewInt(3)) - // coins must be valid !!! - coinsEmpty := sdk.Coins{} - coinsNonEmpty := sdk.Coins{coin1, coin2} - coinsCointainZero := sdk.Coins{coin1, zeroCoin2} - coinsCointainTwoZero := sdk.Coins{zeroCoin1, zeroCoin2, coin3} - coinsAllZero := sdk.Coins{zeroCoin1, zeroCoin2} - - tests := []struct { - c sdk.Coins - ok bool - }{ - { - coinsEmpty, - true, - }, - { - coinsNonEmpty, - false, - }, - { - coinsCointainZero, - true, - }, - { - coinsCointainTwoZero, - true, - }, - { - coinsAllZero, - true, - }, - } - - for _, test := range tests { - ok := ante.ContainZeroCoins(test.c) - s.Require().Equal(test.ok, ok) - } -} - -func (s *feeUtilsTestSuite) TestCombinedFeeRequirement() { - zeroCoin1 := sdk.NewCoin("photon", sdk.ZeroInt()) - zeroCoin2 := sdk.NewCoin("stake", sdk.ZeroInt()) - zeroCoin3 := sdk.NewCoin("quark", sdk.ZeroInt()) - coin1 := sdk.NewCoin("photon", sdk.NewInt(1)) - coin2 := sdk.NewCoin("stake", sdk.NewInt(2)) - coin1High := sdk.NewCoin("photon", sdk.NewInt(10)) - coin2High := sdk.NewCoin("stake", sdk.NewInt(20)) - coinNewDenom1 := sdk.NewCoin("Newphoton", sdk.NewInt(1)) - coinNewDenom2 := sdk.NewCoin("Newstake", sdk.NewInt(1)) - // coins must be valid !!! and sorted!!! - coinsEmpty := sdk.Coins{} - coinsNonEmpty := sdk.Coins{coin1, coin2}.Sort() - coinsNonEmptyHigh := sdk.Coins{coin1High, coin2High}.Sort() - coinsNonEmptyOneHigh := sdk.Coins{coin1High, coin2}.Sort() - coinsNewDenom := sdk.Coins{coinNewDenom1, coinNewDenom2}.Sort() - coinsNewOldDenom := sdk.Coins{coin1, coinNewDenom1}.Sort() - coinsNewOldDenomHigh := sdk.Coins{coin1High, coinNewDenom1}.Sort() - coinsCointainZero := sdk.Coins{coin1, zeroCoin2}.Sort() - coinsCointainZeroNewDenom := sdk.Coins{coin1, zeroCoin3}.Sort() - coinsAllZero := sdk.Coins{zeroCoin1, zeroCoin2}.Sort() - tests := map[string]struct { - cGlobal sdk.Coins - c sdk.Coins - combined sdk.Coins - }{ - "global fee empty, min fee empty, combined fee empty": { - cGlobal: coinsEmpty, - c: coinsEmpty, - combined: coinsEmpty, - }, - "global fee empty, min fee nonempty, combined fee empty": { - cGlobal: coinsEmpty, - c: coinsNonEmpty, - combined: coinsEmpty, - }, - "global fee nonempty, min fee empty, combined fee = global fee": { - cGlobal: coinsNonEmpty, - c: coinsNonEmpty, - combined: coinsNonEmpty, - }, - "global fee and min fee have overlapping denom, min fees amounts are all higher": { - cGlobal: coinsNonEmpty, - c: coinsNonEmptyHigh, - combined: coinsNonEmptyHigh, - }, - "global fee and min fee have overlapping denom, one of min fees amounts is higher": { - cGlobal: coinsNonEmpty, - c: coinsNonEmptyOneHigh, - combined: coinsNonEmptyOneHigh, - }, - "global fee and min fee have no overlapping denom, combined fee = global fee": { - cGlobal: coinsNonEmpty, - c: coinsNewDenom, - combined: coinsNonEmpty, - }, - "global fees and min fees have partial overlapping denom, min fee amount <= global fee amount, combined fees = global fees": { - cGlobal: coinsNonEmpty, - c: coinsNewOldDenom, - combined: coinsNonEmpty, - }, - "global fees and min fees have partial overlapping denom, one min fee amount > global fee amount, combined fee = overlapping highest": { - cGlobal: coinsNonEmpty, - c: coinsNewOldDenomHigh, - combined: sdk.Coins{coin1High, coin2}, - }, - "global fees have zero fees, min fees have overlapping non-zero fees, combined fees = overlapping highest": { - cGlobal: coinsCointainZero, - c: coinsNonEmpty, - combined: sdk.Coins{coin1, coin2}, - }, - "global fees have zero fees, min fees have overlapping zero fees": { - cGlobal: coinsCointainZero, - c: coinsCointainZero, - combined: coinsCointainZero, - }, - "global fees have zero fees, min fees have non-overlapping zero fees": { - cGlobal: coinsCointainZero, - c: coinsCointainZeroNewDenom, - combined: coinsCointainZero, - }, - "global fees are all zero fees, min fees have overlapping zero fees": { - cGlobal: coinsAllZero, - c: coinsAllZero, - combined: coinsAllZero, - }, - "global fees are all zero fees, min fees have overlapping non-zero fees, combined fee = overlapping highest": { - cGlobal: coinsAllZero, - c: coinsCointainZeroNewDenom, - combined: sdk.Coins{coin1, zeroCoin2}, - }, - "global fees are all zero fees, fees have one overlapping non-zero fee": { - cGlobal: coinsAllZero, - c: coinsCointainZero, - combined: coinsCointainZero, - }, - } - - for name, test := range tests { - s.Run(name, func() { - allFees := ante.CombinedFeeRequirement(test.cGlobal, test.c) - s.Require().Equal(test.combined, allFees) - }) - } -} - -func (s *feeUtilsTestSuite) TestDenomsSubsetOfIncludingZero() { - emptyCoins := sdk.Coins{} - - zeroCoin1 := sdk.NewCoin("photon", sdk.ZeroInt()) - zeroCoin2 := sdk.NewCoin("stake", sdk.ZeroInt()) - zeroCoin3 := sdk.NewCoin("quark", sdk.ZeroInt()) - - coin1 := sdk.NewCoin("photon", sdk.NewInt(1)) - coin2 := sdk.NewCoin("stake", sdk.NewInt(2)) - coin3 := sdk.NewCoin("quark", sdk.NewInt(3)) - - coinNewDenom1 := sdk.NewCoin("newphoton", sdk.NewInt(1)) - coinNewDenom2 := sdk.NewCoin("newstake", sdk.NewInt(2)) - coinNewDenom3 := sdk.NewCoin("newquark", sdk.NewInt(3)) - coinNewDenom1Zero := sdk.NewCoin("newphoton", sdk.ZeroInt()) - // coins must be valid !!! and sorted!!! - coinsAllZero := sdk.Coins{zeroCoin1, zeroCoin2, zeroCoin3}.Sort() - coinsAllZeroShort := sdk.Coins{zeroCoin1, zeroCoin2}.Sort() - coinsContainZero := sdk.Coins{zeroCoin1, zeroCoin2, coin3}.Sort() - coinsContainZeroNewDenoms := sdk.Coins{zeroCoin1, zeroCoin2, coinNewDenom1Zero}.Sort() - coins := sdk.Coins{coin1, coin2, coin3}.Sort() - coinsShort := sdk.Coins{coin1, coin2}.Sort() - coinsAllNewDenom := sdk.Coins{coinNewDenom1, coinNewDenom2, coinNewDenom3}.Sort() - coinsOldNewDenom := sdk.Coins{coin1, coin2, coinNewDenom1}.Sort() - - tests := map[string]struct { - superset sdk.Coins - set sdk.Coins - subset bool - }{ - "empty coins is a DenomsSubsetOf empty coins": { - superset: emptyCoins, - set: emptyCoins, - subset: true, - }, - "nonempty coins is not a DenomsSubsetOf empty coins": { - superset: emptyCoins, - set: coins, - subset: false, - }, - "empty coins is not a DenomsSubsetOf nonempty, nonzero coins": { - superset: emptyCoins, - set: coins, - subset: false, - }, - "empty coins is a DenomsSubsetOf coins of all zeros": { - superset: coinsAllZero, - set: emptyCoins, - subset: true, - }, - "empty coins is a DenomsSubsetOf coinsContainZero": { - superset: coinsContainZero, - set: emptyCoins, - subset: true, - }, - "two sets no denoms overlapping, DenomsSubsetOf = false": { - superset: coins, - set: coinsAllNewDenom, - subset: false, - }, - "two sets have partially overlapping denoms, DenomsSubsetOf = false": { - superset: coins, - set: coinsOldNewDenom, - subset: false, - }, - "two sets are nonzero, set's denoms are all in superset, DenomsSubsetOf = true": { - superset: coins, - set: coinsShort, - subset: true, - }, - "supersets are zero coins, set's denoms are all in superset, DenomsSubsetOf = true": { - superset: coinsAllZero, - set: coinsShort, - subset: true, - }, - "supersets contains zero coins, set's denoms are all in superset, DenomsSubsetOf = true": { - superset: coinsContainZero, - set: coinsShort, - subset: true, - }, - "supersets contains zero coins, set's denoms contains zero coins, denoms are overlapping DenomsSubsetOf = true": { - superset: coinsContainZero, - set: coinsContainZero, - subset: true, - }, - "supersets contains zero coins, set's denoms contains zero coins, denoms are not overlapping DenomsSubsetOf = false": { - superset: coinsContainZero, - set: coinsContainZeroNewDenoms, - subset: false, - }, - "two sets of all zero coins, have the same denoms, DenomsSubsetOf = true": { - superset: coinsAllZero, - set: coinsAllZeroShort, - subset: true, - }, - } - - for name, test := range tests { - s.Run(name, func() { - subset := ante.DenomsSubsetOfIncludingZero(test.set, test.superset) - s.Require().Equal(test.subset, subset) - }) - } -} - -func (s *feeUtilsTestSuite) TestIsAnyGTEIncludingZero() { - emptyCoins := sdk.Coins{} - - zeroCoin1 := sdk.NewCoin("photon", sdk.ZeroInt()) - zeroCoin2 := sdk.NewCoin("stake", sdk.ZeroInt()) - zeroCoin3 := sdk.NewCoin("quark", sdk.ZeroInt()) - - coin1 := sdk.NewCoin("photon", sdk.NewInt(10)) - coin1Low := sdk.NewCoin("photon", sdk.NewInt(1)) - coin1High := sdk.NewCoin("photon", sdk.NewInt(100)) - coin2 := sdk.NewCoin("stake", sdk.NewInt(20)) - coin2Low := sdk.NewCoin("stake", sdk.NewInt(2)) - coin2High := sdk.NewCoin("stake", sdk.NewInt(200)) - coin3 := sdk.NewCoin("quark", sdk.NewInt(30)) - - coinNewDenom1 := sdk.NewCoin("newphoton", sdk.NewInt(10)) - coinNewDenom2 := sdk.NewCoin("newstake", sdk.NewInt(20)) - coinNewDenom3 := sdk.NewCoin("newquark", sdk.NewInt(30)) - zeroCoinNewDenom1 := sdk.NewCoin("newphoton", sdk.NewInt(10)) - zeroCoinNewDenom2 := sdk.NewCoin("newstake", sdk.NewInt(20)) - zeroCoinNewDenom3 := sdk.NewCoin("newquark", sdk.NewInt(30)) - // coins must be valid !!! and sorted!!! - coinsAllZero := sdk.Coins{zeroCoin1, zeroCoin2, zeroCoin3}.Sort() - coinsAllNewDenomAllZero := sdk.Coins{zeroCoinNewDenom1, zeroCoinNewDenom2, zeroCoinNewDenom3}.Sort() - coinsAllZeroShort := sdk.Coins{zeroCoin1, zeroCoin2}.Sort() - coinsContainZero := sdk.Coins{zeroCoin1, zeroCoin2, coin3}.Sort() - - coins := sdk.Coins{coin1, coin2, coin3}.Sort() - coinsHighHigh := sdk.Coins{coin1High, coin2High} - coinsHighLow := sdk.Coins{coin1High, coin2Low}.Sort() - coinsLowLow := sdk.Coins{coin1Low, coin2Low}.Sort() - // coinsShort := sdk.Coins{coin1, coin2}.Sort() - coinsAllNewDenom := sdk.Coins{coinNewDenom1, coinNewDenom2, coinNewDenom3}.Sort() - coinsOldNewDenom := sdk.Coins{coin1, coinNewDenom1, coinNewDenom2}.Sort() - coinsOldLowNewDenom := sdk.Coins{coin1Low, coinNewDenom1, coinNewDenom2}.Sort() - tests := map[string]struct { - c1 sdk.Coins - c2 sdk.Coins - gte bool // greater or equal - }{ - "zero coins are GTE zero coins": { - c1: coinsAllZero, - c2: coinsAllZero, - gte: true, - }, - "zero coins(short) are GTE zero coins": { - c1: coinsAllZero, - c2: coinsAllZeroShort, - gte: true, - }, - "zero coins are GTE zero coins(short)": { - c1: coinsAllZeroShort, - c2: coinsAllZero, - gte: true, - }, - "c2 is all zero coins, with different denoms from c1 which are all zero coins too": { - c1: coinsAllZero, - c2: coinsAllNewDenomAllZero, - gte: false, - }, - "empty coins are GTE empty coins": { - c1: emptyCoins, - c2: emptyCoins, - gte: true, - }, - "empty coins are GTE zero coins": { - c1: coinsAllZero, - c2: emptyCoins, - gte: true, - }, - "empty coins are GTE coins that contain zero denom": { - c1: coinsContainZero, - c2: emptyCoins, - gte: true, - }, - "zero coins are not GTE empty coins": { - c1: emptyCoins, - c2: coinsAllZero, - gte: false, - }, - "empty coins are not GTE nonzero coins": { - c1: coins, - c2: emptyCoins, - gte: false, - }, - // special case, not the opposite result of the above case - "nonzero coins are not GTE empty coins": { - c1: emptyCoins, - c2: coins, - gte: false, - }, - "nonzero coins are GTE zero coins, has overlapping denom": { - c1: coinsAllZero, - c2: coins, - gte: true, - }, - "nonzero coins are GTE coins contain zero coins, zero coin is overlapping denom": { - c1: coinsContainZero, - c2: coins, - gte: true, - }, - "one denom amount higher, one denom amount lower": { - c1: coins, - c2: coinsHighLow, - gte: true, - }, - "all coins amounts are lower, denom overlapping": { - c1: coins, - c2: coinsLowLow, - gte: false, - }, - "all coins amounts are higher, denom overlapping": { - c1: coins, - c2: coinsHighHigh, - gte: true, - }, - "denoms are all not overlapping": { - c1: coins, - c2: coinsAllNewDenom, - gte: false, - }, - "denom not all overlapping, one overlapping denom is gte": { - c1: coins, - c2: coinsOldNewDenom, - gte: true, - }, - "denom not all overlapping, the only one overlapping denom is smaller": { - c1: coins, - c2: coinsOldLowNewDenom, - gte: false, - }, - } - - for name, test := range tests { - s.Run(name, func() { - gte := ante.IsAnyGTEIncludingZero(test.c2, test.c1) - s.Require().Equal(test.gte, gte) - }) - } -} diff --git a/x/globalfee/ante/fee.go b/x/globalfee/ante/fee.go deleted file mode 100644 index e39c16c0..00000000 --- a/x/globalfee/ante/fee.go +++ /dev/null @@ -1,158 +0,0 @@ -package ante - -import ( - "errors" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - "github.com/noble-assets/noble/v7/x/globalfee/types" - - "github.com/noble-assets/noble/v7/x/globalfee" -) - -// FeeWithBypassDecorator will check if the transaction's fee is at least as large -// as the local validator's minimum gasFee (defined in validator config) and global fee, and the fee denom should be in the global fees' denoms. -// -// If fee is too low, decorator returns error and tx is rejected from mempool. -// Note this only applies when ctx.CheckTx = true. If fee is high enough or not -// CheckTx, then call next AnteHandler. -// -// CONTRACT: Tx must implement FeeTx to use FeeDecorator -// If the tx msg type is one of the bypass msg types, the tx is valid even if the min fee is lower than normally required. -// If the bypass tx still carries fees, the fee denom should be the same as global fee required. - -var _ sdk.AnteDecorator = FeeDecorator{} - -type FeeDecorator struct { - GlobalMinFee globalfee.ParamSource - StakingSubspace paramtypes.Subspace - MaxTotalBypassMinFeeMsgGasUsage uint64 -} - -func NewFeeDecorator(globalfeeSubspace, stakingSubspace paramtypes.Subspace, maxTotalBypassMinFeeMsgGasUsage uint64) FeeDecorator { - if !globalfeeSubspace.HasKeyTable() { - panic("global fee paramspace was not set up via module") - } - - if !stakingSubspace.HasKeyTable() { - panic("staking paramspace was not set up via module") - } - - return FeeDecorator{ - GlobalMinFee: globalfeeSubspace, - StakingSubspace: stakingSubspace, - MaxTotalBypassMinFeeMsgGasUsage: maxTotalBypassMinFeeMsgGasUsage, - } -} - -func (mfd FeeDecorator) AnteHandle(ctx sdk.Context, tx sdk.Tx, simulate bool, next sdk.AnteHandler) (newCtx sdk.Context, err error) { - // please note: after parsing feeflag, the zero fees are removed already - feeTx, ok := tx.(sdk.FeeTx) - if !ok { - return ctx, sdkerrors.Wrap(sdkerrors.ErrTxDecode, "Tx must be a FeeTx") - } - feeCoins := feeTx.GetFee().Sort() - gas := feeTx.GetGas() - msgs := feeTx.GetMsgs() - - // Accept zero fee transactions only if both of the following statements are true: - // - the tx contains only message types that can bypass the minimum fee, - // see BypassMinFeeMsgTypes; - // - the total gas limit per message does not exceed MaxTotalBypassMinFeeMsgGasUsage, - // i.e., totalGas <= MaxTotalBypassMinFeeMsgGasUsage - // Otherwise, minimum fees and global fees are checked to prevent spam. - doesNotExceedMaxGasUsage := gas <= mfd.MaxTotalBypassMinFeeMsgGasUsage - allowedToBypassMinFee := mfd.containsOnlyBypassMinFeeMsgs(ctx, msgs) && doesNotExceedMaxGasUsage - - var allFees sdk.Coins - requiredGlobalFees, err := mfd.getGlobalFee(ctx, feeTx) - if err != nil { - panic(err) - } - requiredFees := getMinGasPrice(ctx, feeTx) - - // Only check for minimum fees and global fee if the execution mode is CheckTx - if !ctx.IsCheckTx() || simulate { - return next(ctx, tx, simulate) - } - - if !allowedToBypassMinFee { - // Either the transaction contains at least on message of a type - // that cannot bypass the minimum fee or the total gas limit exceeds - // the imposed threshold. As a result, check that the fees are in - // expected denominations and the amounts are greater or equal than - // the expected amounts. - - allFees = CombinedFeeRequirement(requiredGlobalFees, requiredFees) - - // Check that the fees are in expected denominations. Note that a zero fee - // is accepted if the global fee has an entry with a zero amount, e.g., 0uatoms. - if !DenomsSubsetOfIncludingZero(feeCoins, allFees) { - return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "fee is not a subset of required fees; got %s, required: %s", feeCoins, allFees) - } - // Check that the amounts of the fees are greater or equal than - // the expected amounts, i.e., at least one feeCoin amount must - // be greater or equal to one of the combined required fees. - if !IsAnyGTEIncludingZero(feeCoins, allFees) { - return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "insufficient fees; got: %s required: %s", feeCoins, allFees) - } - } else { - // Transactions with zero fees are accepted - if len(feeCoins) == 0 { - return next(ctx, tx, simulate) - } - // If the transaction fee is non-zero, then check that the fees are in - // expected denominations. - if !DenomsSubsetOfIncludingZero(feeCoins, requiredGlobalFees) { - return ctx, sdkerrors.Wrapf(sdkerrors.ErrInsufficientFee, "fees denom is wrong; got: %s required: %s", feeCoins, requiredGlobalFees) - } - } - - return next(ctx, tx, simulate) -} - -// ParamStoreKeyMinGasPrices type require coins sorted. getGlobalFee will also return sorted coins (might return 0denom if globalMinGasPrice is 0) -func (mfd FeeDecorator) getGlobalFee(ctx sdk.Context, feeTx sdk.FeeTx) (sdk.Coins, error) { - var ( - globalMinGasPrices sdk.DecCoins - err error - ) - - if mfd.GlobalMinFee.Has(ctx, types.ParamStoreKeyMinGasPrices) { - mfd.GlobalMinFee.Get(ctx, types.ParamStoreKeyMinGasPrices, &globalMinGasPrices) - } - // global fee is empty set, set global fee to 0uatom - if len(globalMinGasPrices) == 0 { - globalMinGasPrices, err = mfd.DefaultZeroGlobalFee(ctx) - } - requiredGlobalFees := make(sdk.Coins, len(globalMinGasPrices)) - // Determine the required fees by multiplying each required minimum gas - // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). - glDec := sdk.NewDec(int64(feeTx.GetGas())) - for i, gp := range globalMinGasPrices { - fee := gp.Amount.Mul(glDec) - requiredGlobalFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) - } - - return requiredGlobalFees.Sort(), err -} - -func (mfd FeeDecorator) DefaultZeroGlobalFee(ctx sdk.Context) ([]sdk.DecCoin, error) { - bondDenom := mfd.getBondDenom(ctx) - if bondDenom == "" { - return nil, errors.New("empty staking bond denomination") - } - - return []sdk.DecCoin{sdk.NewDecCoinFromDec(bondDenom, sdk.NewDec(0))}, nil -} - -func (mfd FeeDecorator) getBondDenom(ctx sdk.Context) string { - var bondDenom string - if mfd.StakingSubspace.Has(ctx, stakingtypes.KeyBondDenom) { - mfd.StakingSubspace.Get(ctx, stakingtypes.KeyBondDenom, &bondDenom) - } - - return bondDenom -} diff --git a/x/globalfee/ante/fee_utils.go b/x/globalfee/ante/fee_utils.go deleted file mode 100644 index 752d227f..00000000 --- a/x/globalfee/ante/fee_utils.go +++ /dev/null @@ -1,196 +0,0 @@ -package ante - -import ( - "math" - - sdk "github.com/cosmos/cosmos-sdk/types" - globalfeetypes "github.com/noble-assets/noble/v7/x/globalfee/types" - tmstrings "github.com/tendermint/tendermint/libs/strings" -) - -// getMinGasPrice will also return sorted coins -func getMinGasPrice(ctx sdk.Context, feeTx sdk.FeeTx) sdk.Coins { - minGasPrices := ctx.MinGasPrices() - gas := feeTx.GetGas() - // special case: if minGasPrices=[], requiredFees=[] - requiredFees := make(sdk.Coins, len(minGasPrices)) - // if not all coins are zero, check fee with min_gas_price - if !minGasPrices.IsZero() { - // Determine the required fees by multiplying each required minimum gas - // price by the gas limit, where fee = ceil(minGasPrice * gasLimit). - glDec := sdk.NewDec(int64(gas)) - for i, gp := range minGasPrices { - fee := gp.Amount.Mul(glDec) - requiredFees[i] = sdk.NewCoin(gp.Denom, fee.Ceil().RoundInt()) - } - } - - return requiredFees.Sort() -} - -func (mfd FeeDecorator) containsOnlyBypassMinFeeMsgs(ctx sdk.Context, msgs []sdk.Msg) bool { - var bypassMinFeeMsgTypes []string - if mfd.GlobalMinFee.Has(ctx, globalfeetypes.ParamStoreKeyBypassMinFeeMsgTypes) { - mfd.GlobalMinFee.Get(ctx, globalfeetypes.ParamStoreKeyBypassMinFeeMsgTypes, &bypassMinFeeMsgTypes) - } else { - bypassMinFeeMsgTypes = globalfeetypes.DefaultParams().BypassMinFeeMsgTypes - } - for _, msg := range msgs { - if tmstrings.StringInSlice(sdk.MsgTypeURL(msg), bypassMinFeeMsgTypes) { - continue - } - return false - } - - return true -} - -// DenomsSubsetOfIncludingZero and IsAnyGTEIncludingZero are similar to DenomsSubsetOf and IsAnyGTE in sdk. Since we allow zero coins in global fee(zero coins means the chain does not want to set a global fee but still want to define the fee's denom) -// -// overwrite DenomsSubsetOfIncludingZero from sdk, to allow zero amt coins in superset. e.g. 1stake is DenomsSubsetOfIncludingZero 0stake. [] is the DenomsSubsetOfIncludingZero of [0stake] but not [1stake]. -// DenomsSubsetOfIncludingZero returns true if coins's denoms is subset of coinsB's denoms. -// if coins is empty set, empty set is any sets' subset -func DenomsSubsetOfIncludingZero(coins, coinsB sdk.Coins) bool { - // more denoms in B than in receiver - if len(coins) > len(coinsB) { - return false - } - // coins=[], coinsB=[0stake] - // let all len(coins) == 0 pass and reject later at IsAnyGTEIncludingZero - if len(coins) == 0 && ContainZeroCoins(coinsB) { - return true - } - // coins=1stake, coinsB=[0stake,1uatom] - for _, coin := range coins { - err := sdk.ValidateDenom(coin.Denom) - if err != nil { - panic(err) - } - if ok, _ := Find(coinsB, coin.Denom); !ok { - return false - } - } - - return true -} - -// overwrite the IsAnyGTEIncludingZero from sdk to allow zero coins in coins and coinsB. -// IsAnyGTEIncludingZero returns true if coins contain at least one denom that is present at a greater or equal amount in coinsB; it returns false otherwise. -// if CoinsB is emptyset, no coins sets are IsAnyGTEIncludingZero coinsB unless coins is also empty set. -// NOTE: IsAnyGTEIncludingZero operates under the invariant that both coin sets are sorted by denoms. -// contract !!!! coins must be DenomsSubsetOfIncludingZero of coinsB -func IsAnyGTEIncludingZero(coins, coinsB sdk.Coins) bool { - // no set is empty set's subset except empty set - // this is different from sdk, sdk return false for coinsB empty - if len(coinsB) == 0 && len(coins) == 0 { - return true - } - // nothing is gte empty coins - if len(coinsB) == 0 && len(coins) != 0 { - return false - } - // if feecoins empty (len(coins)==0 && len(coinsB) != 0 ), and globalfee has one denom of amt zero, return true - if len(coins) == 0 { - return ContainZeroCoins(coinsB) - } - - // len(coinsB) != 0 && len(coins) != 0 - // special case: coins=1stake, coinsB=[2stake,0uatom], fail - for _, coin := range coins { - // not find coin in CoinsB - if ok, _ := Find(coinsB, coin.Denom); ok { - // find coin in coinsB, and if the amt == 0, mean either coin=0denom or coinsB=0denom...both true - amt := coinsB.AmountOf(coin.Denom) - if coin.Amount.GTE(amt) { - return true - } - } - } - - return false -} - -// return true if coinsB is empty or contains zero coins, -// CoinsB must be validate coins !!! -func ContainZeroCoins(coinsB sdk.Coins) bool { - if len(coinsB) == 0 { - return true - } - for _, coin := range coinsB { - if coin.IsZero() { - return true - } - } - - return false -} - -// CombinedFeeRequirement will combine the global fee and min_gas_price. Both globalFees and minGasPrices must be valid, but CombinedFeeRequirement does not validate them, so it may return 0denom. -func CombinedFeeRequirement(globalFees, minGasPrices sdk.Coins) sdk.Coins { - // empty min_gas_price - if len(minGasPrices) == 0 { - return globalFees - } - // empty global fee is not possible if we set default global fee - if len(globalFees) == 0 && len(minGasPrices) != 0 { - return globalFees - } - - // if min_gas_price denom is in globalfee, and the amount is higher than globalfee, add min_gas_price to allFees - var allFees sdk.Coins - for _, fee := range globalFees { - // min_gas_price denom in global fee - ok, c := Find(minGasPrices, fee.Denom) - if ok && c.Amount.GT(fee.Amount) { - allFees = append(allFees, c) - } else { - allFees = append(allFees, fee) - } - } - - return allFees.Sort() -} - -// getTxPriority returns a naive tx priority based on the amount of the smallest denomination of the fee -// provided in a transaction. -func GetTxPriority(fee sdk.Coins) int64 { - var priority int64 - for _, c := range fee { - p := int64(math.MaxInt64) - if c.Amount.IsInt64() { - p = c.Amount.Int64() - } - if priority == 0 || p < priority { - priority = p - } - } - - return priority -} - -// Find replaces the functionality of Coins.Find from SDK v0.46.x -func Find(coins sdk.Coins, denom string) (bool, sdk.Coin) { - switch len(coins) { - case 0: - return false, sdk.Coin{} - - case 1: - coin := coins[0] - if coin.Denom == denom { - return true, coin - } - return false, sdk.Coin{} - - default: - midIdx := len(coins) / 2 // 2:1, 3:1, 4:2 - coin := coins[midIdx] - switch { - case denom < coin.Denom: - return Find(coins[:midIdx], denom) - case denom == coin.Denom: - return true, coin - default: - return Find(coins[midIdx+1:], denom) - } - } -} diff --git a/x/globalfee/client/cli/query.go b/x/globalfee/client/cli/query.go deleted file mode 100644 index d442c5fc..00000000 --- a/x/globalfee/client/cli/query.go +++ /dev/null @@ -1,48 +0,0 @@ -package cli - -import ( - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" - - "github.com/noble-assets/noble/v7/x/globalfee/types" -) - -func GetQueryCmd() *cobra.Command { - queryCmd := &cobra.Command{ - Use: types.ModuleName, - Short: "Querying commands for the global fee module", - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - queryCmd.AddCommand( - GetCmdShowMinimumGasPrices(), - ) - return queryCmd -} - -func GetCmdShowMinimumGasPrices() *cobra.Command { - cmd := &cobra.Command{ - Use: "parameters", - Short: "query module parameters", - Long: "Query the current global fee module parameters", - Aliases: []string{"params"}, - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientQueryContext(cmd) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - res, err := queryClient.Params(cmd.Context(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - return clientCtx.PrintProto(res) - }, - } - flags.AddQueryFlagsToCmd(cmd) - return cmd -} diff --git a/x/globalfee/genesis_test.go b/x/globalfee/genesis_test.go deleted file mode 100644 index bcdddadd..00000000 --- a/x/globalfee/genesis_test.go +++ /dev/null @@ -1,122 +0,0 @@ -package globalfee - -import ( - "testing" - "time" - - "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/cosmos/cosmos-sdk/store" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - paramskeeper "github.com/cosmos/cosmos-sdk/x/params/keeper" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - "github.com/tendermint/tendermint/libs/log" - tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - dbm "github.com/tendermint/tm-db" - - "github.com/noble-assets/noble/v7/x/globalfee/types" -) - -func TestValidateGenesis(t *testing.T) { - encCfg := simapp.MakeTestEncodingConfig() - specs := map[string]struct { - src string - expErr bool - }{ - "all good": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}]}}`, - }, - "empty minimum": { - src: `{"params":{"minimum_gas_prices":[]}}`, - }, - "minimum not set": { - src: `{"params":{}}`, - }, - "zero amount allowed": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"0"}]}}`, - expErr: false, - }, - "duplicate denoms not allowed": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"},{"denom":"ALX", "amount":"2"}]}}`, - expErr: true, - }, - "negative amounts not allowed": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"-1"}]}}`, - expErr: true, - }, - "denom must be sorted": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ZLX", "amount":"1"},{"denom":"ALX", "amount":"2"}]}}`, - expErr: true, - }, - "sorted denoms is allowed": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"},{"denom":"ZLX", "amount":"2"}]}}`, - expErr: false, - }, - } - for name, spec := range specs { - t.Run(name, func(t *testing.T) { - gotErr := AppModuleBasic{}.ValidateGenesis(encCfg.Marshaler, nil, []byte(spec.src)) - if spec.expErr { - require.Error(t, gotErr) - return - } - require.NoError(t, gotErr) - }) - } -} - -func TestInitExportGenesis(t *testing.T) { - specs := map[string]struct { - src string - exp types.GenesisState - }{ - "single fee": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}],"bypass_min_fee_msg_types":[]}}`, - exp: types.GenesisState{Params: types.Params{BypassMinFeeMsgTypes: []string{}, MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)))}}, - }, - "multiple fee options": { - src: `{"params":{"minimum_gas_prices":[{"denom":"ALX", "amount":"1"}, {"denom":"BLX", "amount":"0.001"}]}}`, - exp: types.GenesisState{Params: types.Params{BypassMinFeeMsgTypes: []string{}, MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.NewInt(1)), - sdk.NewDecCoinFromDec("BLX", sdk.NewDecWithPrec(1, 3)))}}, - }, - "no fee set": { - src: `{"params":{}}`, - exp: types.GenesisState{Params: types.Params{MinimumGasPrices: sdk.DecCoins{}, BypassMinFeeMsgTypes: []string{}}}, - }, - } - for name, spec := range specs { - t.Run(name, func(t *testing.T) { - ctx, encCfg, subspace := setupTestStore(t) - m := NewAppModule(subspace) - m.InitGenesis(ctx, encCfg.Marshaler, []byte(spec.src)) - gotJSON := m.ExportGenesis(ctx, encCfg.Marshaler) - var got types.GenesisState - require.NoError(t, encCfg.Marshaler.UnmarshalJSON(gotJSON, &got)) - assert.Equal(t, spec.exp, got, string(gotJSON)) - }) - } -} - -func setupTestStore(t *testing.T) (sdk.Context, simappparams.EncodingConfig, paramstypes.Subspace) { - db := dbm.NewMemDB() - ms := store.NewCommitMultiStore(db) - encCfg := simapp.MakeTestEncodingConfig() - keyParams := sdk.NewKVStoreKey(paramstypes.StoreKey) - tkeyParams := sdk.NewTransientStoreKey(paramstypes.TStoreKey) - ms.MountStoreWithDB(keyParams, storetypes.StoreTypeIAVL, db) - ms.MountStoreWithDB(tkeyParams, storetypes.StoreTypeTransient, db) - require.NoError(t, ms.LoadLatestVersion()) - - paramsKeeper := paramskeeper.NewKeeper(encCfg.Marshaler, encCfg.Amino, keyParams, tkeyParams) - - ctx := sdk.NewContext(ms, tmproto.Header{ - Height: 1234567, - Time: time.Date(2020, time.April, 22, 12, 0, 0, 0, time.UTC), - }, false, log.NewNopLogger()) - - subspace := paramsKeeper.Subspace(ModuleName).WithKeyTable(types.ParamKeyTable()) - return ctx, encCfg, subspace -} diff --git a/x/globalfee/module.go b/x/globalfee/module.go deleted file mode 100644 index cebe5a27..00000000 --- a/x/globalfee/module.go +++ /dev/null @@ -1,134 +0,0 @@ -package globalfee - -import ( - "context" - "encoding/json" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - codectypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/cosmos/cosmos-sdk/types/module" - paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/gorilla/mux" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/noble-assets/noble/v7/x/globalfee/client/cli" - "github.com/noble-assets/noble/v7/x/globalfee/types" -) - -var ( - _ module.AppModuleBasic = AppModuleBasic{} - _ module.AppModuleGenesis = AppModule{} - _ module.AppModule = AppModule{} -) - -// AppModuleBasic defines the basic application module used by the wasm module. -type AppModuleBasic struct{} - -func (a AppModuleBasic) Name() string { - return types.ModuleName -} - -func (a AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(&types.GenesisState{ - Params: types.DefaultParams(), - }) -} - -func (a AppModuleBasic) ValidateGenesis(marshaler codec.JSONCodec, config client.TxEncodingConfig, message json.RawMessage) error { - var data types.GenesisState - err := marshaler.UnmarshalJSON(message, &data) - if err != nil { - return err - } - if err := data.Params.ValidateBasic(); err != nil { - return sdkerrors.Wrap(err, "params") - } - return nil -} - -func (a AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { -} - -func (a AppModuleBasic) RegisterRESTRoutes(context client.Context, router *mux.Router) { -} - -func (a AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - _ = types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) -} - -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return nil -} - -func (a AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - -func (a AppModuleBasic) RegisterLegacyAminoCodec(amino *codec.LegacyAmino) { -} - -type AppModule struct { - AppModuleBasic - paramSpace paramstypes.Subspace -} - -// NewAppModule constructor -func NewAppModule(paramSpace paramstypes.Subspace) *AppModule { - if !paramSpace.HasKeyTable() { - paramSpace = paramSpace.WithKeyTable(types.ParamKeyTable()) - } - - return &AppModule{paramSpace: paramSpace} -} - -func (a AppModule) InitGenesis(ctx sdk.Context, marshaler codec.JSONCodec, message json.RawMessage) []abci.ValidatorUpdate { - var genesisState types.GenesisState - marshaler.MustUnmarshalJSON(message, &genesisState) - a.paramSpace.SetParamSet(ctx, &genesisState.Params) - return nil -} - -func (a AppModule) ExportGenesis(ctx sdk.Context, marshaler codec.JSONCodec) json.RawMessage { - var genState types.GenesisState - a.paramSpace.GetParamSet(ctx, &genState.Params) - return marshaler.MustMarshalJSON(&genState) -} - -func (a AppModule) RegisterInvariants(registry sdk.InvariantRegistry) { -} - -func (a AppModule) Route() sdk.Route { - return sdk.Route{} -} - -func (a AppModule) QuerierRoute() string { - return types.QuerierRoute -} - -func (a AppModule) LegacyQuerierHandler(amino *codec.LegacyAmino) sdk.Querier { - return nil -} - -func (a AppModule) RegisterServices(cfg module.Configurator) { - types.RegisterQueryServer(cfg.QueryServer(), NewGrpcQuerier(a.paramSpace)) -} - -func (a AppModule) BeginBlock(context sdk.Context, block abci.RequestBeginBlock) { -} - -func (a AppModule) EndBlock(context sdk.Context, block abci.RequestEndBlock) []abci.ValidatorUpdate { - return nil -} - -// ConsensusVersion is a sequence number for state-breaking change of the -// module. It should be incremented on each consensus-breaking change -// introduced by the module. To avoid wrong/empty versions, the initial version -// should be set to 1. -func (a AppModule) ConsensusVersion() uint64 { - return 1 -} diff --git a/x/globalfee/querier.go b/x/globalfee/querier.go deleted file mode 100644 index a3ea25e1..00000000 --- a/x/globalfee/querier.go +++ /dev/null @@ -1,46 +0,0 @@ -package globalfee - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/noble-assets/noble/v7/x/globalfee/types" -) - -var _ types.QueryServer = &GrpcQuerier{} - -// ParamSource is a read only subset of paramtypes.Subspace -type ParamSource interface { - Get(ctx sdk.Context, key []byte, ptr interface{}) - Has(ctx sdk.Context, key []byte) bool -} - -type GrpcQuerier struct { - paramSource ParamSource -} - -func NewGrpcQuerier(paramSource ParamSource) GrpcQuerier { - return GrpcQuerier{paramSource: paramSource} -} - -// Params returns the total set of global fee parameters. -func (g GrpcQuerier) Params(stdCtx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { - var ( - minGasPrices sdk.DecCoins - bypassMinFeeMsgTypes []string - ) - ctx := sdk.UnwrapSDKContext(stdCtx) - if g.paramSource.Has(ctx, types.ParamStoreKeyMinGasPrices) { - g.paramSource.Get(ctx, types.ParamStoreKeyMinGasPrices, &minGasPrices) - } - if g.paramSource.Has(ctx, types.ParamStoreKeyBypassMinFeeMsgTypes) { - g.paramSource.Get(ctx, types.ParamStoreKeyBypassMinFeeMsgTypes, &bypassMinFeeMsgTypes) - } - return &types.QueryParamsResponse{ - Params: types.Params{ - MinimumGasPrices: minGasPrices, - BypassMinFeeMsgTypes: bypassMinFeeMsgTypes, - }, - }, nil -} diff --git a/x/globalfee/querier_test.go b/x/globalfee/querier_test.go deleted file mode 100644 index f16b80b0..00000000 --- a/x/globalfee/querier_test.go +++ /dev/null @@ -1,57 +0,0 @@ -package globalfee - -// TODO: reenable tests -// import ( -// "testing" - -// sdk "github.com/cosmos/cosmos-sdk/types" -// paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -// "github.com/stretchr/testify/assert" -// "github.com/stretchr/testify/require" - -// "github.com/noble-assets/noble/v7/x/globalfee/types" -// ) - -// func TestQueryMinimumGasPrices(t *testing.T) { -// specs := map[string]struct { -// setupStore func(ctx sdk.Context, s paramtypes.Subspace) -// expMin sdk.DecCoins -// }{ -// "one coin": { -// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) { -// s.SetParamSet(ctx, &types.Params{ -// MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())), -// }) -// }, -// expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt())), -// }, -// "multiple coins": { -// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) { -// s.SetParamSet(ctx, &types.Params{ -// MinimumGasPrices: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt()), sdk.NewDecCoin("BLX", sdk.NewInt(2))), -// }) -// }, -// expMin: sdk.NewDecCoins(sdk.NewDecCoin("ALX", sdk.OneInt()), sdk.NewDecCoin("BLX", sdk.NewInt(2))), -// }, -// "no min gas price set": { -// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) { -// s.SetParamSet(ctx, &types.Params{}) -// }, -// }, -// "no param set": { -// setupStore: func(ctx sdk.Context, s paramtypes.Subspace) { -// }, -// }, -// } -// for name, spec := range specs { -// t.Run(name, func(t *testing.T) { -// ctx, _, subspace := setupTestStore(t) -// spec.setupStore(ctx, subspace) -// q := NewGrpcQuerier(subspace) -// gotResp, gotErr := q.MinimumGasPrices(sdk.WrapSDKContext(ctx), nil) -// require.NoError(t, gotErr) -// require.NotNil(t, gotResp) -// assert.Equal(t, spec.expMin, gotResp.MinimumGasPrices) -// }) -// } -// } diff --git a/x/globalfee/types/genesis.go b/x/globalfee/types/genesis.go deleted file mode 100644 index a87d8d98..00000000 --- a/x/globalfee/types/genesis.go +++ /dev/null @@ -1,40 +0,0 @@ -package types - -import ( - "encoding/json" - - "github.com/cosmos/cosmos-sdk/codec" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// NewGenesisState - Create a new genesis state -func NewGenesisState(params Params) *GenesisState { - return &GenesisState{ - Params: params, - } -} - -// DefaultGenesisState - Return a default genesis state -func DefaultGenesisState() *GenesisState { - return NewGenesisState(DefaultParams()) -} - -// GetGenesisStateFromAppState returns x/auth GenesisState given raw application -// genesis state. -func GetGenesisStateFromAppState(cdc codec.Codec, appState map[string]json.RawMessage) *GenesisState { - var genesisState GenesisState - - if appState[ModuleName] != nil { - cdc.MustUnmarshalJSON(appState[ModuleName], &genesisState) - } - - return &genesisState -} - -func ValidateGenesis(data GenesisState) error { - if err := data.Params.ValidateBasic(); err != nil { - return sdkerrors.Wrap(err, "globalfee params") - } - - return nil -} diff --git a/x/globalfee/types/genesis.pb.go b/x/globalfee/types/genesis.pb.go deleted file mode 100644 index fb4eac10..00000000 --- a/x/globalfee/types/genesis.pb.go +++ /dev/null @@ -1,578 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: globalfee/genesis.proto - -package types - -import ( - fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// GenesisState - initial state of module -type GenesisState struct { - // Params of this module - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"` -} - -func (m *GenesisState) Reset() { *m = GenesisState{} } -func (m *GenesisState) String() string { return proto.CompactTextString(m) } -func (*GenesisState) ProtoMessage() {} -func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_735b05141d90e180, []int{0} -} -func (m *GenesisState) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GenesisState) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenesisState.Merge(m, src) -} -func (m *GenesisState) XXX_Size() int { - return m.Size() -} -func (m *GenesisState) XXX_DiscardUnknown() { - xxx_messageInfo_GenesisState.DiscardUnknown(m) -} - -var xxx_messageInfo_GenesisState proto.InternalMessageInfo - -func (m *GenesisState) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -// Params defines the set of module parameters. -type Params struct { - // Minimum stores the minimum gas price(s) for all TX on the chain. - // When multiple coins are defined then they are accepted alternatively. - // The list must be sorted by denoms asc. No duplicate denoms or zero amount - // values allowed. For more information see - // https://docs.cosmos.network/main/modules/auth#concepts - MinimumGasPrices github_com_cosmos_cosmos_sdk_types.DecCoins `protobuf:"bytes,1,rep,name=minimum_gas_prices,json=minimumGasPrices,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.DecCoins" json:"minimum_gas_prices,omitempty" yaml:"minimum_gas_prices"` - BypassMinFeeMsgTypes []string `protobuf:"bytes,2,rep,name=bypass_min_fee_msg_types,json=bypassMinFeeMsgTypes,proto3" json:"bypass_min_fee_msg_types,omitempty" yaml:"bypass_min_fee_msg_types"` -} - -func (m *Params) Reset() { *m = Params{} } -func (m *Params) String() string { return proto.CompactTextString(m) } -func (*Params) ProtoMessage() {} -func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_735b05141d90e180, []int{1} -} -func (m *Params) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Params.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Params) XXX_Merge(src proto.Message) { - xxx_messageInfo_Params.Merge(m, src) -} -func (m *Params) XXX_Size() int { - return m.Size() -} -func (m *Params) XXX_DiscardUnknown() { - xxx_messageInfo_Params.DiscardUnknown(m) -} - -var xxx_messageInfo_Params proto.InternalMessageInfo - -func (m *Params) GetMinimumGasPrices() github_com_cosmos_cosmos_sdk_types.DecCoins { - if m != nil { - return m.MinimumGasPrices - } - return nil -} - -func (m *Params) GetBypassMinFeeMsgTypes() []string { - if m != nil { - return m.BypassMinFeeMsgTypes - } - return nil -} - -func init() { - proto.RegisterType((*GenesisState)(nil), "noble.globalfee.GenesisState") - proto.RegisterType((*Params)(nil), "noble.globalfee.Params") -} - -func init() { proto.RegisterFile("globalfee/genesis.proto", fileDescriptor_735b05141d90e180) } - -var fileDescriptor_735b05141d90e180 = []byte{ - // 396 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x52, 0x4f, 0x8b, 0xd3, 0x40, - 0x14, 0x4f, 0x76, 0xa1, 0x60, 0x56, 0x70, 0x09, 0x0b, 0x1b, 0x97, 0x25, 0x29, 0x39, 0x15, 0xb4, - 0x33, 0xb4, 0x1e, 0x04, 0x8f, 0x51, 0x2c, 0x05, 0x0b, 0xa5, 0x7a, 0xd1, 0x4b, 0x98, 0xc4, 0xd7, - 0x71, 0x30, 0x93, 0x09, 0x7d, 0xd3, 0x62, 0x8e, 0x7e, 0x03, 0x3f, 0x87, 0x9f, 0xc1, 0x0f, 0x50, - 0xf0, 0xd2, 0xa3, 0xa7, 0x28, 0xed, 0xad, 0x47, 0x3f, 0x81, 0x24, 0x13, 0xad, 0x5a, 0x7a, 0xca, - 0xcb, 0x7b, 0xbf, 0x7f, 0x33, 0x6f, 0x9c, 0x6b, 0x9e, 0xa9, 0x84, 0x65, 0x73, 0x00, 0xca, 0x21, - 0x07, 0x14, 0x48, 0x8a, 0x85, 0xd2, 0xca, 0xbd, 0x97, 0xab, 0x24, 0x03, 0xf2, 0x67, 0x7c, 0xe3, - 0xa7, 0x0a, 0xa5, 0x42, 0x9a, 0x30, 0x04, 0xba, 0x1a, 0x24, 0xa0, 0xd9, 0x80, 0xa6, 0x4a, 0xe4, - 0x86, 0x70, 0x73, 0xc5, 0x15, 0x57, 0x4d, 0x49, 0xeb, 0xca, 0x74, 0xc3, 0xd7, 0xce, 0xdd, 0x91, - 0xd1, 0x7d, 0xa9, 0x99, 0x06, 0x77, 0xec, 0x74, 0x0a, 0xb6, 0x60, 0x12, 0x3d, 0xbb, 0x6b, 0xf7, - 0x2e, 0x86, 0xd7, 0xe4, 0x3f, 0x1f, 0x32, 0x6d, 0xc6, 0x91, 0xb7, 0xae, 0x02, 0x6b, 0x5f, 0x05, - 0x97, 0x06, 0xfe, 0x50, 0x49, 0xa1, 0x41, 0x16, 0xba, 0x9c, 0xb5, 0x02, 0xe1, 0xd7, 0x33, 0xa7, - 0x63, 0xc0, 0xee, 0x17, 0xdb, 0x71, 0xa5, 0xc8, 0x85, 0x5c, 0xca, 0x98, 0x33, 0x8c, 0x8b, 0x85, - 0x48, 0xa1, 0xb6, 0x38, 0xef, 0x5d, 0x0c, 0x6f, 0x89, 0x49, 0x4e, 0xea, 0xe4, 0xa4, 0x4d, 0x4e, - 0x9e, 0x41, 0xfa, 0x54, 0x89, 0x3c, 0x2a, 0x5a, 0x9f, 0xdb, 0x63, 0xfe, 0xc1, 0xf3, 0x67, 0x15, - 0xdc, 0x2f, 0x99, 0xcc, 0x9e, 0x84, 0xc7, 0xa8, 0xf0, 0xf3, 0xf7, 0xe0, 0x01, 0x17, 0xfa, 0xdd, - 0x32, 0x21, 0xa9, 0x92, 0xb4, 0xbd, 0x26, 0xf3, 0xe9, 0xe3, 0xdb, 0xf7, 0x54, 0x97, 0x05, 0xe0, - 0x6f, 0x43, 0x9c, 0x5d, 0xb6, 0x1a, 0x23, 0x86, 0xd3, 0x46, 0xc1, 0xfd, 0x68, 0x3b, 0x5e, 0x52, - 0x16, 0x0c, 0x31, 0x96, 0x22, 0x8f, 0xe7, 0x00, 0xb1, 0x44, 0x1e, 0x37, 0x3c, 0xef, 0xac, 0x7b, - 0xde, 0xbb, 0x13, 0x8d, 0xf7, 0x55, 0x10, 0x9e, 0xc2, 0xfc, 0x13, 0x34, 0x30, 0x41, 0x4f, 0x61, - 0xc3, 0xd9, 0x95, 0x19, 0x4d, 0x44, 0xfe, 0x1c, 0x60, 0x82, 0xfc, 0x55, 0xdd, 0x8e, 0x5e, 0xac, - 0xb7, 0xbe, 0xbd, 0xd9, 0xfa, 0xf6, 0x8f, 0xad, 0x6f, 0x7f, 0xda, 0xf9, 0xd6, 0x66, 0xe7, 0x5b, - 0xdf, 0x76, 0xbe, 0xf5, 0x66, 0xf8, 0xd7, 0xe1, 0x9a, 0x65, 0xf5, 0x19, 0x22, 0x68, 0x34, 0x3f, - 0x74, 0xf5, 0x98, 0x7e, 0xa0, 0x87, 0x57, 0xd4, 0x98, 0x24, 0x9d, 0x66, 0xfb, 0x8f, 0x7e, 0x05, - 0x00, 0x00, 0xff, 0xff, 0x2b, 0xe9, 0x4c, 0x36, 0x5f, 0x02, 0x00, 0x00, -} - -func (m *GenesisState) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *Params) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Params) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.BypassMinFeeMsgTypes) > 0 { - for iNdEx := len(m.BypassMinFeeMsgTypes) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.BypassMinFeeMsgTypes[iNdEx]) - copy(dAtA[i:], m.BypassMinFeeMsgTypes[iNdEx]) - i = encodeVarintGenesis(dAtA, i, uint64(len(m.BypassMinFeeMsgTypes[iNdEx]))) - i-- - dAtA[i] = 0x12 - } - } - if len(m.MinimumGasPrices) > 0 { - for iNdEx := len(m.MinimumGasPrices) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.MinimumGasPrices[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { - offset -= sovGenesis(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *GenesisState) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovGenesis(uint64(l)) - return n -} - -func (m *Params) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.MinimumGasPrices) > 0 { - for _, e := range m.MinimumGasPrices { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if len(m.BypassMinFeeMsgTypes) > 0 { - for _, s := range m.BypassMinFeeMsgTypes { - l = len(s) - n += 1 + l + sovGenesis(uint64(l)) - } - } - return n -} - -func sovGenesis(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenesis(x uint64) (n int) { - return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *GenesisState) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *Params) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Params: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinimumGasPrices", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.MinimumGasPrices = append(m.MinimumGasPrices, types.DecCoin{}) - if err := m.MinimumGasPrices[len(m.MinimumGasPrices)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BypassMinFeeMsgTypes", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BypassMinFeeMsgTypes = append(m.BypassMinFeeMsgTypes, string(dAtA[iNdEx:postIndex])) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGenesis(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGenesis - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGenesis - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGenesis - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/globalfee/types/keys.go b/x/globalfee/types/keys.go deleted file mode 100644 index 71b43267..00000000 --- a/x/globalfee/types/keys.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -const ( - // ModuleName is the name of the this module - ModuleName = "globalfee" - - QuerierRoute = ModuleName -) diff --git a/x/globalfee/types/params.go b/x/globalfee/types/params.go deleted file mode 100644 index 1337a146..00000000 --- a/x/globalfee/types/params.go +++ /dev/null @@ -1,155 +0,0 @@ -package types - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" -) - -// ParamStoreKeyMinGasPrices store key -var ( - ParamStoreKeyMinGasPrices = []byte("MinimumGasPricesParam") - ParamStoreKeyBypassMinFeeMsgTypes = []byte("BypassMinFeeMsgTypesParam") -) - -// DefaultParams returns default parameters -func DefaultParams() Params { - return Params{ - MinimumGasPrices: sdk.DecCoins{}, - BypassMinFeeMsgTypes: []string{ - "/ibc.core.client.v1.MsgUpdateClient", - "/ibc.core.channel.v1.MsgRecvPacket", - "/ibc.core.channel.v1.MsgAcknowledgement", - "/ibc.applications.transfer.v1.MsgTransfer", - "/ibc.core.channel.v1.MsgTimeout", - "/ibc.core.channel.v1.MsgTimeoutOnClose", - "/cosmos.params.v1beta1.MsgUpdateParams", - "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", - "/cosmos.upgrade.v1beta1.MsgCancelUpgrade", - "/noble.fiattokenfactory.MsgUpdateMasterMinter", - "/noble.fiattokenfactory.MsgUpdatePauser", - "/noble.fiattokenfactory.MsgUpdateBlacklister", - "/noble.fiattokenfactory.MsgUpdateOwner", - "/noble.fiattokenfactory.MsgAcceptOwner", - "/noble.fiattokenfactory.MsgConfigureMinter", - "/noble.fiattokenfactory.MsgRemoveMinter", - "/noble.fiattokenfactory.MsgMint", - "/noble.fiattokenfactory.MsgBurn", - "/noble.fiattokenfactory.MsgBlacklist", - "/noble.fiattokenfactory.MsgUnblacklist", - "/noble.fiattokenfactory.MsgPause", - "/noble.fiattokenfactory.MsgUnpause", - "/noble.fiattokenfactory.MsgConfigureMinterController", - "/noble.fiattokenfactory.MsgRemoveMinterController", - "/noble.tokenfactory.MsgUpdatePauser", - "/noble.tokenfactory.MsgUpdateBlacklister", - "/noble.tokenfactory.MsgUpdateOwner", - "/noble.tokenfactory.MsgAcceptOwner", - "/noble.tokenfactory.MsgConfigureMinter", - "/noble.tokenfactory.MsgRemoveMinter", - "/noble.tokenfactory.MsgMint", - "/noble.tokenfactory.MsgBurn", - "/noble.tokenfactory.MsgBlacklist", - "/noble.tokenfactory.MsgUnblacklist", - "/noble.tokenfactory.MsgPause", - "/noble.tokenfactory.MsgUnpause", - "/noble.tokenfactory.MsgConfigureMinterController", - "/noble.tokenfactory.MsgRemoveMinterController", - }, - } -} - -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// ValidateBasic performs basic validation. -func (p Params) ValidateBasic() error { - return validateMinimumGasPrices(p.MinimumGasPrices) -} - -// ParamSetPairs returns the parameter set pairs. -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair( - ParamStoreKeyMinGasPrices, &p.MinimumGasPrices, validateMinimumGasPrices, - ), - paramtypes.NewParamSetPair( - ParamStoreKeyBypassMinFeeMsgTypes, &p.BypassMinFeeMsgTypes, validateBypassMinFeeMsgTypes, - ), - } -} - -// this requires the fee non-negative -func validateMinimumGasPrices(i interface{}) error { - v, ok := i.(sdk.DecCoins) - if !ok { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "type: %T, expected sdk.DecCoins", i) - } - - dec := DecCoins(v) - return dec.Validate() -} - -// requires string array -func validateBypassMinFeeMsgTypes(i interface{}) error { - if _, ok := i.([]string); !ok { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidType, "type: %T, expected []string", i) - } - - // todo: validate msg types are valid proto msg types? - return nil -} - -// Validate checks that the DecCoins are sorted, have nonnegtive amount, with a valid and unique -// denomination (i.e no duplicates). Otherwise, it returns an error. -type DecCoins sdk.DecCoins - -func (coins DecCoins) Validate() error { - switch len(coins) { - case 0: - return nil - - case 1: - // match the denom reg expr - if err := sdk.ValidateDenom(coins[0].Denom); err != nil { - return err - } - if coins[0].IsNegative() { - return fmt.Errorf("coin %s amount is negtive", coins[0]) - } - return nil - default: - // check single coin case - if err := (DecCoins{coins[0]}).Validate(); err != nil { - return err - } - - lowDenom := coins[0].Denom - seenDenoms := make(map[string]bool) - seenDenoms[lowDenom] = true - - for _, coin := range coins[1:] { - if seenDenoms[coin.Denom] { - return fmt.Errorf("duplicate denomination %s", coin.Denom) - } - if err := sdk.ValidateDenom(coin.Denom); err != nil { - return err - } - if coin.Denom <= lowDenom { - return fmt.Errorf("denomination %s is not sorted", coin.Denom) - } - if coin.IsNegative() { - return fmt.Errorf("coin %s amount is negtive", coin.Denom) - } - - // we compare each coin against the last denom - lowDenom = coin.Denom - seenDenoms[coin.Denom] = true - } - - return nil - } -} diff --git a/x/globalfee/types/params_test.go b/x/globalfee/types/params_test.go deleted file mode 100644 index be913105..00000000 --- a/x/globalfee/types/params_test.go +++ /dev/null @@ -1,101 +0,0 @@ -package types - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" -) - -func TestDefaultParams(t *testing.T) { - p := DefaultParams() - require.EqualValues(t, p.MinimumGasPrices, sdk.DecCoins{}) - require.EqualValues(t, p.BypassMinFeeMsgTypes, []string{ - "/ibc.core.client.v1.MsgUpdateClient", - "/ibc.core.channel.v1.MsgRecvPacket", - "/ibc.core.channel.v1.MsgAcknowledgement", - "/ibc.applications.transfer.v1.MsgTransfer", - "/ibc.core.channel.v1.MsgTimeout", - "/ibc.core.channel.v1.MsgTimeoutOnClose", - "/cosmos.params.v1beta1.MsgUpdateParams", - "/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade", - "/cosmos.upgrade.v1beta1.MsgCancelUpgrade", - "/noble.fiattokenfactory.MsgUpdateMasterMinter", - "/noble.fiattokenfactory.MsgUpdatePauser", - "/noble.fiattokenfactory.MsgUpdateBlacklister", - "/noble.fiattokenfactory.MsgUpdateOwner", - "/noble.fiattokenfactory.MsgAcceptOwner", - "/noble.fiattokenfactory.MsgConfigureMinter", - "/noble.fiattokenfactory.MsgRemoveMinter", - "/noble.fiattokenfactory.MsgMint", - "/noble.fiattokenfactory.MsgBurn", - "/noble.fiattokenfactory.MsgBlacklist", - "/noble.fiattokenfactory.MsgUnblacklist", - "/noble.fiattokenfactory.MsgPause", - "/noble.fiattokenfactory.MsgUnpause", - "/noble.fiattokenfactory.MsgConfigureMinterController", - "/noble.fiattokenfactory.MsgRemoveMinterController", - "/noble.tokenfactory.MsgUpdatePauser", - "/noble.tokenfactory.MsgUpdateBlacklister", - "/noble.tokenfactory.MsgUpdateOwner", - "/noble.tokenfactory.MsgAcceptOwner", - "/noble.tokenfactory.MsgConfigureMinter", - "/noble.tokenfactory.MsgRemoveMinter", - "/noble.tokenfactory.MsgMint", - "/noble.tokenfactory.MsgBurn", - "/noble.tokenfactory.MsgBlacklist", - "/noble.tokenfactory.MsgUnblacklist", - "/noble.tokenfactory.MsgPause", - "/noble.tokenfactory.MsgUnpause", - "/noble.tokenfactory.MsgConfigureMinterController", - "/noble.tokenfactory.MsgRemoveMinterController", - }) -} - -func Test_validateParams(t *testing.T) { - tests := map[string]struct { - coins interface{} // not sdk.DeCoins, but Decoins defined in glboalfee - expectErr bool - }{ - "DefaultParams, pass": { - DefaultParams().MinimumGasPrices, - false, - }, - "DecCoins conversion fails, fail": { - sdk.Coins{sdk.NewCoin("photon", sdk.OneInt())}, - true, - }, - "coins amounts are zero, pass": { - sdk.DecCoins{ - sdk.NewDecCoin("atom", sdk.ZeroInt()), - sdk.NewDecCoin("photon", sdk.ZeroInt()), - }, - false, - }, - "duplicate coins denoms, fail": { - sdk.DecCoins{ - sdk.NewDecCoin("photon", sdk.OneInt()), - sdk.NewDecCoin("photon", sdk.OneInt()), - }, - true, - }, - "coins are not sorted by denom alphabetically, fail": { - sdk.DecCoins{ - sdk.NewDecCoin("photon", sdk.OneInt()), - sdk.NewDecCoin("atom", sdk.OneInt()), - }, - true, - }, - } - - for name, test := range tests { - t.Run(name, func(t *testing.T) { - err := validateMinimumGasPrices(test.coins) - if test.expectErr { - require.Error(t, err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/globalfee/types/query.pb.go b/x/globalfee/types/query.pb.go deleted file mode 100644 index 8447fa42..00000000 --- a/x/globalfee/types/query.pb.go +++ /dev/null @@ -1,533 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: globalfee/query.proto - -package types - -import ( - context "context" - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// QueryParamsRequest is the request type for the Query/Params RPC method. -type QueryParamsRequest struct { -} - -func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } -func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryParamsRequest) ProtoMessage() {} -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_387dd811257f4eeb, []int{0} -} -func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsRequest.Merge(m, src) -} -func (m *QueryParamsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo - -// QueryParamsResponse is the response type for the Query/Params RPC method. -type QueryParamsResponse struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } -func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryParamsResponse) ProtoMessage() {} -func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_387dd811257f4eeb, []int{1} -} -func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsResponse.Merge(m, src) -} -func (m *QueryParamsResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo - -func (m *QueryParamsResponse) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "noble.globalfee.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "noble.globalfee.QueryParamsResponse") -} - -func init() { proto.RegisterFile("globalfee/query.proto", fileDescriptor_387dd811257f4eeb) } - -var fileDescriptor_387dd811257f4eeb = []byte{ - // 289 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x90, 0xb1, 0x4b, 0xc3, 0x40, - 0x18, 0xc5, 0x73, 0xa2, 0x1d, 0xce, 0x41, 0x38, 0x2b, 0x95, 0x20, 0x57, 0x8d, 0x82, 0x2e, 0xe6, - 0x68, 0x44, 0xdc, 0x3b, 0x77, 0xd0, 0x8e, 0x6e, 0x17, 0xf9, 0x3c, 0x03, 0xe9, 0x7d, 0x69, 0xee, - 0x52, 0x2c, 0x38, 0x09, 0xee, 0x82, 0xff, 0x54, 0xc7, 0x82, 0x8b, 0x93, 0x48, 0xe2, 0x1f, 0x22, - 0xcd, 0x05, 0xab, 0x16, 0xdc, 0x3e, 0xde, 0xfd, 0xde, 0xbb, 0xc7, 0xa3, 0x3b, 0x2a, 0xc5, 0x58, - 0xa6, 0xb7, 0x00, 0x62, 0x5c, 0x40, 0x3e, 0x0d, 0xb3, 0x1c, 0x2d, 0xb2, 0x2d, 0x8d, 0x71, 0x0a, - 0xe1, 0xf7, 0xa3, 0xdf, 0x59, 0x72, 0x0a, 0x34, 0x98, 0xc4, 0x38, 0xd2, 0x6f, 0x2b, 0x54, 0x58, - 0x9f, 0x62, 0x71, 0x35, 0xea, 0x9e, 0x42, 0x54, 0x29, 0x08, 0x99, 0x25, 0x42, 0x6a, 0x8d, 0x56, - 0xda, 0x04, 0x75, 0xe3, 0x09, 0xda, 0x94, 0x5d, 0x2d, 0x3e, 0xbb, 0x94, 0xb9, 0x1c, 0x99, 0x21, - 0x8c, 0x0b, 0x30, 0x36, 0x18, 0xd0, 0xed, 0x5f, 0xaa, 0xc9, 0x50, 0x1b, 0x60, 0xe7, 0xb4, 0x95, - 0xd5, 0xca, 0x2e, 0xd9, 0x27, 0x27, 0x9b, 0x51, 0x27, 0xfc, 0xd3, 0x2d, 0x74, 0x86, 0xfe, 0xfa, - 0xec, 0xbd, 0xeb, 0x0d, 0x1b, 0x38, 0x7a, 0x22, 0x74, 0xa3, 0x8e, 0x63, 0x0f, 0xb4, 0xe5, 0x08, - 0x76, 0xb8, 0x62, 0x5d, 0xad, 0xe1, 0x1f, 0xfd, 0x0f, 0xb9, 0x56, 0xc1, 0xf1, 0xe3, 0xeb, 0xe7, - 0xcb, 0xda, 0x01, 0xeb, 0x8a, 0x9a, 0x16, 0xcb, 0x79, 0x26, 0xbd, 0x18, 0xac, 0xec, 0x09, 0xd7, - 0xa3, 0x3f, 0x98, 0x95, 0x9c, 0xcc, 0x4b, 0x4e, 0x3e, 0x4a, 0x4e, 0x9e, 0x2b, 0xee, 0xcd, 0x2b, - 0xee, 0xbd, 0x55, 0xdc, 0xbb, 0x8e, 0x54, 0x62, 0xef, 0x8a, 0x38, 0xbc, 0xc1, 0x91, 0x0b, 0x39, - 0x95, 0xc6, 0x80, 0x35, 0x4d, 0xe2, 0xe4, 0x42, 0xdc, 0xff, 0x88, 0xb5, 0xd3, 0x0c, 0x4c, 0xdc, - 0xaa, 0x07, 0x3c, 0xfb, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x56, 0x71, 0xf9, 0xa6, 0xb7, 0x01, 0x00, - 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) -} - -type queryClient struct { - cc grpc1.ClientConn -} - -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} -} - -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/noble.globalfee.Query/Params", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// QueryServer is the server API for Query service. -type QueryServer interface { - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) -} - -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { -} - -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") -} - -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} - -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.globalfee.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "noble.globalfee.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "globalfee/query.proto", -} - -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipQuery(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthQuery - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupQuery - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthQuery - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/globalfee/types/query.pb.gw.go b/x/globalfee/types/query.pb.gw.go deleted file mode 100644 index 33d43037..00000000 --- a/x/globalfee/types/query.pb.gw.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: globalfee/query.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := server.Params(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". -// UnaryRPC :call QueryServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. -func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterQueryHandler(ctx, mux, conn) -} - -// RegisterQueryHandler registers the http handlers for service Query to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) -} - -// RegisterQueryHandlerClient registers the http handlers for service Query -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "QueryClient" to call the correct interceptors. -func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"noble", "globalfee", "v1beta1", "params"}, "", runtime.AssumeColonVerbOpt(true))) -) - -var ( - forward_Query_Params_0 = runtime.ForwardResponseMessage -) diff --git a/x/tariff/README.md b/x/tariff/README.md deleted file mode 100644 index 2e751971..00000000 --- a/x/tariff/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Tariff module - -Please see docs located [here](../../docs/modules/tariff.md). diff --git a/x/tariff/abci.go b/x/tariff/abci.go deleted file mode 100644 index 7bc393e8..00000000 --- a/x/tariff/abci.go +++ /dev/null @@ -1,12 +0,0 @@ -package tariff - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tariff/keeper" -) - -// BeginBlocker sets the proposer for determining distribution during endblock -// and distribute rewards for the previous block -func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { - k.AllocateTokens(ctx) -} diff --git a/x/tariff/client/cli/query.go b/x/tariff/client/cli/query.go deleted file mode 100644 index 7f5ad56f..00000000 --- a/x/tariff/client/cli/query.go +++ /dev/null @@ -1,49 +0,0 @@ -package cli - -import ( - "context" - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tariff/types" - "github.com/spf13/cobra" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdQueryParams()) - - return cmd -} - -func CmdQueryParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "shows the parameters of the module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - queryClient := types.NewQueryClient(clientCtx) - - res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tariff/genesis.go b/x/tariff/genesis.go deleted file mode 100644 index b1cca7d5..00000000 --- a/x/tariff/genesis.go +++ /dev/null @@ -1,21 +0,0 @@ -package tariff - -import ( - "github.com/noble-assets/noble/v7/x/tariff/keeper" - "github.com/noble-assets/noble/v7/x/tariff/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// InitGenesis initializes the module's state from a provided genesis state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - k.SetParams(ctx, genState.Params) -} - -// ExportGenesis returns the module's exported GenesisState -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) - - return genesis -} diff --git a/x/tariff/keeper/allocation.go b/x/tariff/keeper/allocation.go deleted file mode 100644 index 59f37844..00000000 --- a/x/tariff/keeper/allocation.go +++ /dev/null @@ -1,63 +0,0 @@ -package keeper - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k Keeper) AllocateTokens(ctx sdk.Context) { - feeCollector := k.authKeeper.GetModuleAccount(ctx, k.feeCollectorName) - feesCollectedInt := k.bankKeeper.GetAllBalances(ctx, feeCollector.GetAddress()) - foundAmountGreaterThanZero := false - for _, coin := range feesCollectedInt { - if coin.Amount.GT(sdk.ZeroInt()) { - foundAmountGreaterThanZero = true - break - } - } - if !foundAmountGreaterThanZero { - // no fees to distribute - return - } - feesCollected := sdk.NewDecCoinsFromCoins(feesCollectedInt...) - - params := k.GetParams(ctx) - feesToDistribute := feesCollected.MulDecTruncate(params.Share) - - foundAmountGreaterThanZero = false - for _, coin := range feesToDistribute { - truncated, _ := coin.TruncateDecimal() - if truncated.Amount.GT(sdk.ZeroInt()) { - foundAmountGreaterThanZero = true - break - } - } - if !foundAmountGreaterThanZero { - // no fees to distribute - return - } - - for _, d := range params.DistributionEntities { - entityShare := feesToDistribute.MulDecTruncate(d.Share) - - var coins sdk.Coins - - for _, s := range entityShare { - truncated, _ := s.TruncateDecimal() - if truncated.Amount.GT(sdk.ZeroInt()) { - coins = append(coins, truncated) - } - } - - if len(coins) == 0 { - continue - } - - acc := sdk.MustAccAddressFromBech32(d.Address) - - // transfer collected fees to the distribution entity account - err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, k.feeCollectorName, acc, coins) - if err != nil { - ctx.Logger().Error("Error allocating tokens to distribution entity: %s "+err.Error(), d.Address) - } - } -} diff --git a/x/tariff/keeper/keeper.go b/x/tariff/keeper/keeper.go deleted file mode 100644 index 2cf4413a..00000000 --- a/x/tariff/keeper/keeper.go +++ /dev/null @@ -1,133 +0,0 @@ -package keeper - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - transfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" - chantypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types" - "github.com/cosmos/ibc-go/v4/modules/core/exported" - "github.com/noble-assets/noble/v7/x/tariff/types" -) - -var _ porttypes.ICS4Wrapper = Keeper{} - -type ( - Keeper struct { - paramstore paramtypes.Subspace - authKeeper types.AccountKeeper - bankKeeper types.BankKeeper - feeCollectorName string // name of the FeeCollector ModuleAccount - ics4Wrapper porttypes.ICS4Wrapper - } -) - -// NewKeeper constructs a new fee collector keeper. -func NewKeeper( - ps paramtypes.Subspace, - authKeeper types.AccountKeeper, - bankKeeper types.BankKeeper, - feeCollectorName string, - ics4Wrapper porttypes.ICS4Wrapper, -) Keeper { - // set KeyTable if it has not already been set - if !ps.HasKeyTable() { - ps = ps.WithKeyTable(types.ParamKeyTable()) - } - - return Keeper{ - paramstore: ps, - authKeeper: authKeeper, - bankKeeper: bankKeeper, - feeCollectorName: feeCollectorName, - ics4Wrapper: ics4Wrapper, - } -} - -// SendPacket implements the ICS4Wrapper interface. -func (k Keeper) SendPacket( - ctx sdk.Context, - chanCap *capabilitytypes.Capability, - packet exported.PacketI, -) error { - chanPacket, ok := packet.(chantypes.Packet) - if !ok { - // not channel packet, forward to next middleware - return k.ics4Wrapper.SendPacket(ctx, chanCap, packet) - } - - var data transfertypes.FungibleTokenPacketData - if err := transfertypes.ModuleCdc.UnmarshalJSON(chanPacket.Data, &data); err != nil { - // not fungible token packet data, forward to next middleware - return k.ics4Wrapper.SendPacket(ctx, chanCap, packet) - } - - params := k.GetParams(ctx) - bpsFee, maxFee, feeDenom := params.TransferFeeBps, params.TransferFeeMax, params.TransferFeeDenom - - if data.Denom != feeDenom { - // not fee collection denom, forward to next middleware - return k.ics4Wrapper.SendPacket(ctx, chanCap, packet) - } - - fullAmount, ok := sdk.NewIntFromString(data.Amount) - if !ok { - return fmt.Errorf("failed to parse packet amount to sdk.Int %s", data.Amount) - } - - feeDec := fullAmount.ToDec().Mul(sdk.NewDecWithPrec(1, 4)).MulInt(bpsFee) - feeInt := feeDec.TruncateInt() - - if feeInt.Equal(sdk.ZeroInt()) { - // fees are zero, forward to next middleware - return k.ics4Wrapper.SendPacket(ctx, chanCap, packet) - } - - if feeInt.GT(maxFee) { - feeInt = maxFee - } - - // all of the packet funds have been escrowed. Collect fees from the escrow account. - if err := k.bankKeeper.SendCoinsFromAccountToModule( - ctx, - transfertypes.GetEscrowAddress(chanPacket.SourcePort, chanPacket.SourceChannel), - k.feeCollectorName, - sdk.NewCoins(sdk.NewCoin(data.Denom, feeInt)), - ); err != nil { - return err - } - - remaining := fullAmount.Sub(feeInt) - - data.Amount = remaining.String() - - newData, err := transfertypes.ModuleCdc.MarshalJSON(&data) - if err != nil { - return fmt.Errorf("failed to marshal new packet data: %w", err) - } - - chanPacket.Data = newData - - return k.ics4Wrapper.SendPacket(ctx, chanCap, chanPacket) -} - -// WriteAcknowledgement implements the ICS4Wrapper interface. -func (k Keeper) WriteAcknowledgement( - ctx sdk.Context, - chanCap *capabilitytypes.Capability, - packet exported.PacketI, - ack exported.Acknowledgement, -) error { - return k.ics4Wrapper.WriteAcknowledgement(ctx, chanCap, packet, ack) -} - -func (k Keeper) GetAppVersion( - ctx sdk.Context, - portID string, - channelID string, -) (string, bool) { - return k.ics4Wrapper.GetAppVersion(ctx, portID, channelID) -} diff --git a/x/tariff/keeper/params.go b/x/tariff/keeper/params.go deleted file mode 100644 index 1d02f953..00000000 --- a/x/tariff/keeper/params.go +++ /dev/null @@ -1,17 +0,0 @@ -package keeper - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tariff/types" -) - -// GetParams get all parameters as types.Params -func (k Keeper) GetParams(ctx sdk.Context) (params types.Params) { - k.paramstore.GetParamSet(ctx, ¶ms) - return params -} - -// SetParams set the params -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { - k.paramstore.SetParamSet(ctx, ¶ms) -} diff --git a/x/tariff/keeper/query_server.go b/x/tariff/keeper/query_server.go deleted file mode 100644 index 59361fce..00000000 --- a/x/tariff/keeper/query_server.go +++ /dev/null @@ -1,17 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tariff/types" -) - -var _ types.QueryServer = Keeper{} - -func (k Keeper) Params(goCtx context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - params := k.GetParams(ctx) - - return &types.QueryParamsResponse{Params: params}, nil -} diff --git a/x/tariff/module.go b/x/tariff/module.go deleted file mode 100644 index a890672d..00000000 --- a/x/tariff/module.go +++ /dev/null @@ -1,158 +0,0 @@ -package tariff - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/gorilla/mux" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/noble-assets/noble/v7/x/tariff/client/cli" - "github.com/noble-assets/noble/v7/x/tariff/keeper" - "github.com/noble-assets/noble/v7/x/tariff/types" - "github.com/spf13/cobra" - abci "github.com/tendermint/tendermint/abci/types" -) - -var ( - _ module.AppModule = AppModule{} - _ module.AppModuleBasic = AppModuleBasic{} -) - -// ---------------------------------------------------------------------------- -// AppModuleBasic -// ---------------------------------------------------------------------------- - -// AppModuleBasic implements the AppModuleBasic interface that defines the independent methods a Cosmos SDK module needs to implement. -type AppModuleBasic struct { - cdc codec.BinaryCodec -} - -func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { - return AppModuleBasic{cdc: cdc} -} - -// Name returns the name of the module as a string -func (AppModuleBasic) Name() string { - return types.ModuleName -} - -// RegisterLegacyAminoCodec registers the amino codec for the module, which is used to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} - -// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message -func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) {} - -// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage. The default GenesisState need to be defined by the module developer and is primarily used for testing -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) -} - -// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { - var genState types.GenesisState - if err := cdc.UnmarshalJSON(bz, &genState); err != nil { - return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) - } - return genState.Validate() -} - -// RegisterRESTRoutes registers the capability module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { -} - -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module -func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - _ = types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) -} - -// GetTxCmd returns the root Tx command for the module. The subcommands of this root command are used by end-users to generate new transactions containing messages defined in the module -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return nil -} - -// GetQueryCmd returns the root query command for the module. The subcommands of this root command are used by end-users to generate new queries to the subset of the state defined by the module -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd() -} - -// ---------------------------------------------------------------------------- -// AppModule -// ---------------------------------------------------------------------------- - -// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement -type AppModule struct { - AppModuleBasic - - keeper keeper.Keeper - accountKeeper types.AccountKeeper - bankKeeper types.BankKeeper -} - -func NewAppModule( - cdc codec.Codec, - keeper keeper.Keeper, - accountKeeper types.AccountKeeper, - bankKeeper types.BankKeeper, -) AppModule { - return AppModule{ - AppModuleBasic: NewAppModuleBasic(cdc), - keeper: keeper, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, - } -} - -// Deprecated: use RegisterServices -func (am AppModule) Route() sdk.Route { return sdk.Route{} } - -// Deprecated: use RegisterServices -func (AppModule) QuerierRoute() string { return types.ModuleName } - -// Deprecated: use RegisterServices -func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { - return nil -} - -// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries -func (am AppModule) RegisterServices(cfg module.Configurator) { - types.RegisterQueryServer(cfg.QueryServer(), am.keeper) -} - -// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted) -func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} - -// InitGenesis performs the module's genesis initialization. It returns no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { - var genState types.GenesisState - // Initialize global index to index in genesis state - cdc.MustUnmarshalJSON(gs, &genState) - - InitGenesis(ctx, am.keeper, genState) - - return []abci.ValidatorUpdate{} -} - -// ExportGenesis returns the module's exported genesis state as raw JSON bytes. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { - genState := ExportGenesis(ctx, am.keeper) - return cdc.MustMarshalJSON(genState) -} - -// ConsensusVersion is a sequence number for state-breaking change of the module. It should be incremented on each consensus-breaking change introduced by the module. To avoid wrong/empty versions, the initial version should be set to 1 -func (AppModule) ConsensusVersion() uint64 { return 1 } - -// BeginBlock contains the logic that is automatically triggered at the beginning of each block -func (am AppModule) BeginBlock(ctx sdk.Context, _ abci.RequestBeginBlock) { - BeginBlocker(ctx, am.keeper) -} - -// EndBlock contains the logic that is automatically triggered at the end of each block -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} diff --git a/x/tariff/module_simulation.go b/x/tariff/module_simulation.go deleted file mode 100644 index ce2f7736..00000000 --- a/x/tariff/module_simulation.go +++ /dev/null @@ -1,30 +0,0 @@ -package tariff - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tariff/types" - "math/rand" -) - -var _ module.AppModuleSimulation = AppModule{} - -func (am AppModule) GenerateGenesisState(simState *module.SimulationState) { - genesis := types.DefaultGenesis() - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(genesis) -} - -func (am AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -func (am AppModule) RandomizedParams(_ *rand.Rand) []simtypes.ParamChange { - return nil -} - -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} - -func (am AppModule) WeightedOperations(_ module.SimulationState) []simtypes.WeightedOperation { - return nil -} diff --git a/x/tariff/types/expected_keepers.go b/x/tariff/types/expected_keepers.go deleted file mode 100644 index c22e6a77..00000000 --- a/x/tariff/types/expected_keepers.go +++ /dev/null @@ -1,21 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/auth/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" -) - -// AccountKeeper defines the expected account keeper used for simulations (noalias) -type AccountKeeper interface { - GetAccount(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI - GetModuleAccount(ctx sdk.Context, name string) types.ModuleAccountI - // Methods imported from account should be defined here -} - -// BankKeeper defines the expected interface needed to retrieve account balances. -type BankKeeper interface { - SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins -} diff --git a/x/tariff/types/genesis.go b/x/tariff/types/genesis.go deleted file mode 100644 index 9d633ecd..00000000 --- a/x/tariff/types/genesis.go +++ /dev/null @@ -1,14 +0,0 @@ -package types - -// DefaultGenesis returns the default genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - Params: DefaultParams(), - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - return gs.Params.Validate() -} diff --git a/x/tariff/types/genesis.pb.go b/x/tariff/types/genesis.pb.go deleted file mode 100644 index b914257b..00000000 --- a/x/tariff/types/genesis.pb.go +++ /dev/null @@ -1,320 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tariff/genesis.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// GenesisState defines the tariff module's genesis state. -type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *GenesisState) Reset() { *m = GenesisState{} } -func (m *GenesisState) String() string { return proto.CompactTextString(m) } -func (*GenesisState) ProtoMessage() {} -func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_4b81fe66a0cba126, []int{0} -} -func (m *GenesisState) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GenesisState) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenesisState.Merge(m, src) -} -func (m *GenesisState) XXX_Size() int { - return m.Size() -} -func (m *GenesisState) XXX_DiscardUnknown() { - xxx_messageInfo_GenesisState.DiscardUnknown(m) -} - -var xxx_messageInfo_GenesisState proto.InternalMessageInfo - -func (m *GenesisState) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func init() { - proto.RegisterType((*GenesisState)(nil), "noble.tariff.GenesisState") -} - -func init() { proto.RegisterFile("tariff/genesis.proto", fileDescriptor_4b81fe66a0cba126) } - -var fileDescriptor_4b81fe66a0cba126 = []byte{ - // 192 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x29, 0x49, 0x2c, 0xca, - 0x4c, 0x4b, 0xd3, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, - 0x17, 0xe2, 0xc9, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x83, 0xc8, 0x49, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, - 0x83, 0x25, 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x29, 0x61, 0xa8, 0xce, 0x82, 0xc4, 0xa2, 0xc4, 0x5c, - 0xa8, 0x46, 0x25, 0x27, 0x2e, 0x1e, 0x77, 0x88, 0x49, 0xc1, 0x25, 0x89, 0x25, 0xa9, 0x42, 0x46, - 0x5c, 0x6c, 0x10, 0x79, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x11, 0x3d, 0x64, 0x93, 0xf5, - 0x02, 0xc0, 0x72, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0x55, 0x3a, 0x79, 0x9e, 0x78, - 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, - 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x7e, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, - 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd8, 0x1c, 0xdd, 0xc4, 0xe2, 0xe2, 0xd4, 0x92, 0x62, 0x08, 0x47, - 0xbf, 0xcc, 0x5c, 0xbf, 0x42, 0x1f, 0xea, 0xaa, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, - 0xab, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x64, 0x56, 0xa5, 0xea, 0xe6, 0x00, 0x00, 0x00, -} - -func (m *GenesisState) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { - offset -= sovGenesis(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *GenesisState) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovGenesis(uint64(l)) - return n -} - -func sovGenesis(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenesis(x uint64) (n int) { - return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *GenesisState) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGenesis(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGenesis - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGenesis - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGenesis - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tariff/types/keys.go b/x/tariff/types/keys.go deleted file mode 100644 index ce08920e..00000000 --- a/x/tariff/types/keys.go +++ /dev/null @@ -1,6 +0,0 @@ -package types - -const ( - // ModuleName defines the module name - ModuleName = "tariff" -) diff --git a/x/tariff/types/params.go b/x/tariff/types/params.go deleted file mode 100644 index a522291e..00000000 --- a/x/tariff/types/params.go +++ /dev/null @@ -1,151 +0,0 @@ -package types - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "gopkg.in/yaml.v2" -) - -var ( - KeyShare = []byte("Share") - KeyDistributionEntities = []byte("DistributionEntities") - KeyTransferFeeBPS = []byte("TransferFeeBPS") - KeyTransferFeeMax = []byte("TransferFeeMax") - KeyTransferFeeDenom = []byte("TransferFeeDenom") -) - -var _ paramtypes.ParamSet = (*Params)(nil) - -// ParamKeyTable the param key table for launch module -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// DefaultParams returns a default set of parameters -func DefaultParams() Params { - return Params{} -} - -// ParamSetPairs get the params.ParamSet -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{ - paramtypes.NewParamSetPair(KeyShare, &p.Share, validateShare), - paramtypes.NewParamSetPair(KeyDistributionEntities, &p.DistributionEntities, validateDistributionEntityParams), - paramtypes.NewParamSetPair(KeyTransferFeeBPS, &p.TransferFeeBps, validateTransferFeeBPS), - paramtypes.NewParamSetPair(KeyTransferFeeMax, &p.TransferFeeMax, validateTransferFeeMax), - paramtypes.NewParamSetPair(KeyTransferFeeDenom, &p.TransferFeeDenom, validateTransferFeeDenom), - } -} - -func validateDistributionEntityParams(i interface{}) error { - distributionEntities, ok := i.([]DistributionEntity) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - // ensure each denom is only registered one time. - sum := sdk.ZeroDec() - for _, d := range distributionEntities { - adr, err := sdk.AccAddressFromBech32(d.Address) - if err != nil { - return fmt.Errorf("failed to parse bech32 address: %s", d.Address) - } - count := 0 - for _, dd := range distributionEntities { - if dd.Address == adr.String() { - count++ - } - } - if count > 1 { - return fmt.Errorf("address is already added as a distribution entity: %s", adr) - } - - if d.Share.LTE(sdk.ZeroDec()) || d.Share.GT(sdk.OneDec()) { - return fmt.Errorf("distribution entity share must be greater than 0 and less than or equal to 100%%: %s", d.Share.String()) - } - - sum = sum.Add(d.Share) - } - - if len(distributionEntities) > 0 && !sum.Equal(sdk.OneDec()) { - return fmt.Errorf("sum of distribution entity shares don't equal 100%%: %s", sum.String()) - } - - return nil -} - -func validateShare(i interface{}) error { - share, ok := i.(sdk.Dec) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - if share.LT(sdk.ZeroDec()) || share.GT(sdk.OneDec()) { - return fmt.Errorf("share is outside of the range of 0 to 100%%: %s", share.String()) - } - return nil -} - -func validateTransferFeeBPS(i interface{}) error { - transferFeeBPS, ok := i.(sdk.Int) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - if transferFeeBPS.LT(sdk.ZeroInt()) || transferFeeBPS.GT(sdk.NewInt(10000)) { - return fmt.Errorf("ibc transfer basis points fee is outside of the range of 0 to 10000: %s", transferFeeBPS.String()) - } - return nil -} - -func validateTransferFeeMax(i interface{}) error { - transferFeeMax, ok := i.(sdk.Int) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - if transferFeeMax.LT(sdk.ZeroInt()) { - return fmt.Errorf("ibc transfer max fee is less than 0: %s", transferFeeMax.String()) - } - return nil -} - -func validateTransferFeeDenom(i interface{}) error { - transferFeeDenom, ok := i.(string) - if !ok { - return fmt.Errorf("invalid parameter type: %T", i) - } - if transferFeeDenom == "" { - return nil - } - return sdk.ValidateDenom(transferFeeDenom) -} - -// Validate validates the set of params -func (p Params) Validate() error { - if err := validateShare(p.Share); err != nil { - return err - } - - if err := validateDistributionEntityParams(p.DistributionEntities); err != nil { - return err - } - - if err := validateTransferFeeBPS(p.TransferFeeBps); err != nil { - return err - } - - if err := validateTransferFeeMax(p.TransferFeeMax); err != nil { - return err - } - - if err := validateTransferFeeDenom(p.TransferFeeDenom); err != nil { - return err - } - - return nil -} - -// String implements the Stringer interface. -func (p Params) String() string { - out, _ := yaml.Marshal(p) - return string(out) -} diff --git a/x/tariff/types/params.pb.go b/x/tariff/types/params.pb.go deleted file mode 100644 index 32a7f050..00000000 --- a/x/tariff/types/params.pb.go +++ /dev/null @@ -1,825 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tariff/params.proto - -package types - -import ( - fmt "fmt" - github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// Params defines the set of params for the distribution module. -type Params struct { - // share is % of tx fees or rewards allocated to distribution_entities - Share github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,1,opt,name=share,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"share" yaml:"share"` - // % of tx fees or rewards allocated to a set of global distribution entities - // these shares must add up to 1 - DistributionEntities []DistributionEntity `protobuf:"bytes,2,rep,name=distribution_entities,json=distributionEntities,proto3" json:"distribution_entities" yaml:"distribution_entities"` - TransferFeeBps github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=transfer_fee_bps,json=transferFeeBps,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"transfer_fee_bps" yaml:"transfer_fee_bps"` - TransferFeeMax github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=transfer_fee_max,json=transferFeeMax,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"transfer_fee_max" yaml:"transfer_fee_max"` - TransferFeeDenom string `protobuf:"bytes,5,opt,name=transfer_fee_denom,json=transferFeeDenom,proto3" json:"transfer_fee_denom,omitempty" yaml:"transfer_fee_denom"` -} - -func (m *Params) Reset() { *m = Params{} } -func (*Params) ProtoMessage() {} -func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_8101061d71eef07f, []int{0} -} -func (m *Params) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Params.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Params) XXX_Merge(src proto.Message) { - xxx_messageInfo_Params.Merge(m, src) -} -func (m *Params) XXX_Size() int { - return m.Size() -} -func (m *Params) XXX_DiscardUnknown() { - xxx_messageInfo_Params.DiscardUnknown(m) -} - -var xxx_messageInfo_Params proto.InternalMessageInfo - -func (m *Params) GetDistributionEntities() []DistributionEntity { - if m != nil { - return m.DistributionEntities - } - return nil -} - -func (m *Params) GetTransferFeeDenom() string { - if m != nil { - return m.TransferFeeDenom - } - return "" -} - -// DistributionEntity defines a distribution entity -type DistributionEntity struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Share github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=share,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"share" yaml:"share"` -} - -func (m *DistributionEntity) Reset() { *m = DistributionEntity{} } -func (m *DistributionEntity) String() string { return proto.CompactTextString(m) } -func (*DistributionEntity) ProtoMessage() {} -func (*DistributionEntity) Descriptor() ([]byte, []int) { - return fileDescriptor_8101061d71eef07f, []int{1} -} -func (m *DistributionEntity) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *DistributionEntity) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_DistributionEntity.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *DistributionEntity) XXX_Merge(src proto.Message) { - xxx_messageInfo_DistributionEntity.Merge(m, src) -} -func (m *DistributionEntity) XXX_Size() int { - return m.Size() -} -func (m *DistributionEntity) XXX_DiscardUnknown() { - xxx_messageInfo_DistributionEntity.DiscardUnknown(m) -} - -var xxx_messageInfo_DistributionEntity proto.InternalMessageInfo - -func (m *DistributionEntity) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func init() { - proto.RegisterType((*Params)(nil), "noble.tariff.Params") - proto.RegisterType((*DistributionEntity)(nil), "noble.tariff.DistributionEntity") -} - -func init() { proto.RegisterFile("tariff/params.proto", fileDescriptor_8101061d71eef07f) } - -var fileDescriptor_8101061d71eef07f = []byte{ - // 417 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x93, 0x4f, 0x8b, 0xd3, 0x40, - 0x18, 0xc6, 0x93, 0xdd, 0xee, 0x8a, 0xe3, 0x22, 0xcb, 0xb8, 0x62, 0x14, 0x4d, 0x4a, 0x10, 0xd9, - 0xcb, 0x66, 0x40, 0x0f, 0xc2, 0x1e, 0x3c, 0x84, 0x2a, 0x2c, 0xb2, 0x20, 0xc1, 0x93, 0x97, 0x32, - 0x69, 0x26, 0xed, 0x60, 0x93, 0x09, 0xf3, 0x4e, 0x25, 0xc5, 0xab, 0x1f, 0xc0, 0x63, 0x8f, 0x1e, - 0xfd, 0x28, 0x3d, 0xf6, 0x28, 0x1e, 0x82, 0xa4, 0xdf, 0x20, 0x9f, 0x40, 0x32, 0x69, 0x31, 0xfd, - 0x73, 0x11, 0x7a, 0x4a, 0x66, 0xde, 0xe7, 0xfd, 0x3d, 0xef, 0x4b, 0x9e, 0xa0, 0x07, 0x8a, 0x4a, - 0x1e, 0xc7, 0x24, 0xa3, 0x92, 0x26, 0xe0, 0x65, 0x52, 0x28, 0x81, 0xcf, 0x52, 0x11, 0x8e, 0x99, - 0xd7, 0x94, 0x9e, 0x5c, 0x0c, 0xc5, 0x50, 0xe8, 0x02, 0xa9, 0xdf, 0x1a, 0x8d, 0x3b, 0xeb, 0xa0, - 0xd3, 0x0f, 0xba, 0x09, 0x7f, 0x44, 0x27, 0x30, 0xa2, 0x92, 0x59, 0x66, 0xd7, 0xbc, 0xbc, 0xeb, - 0xbf, 0x99, 0x17, 0x8e, 0xf1, 0xbb, 0x70, 0x5e, 0x0c, 0xb9, 0x1a, 0x4d, 0x42, 0x6f, 0x20, 0x12, - 0x32, 0x10, 0x90, 0x08, 0x58, 0x3d, 0xae, 0x20, 0xfa, 0x4c, 0xd4, 0x34, 0x63, 0xe0, 0xf5, 0xd8, - 0xa0, 0x2a, 0x9c, 0xb3, 0x29, 0x4d, 0xc6, 0xd7, 0xae, 0x86, 0xb8, 0x41, 0x03, 0xc3, 0x5f, 0xd1, - 0xc3, 0x88, 0x83, 0x92, 0x3c, 0x9c, 0x28, 0x2e, 0xd2, 0x3e, 0x4b, 0x15, 0x57, 0x9c, 0x81, 0x75, - 0xd4, 0x3d, 0xbe, 0xbc, 0xf7, 0xb2, 0xeb, 0xb5, 0x87, 0xf4, 0x7a, 0x2d, 0xe9, 0xdb, 0x5a, 0x39, - 0xf5, 0x9f, 0xd7, 0x73, 0x54, 0x85, 0xf3, 0xb4, 0xa1, 0xef, 0x85, 0xb9, 0xc1, 0x45, 0xb4, 0xdd, - 0xc9, 0x19, 0x60, 0x40, 0xe7, 0x4a, 0xd2, 0x14, 0x62, 0x26, 0xfb, 0x31, 0x63, 0xfd, 0x30, 0x03, - 0xeb, 0x58, 0x6f, 0x77, 0xf3, 0x1f, 0xdb, 0xdd, 0xa4, 0xaa, 0x2a, 0x9c, 0x47, 0x8d, 0xff, 0x36, - 0xcf, 0x0d, 0xee, 0xaf, 0xaf, 0xde, 0x31, 0xe6, 0x67, 0xbb, 0xa6, 0x09, 0xcd, 0xad, 0xce, 0x01, - 0x4d, 0x13, 0x9a, 0x6f, 0x9a, 0xde, 0xd2, 0x1c, 0xbf, 0x47, 0x78, 0x43, 0x14, 0xb1, 0x54, 0x24, - 0xd6, 0x89, 0xb6, 0x7d, 0x56, 0x15, 0xce, 0xe3, 0x3d, 0x20, 0xad, 0x71, 0x83, 0xf3, 0x16, 0xaa, - 0x57, 0x5f, 0x5d, 0x77, 0x66, 0x3f, 0x1c, 0xc3, 0xfd, 0x66, 0x22, 0xbc, 0xfb, 0x3d, 0xb0, 0x85, - 0xee, 0xd0, 0x28, 0x92, 0x0c, 0xa0, 0x09, 0x4a, 0xb0, 0x3e, 0xfe, 0x0b, 0xd0, 0xd1, 0x01, 0x03, - 0xe4, 0xdf, 0xfe, 0x2c, 0x6d, 0x73, 0x5e, 0xda, 0xe6, 0xa2, 0xb4, 0xcd, 0x3f, 0xa5, 0x6d, 0x7e, - 0x5f, 0xda, 0xc6, 0x62, 0x69, 0x1b, 0xbf, 0x96, 0xb6, 0xf1, 0x89, 0xb4, 0xe0, 0x3a, 0x49, 0x57, - 0x14, 0x80, 0x29, 0x68, 0x0e, 0xe4, 0xcb, 0x6b, 0x92, 0x93, 0xd5, 0xbf, 0xa1, 0x9d, 0xc2, 0x53, - 0x9d, 0xfb, 0x57, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x84, 0xdf, 0x5f, 0x40, 0x32, 0x03, 0x00, - 0x00, -} - -func (this *Params) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*Params) - if !ok { - that2, ok := that.(Params) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if !this.Share.Equal(that1.Share) { - return false - } - if len(this.DistributionEntities) != len(that1.DistributionEntities) { - return false - } - for i := range this.DistributionEntities { - if !this.DistributionEntities[i].Equal(&that1.DistributionEntities[i]) { - return false - } - } - if !this.TransferFeeBps.Equal(that1.TransferFeeBps) { - return false - } - if !this.TransferFeeMax.Equal(that1.TransferFeeMax) { - return false - } - if this.TransferFeeDenom != that1.TransferFeeDenom { - return false - } - return true -} -func (this *DistributionEntity) Equal(that interface{}) bool { - if that == nil { - return this == nil - } - - that1, ok := that.(*DistributionEntity) - if !ok { - that2, ok := that.(DistributionEntity) - if ok { - that1 = &that2 - } else { - return false - } - } - if that1 == nil { - return this == nil - } else if this == nil { - return false - } - if this.Address != that1.Address { - return false - } - if !this.Share.Equal(that1.Share) { - return false - } - return true -} -func (m *Params) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Params) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.TransferFeeDenom) > 0 { - i -= len(m.TransferFeeDenom) - copy(dAtA[i:], m.TransferFeeDenom) - i = encodeVarintParams(dAtA, i, uint64(len(m.TransferFeeDenom))) - i-- - dAtA[i] = 0x2a - } - { - size := m.TransferFeeMax.Size() - i -= size - if _, err := m.TransferFeeMax.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintParams(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - { - size := m.TransferFeeBps.Size() - i -= size - if _, err := m.TransferFeeBps.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintParams(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.DistributionEntities) > 0 { - for iNdEx := len(m.DistributionEntities) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.DistributionEntities[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintParams(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - { - size := m.Share.Size() - i -= size - if _, err := m.Share.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintParams(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *DistributionEntity) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *DistributionEntity) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *DistributionEntity) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size := m.Share.Size() - i -= size - if _, err := m.Share.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintParams(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintParams(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintParams(dAtA []byte, offset int, v uint64) int { - offset -= sovParams(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Params) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Share.Size() - n += 1 + l + sovParams(uint64(l)) - if len(m.DistributionEntities) > 0 { - for _, e := range m.DistributionEntities { - l = e.Size() - n += 1 + l + sovParams(uint64(l)) - } - } - l = m.TransferFeeBps.Size() - n += 1 + l + sovParams(uint64(l)) - l = m.TransferFeeMax.Size() - n += 1 + l + sovParams(uint64(l)) - l = len(m.TransferFeeDenom) - if l > 0 { - n += 1 + l + sovParams(uint64(l)) - } - return n -} - -func (m *DistributionEntity) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovParams(uint64(l)) - } - l = m.Share.Size() - n += 1 + l + sovParams(uint64(l)) - return n -} - -func sovParams(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozParams(x uint64) (n int) { - return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Params) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Params: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Share", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Share.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field DistributionEntities", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.DistributionEntities = append(m.DistributionEntities, DistributionEntity{}) - if err := m.DistributionEntities[len(m.DistributionEntities)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TransferFeeBps", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.TransferFeeBps.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TransferFeeMax", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.TransferFeeMax.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field TransferFeeDenom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.TransferFeeDenom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipParams(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthParams - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *DistributionEntity) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: DistributionEntity: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: DistributionEntity: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Share", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthParams - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthParams - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Share.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipParams(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthParams - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipParams(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthParams - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupParams - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthParams - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tariff/types/query.pb.go b/x/tariff/types/query.pb.go deleted file mode 100644 index 599be6a3..00000000 --- a/x/tariff/types/query.pb.go +++ /dev/null @@ -1,530 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tariff/query.proto - -package types - -import ( - context "context" - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type QueryParamsRequest struct { -} - -func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } -func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryParamsRequest) ProtoMessage() {} -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_4698e7fed980d65c, []int{0} -} -func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsRequest.Merge(m, src) -} -func (m *QueryParamsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo - -type QueryParamsResponse struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } -func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryParamsResponse) ProtoMessage() {} -func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_4698e7fed980d65c, []int{1} -} -func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsResponse.Merge(m, src) -} -func (m *QueryParamsResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo - -func (m *QueryParamsResponse) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "noble.tariff.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "noble.tariff.QueryParamsResponse") -} - -func init() { proto.RegisterFile("tariff/query.proto", fileDescriptor_4698e7fed980d65c) } - -var fileDescriptor_4698e7fed980d65c = []byte{ - // 274 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2a, 0x49, 0x2c, 0xca, - 0x4c, 0x4b, 0xd3, 0x2f, 0x2c, 0x4d, 0x2d, 0xaa, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, - 0xc9, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x83, 0xc8, 0x48, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, 0x83, 0x25, - 0xf4, 0x41, 0x2c, 0x88, 0x1a, 0x29, 0x99, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54, 0xfd, 0xc4, 0x82, - 0x4c, 0xfd, 0xc4, 0xbc, 0xbc, 0xfc, 0x92, 0xc4, 0x92, 0xcc, 0xfc, 0xbc, 0x62, 0xa8, 0xac, 0x30, - 0xd4, 0xd4, 0x82, 0xc4, 0xa2, 0xc4, 0x5c, 0xa8, 0xa0, 0x92, 0x08, 0x97, 0x50, 0x20, 0xc8, 0x96, - 0x00, 0xb0, 0x60, 0x50, 0x6a, 0x61, 0x69, 0x6a, 0x71, 0x89, 0x92, 0x27, 0x97, 0x30, 0x8a, 0x68, - 0x71, 0x41, 0x7e, 0x5e, 0x71, 0xaa, 0x90, 0x11, 0x17, 0x1b, 0x44, 0xb3, 0x04, 0xa3, 0x02, 0xa3, - 0x06, 0xb7, 0x91, 0x88, 0x1e, 0xb2, 0xa3, 0xf4, 0x20, 0xaa, 0x9d, 0x58, 0x4e, 0xdc, 0x93, 0x67, - 0x08, 0x82, 0xaa, 0x34, 0x2a, 0xe7, 0x62, 0x05, 0x1b, 0x25, 0x94, 0xc7, 0xc5, 0x06, 0x51, 0x20, - 0xa4, 0x80, 0xaa, 0x0d, 0xd3, 0x7e, 0x29, 0x45, 0x3c, 0x2a, 0x20, 0x6e, 0x51, 0x92, 0x6f, 0xba, - 0xfc, 0x64, 0x32, 0x93, 0xa4, 0x90, 0xb8, 0x3e, 0x58, 0xa9, 0x3e, 0xd4, 0x73, 0x65, 0x86, 0x50, - 0xff, 0x39, 0x79, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, - 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x7e, 0x7a, - 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0x2e, 0x44, 0xb3, 0x6e, 0x62, 0x71, 0x71, 0x6a, - 0x49, 0x31, 0xd4, 0xa4, 0x32, 0x73, 0xfd, 0x0a, 0x98, 0x71, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, - 0x6c, 0xe0, 0xb0, 0x32, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x5c, 0x6b, 0xf5, 0xe5, 0x98, 0x01, - 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) -} - -type queryClient struct { - cc grpc1.ClientConn -} - -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} -} - -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/noble.tariff.Query/Params", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// QueryServer is the server API for Query service. -type QueryServer interface { - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) -} - -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { -} - -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") -} - -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} - -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tariff.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "noble.tariff.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "tariff/query.proto", -} - -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipQuery(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthQuery - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupQuery - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthQuery - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tariff/types/query.pb.gw.go b/x/tariff/types/query.pb.gw.go deleted file mode 100644 index 6b89f370..00000000 --- a/x/tariff/types/query.pb.gw.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: tariff/query.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := server.Params(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". -// UnaryRPC :call QueryServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. -func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterQueryHandler(ctx, mux, conn) -} - -// RegisterQueryHandler registers the http handlers for service Query to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) -} - -// RegisterQueryHandlerClient registers the http handlers for service Query -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "QueryClient" to call the correct interceptors. -func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"noble", "tariff", "v1", "params"}, "", runtime.AssumeColonVerbOpt(true))) -) - -var ( - forward_Query_Params_0 = runtime.ForwardResponseMessage -) diff --git a/x/tokenfactory/client/cli/query.go b/x/tokenfactory/client/cli/query.go deleted file mode 100644 index 34f4087f..00000000 --- a/x/tokenfactory/client/cli/query.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -// GetQueryCmd returns the cli query commands for this module -func GetQueryCmd(queryRoute string) *cobra.Command { - // Group tokenfactory queries under a subcommand - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("Querying commands for the %s module", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdQueryParams()) - cmd.AddCommand(CmdListBlacklisted()) - cmd.AddCommand(CmdShowBlacklisted()) - cmd.AddCommand(CmdShowPaused()) - cmd.AddCommand(CmdShowMasterMinter()) - cmd.AddCommand(CmdListMinters()) - cmd.AddCommand(CmdShowMinters()) - cmd.AddCommand(CmdShowPauser()) - cmd.AddCommand(CmdShowBlacklister()) - cmd.AddCommand(CmdShowOwner()) - cmd.AddCommand(CmdListMinterController()) - cmd.AddCommand(CmdShowMinterController()) - cmd.AddCommand(CmdShowMintingDenom()) - // this line is used by starport scaffolding # 1 - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_blacklisted.go b/x/tokenfactory/client/cli/query_blacklisted.go deleted file mode 100644 index 90857caa..00000000 --- a/x/tokenfactory/client/cli/query_blacklisted.go +++ /dev/null @@ -1,73 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdListBlacklisted() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-blacklisted", - Short: "list all blacklisted", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllBlacklistedRequest{ - Pagination: pageReq, - } - - res, err := queryClient.BlacklistedAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddPaginationFlagsToCmd(cmd, cmd.Use) - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowBlacklisted() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-blacklisted [address]", - Short: "shows a blacklisted", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - argAddress := args[0] - - params := &types.QueryGetBlacklistedRequest{ - Address: argAddress, - } - - res, err := queryClient.Blacklisted(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_blacklisted_test.go b/x/tokenfactory/client/cli/query_blacklisted_test.go deleted file mode 100644 index 1d7c84aa..00000000 --- a/x/tokenfactory/client/cli/query_blacklisted_test.go +++ /dev/null @@ -1,165 +0,0 @@ -package cli_test - -import ( - "fmt" - "strconv" - "testing" - - "github.com/cosmos/cosmos-sdk/client/flags" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func networkWithBlacklistedObjects(t *testing.T, n int) (*network.Network, []types.Blacklisted, []sample.Account) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - accounts := make([]sample.Account, n) - for i := 0; i < n; i++ { - account := sample.TestAccount() - blacklisted := types.Blacklisted{ - AddressBz: account.AddressBz, - } - state.BlacklistedList = append(state.BlacklistedList, blacklisted) - accounts[i] = account - } - - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), state.BlacklistedList, accounts -} - -func TestShowBlacklisted(t *testing.T) { - net, _, objs := networkWithBlacklistedObjects(t, 2) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - address string - - args []string - err error - obj sample.Account - }{ - { - desc: "found", - address: objs[0].Address, - - args: common, - obj: objs[0], - }, - { - desc: "not found", - address: sample.TestAccount().Address, - - args: common, - err: status.Error(codes.NotFound, "not found"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - args := []string{ - tc.address, - } - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowBlacklisted(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetBlacklistedResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Blacklisted) - require.Equal(t, - nullify.Fill(&tc.obj.AddressBz), - nullify.Fill(&resp.Blacklisted.AddressBz), - ) - } - }) - } -} - -func TestListBlacklisted(t *testing.T) { - net, objs, _ := networkWithBlacklistedObjects(t, 5) - - ctx := net.Validators[0].ClientCtx - request := func(next []byte, offset, limit uint64, total bool) []string { - args := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - if next == nil { - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagOffset, offset)) - } else { - args = append(args, fmt.Sprintf("--%s=%s", flags.FlagPageKey, next)) - } - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagLimit, limit)) - if total { - args = append(args, fmt.Sprintf("--%s", flags.FlagCountTotal)) - } - return args - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(objs); i += step { - args := request(nil, uint64(i), uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListBlacklisted(), args) - require.NoError(t, err) - var resp types.QueryAllBlacklistedResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Blacklisted), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.Blacklisted), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(objs); i += step { - args := request(next, 0, uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListBlacklisted(), args) - require.NoError(t, err) - var resp types.QueryAllBlacklistedResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Blacklisted), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.Blacklisted), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - args := request(nil, 0, uint64(len(objs)), true) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListBlacklisted(), args) - require.NoError(t, err) - var resp types.QueryAllBlacklistedResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NoError(t, err) - require.Equal(t, len(objs), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(objs), - nullify.Fill(resp.Blacklisted), - ) - }) -} diff --git a/x/tokenfactory/client/cli/query_blacklister.go b/x/tokenfactory/client/cli/query_blacklister.go deleted file mode 100644 index e2a800df..00000000 --- a/x/tokenfactory/client/cli/query_blacklister.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowBlacklister() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-blacklister", - Short: "shows blacklister", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetBlacklisterRequest{} - - res, err := queryClient.Blacklister(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_blacklister_test.go b/x/tokenfactory/client/cli/query_blacklister_test.go deleted file mode 100644 index d7733ec5..00000000 --- a/x/tokenfactory/client/cli/query_blacklister_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithBlacklisterObjects(t *testing.T) (*network.Network, types.Blacklister) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - blacklister := &types.Blacklister{} - nullify.Fill(&blacklister) - state.Blacklister = blacklister - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), *state.Blacklister -} - -func TestShowBlacklister(t *testing.T) { - net, obj := networkWithBlacklisterObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.Blacklister - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowBlacklister(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetBlacklisterResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Blacklister) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.Blacklister), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/query_master_minter.go b/x/tokenfactory/client/cli/query_master_minter.go deleted file mode 100644 index 2bfc2d88..00000000 --- a/x/tokenfactory/client/cli/query_master_minter.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowMasterMinter() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-master-minter", - Short: "shows master-minter", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetMasterMinterRequest{} - - res, err := queryClient.MasterMinter(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_master_minter_test.go b/x/tokenfactory/client/cli/query_master_minter_test.go deleted file mode 100644 index 929b1e78..00000000 --- a/x/tokenfactory/client/cli/query_master_minter_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithMasterMinterObjects(t *testing.T) (*network.Network, types.MasterMinter) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - masterMinter := &types.MasterMinter{} - nullify.Fill(&masterMinter) - state.MasterMinter = masterMinter - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), *state.MasterMinter -} - -func TestShowMasterMinter(t *testing.T) { - net, obj := networkWithMasterMinterObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.MasterMinter - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowMasterMinter(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetMasterMinterResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.MasterMinter) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.MasterMinter), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/query_minter_controller.go b/x/tokenfactory/client/cli/query_minter_controller.go deleted file mode 100644 index 0775ad0f..00000000 --- a/x/tokenfactory/client/cli/query_minter_controller.go +++ /dev/null @@ -1,74 +0,0 @@ -package cli - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/spf13/cobra" -) - -func CmdListMinterController() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-minter-controller", - Short: "list all minter-controller", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllMinterControllerRequest{ - Pagination: pageReq, - } - - res, err := queryClient.MinterControllerAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddPaginationFlagsToCmd(cmd, cmd.Use) - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowMinterController() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-minter-controller [minter-address]", - Short: "shows a minter-controller", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - argControllerAddress := args[0] - - params := &types.QueryGetMinterControllerRequest{ - ControllerAddress: argControllerAddress, - } - - res, err := queryClient.MinterController(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_minter_controller_test.go b/x/tokenfactory/client/cli/query_minter_controller_test.go deleted file mode 100644 index 2d1c4f65..00000000 --- a/x/tokenfactory/client/cli/query_minter_controller_test.go +++ /dev/null @@ -1,161 +0,0 @@ -package cli_test - -import ( - "fmt" - "strconv" - "testing" - - "github.com/cosmos/cosmos-sdk/client/flags" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func networkWithMinterControllerObjects(t *testing.T, n int) (*network.Network, []types.MinterController) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - for i := 0; i < n; i++ { - minterController := types.MinterController{ - Controller: strconv.Itoa(i), - } - nullify.Fill(&minterController) - state.MinterControllerList = append(state.MinterControllerList, minterController) - } - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), state.MinterControllerList -} - -func TestShowMinterController(t *testing.T) { - net, objs := networkWithMinterControllerObjects(t, 2) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - idMinterAddress string - - args []string - err error - obj types.MinterController - }{ - { - desc: "found", - idMinterAddress: objs[0].Controller, - - args: common, - obj: objs[0], - }, - { - desc: "not found", - idMinterAddress: strconv.Itoa(100000), - - args: common, - err: status.Error(codes.NotFound, "not found"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - args := []string{ - tc.idMinterAddress, - } - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowMinterController(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetMinterControllerResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.MinterController) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.MinterController), - ) - } - }) - } -} - -func TestListMinterController(t *testing.T) { - net, objs := networkWithMinterControllerObjects(t, 5) - - ctx := net.Validators[0].ClientCtx - request := func(next []byte, offset, limit uint64, total bool) []string { - args := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - if next == nil { - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagOffset, offset)) - } else { - args = append(args, fmt.Sprintf("--%s=%s", flags.FlagPageKey, next)) - } - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagLimit, limit)) - if total { - args = append(args, fmt.Sprintf("--%s", flags.FlagCountTotal)) - } - return args - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(objs); i += step { - args := request(nil, uint64(i), uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinterController(), args) - require.NoError(t, err) - var resp types.QueryAllMinterControllerResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.MinterController), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.MinterController), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(objs); i += step { - args := request(next, 0, uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinterController(), args) - require.NoError(t, err) - var resp types.QueryAllMinterControllerResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.MinterController), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.MinterController), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - args := request(nil, 0, uint64(len(objs)), true) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinterController(), args) - require.NoError(t, err) - var resp types.QueryAllMinterControllerResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NoError(t, err) - require.Equal(t, len(objs), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(objs), - nullify.Fill(resp.MinterController), - ) - }) -} diff --git a/x/tokenfactory/client/cli/query_minters.go b/x/tokenfactory/client/cli/query_minters.go deleted file mode 100644 index 2102e444..00000000 --- a/x/tokenfactory/client/cli/query_minters.go +++ /dev/null @@ -1,73 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdListMinters() *cobra.Command { - cmd := &cobra.Command{ - Use: "list-minters", - Short: "list all minters", - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - pageReq, err := client.ReadPageRequest(cmd.Flags()) - if err != nil { - return err - } - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryAllMintersRequest{ - Pagination: pageReq, - } - - res, err := queryClient.MintersAll(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddPaginationFlagsToCmd(cmd, cmd.Use) - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} - -func CmdShowMinters() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-minters [address]", - Short: "shows a minters", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - argAddress := args[0] - - params := &types.QueryGetMintersRequest{ - Address: argAddress, - } - - res, err := queryClient.Minters(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_minters_test.go b/x/tokenfactory/client/cli/query_minters_test.go deleted file mode 100644 index 2c6cce47..00000000 --- a/x/tokenfactory/client/cli/query_minters_test.go +++ /dev/null @@ -1,161 +0,0 @@ -package cli_test - -import ( - "fmt" - "strconv" - "testing" - - "github.com/cosmos/cosmos-sdk/client/flags" - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func networkWithMintersObjects(t *testing.T, n int) (*network.Network, []types.Minters) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - for i := 0; i < n; i++ { - minters := types.Minters{ - Address: strconv.Itoa(i), - } - nullify.Fill(&minters) - state.MintersList = append(state.MintersList, minters) - } - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), state.MintersList -} - -func TestShowMinters(t *testing.T) { - net, objs := networkWithMintersObjects(t, 2) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - idAddress string - - args []string - err error - obj types.Minters - }{ - { - desc: "found", - idAddress: objs[0].Address, - - args: common, - obj: objs[0], - }, - { - desc: "not found", - idAddress: strconv.Itoa(100000), - - args: common, - err: status.Error(codes.NotFound, "not found"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - args := []string{ - tc.idAddress, - } - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowMinters(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetMintersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Minters) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.Minters), - ) - } - }) - } -} - -func TestListMinters(t *testing.T) { - net, objs := networkWithMintersObjects(t, 5) - - ctx := net.Validators[0].ClientCtx - request := func(next []byte, offset, limit uint64, total bool) []string { - args := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - if next == nil { - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagOffset, offset)) - } else { - args = append(args, fmt.Sprintf("--%s=%s", flags.FlagPageKey, next)) - } - args = append(args, fmt.Sprintf("--%s=%d", flags.FlagLimit, limit)) - if total { - args = append(args, fmt.Sprintf("--%s", flags.FlagCountTotal)) - } - return args - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(objs); i += step { - args := request(nil, uint64(i), uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinters(), args) - require.NoError(t, err) - var resp types.QueryAllMintersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Minters), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.Minters), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(objs); i += step { - args := request(next, 0, uint64(step), false) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinters(), args) - require.NoError(t, err) - var resp types.QueryAllMintersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.LessOrEqual(t, len(resp.Minters), step) - require.Subset(t, - nullify.Fill(objs), - nullify.Fill(resp.Minters), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - args := request(nil, 0, uint64(len(objs)), true) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdListMinters(), args) - require.NoError(t, err) - var resp types.QueryAllMintersResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NoError(t, err) - require.Equal(t, len(objs), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(objs), - nullify.Fill(resp.Minters), - ) - }) -} diff --git a/x/tokenfactory/client/cli/query_minting_denom.go b/x/tokenfactory/client/cli/query_minting_denom.go deleted file mode 100644 index fe399fa7..00000000 --- a/x/tokenfactory/client/cli/query_minting_denom.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowMintingDenom() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-minting-denom", - Short: "shows minting-denom", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetMintingDenomRequest{} - - res, err := queryClient.MintingDenom(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_minting_denom_test.go b/x/tokenfactory/client/cli/query_minting_denom_test.go deleted file mode 100644 index c6121f1d..00000000 --- a/x/tokenfactory/client/cli/query_minting_denom_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithMintingDenomObjects(t *testing.T) (*network.Network, types.MintingDenom) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - testDenom := "test" - - state.MintingDenom = &types.MintingDenom{ - Denom: testDenom, - } - - var bankState banktypes.GenesisState - cfg.Codec.MustUnmarshalJSON(cfg.GenesisState[banktypes.ModuleName], &bankState) - bankState.DenomMetadata = append(bankState.DenomMetadata, banktypes.Metadata{ - Base: testDenom, - }) - cfg.GenesisState[banktypes.ModuleName] = cfg.Codec.MustMarshalJSON(&bankState) - - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - - return network.New(t, cfg), *state.MintingDenom -} - -func TestShowMintingDenom(t *testing.T) { - net, obj := networkWithMintingDenomObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.MintingDenom - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowMintingDenom(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetMintingDenomResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.MintingDenom) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.MintingDenom), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/query_owner.go b/x/tokenfactory/client/cli/query_owner.go deleted file mode 100644 index fbd53e04..00000000 --- a/x/tokenfactory/client/cli/query_owner.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowOwner() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-owner", - Short: "shows owner", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetOwnerRequest{} - - res, err := queryClient.Owner(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_owner_test.go b/x/tokenfactory/client/cli/query_owner_test.go deleted file mode 100644 index d0527e98..00000000 --- a/x/tokenfactory/client/cli/query_owner_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithOwnerObjects(t *testing.T) (*network.Network, types.Owner) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - owner := &types.Owner{} - nullify.Fill(&owner) - state.Owner = owner - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), *state.Owner -} - -func TestShowOwner(t *testing.T) { - net, obj := networkWithOwnerObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.Owner - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowOwner(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetOwnerResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Owner) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.Owner), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/query_params.go b/x/tokenfactory/client/cli/query_params.go deleted file mode 100644 index 26c2e4d9..00000000 --- a/x/tokenfactory/client/cli/query_params.go +++ /dev/null @@ -1,34 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdQueryParams() *cobra.Command { - cmd := &cobra.Command{ - Use: "params", - Short: "shows the parameters of the module", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - res, err := queryClient.Params(context.Background(), &types.QueryParamsRequest{}) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_paused.go b/x/tokenfactory/client/cli/query_paused.go deleted file mode 100644 index 2b3747a5..00000000 --- a/x/tokenfactory/client/cli/query_paused.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowPaused() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-paused", - Short: "shows paused", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetPausedRequest{} - - res, err := queryClient.Paused(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_paused_test.go b/x/tokenfactory/client/cli/query_paused_test.go deleted file mode 100644 index 500b939d..00000000 --- a/x/tokenfactory/client/cli/query_paused_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithPausedObjects(t *testing.T) (*network.Network, types.Paused) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - paused := &types.Paused{} - nullify.Fill(&paused) - state.Paused = paused - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), *state.Paused -} - -func TestShowPaused(t *testing.T) { - net, obj := networkWithPausedObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.Paused - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowPaused(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetPausedResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Paused) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.Paused), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/query_pauser.go b/x/tokenfactory/client/cli/query_pauser.go deleted file mode 100644 index 0cf5d9e5..00000000 --- a/x/tokenfactory/client/cli/query_pauser.go +++ /dev/null @@ -1,36 +0,0 @@ -package cli - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -func CmdShowPauser() *cobra.Command { - cmd := &cobra.Command{ - Use: "show-pauser", - Short: "shows pauser", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx := client.GetClientContextFromCmd(cmd) - - queryClient := types.NewQueryClient(clientCtx) - - params := &types.QueryGetPauserRequest{} - - res, err := queryClient.Pauser(context.Background(), params) - if err != nil { - return err - } - - return clientCtx.PrintProto(res) - }, - } - - flags.AddQueryFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/query_pauser_test.go b/x/tokenfactory/client/cli/query_pauser_test.go deleted file mode 100644 index 659874b6..00000000 --- a/x/tokenfactory/client/cli/query_pauser_test.go +++ /dev/null @@ -1,72 +0,0 @@ -package cli_test - -import ( - "fmt" - "testing" - - clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" - "github.com/stretchr/testify/require" - tmcli "github.com/tendermint/tendermint/libs/cli" - "google.golang.org/grpc/status" - - "github.com/noble-assets/noble/v7/testutil/network" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func networkWithPauserObjects(t *testing.T) (*network.Network, types.Pauser) { - t.Helper() - cfg := network.DefaultConfig() - state := types.GenesisState{} - require.NoError(t, cfg.Codec.UnmarshalJSON(cfg.GenesisState[types.ModuleName], &state)) - - pauser := &types.Pauser{} - nullify.Fill(&pauser) - state.Pauser = pauser - buf, err := cfg.Codec.MarshalJSON(&state) - require.NoError(t, err) - cfg.GenesisState[types.ModuleName] = buf - return network.New(t, cfg), *state.Pauser -} - -func TestShowPauser(t *testing.T) { - net, obj := networkWithPauserObjects(t) - - ctx := net.Validators[0].ClientCtx - common := []string{ - fmt.Sprintf("--%s=json", tmcli.OutputFlag), - } - for _, tc := range []struct { - desc string - args []string - err error - obj types.Pauser - }{ - { - desc: "get", - args: common, - obj: obj, - }, - } { - t.Run(tc.desc, func(t *testing.T) { - var args []string - args = append(args, tc.args...) - out, err := clitestutil.ExecTestCLICmd(ctx, cli.CmdShowPauser(), args) - if tc.err != nil { - stat, ok := status.FromError(tc.err) - require.True(t, ok) - require.ErrorIs(t, stat.Err(), tc.err) - } else { - require.NoError(t, err) - var resp types.QueryGetPauserResponse - require.NoError(t, net.Config.Codec.UnmarshalJSON(out.Bytes(), &resp)) - require.NotNil(t, resp.Pauser) - require.Equal(t, - nullify.Fill(&tc.obj), - nullify.Fill(&resp.Pauser), - ) - } - }) - } -} diff --git a/x/tokenfactory/client/cli/tx.go b/x/tokenfactory/client/cli/tx.go deleted file mode 100644 index c4f35106..00000000 --- a/x/tokenfactory/client/cli/tx.go +++ /dev/null @@ -1,39 +0,0 @@ -package cli - -import ( - "fmt" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -// GetTxCmd returns the transaction commands for this module -func GetTxCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: types.ModuleName, - Short: fmt.Sprintf("%s transactions subcommands", types.ModuleName), - DisableFlagParsing: true, - SuggestionsMinimumDistance: 2, - RunE: client.ValidateCmd, - } - - cmd.AddCommand(CmdUpdateMasterMinter()) - cmd.AddCommand(CmdUpdatePauser()) - cmd.AddCommand(CmdUpdateBlacklister()) - cmd.AddCommand(CmdUpdateOwner()) - cmd.AddCommand(CmdAcceptOwner()) - cmd.AddCommand(CmdConfigureMinter()) - cmd.AddCommand(CmdRemoveMinter()) - cmd.AddCommand(CmdMint()) - cmd.AddCommand(CmdBurn()) - cmd.AddCommand(CmdBlacklist()) - cmd.AddCommand(CmdUnblacklist()) - cmd.AddCommand(CmdPause()) - cmd.AddCommand(CmdUnpause()) - cmd.AddCommand(CmdConfigureMinterController()) - cmd.AddCommand(CmdRemoveMinterController()) - // this line is used by starport scaffolding # 1 - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_accept_owner.go b/x/tokenfactory/client/cli/tx_accept_owner.go deleted file mode 100644 index be13a0c2..00000000 --- a/x/tokenfactory/client/cli/tx_accept_owner.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdAcceptOwner() *cobra.Command { - cmd := &cobra.Command{ - Use: "accept-owner [address]", - Short: "Broadcast message accept-owner", - Args: cobra.NoArgs, - RunE: func(cmd *cobra.Command, args []string) (err error) { - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgAcceptOwner( - clientCtx.GetFromAddress().String(), - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_blacklist.go b/x/tokenfactory/client/cli/tx_blacklist.go deleted file mode 100644 index d80d1346..00000000 --- a/x/tokenfactory/client/cli/tx_blacklist.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdBlacklist() *cobra.Command { - cmd := &cobra.Command{ - Use: "blacklist [address]", - Short: "Broadcast message blacklist", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgBlacklist( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_burn.go b/x/tokenfactory/client/cli/tx_burn.go deleted file mode 100644 index b22c0cb8..00000000 --- a/x/tokenfactory/client/cli/tx_burn.go +++ /dev/null @@ -1,44 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdBurn() *cobra.Command { - cmd := &cobra.Command{ - Use: "burn [amount]", - Short: "Broadcast message burn", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAmount, err := sdk.ParseCoinNormalized(args[0]) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgBurn( - clientCtx.GetFromAddress().String(), - argAmount, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_configure_minter.go b/x/tokenfactory/client/cli/tx_configure_minter.go deleted file mode 100644 index 5201267c..00000000 --- a/x/tokenfactory/client/cli/tx_configure_minter.go +++ /dev/null @@ -1,46 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdConfigureMinter() *cobra.Command { - cmd := &cobra.Command{ - Use: "configure-minter [address] [allowance]", - Short: "Broadcast message configure-minter", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - argAllowance, err := sdk.ParseCoinNormalized(args[1]) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgConfigureMinter( - clientCtx.GetFromAddress().String(), - argAddress, - argAllowance, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_configure_minter_controller.go b/x/tokenfactory/client/cli/tx_configure_minter_controller.go deleted file mode 100644 index aad34b98..00000000 --- a/x/tokenfactory/client/cli/tx_configure_minter_controller.go +++ /dev/null @@ -1,42 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdConfigureMinterController() *cobra.Command { - cmd := &cobra.Command{ - Use: "configure-minter-controller [controller] [minter]", - Short: "Broadcast message configure-minter-controller", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argController := args[0] - argMinter := args[1] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgConfigureMinterController( - clientCtx.GetFromAddress().String(), - argController, - argMinter, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_mint.go b/x/tokenfactory/client/cli/tx_mint.go deleted file mode 100644 index ab2caa52..00000000 --- a/x/tokenfactory/client/cli/tx_mint.go +++ /dev/null @@ -1,46 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdMint() *cobra.Command { - cmd := &cobra.Command{ - Use: "mint [address] [amount]", - Short: "Broadcast message mint", - Args: cobra.ExactArgs(2), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - argAmount, err := sdk.ParseCoinNormalized(args[1]) - if err != nil { - return err - } - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgMint( - clientCtx.GetFromAddress().String(), - argAddress, - argAmount, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_pause.go b/x/tokenfactory/client/cli/tx_pause.go deleted file mode 100644 index 19f44fd7..00000000 --- a/x/tokenfactory/client/cli/tx_pause.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdPause() *cobra.Command { - cmd := &cobra.Command{ - Use: "pause", - Short: "Broadcast message pause", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) (err error) { - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgPause( - clientCtx.GetFromAddress().String(), - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_remove_minter.go b/x/tokenfactory/client/cli/tx_remove_minter.go deleted file mode 100644 index 94120474..00000000 --- a/x/tokenfactory/client/cli/tx_remove_minter.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdRemoveMinter() *cobra.Command { - cmd := &cobra.Command{ - Use: "remove-minter [address]", - Short: "Broadcast message remove-minter", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgRemoveMinter( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_remove_minter_controller.go b/x/tokenfactory/client/cli/tx_remove_minter_controller.go deleted file mode 100644 index 9f07ff69..00000000 --- a/x/tokenfactory/client/cli/tx_remove_minter_controller.go +++ /dev/null @@ -1,41 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdRemoveMinterController() *cobra.Command { - cmd := &cobra.Command{ - Use: "remove-minter-controller [controller]", - Short: "Broadcast message remove-minter-controller", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgRemoveMinterController( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_unblacklist.go b/x/tokenfactory/client/cli/tx_unblacklist.go deleted file mode 100644 index d6c923e5..00000000 --- a/x/tokenfactory/client/cli/tx_unblacklist.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUnblacklist() *cobra.Command { - cmd := &cobra.Command{ - Use: "unblacklist [address]", - Short: "Broadcast message unblacklist", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUnblacklist( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_unpause.go b/x/tokenfactory/client/cli/tx_unpause.go deleted file mode 100644 index 91789b1a..00000000 --- a/x/tokenfactory/client/cli/tx_unpause.go +++ /dev/null @@ -1,38 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUnpause() *cobra.Command { - cmd := &cobra.Command{ - Use: "unpause", - Short: "Broadcast message unpause", - Args: cobra.ExactArgs(0), - RunE: func(cmd *cobra.Command, args []string) (err error) { - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUnpause( - clientCtx.GetFromAddress().String(), - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_update_blacklister.go b/x/tokenfactory/client/cli/tx_update_blacklister.go deleted file mode 100644 index 593892dd..00000000 --- a/x/tokenfactory/client/cli/tx_update_blacklister.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUpdateBlacklister() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-blacklister [address]", - Short: "Broadcast message update-blacklister", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateBlacklister( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_update_master_minter.go b/x/tokenfactory/client/cli/tx_update_master_minter.go deleted file mode 100644 index f9f5472c..00000000 --- a/x/tokenfactory/client/cli/tx_update_master_minter.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUpdateMasterMinter() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-master-minter [address]", - Short: "Broadcast message update-master-minter", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateMasterMinter( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_update_owner.go b/x/tokenfactory/client/cli/tx_update_owner.go deleted file mode 100644 index e4b58330..00000000 --- a/x/tokenfactory/client/cli/tx_update_owner.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUpdateOwner() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-owner [address]", - Short: "Broadcast message update-owner", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdateOwner( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/client/cli/tx_update_pauser.go b/x/tokenfactory/client/cli/tx_update_pauser.go deleted file mode 100644 index 09890269..00000000 --- a/x/tokenfactory/client/cli/tx_update_pauser.go +++ /dev/null @@ -1,40 +0,0 @@ -package cli - -import ( - "strconv" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/client/tx" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/spf13/cobra" -) - -var _ = strconv.Itoa(0) - -func CmdUpdatePauser() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-pauser [address]", - Short: "Broadcast message update-pauser", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) (err error) { - argAddress := args[0] - - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - msg := types.NewMsgUpdatePauser( - clientCtx.GetFromAddress().String(), - argAddress, - ) - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - flags.AddTxFlagsToCmd(cmd) - - return cmd -} diff --git a/x/tokenfactory/genesis.go b/x/tokenfactory/genesis.go deleted file mode 100644 index 233bf341..00000000 --- a/x/tokenfactory/genesis.go +++ /dev/null @@ -1,93 +0,0 @@ -package tokenfactory - -import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// InitGenesis initializes the module's state from a provided genesis state. -func InitGenesis(ctx sdk.Context, k *keeper.Keeper, bankKeeper types.BankKeeper, genState types.GenesisState) { - for _, elem := range genState.BlacklistedList { - k.SetBlacklisted(ctx, elem) - } - - if genState.Paused != nil { - k.SetPaused(ctx, *genState.Paused) - } - - if genState.MasterMinter != nil { - k.SetMasterMinter(ctx, *genState.MasterMinter) - } - - for _, elem := range genState.MintersList { - k.SetMinters(ctx, elem) - } - - if genState.Pauser != nil { - k.SetPauser(ctx, *genState.Pauser) - } - - if genState.Blacklister != nil { - k.SetBlacklister(ctx, *genState.Blacklister) - } - - if genState.Owner != nil { - k.SetOwner(ctx, *genState.Owner) - } - - for _, elem := range genState.MinterControllerList { - k.SetMinterController(ctx, elem) - } - - if genState.MintingDenom != nil { - _, found := bankKeeper.GetDenomMetaData(ctx, genState.MintingDenom.Denom) - if !found { - panic(sdkerrors.Wrapf(types.ErrDenomNotRegistered, "tokenfactory minting denom %s is not registered in bank module denom_metadata", genState.MintingDenom.Denom)) - } - k.SetMintingDenom(ctx, *genState.MintingDenom) - } - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) -} - -// ExportGenesis returns the module's exported GenesisState -func ExportGenesis(ctx sdk.Context, k *keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) - - genesis.BlacklistedList = k.GetAllBlacklisted(ctx) - - paused := k.GetPaused(ctx) - genesis.Paused = &paused - - masterMinter, found := k.GetMasterMinter(ctx) - if found { - genesis.MasterMinter = &masterMinter - } - genesis.MintersList = k.GetAllMinters(ctx) - - pauser, found := k.GetPauser(ctx) - if found { - genesis.Pauser = &pauser - } - - blacklister, found := k.GetBlacklister(ctx) - if found { - genesis.Blacklister = &blacklister - } - - owner, found := k.GetOwner(ctx) - if found { - genesis.Owner = &owner - } - genesis.MinterControllerList = k.GetAllMinterControllers(ctx) - - mintingDenom := k.GetMintingDenom(ctx) - genesis.MintingDenom = &mintingDenom - // this line is used by starport scaffolding # genesis/module/export - - return genesis -} diff --git a/x/tokenfactory/genesis_test.go b/x/tokenfactory/genesis_test.go deleted file mode 100644 index 6c18096c..00000000 --- a/x/tokenfactory/genesis_test.go +++ /dev/null @@ -1,81 +0,0 @@ -package tokenfactory_test - -import ( - "testing" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/stretchr/testify/require" -) - -func TestGenesis(t *testing.T) { - genesisState := types.GenesisState{ - Params: types.DefaultParams(), - - BlacklistedList: []types.Blacklisted{ - { - AddressBz: []byte("0"), - }, - { - AddressBz: []byte("1"), - }, - }, - Paused: &types.Paused{ - Paused: true, - }, - MasterMinter: &types.MasterMinter{ - Address: "79", - }, - MintersList: []types.Minters{ - { - Address: "0", - }, - { - Address: "1", - }, - }, - Pauser: &types.Pauser{ - Address: "96", - }, - Blacklister: &types.Blacklister{ - Address: "20", - }, - Owner: &types.Owner{ - Address: "98", - }, - MinterControllerList: []types.MinterController{ - { - Minter: "0", - }, - { - Minter: "1", - }, - }, - MintingDenom: &types.MintingDenom{ - Denom: "65", - }, - // this line is used by starport scaffolding # genesis/test/state - } - - k, ctx := keepertest.TokenfactoryKeeper(t) - tokenfactory.InitGenesis(ctx, k, keepertest.MockBankKeeper{}, genesisState) - got := tokenfactory.ExportGenesis(ctx, k) - require.NotNil(t, got) - - nullify.Fill(&genesisState) - nullify.Fill(got) - - require.ElementsMatch(t, genesisState.BlacklistedList, got.BlacklistedList) - require.Equal(t, genesisState.Paused, got.Paused) - require.Equal(t, genesisState.MasterMinter, got.MasterMinter) - require.ElementsMatch(t, genesisState.MintersList, got.MintersList) - require.Equal(t, genesisState.Pauser, got.Pauser) - require.Equal(t, genesisState.Blacklister, got.Blacklister) - require.Equal(t, genesisState.Owner, got.Owner) - require.ElementsMatch(t, genesisState.MinterControllerList, got.MinterControllerList) - require.Equal(t, genesisState.MintingDenom, got.MintingDenom) - // this line is used by starport scaffolding # genesis/test/assert -} diff --git a/x/tokenfactory/keeper/blacklisted.go b/x/tokenfactory/keeper/blacklisted.go deleted file mode 100644 index 99dd7223..00000000 --- a/x/tokenfactory/keeper/blacklisted.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// SetBlacklisted set a specific blacklisted in the store from its index -func (k Keeper) SetBlacklisted(ctx sdk.Context, blacklisted types.Blacklisted) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.BlacklistedKeyPrefix)) - b := k.cdc.MustMarshal(&blacklisted) - store.Set(types.BlacklistedKey(blacklisted.AddressBz), b) -} - -// GetBlacklisted returns a blacklisted from its index -func (k Keeper) GetBlacklisted(ctx sdk.Context, addressBz []byte) (val types.Blacklisted, found bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.BlacklistedKeyPrefix)) - - b := store.Get(types.BlacklistedKey(addressBz)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} - -// RemoveBlacklisted removes a blacklisted from the store -func (k Keeper) RemoveBlacklisted(ctx sdk.Context, addressBz []byte) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.BlacklistedKeyPrefix)) - store.Delete(types.BlacklistedKey(addressBz)) -} - -// GetAllBlacklisted returns all blacklisted -func (k Keeper) GetAllBlacklisted(ctx sdk.Context) (list []types.Blacklisted) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.BlacklistedKeyPrefix)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Blacklisted - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} diff --git a/x/tokenfactory/keeper/blacklisted_test.go b/x/tokenfactory/keeper/blacklisted_test.go deleted file mode 100644 index 0873ed41..00000000 --- a/x/tokenfactory/keeper/blacklisted_test.go +++ /dev/null @@ -1,76 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/stretchr/testify/require" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -type blacklistedWrapper struct { - address string - bl types.Blacklisted -} - -func createNBlacklisted(keeper *keeper.Keeper, ctx sdk.Context, n int) []blacklistedWrapper { - items := make([]blacklistedWrapper, n) - for i := range items { - acc := sample.TestAccount() - items[i].address = acc.Address - items[i].bl.AddressBz = acc.AddressBz - - keeper.SetBlacklisted(ctx, items[i].bl) - } - return items -} - -func TestBlacklistedGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNBlacklisted(keeper, ctx, 10) - for _, item := range items { - rst, found := keeper.GetBlacklisted(ctx, - item.bl.AddressBz, - ) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item.bl), - nullify.Fill(&rst), - ) - } -} - -func TestBlacklistedRemove(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNBlacklisted(keeper, ctx, 10) - for _, item := range items { - keeper.RemoveBlacklisted(ctx, - item.bl.AddressBz, - ) - _, found := keeper.GetBlacklisted(ctx, - item.bl.AddressBz, - ) - require.False(t, found) - } -} - -func TestBlacklistedGetAll(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNBlacklisted(keeper, ctx, 10) - blacklisted := make([]types.Blacklisted, len(items)) - for i, item := range items { - blacklisted[i] = item.bl - } - require.ElementsMatch(t, - nullify.Fill(blacklisted), - nullify.Fill(keeper.GetAllBlacklisted(ctx)), - ) -} diff --git a/x/tokenfactory/keeper/blacklister.go b/x/tokenfactory/keeper/blacklister.go deleted file mode 100644 index 40c86647..00000000 --- a/x/tokenfactory/keeper/blacklister.go +++ /dev/null @@ -1,27 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetBlacklister set blacklister in the store -func (k Keeper) SetBlacklister(ctx sdk.Context, blacklister types.Blacklister) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&blacklister) - store.Set(types.KeyPrefix(types.BlacklisterKey), b) -} - -// GetBlacklister returns blacklister -func (k Keeper) GetBlacklister(ctx sdk.Context) (val types.Blacklister, found bool) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.BlacklisterKey)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} diff --git a/x/tokenfactory/keeper/blacklister_test.go b/x/tokenfactory/keeper/blacklister_test.go deleted file mode 100644 index dbc2168d..00000000 --- a/x/tokenfactory/keeper/blacklister_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func createTestBlacklister(keeper *keeper.Keeper, ctx sdk.Context) types.Blacklister { - item := types.Blacklister{} - keeper.SetBlacklister(ctx, item) - return item -} - -func TestBlacklisterGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - item := createTestBlacklister(keeper, ctx) - rst, found := keeper.GetBlacklister(ctx) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/keeper/grpc_query.go b/x/tokenfactory/keeper/grpc_query.go deleted file mode 100644 index f60a513d..00000000 --- a/x/tokenfactory/keeper/grpc_query.go +++ /dev/null @@ -1,7 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -var _ types.QueryServer = Keeper{} diff --git a/x/tokenfactory/keeper/grpc_query_blacklisted.go b/x/tokenfactory/keeper/grpc_query_blacklisted.go deleted file mode 100644 index 59042d15..00000000 --- a/x/tokenfactory/keeper/grpc_query_blacklisted.go +++ /dev/null @@ -1,60 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" - "github.com/cosmos/cosmos-sdk/types/query" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) BlacklistedAll(c context.Context, req *types.QueryAllBlacklistedRequest) (*types.QueryAllBlacklistedResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var blacklisteds []types.Blacklisted - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - blacklistedStore := prefix.NewStore(store, types.KeyPrefix(types.BlacklistedKeyPrefix)) - - pageRes, err := query.Paginate(blacklistedStore, req.Pagination, func(key []byte, value []byte) error { - var blacklisted types.Blacklisted - if err := k.cdc.Unmarshal(value, &blacklisted); err != nil { - return err - } - - blacklisteds = append(blacklisteds, blacklisted) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllBlacklistedResponse{Blacklisted: blacklisteds, Pagination: pageRes}, nil -} - -func (k Keeper) Blacklisted(c context.Context, req *types.QueryGetBlacklistedRequest) (*types.QueryGetBlacklistedResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - _, addressBz, err := bech32.DecodeAndConvert(req.Address) - if err != nil { - return nil, err - } - - val, found := k.GetBlacklisted(ctx, addressBz) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetBlacklistedResponse{Blacklisted: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_blacklisted_test.go b/x/tokenfactory/keeper/grpc_query_blacklisted_test.go deleted file mode 100644 index 67831708..00000000 --- a/x/tokenfactory/keeper/grpc_query_blacklisted_test.go +++ /dev/null @@ -1,131 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func TestBlacklistedQuerySingle(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNBlacklisted(keeper, ctx, 2) - for _, tc := range []struct { - desc string - request *types.QueryGetBlacklistedRequest - response *types.QueryGetBlacklistedResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetBlacklistedRequest{ - Address: msgs[0].address, - }, - response: &types.QueryGetBlacklistedResponse{Blacklisted: msgs[0].bl}, - }, - { - desc: "Second", - request: &types.QueryGetBlacklistedRequest{ - Address: msgs[1].address, - }, - response: &types.QueryGetBlacklistedResponse{Blacklisted: msgs[1].bl}, - }, - { - desc: "KeyNotFound", - request: &types.QueryGetBlacklistedRequest{ - Address: sample.AccAddress(), - }, - err: status.Error(codes.NotFound, "not found"), - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Blacklisted(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} - -func TestBlacklistedQueryPaginated(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNBlacklisted(keeper, ctx, 5) - blacklisted := make([]types.Blacklisted, len(msgs)) - for i, msg := range msgs { - blacklisted[i] = msg.bl - } - - request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllBlacklistedRequest { - return &types.QueryAllBlacklistedRequest{ - Pagination: &query.PageRequest{ - Key: next, - Offset: offset, - Limit: limit, - CountTotal: total, - }, - } - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(blacklisted); i += step { - resp, err := keeper.BlacklistedAll(wctx, request(nil, uint64(i), uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.Blacklisted), step) - require.Subset(t, - nullify.Fill(blacklisted), - nullify.Fill(resp.Blacklisted), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(blacklisted); i += step { - resp, err := keeper.BlacklistedAll(wctx, request(next, 0, uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.Blacklisted), step) - require.Subset(t, - nullify.Fill(blacklisted), - nullify.Fill(resp.Blacklisted), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - resp, err := keeper.BlacklistedAll(wctx, request(nil, 0, 0, true)) - require.NoError(t, err) - require.Equal(t, len(blacklisted), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(blacklisted), - nullify.Fill(resp.Blacklisted), - ) - }) - t.Run("InvalidRequest", func(t *testing.T) { - _, err := keeper.BlacklistedAll(wctx, nil) - require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) - }) -} diff --git a/x/tokenfactory/keeper/grpc_query_blacklister.go b/x/tokenfactory/keeper/grpc_query_blacklister.go deleted file mode 100644 index a3005ce9..00000000 --- a/x/tokenfactory/keeper/grpc_query_blacklister.go +++ /dev/null @@ -1,24 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Blacklister(c context.Context, req *types.QueryGetBlacklisterRequest) (*types.QueryGetBlacklisterResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetBlacklister(ctx) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetBlacklisterResponse{Blacklister: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_blacklister_test.go b/x/tokenfactory/keeper/grpc_query_blacklister_test.go deleted file mode 100644 index 24494379..00000000 --- a/x/tokenfactory/keeper/grpc_query_blacklister_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestBlacklisterQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - item := createTestBlacklister(keeper, ctx) - for _, tc := range []struct { - desc string - request *types.QueryGetBlacklisterRequest - response *types.QueryGetBlacklisterResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetBlacklisterRequest{}, - response: &types.QueryGetBlacklisterResponse{Blacklister: item}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Blacklister(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/grpc_query_master_minter.go b/x/tokenfactory/keeper/grpc_query_master_minter.go deleted file mode 100644 index 1c80bc6f..00000000 --- a/x/tokenfactory/keeper/grpc_query_master_minter.go +++ /dev/null @@ -1,24 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) MasterMinter(c context.Context, req *types.QueryGetMasterMinterRequest) (*types.QueryGetMasterMinterResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetMasterMinter(ctx) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetMasterMinterResponse{MasterMinter: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_master_minter_test.go b/x/tokenfactory/keeper/grpc_query_master_minter_test.go deleted file mode 100644 index 0d2be487..00000000 --- a/x/tokenfactory/keeper/grpc_query_master_minter_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestMasterMinterQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - item := createTestMasterMinter(keeper, ctx) - for _, tc := range []struct { - desc string - request *types.QueryGetMasterMinterRequest - response *types.QueryGetMasterMinterResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetMasterMinterRequest{}, - response: &types.QueryGetMasterMinterResponse{MasterMinter: item}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.MasterMinter(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/grpc_query_minter_controller.go b/x/tokenfactory/keeper/grpc_query_minter_controller.go deleted file mode 100644 index 82fa984e..00000000 --- a/x/tokenfactory/keeper/grpc_query_minter_controller.go +++ /dev/null @@ -1,58 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) MinterControllerAll(c context.Context, req *types.QueryAllMinterControllerRequest) (*types.QueryAllMinterControllerResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var minterControllers []types.MinterController - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - minterControllerStore := prefix.NewStore(store, types.KeyPrefix(types.MinterControllerKeyPrefix)) - - pageRes, err := query.Paginate(minterControllerStore, req.Pagination, func(key []byte, value []byte) error { - var minterController types.MinterController - if err := k.cdc.Unmarshal(value, &minterController); err != nil { - return err - } - - minterControllers = append(minterControllers, minterController) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllMinterControllerResponse{MinterController: minterControllers, Pagination: pageRes}, nil -} - -func (k Keeper) MinterController(c context.Context, req *types.QueryGetMinterControllerRequest) (*types.QueryGetMinterControllerResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetMinterController( - ctx, - req.ControllerAddress, - ) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetMinterControllerResponse{MinterController: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_minter_controller_test.go b/x/tokenfactory/keeper/grpc_query_minter_controller_test.go deleted file mode 100644 index 077f2a8b..00000000 --- a/x/tokenfactory/keeper/grpc_query_minter_controller_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func TestMinterControllerQuerySingle(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNMinterController(keeper, ctx, 2) - for _, tc := range []struct { - desc string - request *types.QueryGetMinterControllerRequest - response *types.QueryGetMinterControllerResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetMinterControllerRequest{ - ControllerAddress: msgs[0].Controller, - }, - response: &types.QueryGetMinterControllerResponse{MinterController: msgs[0]}, - }, - { - desc: "Second", - request: &types.QueryGetMinterControllerRequest{ - ControllerAddress: msgs[1].Controller, - }, - response: &types.QueryGetMinterControllerResponse{MinterController: msgs[1]}, - }, - { - desc: "KeyNotFound", - request: &types.QueryGetMinterControllerRequest{ - ControllerAddress: strconv.Itoa(100000), - }, - err: status.Error(codes.NotFound, "not found"), - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.MinterController(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} - -func TestMinterControllerQueryPaginated(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNMinterController(keeper, ctx, 5) - - request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllMinterControllerRequest { - return &types.QueryAllMinterControllerRequest{ - Pagination: &query.PageRequest{ - Key: next, - Offset: offset, - Limit: limit, - CountTotal: total, - }, - } - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(msgs); i += step { - resp, err := keeper.MinterControllerAll(wctx, request(nil, uint64(i), uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.MinterController), step) - require.Subset(t, - nullify.Fill(msgs), - nullify.Fill(resp.MinterController), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(msgs); i += step { - resp, err := keeper.MinterControllerAll(wctx, request(next, 0, uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.MinterController), step) - require.Subset(t, - nullify.Fill(msgs), - nullify.Fill(resp.MinterController), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - resp, err := keeper.MinterControllerAll(wctx, request(nil, 0, 0, true)) - require.NoError(t, err) - require.Equal(t, len(msgs), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(msgs), - nullify.Fill(resp.MinterController), - ) - }) - t.Run("InvalidRequest", func(t *testing.T) { - _, err := keeper.MinterControllerAll(wctx, nil) - require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) - }) -} diff --git a/x/tokenfactory/keeper/grpc_query_minters.go b/x/tokenfactory/keeper/grpc_query_minters.go deleted file mode 100644 index 44a41f96..00000000 --- a/x/tokenfactory/keeper/grpc_query_minters.go +++ /dev/null @@ -1,57 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) MintersAll(c context.Context, req *types.QueryAllMintersRequest) (*types.QueryAllMintersResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - - var minters []types.Minters - ctx := sdk.UnwrapSDKContext(c) - - store := ctx.KVStore(k.storeKey) - mintersStore := prefix.NewStore(store, types.KeyPrefix(types.MintersKeyPrefix)) - - pageRes, err := query.Paginate(mintersStore, req.Pagination, func(key []byte, value []byte) error { - var minter types.Minters - if err := k.cdc.Unmarshal(value, &minter); err != nil { - return err - } - - minters = append(minters, minter) - return nil - }) - - if err != nil { - return nil, status.Error(codes.Internal, err.Error()) - } - - return &types.QueryAllMintersResponse{Minters: minters, Pagination: pageRes}, nil -} - -func (k Keeper) Minters(c context.Context, req *types.QueryGetMintersRequest) (*types.QueryGetMintersResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetMinters( - ctx, - req.Address, - ) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetMintersResponse{Minters: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_minters_test.go b/x/tokenfactory/keeper/grpc_query_minters_test.go deleted file mode 100644 index 61166933..00000000 --- a/x/tokenfactory/keeper/grpc_query_minters_test.go +++ /dev/null @@ -1,126 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/query" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func TestMintersQuerySingle(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNMinters(keeper, ctx, 2) - for _, tc := range []struct { - desc string - request *types.QueryGetMintersRequest - response *types.QueryGetMintersResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetMintersRequest{ - Address: msgs[0].Address, - }, - response: &types.QueryGetMintersResponse{Minters: msgs[0]}, - }, - { - desc: "Second", - request: &types.QueryGetMintersRequest{ - Address: msgs[1].Address, - }, - response: &types.QueryGetMintersResponse{Minters: msgs[1]}, - }, - { - desc: "KeyNotFound", - request: &types.QueryGetMintersRequest{ - Address: strconv.Itoa(100000), - }, - err: status.Error(codes.NotFound, "not found"), - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Minters(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} - -func TestMintersQueryPaginated(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - msgs := createNMinters(keeper, ctx, 5) - - request := func(next []byte, offset, limit uint64, total bool) *types.QueryAllMintersRequest { - return &types.QueryAllMintersRequest{ - Pagination: &query.PageRequest{ - Key: next, - Offset: offset, - Limit: limit, - CountTotal: total, - }, - } - } - t.Run("ByOffset", func(t *testing.T) { - step := 2 - for i := 0; i < len(msgs); i += step { - resp, err := keeper.MintersAll(wctx, request(nil, uint64(i), uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.Minters), step) - require.Subset(t, - nullify.Fill(msgs), - nullify.Fill(resp.Minters), - ) - } - }) - t.Run("ByKey", func(t *testing.T) { - step := 2 - var next []byte - for i := 0; i < len(msgs); i += step { - resp, err := keeper.MintersAll(wctx, request(next, 0, uint64(step), false)) - require.NoError(t, err) - require.LessOrEqual(t, len(resp.Minters), step) - require.Subset(t, - nullify.Fill(msgs), - nullify.Fill(resp.Minters), - ) - next = resp.Pagination.NextKey - } - }) - t.Run("Total", func(t *testing.T) { - resp, err := keeper.MintersAll(wctx, request(nil, 0, 0, true)) - require.NoError(t, err) - require.Equal(t, len(msgs), int(resp.Pagination.Total)) - require.ElementsMatch(t, - nullify.Fill(msgs), - nullify.Fill(resp.Minters), - ) - }) - t.Run("InvalidRequest", func(t *testing.T) { - _, err := keeper.MintersAll(wctx, nil) - require.ErrorIs(t, err, status.Error(codes.InvalidArgument, "invalid request")) - }) -} diff --git a/x/tokenfactory/keeper/grpc_query_minting_denom.go b/x/tokenfactory/keeper/grpc_query_minting_denom.go deleted file mode 100644 index de40d50d..00000000 --- a/x/tokenfactory/keeper/grpc_query_minting_denom.go +++ /dev/null @@ -1,22 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) MintingDenom(c context.Context, req *types.QueryGetMintingDenomRequest) (*types.QueryGetMintingDenomResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val := k.GetMintingDenom(ctx) - - return &types.QueryGetMintingDenomResponse{MintingDenom: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_minting_denom_test.go b/x/tokenfactory/keeper/grpc_query_minting_denom_test.go deleted file mode 100644 index e49224a2..00000000 --- a/x/tokenfactory/keeper/grpc_query_minting_denom_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestMintingDenomQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - item := createTestMintingDenom(keeper, ctx) - for _, tc := range []struct { - desc string - request *types.QueryGetMintingDenomRequest - response *types.QueryGetMintingDenomResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetMintingDenomRequest{}, - response: &types.QueryGetMintingDenomResponse{MintingDenom: item}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.MintingDenom(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/grpc_query_owner.go b/x/tokenfactory/keeper/grpc_query_owner.go deleted file mode 100644 index d97526ca..00000000 --- a/x/tokenfactory/keeper/grpc_query_owner.go +++ /dev/null @@ -1,24 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Owner(c context.Context, req *types.QueryGetOwnerRequest) (*types.QueryGetOwnerResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetOwner(ctx) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetOwnerResponse{Owner: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_owner_test.go b/x/tokenfactory/keeper/grpc_query_owner_test.go deleted file mode 100644 index b7feb1d2..00000000 --- a/x/tokenfactory/keeper/grpc_query_owner_test.go +++ /dev/null @@ -1,50 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestOwnerQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - owner := types.Owner{Address: "test"} - keeper.SetOwner(ctx, owner) - for _, tc := range []struct { - desc string - request *types.QueryGetOwnerRequest - response *types.QueryGetOwnerResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetOwnerRequest{}, - response: &types.QueryGetOwnerResponse{Owner: owner}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Owner(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/grpc_query_params.go b/x/tokenfactory/keeper/grpc_query_params.go deleted file mode 100644 index 1ab5c858..00000000 --- a/x/tokenfactory/keeper/grpc_query_params.go +++ /dev/null @@ -1,19 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Params(c context.Context, req *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - return &types.QueryParamsResponse{Params: k.GetParams(ctx)}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_params_test.go b/x/tokenfactory/keeper/grpc_query_params_test.go deleted file mode 100644 index ee91cdeb..00000000 --- a/x/tokenfactory/keeper/grpc_query_params_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - testkeeper "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/stretchr/testify/require" -) - -func TestParamsQuery(t *testing.T) { - keeper, ctx := testkeeper.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - params := types.DefaultParams() - keeper.SetParams(ctx, params) - - response, err := keeper.Params(wctx, &types.QueryParamsRequest{}) - require.NoError(t, err) - require.Equal(t, &types.QueryParamsResponse{Params: params}, response) -} diff --git a/x/tokenfactory/keeper/grpc_query_paused.go b/x/tokenfactory/keeper/grpc_query_paused.go deleted file mode 100644 index 4cda1c94..00000000 --- a/x/tokenfactory/keeper/grpc_query_paused.go +++ /dev/null @@ -1,22 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Paused(c context.Context, req *types.QueryGetPausedRequest) (*types.QueryGetPausedResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val := k.GetPaused(ctx) - - return &types.QueryGetPausedResponse{Paused: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_paused_test.go b/x/tokenfactory/keeper/grpc_query_paused_test.go deleted file mode 100644 index f13f463a..00000000 --- a/x/tokenfactory/keeper/grpc_query_paused_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestPausedQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - item := createTestPaused(keeper, ctx) - for _, tc := range []struct { - desc string - request *types.QueryGetPausedRequest - response *types.QueryGetPausedResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetPausedRequest{}, - response: &types.QueryGetPausedResponse{Paused: item}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Paused(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/grpc_query_pauser.go b/x/tokenfactory/keeper/grpc_query_pauser.go deleted file mode 100644 index dea96e6a..00000000 --- a/x/tokenfactory/keeper/grpc_query_pauser.go +++ /dev/null @@ -1,24 +0,0 @@ -package keeper - -import ( - "context" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" -) - -func (k Keeper) Pauser(c context.Context, req *types.QueryGetPauserRequest) (*types.QueryGetPauserResponse, error) { - if req == nil { - return nil, status.Error(codes.InvalidArgument, "invalid request") - } - ctx := sdk.UnwrapSDKContext(c) - - val, found := k.GetPauser(ctx) - if !found { - return nil, status.Error(codes.NotFound, "not found") - } - - return &types.QueryGetPauserResponse{Pauser: val}, nil -} diff --git a/x/tokenfactory/keeper/grpc_query_pauser_test.go b/x/tokenfactory/keeper/grpc_query_pauser_test.go deleted file mode 100644 index b84778d2..00000000 --- a/x/tokenfactory/keeper/grpc_query_pauser_test.go +++ /dev/null @@ -1,49 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestPauserQuery(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - wctx := sdk.WrapSDKContext(ctx) - item := createTestPauser(keeper, ctx) - for _, tc := range []struct { - desc string - request *types.QueryGetPauserRequest - response *types.QueryGetPauserResponse - err error - }{ - { - desc: "First", - request: &types.QueryGetPauserRequest{}, - response: &types.QueryGetPauserResponse{Pauser: item}, - }, - { - desc: "InvalidRequest", - err: status.Error(codes.InvalidArgument, "invalid request"), - }, - } { - t.Run(tc.desc, func(t *testing.T) { - response, err := keeper.Pauser(wctx, tc.request) - if tc.err != nil { - require.ErrorIs(t, err, tc.err) - } else { - require.NoError(t, err) - require.Equal(t, - nullify.Fill(tc.response), - nullify.Fill(response), - ) - } - }) - } -} diff --git a/x/tokenfactory/keeper/keeper.go b/x/tokenfactory/keeper/keeper.go deleted file mode 100644 index 13f266db..00000000 --- a/x/tokenfactory/keeper/keeper.go +++ /dev/null @@ -1,79 +0,0 @@ -package keeper - -import ( - "fmt" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/codec" - storetypes "github.com/cosmos/cosmos-sdk/store/types" - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "github.com/tendermint/tendermint/libs/log" -) - -type ( - Keeper struct { - cdc codec.BinaryCodec - storeKey storetypes.StoreKey - paramstore paramtypes.Subspace - - bankKeeper types.BankKeeper - } -) - -func NewKeeper( - cdc codec.BinaryCodec, - storeKey storetypes.StoreKey, - ps paramtypes.Subspace, - - bankKeeper types.BankKeeper, -) *Keeper { - // set KeyTable if it has not already been set - if !ps.HasKeyTable() { - ps = ps.WithKeyTable(types.ParamKeyTable()) - } - - return &Keeper{ - - cdc: cdc, - storeKey: storeKey, - paramstore: ps, - bankKeeper: bankKeeper, - } -} - -func (k Keeper) Logger(ctx sdk.Context) log.Logger { - return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) -} - -// ValidatePrivileges checks if a specified address has already been assigned to a privileged role. -func (k Keeper) ValidatePrivileges(ctx sdk.Context, address string) error { - acc, err := sdk.AccAddressFromBech32(address) - if err != nil { - return err - } - - owner, found := k.GetOwner(ctx) - if found && owner.Address == acc.String() { - return sdkerrors.Wrapf(types.ErrAlreadyPrivileged, "cannot assign (%s) to owner role", acc.String()) - } - - blacklister, found := k.GetBlacklister(ctx) - if found && blacklister.Address == acc.String() { - return sdkerrors.Wrapf(types.ErrAlreadyPrivileged, "cannot assign (%s) to black lister role", acc.String()) - } - - masterminter, found := k.GetMasterMinter(ctx) - if found && masterminter.Address == acc.String() { - return sdkerrors.Wrapf(types.ErrAlreadyPrivileged, "cannot assign (%s) to master minter role", acc.String()) - } - - pauser, found := k.GetPauser(ctx) - if found && pauser.Address == acc.String() { - return sdkerrors.Wrapf(types.ErrAlreadyPrivileged, "cannot assign (%s) to pauser role", acc.String()) - } - - return nil -} diff --git a/x/tokenfactory/keeper/master_minter.go b/x/tokenfactory/keeper/master_minter.go deleted file mode 100644 index e5ab5695..00000000 --- a/x/tokenfactory/keeper/master_minter.go +++ /dev/null @@ -1,27 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetMasterMinter set masterMinter in the store -func (k Keeper) SetMasterMinter(ctx sdk.Context, masterMinter types.MasterMinter) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&masterMinter) - store.Set(types.KeyPrefix(types.MasterMinterKey), b) -} - -// GetMasterMinter returns masterMinter -func (k Keeper) GetMasterMinter(ctx sdk.Context) (val types.MasterMinter, found bool) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.MasterMinterKey)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} diff --git a/x/tokenfactory/keeper/master_minter_test.go b/x/tokenfactory/keeper/master_minter_test.go deleted file mode 100644 index 7c8d81e4..00000000 --- a/x/tokenfactory/keeper/master_minter_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func createTestMasterMinter(keeper *keeper.Keeper, ctx sdk.Context) types.MasterMinter { - item := types.MasterMinter{} - keeper.SetMasterMinter(ctx, item) - return item -} - -func TestMasterMinterGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - item := createTestMasterMinter(keeper, ctx) - rst, found := keeper.GetMasterMinter(ctx) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/keeper/minter_controller.go b/x/tokenfactory/keeper/minter_controller.go deleted file mode 100644 index 93ac15dd..00000000 --- a/x/tokenfactory/keeper/minter_controller.go +++ /dev/null @@ -1,64 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetMinterController set a specific minterController in the store from its index -func (k Keeper) SetMinterController(ctx sdk.Context, minterController types.MinterController) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MinterControllerKeyPrefix)) - b := k.cdc.MustMarshal(&minterController) - store.Set(types.MinterControllerKey( - minterController.Controller, - ), b) -} - -// GetMinterController returns a minterController from its index -func (k Keeper) GetMinterController( - ctx sdk.Context, - controller string, - -) (val types.MinterController, found bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MinterControllerKeyPrefix)) - - b := store.Get(types.MinterControllerKey( - controller, - )) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} - -// RemoveMinterController removes a minterController from the store -func (k Keeper) DeleteMinterController( - ctx sdk.Context, - controller string, - -) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MinterControllerKeyPrefix)) - store.Delete(types.MinterControllerKey( - controller, - )) -} - -// GetAllMinterController returns all minterController -func (k Keeper) GetAllMinterControllers(ctx sdk.Context) (list []types.MinterController) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MinterControllerKeyPrefix)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.MinterController - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} diff --git a/x/tokenfactory/keeper/minter_controller_test.go b/x/tokenfactory/keeper/minter_controller_test.go deleted file mode 100644 index c3955a14..00000000 --- a/x/tokenfactory/keeper/minter_controller_test.go +++ /dev/null @@ -1,64 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func createNMinterController(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.MinterController { - items := make([]types.MinterController, n) - for i := range items { - items[i].Controller = strconv.Itoa(i) - - keeper.SetMinterController(ctx, items[i]) - } - return items -} - -func TestMinterControllerGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinterController(keeper, ctx, 10) - for _, item := range items { - rst, found := keeper.GetMinterController(ctx, - item.Controller, - ) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) - } -} -func TestMinterControllerRemove(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinterController(keeper, ctx, 10) - for _, item := range items { - keeper.DeleteMinterController(ctx, - item.Minter, - ) - _, found := keeper.GetMinterController(ctx, - item.Minter, - ) - require.False(t, found) - } -} - -func TestMinterControllerGetAll(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinterController(keeper, ctx, 10) - require.ElementsMatch(t, - nullify.Fill(items), - nullify.Fill(keeper.GetAllMinterControllers(ctx)), - ) -} diff --git a/x/tokenfactory/keeper/minters.go b/x/tokenfactory/keeper/minters.go deleted file mode 100644 index aa0ddeaa..00000000 --- a/x/tokenfactory/keeper/minters.go +++ /dev/null @@ -1,63 +0,0 @@ -package keeper - -import ( - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// SetMinters set a specific minters in the store from its index -func (k Keeper) SetMinters(ctx sdk.Context, minters types.Minters) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintersKeyPrefix)) - b := k.cdc.MustMarshal(&minters) - store.Set(types.MintersKey( - minters.Address, - ), b) -} - -// GetMinters returns a minters from its index -func (k Keeper) GetMinters( - ctx sdk.Context, - address string, - -) (val types.Minters, found bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintersKeyPrefix)) - - b := store.Get(types.MintersKey( - address, - )) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} - -// RemoveMinters removes a minters from the store -func (k Keeper) RemoveMinters( - ctx sdk.Context, - address string, - -) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintersKeyPrefix)) - store.Delete(types.MintersKey( - address, - )) -} - -// GetAllMinters returns all minters -func (k Keeper) GetAllMinters(ctx sdk.Context) (list []types.Minters) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintersKeyPrefix)) - iterator := sdk.KVStorePrefixIterator(store, []byte{}) - - defer iterator.Close() - - for ; iterator.Valid(); iterator.Next() { - var val types.Minters - k.cdc.MustUnmarshal(iterator.Value(), &val) - list = append(list, val) - } - - return -} diff --git a/x/tokenfactory/keeper/minters_test.go b/x/tokenfactory/keeper/minters_test.go deleted file mode 100644 index 35960d3e..00000000 --- a/x/tokenfactory/keeper/minters_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package keeper_test - -import ( - "strconv" - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/stretchr/testify/require" -) - -// Prevent strconv unused error -var _ = strconv.IntSize - -func createNMinters(keeper *keeper.Keeper, ctx sdk.Context, n int) []types.Minters { - items := make([]types.Minters, n) - for i := range items { - items[i].Address = strconv.Itoa(i) - - keeper.SetMinters(ctx, items[i]) - } - return items -} - -func TestMintersGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinters(keeper, ctx, 10) - for _, item := range items { - rst, found := keeper.GetMinters(ctx, - item.Address, - ) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) - } -} -func TestMintersRemove(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinters(keeper, ctx, 10) - for _, item := range items { - keeper.RemoveMinters(ctx, - item.Address, - ) - _, found := keeper.GetMinters(ctx, - item.Address, - ) - require.False(t, found) - } -} - -func TestMintersGetAll(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - items := createNMinters(keeper, ctx, 10) - require.ElementsMatch(t, - nullify.Fill(items), - nullify.Fill(keeper.GetAllMinters(ctx)), - ) -} diff --git a/x/tokenfactory/keeper/minting_denom.go b/x/tokenfactory/keeper/minting_denom.go deleted file mode 100644 index 81361897..00000000 --- a/x/tokenfactory/keeper/minting_denom.go +++ /dev/null @@ -1,51 +0,0 @@ -package keeper - -import ( - "fmt" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetMintingDenom set mintingDenom in the store -func (k *Keeper) SetMintingDenom(ctx sdk.Context, mintingDenom types.MintingDenom) { - if k.MintingDenomSet(ctx) { - panic(types.ErrMintingDenomSet) - } - - _, found := k.bankKeeper.GetDenomMetaData(ctx, mintingDenom.Denom) - if !found { - panic(fmt.Sprintf("Denom metadata for '%s' should be set", mintingDenom.Denom)) - } - - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintingDenomKey)) - b := k.cdc.MustMarshal(&mintingDenom) - store.Set(types.KeyPrefix(types.MintingDenomKey), b) -} - -// GetMintingDenom returns mintingDenom -func (k *Keeper) GetMintingDenom(ctx sdk.Context) (val types.MintingDenom) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintingDenomKey)) - - b := store.Get(types.KeyPrefix(types.MintingDenomKey)) - if b == nil { - panic("Minting denom is not set") - } - - k.cdc.MustUnmarshal(b, &val) - return val -} - -// MintingDenomSet returns true if the MintingDenom is already set in the store, it returns false otherwise. -func (k Keeper) MintingDenomSet(ctx sdk.Context) bool { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.KeyPrefix(types.MintingDenomKey)) - - b := store.Get(types.KeyPrefix(types.MintingDenomKey)) - if b == nil { - return false - } - - return true -} diff --git a/x/tokenfactory/keeper/minting_denom_test.go b/x/tokenfactory/keeper/minting_denom_test.go deleted file mode 100644 index a035a4f5..00000000 --- a/x/tokenfactory/keeper/minting_denom_test.go +++ /dev/null @@ -1,31 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func createTestMintingDenom(keeper *keeper.Keeper, ctx sdk.Context) types.MintingDenom { - item := types.MintingDenom{ - Denom: "abcd", - } - keeper.SetMintingDenom(ctx, item) - return item -} - -func TestMintingDenomGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - item := createTestMintingDenom(keeper, ctx) - rst := keeper.GetMintingDenom(ctx) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/keeper/msg_server.go b/x/tokenfactory/keeper/msg_server.go deleted file mode 100644 index afd5289d..00000000 --- a/x/tokenfactory/keeper/msg_server.go +++ /dev/null @@ -1,17 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -type msgServer struct { - *Keeper -} - -// NewMsgServerImpl returns an implementation of the MsgServer interface -// for the provided Keeper. -func NewMsgServerImpl(keeper *Keeper) types.MsgServer { - return &msgServer{Keeper: keeper} -} - -var _ types.MsgServer = msgServer{} diff --git a/x/tokenfactory/keeper/msg_server_accept_owner.go b/x/tokenfactory/keeper/msg_server_accept_owner.go deleted file mode 100644 index 7daa8f92..00000000 --- a/x/tokenfactory/keeper/msg_server_accept_owner.go +++ /dev/null @@ -1,31 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) AcceptOwner(goCtx context.Context, msg *types.MsgAcceptOwner) (*types.MsgAcceptOwnerResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - owner, found := k.GetPendingOwner(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "pending owner is not set") - } - - if owner.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the pending owner") - } - - k.SetOwner(ctx, owner) - - k.DeletePendingOwner(ctx) - - err := ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgAcceptOwnerResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_blacklist.go b/x/tokenfactory/keeper/msg_server_blacklist.go deleted file mode 100644 index 4de08322..00000000 --- a/x/tokenfactory/keeper/msg_server_blacklist.go +++ /dev/null @@ -1,44 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/types/bech32" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) Blacklist(goCtx context.Context, msg *types.MsgBlacklist) (*types.MsgBlacklistResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - blacklister, found := k.GetBlacklister(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "blacklister is not set") - } - - if blacklister.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the blacklister") - } - - _, addressBz, err := bech32.DecodeAndConvert(msg.Address) - if err != nil { - return nil, err - } - - _, found = k.GetBlacklisted(ctx, addressBz) - if found { - return nil, types.ErrUserBlacklisted - } - - blacklisted := types.Blacklisted{ - AddressBz: addressBz, - } - - k.SetBlacklisted(ctx, blacklisted) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgBlacklistResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_burn.go b/x/tokenfactory/keeper/msg_server_burn.go deleted file mode 100644 index 3d14d932..00000000 --- a/x/tokenfactory/keeper/msg_server_burn.go +++ /dev/null @@ -1,65 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/bech32" -) - -func (k msgServer) Burn(goCtx context.Context, msg *types.MsgBurn) (*types.MsgBurnResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - return k.Keeper.Burn(ctx, msg) -} - -func (k Keeper) Burn(ctx sdk.Context, msg *types.MsgBurn) (*types.MsgBurnResponse, error) { - _, found := k.GetMinters(ctx, msg.From) - if !found { - return nil, sdkerrors.Wrapf(types.ErrBurn, "%v: you are not a minter", types.ErrUnauthorized) - } - - _, addressBz, err := bech32.DecodeAndConvert(msg.From) - if err != nil { - return nil, sdkerrors.Wrap(types.ErrBurn, err.Error()) - } - - _, found = k.GetBlacklisted(ctx, addressBz) - if found { - return nil, sdkerrors.Wrap(types.ErrBurn, "minter address is blacklisted") - } - - mintingDenom := k.GetMintingDenom(ctx) - - if msg.Amount.Denom != mintingDenom.Denom { - return nil, sdkerrors.Wrap(types.ErrBurn, "burning denom is incorrect") - } - - paused := k.GetPaused(ctx) - - if paused.Paused { - return nil, sdkerrors.Wrap(types.ErrBurn, "burning is paused") - } - - minterAddress, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return nil, sdkerrors.Wrap(types.ErrBurn, err.Error()) - } - - amount := sdk.NewCoins(msg.Amount) - - err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, minterAddress, types.ModuleName, amount) - if err != nil { - return nil, sdkerrors.Wrap(types.ErrBurn, err.Error()) - } - - if err := k.bankKeeper.BurnCoins(ctx, types.ModuleName, amount); err != nil { - return nil, sdkerrors.Wrap(types.ErrBurn, err.Error()) - } - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgBurnResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_configure_minter.go b/x/tokenfactory/keeper/msg_server_configure_minter.go deleted file mode 100644 index 53c0536c..00000000 --- a/x/tokenfactory/keeper/msg_server_configure_minter.go +++ /dev/null @@ -1,46 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) ConfigureMinter(goCtx context.Context, msg *types.MsgConfigureMinter) (*types.MsgConfigureMinterResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - mintingDenom := k.GetMintingDenom(ctx) - - if msg.Allowance.Denom != mintingDenom.Denom { - return nil, sdkerrors.Wrapf(types.ErrMint, "minting denom is incorrect") - } - - minterController, found := k.GetMinterController(ctx, msg.From) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "minter controller not found") - } - - if msg.From != minterController.Controller { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not a controller of this minter") - } - - if msg.Address != minterController.Minter { - return nil, sdkerrors.Wrapf( - types.ErrUnauthorized, - "minter address ≠ minter controller's minter address, (%s≠%s)", - msg.Address, minterController.Minter, - ) - } - - k.SetMinters(ctx, types.Minters{ - Address: msg.Address, - Allowance: msg.Allowance, - }) - - err := ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgConfigureMinterResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_configure_minter_controller.go b/x/tokenfactory/keeper/msg_server_configure_minter_controller.go deleted file mode 100644 index f0322cc0..00000000 --- a/x/tokenfactory/keeper/msg_server_configure_minter_controller.go +++ /dev/null @@ -1,32 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) ConfigureMinterController(goCtx context.Context, msg *types.MsgConfigureMinterController) (*types.MsgConfigureMinterControllerResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - masterMinter, found := k.GetMasterMinter(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "master minter is not set") - } - - if masterMinter.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the master minter") - } - - controller := types.MinterController{ - Minter: msg.Minter, - Controller: msg.Controller, - } - - k.SetMinterController(ctx, controller) - - return &types.MsgConfigureMinterControllerResponse{}, nil -} diff --git a/x/tokenfactory/keeper/msg_server_mint.go b/x/tokenfactory/keeper/msg_server_mint.go deleted file mode 100644 index d1494a43..00000000 --- a/x/tokenfactory/keeper/msg_server_mint.go +++ /dev/null @@ -1,80 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/types/bech32" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) Mint(goCtx context.Context, msg *types.MsgMint) (*types.MsgMintResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - return k.Keeper.Mint(ctx, msg) -} - -func (k Keeper) Mint(ctx sdk.Context, msg *types.MsgMint) (*types.MsgMintResponse, error) { - minter, found := k.GetMinters(ctx, msg.From) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not a minter") - } - - _, addressBz, err := bech32.DecodeAndConvert(msg.From) - if err != nil { - return nil, err - } - - _, found = k.GetBlacklisted(ctx, addressBz) - if found { - return nil, sdkerrors.Wrapf(types.ErrMint, "minter address is blacklisted") - } - - _, addressBz, err = bech32.DecodeAndConvert(msg.Address) - if err != nil { - return nil, err - } - - _, found = k.GetBlacklisted(ctx, addressBz) - if found { - return nil, sdkerrors.Wrapf(types.ErrMint, "receiver address is blacklisted") - } - - mintingDenom := k.GetMintingDenom(ctx) - - if msg.Amount.Denom != mintingDenom.Denom { - return nil, sdkerrors.Wrapf(types.ErrMint, "minting denom is incorrect") - } - - if minter.Allowance.IsLT(msg.Amount) { - return nil, sdkerrors.Wrapf(types.ErrMint, "minting amount is greater than the allowance") - } - - paused := k.GetPaused(ctx) - - if paused.Paused { - return nil, sdkerrors.Wrapf(types.ErrMint, "minting is paused") - } - - minter.Allowance = minter.Allowance.Sub(msg.Amount) - - k.SetMinters(ctx, minter) - - amount := sdk.NewCoins(msg.Amount) - - if err := k.bankKeeper.MintCoins(ctx, types.ModuleName, amount); err != nil { - return nil, sdkerrors.Wrap(types.ErrMint, err.Error()) - } - - receiver, _ := sdk.AccAddressFromBech32(msg.Address) - - if err := k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, receiver, amount); err != nil { - return nil, sdkerrors.Wrap(types.ErrSendCoinsToAccount, err.Error()) - } - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgMintResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_pause.go b/x/tokenfactory/keeper/msg_server_pause.go deleted file mode 100644 index d2e21bfa..00000000 --- a/x/tokenfactory/keeper/msg_server_pause.go +++ /dev/null @@ -1,33 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) Pause(goCtx context.Context, msg *types.MsgPause) (*types.MsgPauseResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - pauser, found := k.GetPauser(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "pauser is not set") - } - - if pauser.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the pauser") - } - - paused := types.Paused{ - Paused: true, - } - - k.SetPaused(ctx, paused) - - err := ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgPauseResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_remove_minter.go b/x/tokenfactory/keeper/msg_server_remove_minter.go deleted file mode 100644 index 410405fd..00000000 --- a/x/tokenfactory/keeper/msg_server_remove_minter.go +++ /dev/null @@ -1,42 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) RemoveMinter(goCtx context.Context, msg *types.MsgRemoveMinter) (*types.MsgRemoveMinterResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - minterController, found := k.GetMinterController(ctx, msg.From) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "minter controller not found") - } - - if msg.From != minterController.Controller { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not a controller of this minter") - } - - if msg.Address != minterController.Minter { - return nil, sdkerrors.Wrapf( - types.ErrUnauthorized, - "minter address ≠ minter controller's minter address, (%s≠%s)", - msg.Address, minterController.Minter, - ) - } - - minter, found := k.GetMinters(ctx, msg.Address) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "a minter with a given address doesn't exist") - } - - k.RemoveMinters(ctx, minter.Address) - - err := ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgRemoveMinterResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_remove_minter_controller.go b/x/tokenfactory/keeper/msg_server_remove_minter_controller.go deleted file mode 100644 index 5f551066..00000000 --- a/x/tokenfactory/keeper/msg_server_remove_minter_controller.go +++ /dev/null @@ -1,32 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) RemoveMinterController(goCtx context.Context, msg *types.MsgRemoveMinterController) (*types.MsgRemoveMinterControllerResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - masterMinter, found := k.GetMasterMinter(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "master minter is not set") - } - - if msg.From != masterMinter.Address { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the master minter") - } - - _, found = k.GetMinterController(ctx, msg.Controller) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "minter controller with a given address (%s) doesn't exist", msg.Controller) - } - - k.DeleteMinterController(ctx, msg.Controller) - - return &types.MsgRemoveMinterControllerResponse{}, nil -} diff --git a/x/tokenfactory/keeper/msg_server_unblacklist.go b/x/tokenfactory/keeper/msg_server_unblacklist.go deleted file mode 100644 index 2c885517..00000000 --- a/x/tokenfactory/keeper/msg_server_unblacklist.go +++ /dev/null @@ -1,40 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/cosmos/cosmos-sdk/types/bech32" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) Unblacklist(goCtx context.Context, msg *types.MsgUnblacklist) (*types.MsgUnblacklistResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - blacklister, found := k.GetBlacklister(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "blacklister is not set") - } - - if blacklister.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the blacklister") - } - - _, addressBz, err := bech32.DecodeAndConvert(msg.Address) - if err != nil { - return nil, err - } - - blacklisted, found := k.GetBlacklisted(ctx, addressBz) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "the specified address is not blacklisted") - } - - k.RemoveBlacklisted(ctx, blacklisted.AddressBz) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUnblacklistResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_unpause.go b/x/tokenfactory/keeper/msg_server_unpause.go deleted file mode 100644 index defe583b..00000000 --- a/x/tokenfactory/keeper/msg_server_unpause.go +++ /dev/null @@ -1,33 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) Unpause(goCtx context.Context, msg *types.MsgUnpause) (*types.MsgUnpauseResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - pauser, found := k.GetPauser(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "pauser is not set") - } - - if pauser.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the pauser") - } - - paused := types.Paused{ - Paused: false, - } - - k.SetPaused(ctx, paused) - - err := ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUnpauseResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_update_blacklister.go b/x/tokenfactory/keeper/msg_server_update_blacklister.go deleted file mode 100644 index dcf6ce25..00000000 --- a/x/tokenfactory/keeper/msg_server_update_blacklister.go +++ /dev/null @@ -1,39 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) UpdateBlacklister(goCtx context.Context, msg *types.MsgUpdateBlacklister) (*types.MsgUpdateBlacklisterResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - owner, found := k.GetOwner(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "owner is not set") - } - - if owner.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the owner") - } - - // ensure that the specified address is not already assigned to a privileged role - err := k.ValidatePrivileges(ctx, msg.Address) - if err != nil { - return nil, err - } - - blacklister := types.Blacklister{ - Address: msg.Address, - } - - k.SetBlacklister(ctx, blacklister) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUpdateBlacklisterResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_update_master_minter.go b/x/tokenfactory/keeper/msg_server_update_master_minter.go deleted file mode 100644 index 29f22fde..00000000 --- a/x/tokenfactory/keeper/msg_server_update_master_minter.go +++ /dev/null @@ -1,39 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) UpdateMasterMinter(goCtx context.Context, msg *types.MsgUpdateMasterMinter) (*types.MsgUpdateMasterMinterResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - owner, found := k.GetOwner(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "owner is not set") - } - - if owner.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the owner") - } - - // ensure that the specified address is not already assigned to a privileged role - err := k.ValidatePrivileges(ctx, msg.Address) - if err != nil { - return nil, err - } - - masterMinter := types.MasterMinter{ - Address: msg.Address, - } - - k.SetMasterMinter(ctx, masterMinter) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUpdateMasterMinterResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_update_owner.go b/x/tokenfactory/keeper/msg_server_update_owner.go deleted file mode 100644 index bd5e983e..00000000 --- a/x/tokenfactory/keeper/msg_server_update_owner.go +++ /dev/null @@ -1,37 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) UpdateOwner(goCtx context.Context, msg *types.MsgUpdateOwner) (*types.MsgUpdateOwnerResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - owner, found := k.GetOwner(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "owner is not set") - } - - if owner.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the owner") - } - - // ensure that the specified address is not already assigned to a privileged role - err := k.ValidatePrivileges(ctx, msg.Address) - if err != nil { - return nil, err - } - - owner.Address = msg.Address - - k.SetPendingOwner(ctx, owner) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUpdateOwnerResponse{}, err -} diff --git a/x/tokenfactory/keeper/msg_server_update_pauser.go b/x/tokenfactory/keeper/msg_server_update_pauser.go deleted file mode 100644 index bd1717a5..00000000 --- a/x/tokenfactory/keeper/msg_server_update_pauser.go +++ /dev/null @@ -1,39 +0,0 @@ -package keeper - -import ( - "context" - - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdkerrors "cosmossdk.io/errors" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -func (k msgServer) UpdatePauser(goCtx context.Context, msg *types.MsgUpdatePauser) (*types.MsgUpdatePauserResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - - owner, found := k.GetOwner(ctx) - if !found { - return nil, sdkerrors.Wrapf(types.ErrUserNotFound, "owner is not set") - } - - if owner.Address != msg.From { - return nil, sdkerrors.Wrapf(types.ErrUnauthorized, "you are not the owner") - } - - // ensure that the specified address is not already assigned to a privileged role - err := k.ValidatePrivileges(ctx, msg.Address) - if err != nil { - return nil, err - } - - pauser := types.Pauser{ - Address: msg.Address, - } - - k.SetPauser(ctx, pauser) - - err = ctx.EventManager().EmitTypedEvent(msg) - - return &types.MsgUpdatePauserResponse{}, err -} diff --git a/x/tokenfactory/keeper/owner.go b/x/tokenfactory/keeper/owner.go deleted file mode 100644 index 7dc3446a..00000000 --- a/x/tokenfactory/keeper/owner.go +++ /dev/null @@ -1,53 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetOwner set owner in the store -func (k Keeper) SetOwner(ctx sdk.Context, owner types.Owner) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&owner) - store.Set(types.KeyPrefix(types.OwnerKey), b) -} - -// GetOwner returns owner -func (k Keeper) GetOwner(ctx sdk.Context) (val types.Owner, found bool) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.OwnerKey)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} - -// SetPendingOwner set pending owner in the store -func (k Keeper) SetPendingOwner(ctx sdk.Context, owner types.Owner) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&owner) - store.Set(types.KeyPrefix(types.PendingOwnerKey), b) -} - -// DeletePendingOwner deletes the pending owner in the store -func (k Keeper) DeletePendingOwner(ctx sdk.Context) { - store := ctx.KVStore(k.storeKey) - store.Delete(types.KeyPrefix(types.PendingOwnerKey)) -} - -// GetPendingOwner returns pending owner -func (k Keeper) GetPendingOwner(ctx sdk.Context) (val types.Owner, found bool) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.PendingOwnerKey)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} diff --git a/x/tokenfactory/keeper/owner_test.go b/x/tokenfactory/keeper/owner_test.go deleted file mode 100644 index a0f84c92..00000000 --- a/x/tokenfactory/keeper/owner_test.go +++ /dev/null @@ -1,37 +0,0 @@ -package keeper_test - -import ( - "testing" - - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func TestOwnerGet(t *testing.T) { - - keeper, ctx := keepertest.TokenfactoryKeeper(t) - - owner := types.Owner{Address: "1"} - keeper.SetOwner(ctx, owner) - - rst, found := keeper.GetOwner(ctx) - require.True(t, found) - require.Equal(t, - owner, - nullify.Fill(&rst), - ) - - newOwner := types.Owner{Address: "2"} - - keeper.SetPendingOwner(ctx, newOwner) - - rst, found = keeper.GetPendingOwner(ctx) - require.True(t, found) - require.Equal(t, - newOwner, - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/keeper/params.go b/x/tokenfactory/keeper/params.go deleted file mode 100644 index 928189e0..00000000 --- a/x/tokenfactory/keeper/params.go +++ /dev/null @@ -1,16 +0,0 @@ -package keeper - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// GetParams get all parameters as types.Params -func (k Keeper) GetParams(ctx sdk.Context) types.Params { - return types.NewParams() -} - -// SetParams set the params -func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { - k.paramstore.SetParamSet(ctx, ¶ms) -} diff --git a/x/tokenfactory/keeper/params_test.go b/x/tokenfactory/keeper/params_test.go deleted file mode 100644 index d71eb227..00000000 --- a/x/tokenfactory/keeper/params_test.go +++ /dev/null @@ -1,18 +0,0 @@ -package keeper_test - -import ( - "testing" - - testkeeper "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - "github.com/stretchr/testify/require" -) - -func TestGetParams(t *testing.T) { - k, ctx := testkeeper.TokenfactoryKeeper(t) - params := types.DefaultParams() - - k.SetParams(ctx, params) - - require.EqualValues(t, params, k.GetParams(ctx)) -} diff --git a/x/tokenfactory/keeper/paused.go b/x/tokenfactory/keeper/paused.go deleted file mode 100644 index df3872fa..00000000 --- a/x/tokenfactory/keeper/paused.go +++ /dev/null @@ -1,27 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetPaused set paused in the store -func (k Keeper) SetPaused(ctx sdk.Context, paused types.Paused) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&paused) - store.Set(types.KeyPrefix(types.PausedKey), b) -} - -// GetPaused returns paused -func (k Keeper) GetPaused(ctx sdk.Context) (val types.Paused) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.PausedKey)) - if b == nil { - panic("Paused state is not set") - } - - k.cdc.MustUnmarshal(b, &val) - return val -} diff --git a/x/tokenfactory/keeper/paused_test.go b/x/tokenfactory/keeper/paused_test.go deleted file mode 100644 index 27b2636c..00000000 --- a/x/tokenfactory/keeper/paused_test.go +++ /dev/null @@ -1,29 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func createTestPaused(keeper *keeper.Keeper, ctx sdk.Context) types.Paused { - item := types.Paused{} - keeper.SetPaused(ctx, item) - return item -} - -func TestPausedGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - item := createTestPaused(keeper, ctx) - rst := keeper.GetPaused(ctx) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/keeper/pauser.go b/x/tokenfactory/keeper/pauser.go deleted file mode 100644 index 631542c9..00000000 --- a/x/tokenfactory/keeper/pauser.go +++ /dev/null @@ -1,27 +0,0 @@ -package keeper - -import ( - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - sdk "github.com/cosmos/cosmos-sdk/types" -) - -// SetPauser set pauser in the store -func (k Keeper) SetPauser(ctx sdk.Context, pauser types.Pauser) { - store := ctx.KVStore(k.storeKey) - b := k.cdc.MustMarshal(&pauser) - store.Set(types.KeyPrefix(types.PauserKey), b) -} - -// GetPauser returns pauser -func (k Keeper) GetPauser(ctx sdk.Context) (val types.Pauser, found bool) { - store := ctx.KVStore(k.storeKey) - - b := store.Get(types.KeyPrefix(types.PauserKey)) - if b == nil { - return val, false - } - - k.cdc.MustUnmarshal(b, &val) - return val, true -} diff --git a/x/tokenfactory/keeper/pauser_test.go b/x/tokenfactory/keeper/pauser_test.go deleted file mode 100644 index 7bd18cb1..00000000 --- a/x/tokenfactory/keeper/pauser_test.go +++ /dev/null @@ -1,30 +0,0 @@ -package keeper_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/stretchr/testify/require" - - keepertest "github.com/noble-assets/noble/v7/testutil/keeper" - "github.com/noble-assets/noble/v7/testutil/nullify" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func createTestPauser(keeper *keeper.Keeper, ctx sdk.Context) types.Pauser { - item := types.Pauser{} - keeper.SetPauser(ctx, item) - return item -} - -func TestPauserGet(t *testing.T) { - keeper, ctx := keepertest.TokenfactoryKeeper(t) - item := createTestPauser(keeper, ctx) - rst, found := keeper.GetPauser(ctx) - require.True(t, found) - require.Equal(t, - nullify.Fill(&item), - nullify.Fill(&rst), - ) -} diff --git a/x/tokenfactory/module.go b/x/tokenfactory/module.go deleted file mode 100644 index 5e99e5c5..00000000 --- a/x/tokenfactory/module.go +++ /dev/null @@ -1,163 +0,0 @@ -package tokenfactory - -import ( - "context" - "encoding/json" - "fmt" - - "github.com/gorilla/mux" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/spf13/cobra" - - abci "github.com/tendermint/tendermint/abci/types" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/codec" - cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - "github.com/noble-assets/noble/v7/x/tokenfactory/client/cli" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -var ( - _ module.AppModule = AppModule{} - _ module.AppModuleBasic = AppModuleBasic{} -) - -// ---------------------------------------------------------------------------- -// AppModuleBasic -// ---------------------------------------------------------------------------- - -// AppModuleBasic implements the AppModuleBasic interface that defines the independent methods a Cosmos SDK module needs to implement. -type AppModuleBasic struct { - cdc codec.BinaryCodec -} - -func NewAppModuleBasic(cdc codec.BinaryCodec) AppModuleBasic { - return AppModuleBasic{cdc: cdc} -} - -// Name returns the name of the module as a string -func (AppModuleBasic) Name() string { - return types.ModuleName -} - -// RegisterLegacyAminoCodec registers the amino codec for the module, which is used to marshal and unmarshal structs to/from []byte in order to persist them in the module's KVStore -func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - types.RegisterLegacyAminoCodec(cdc) -} - -// RegisterInterfaces registers a module's interface types and their concrete implementations as proto.Message -func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { - types.RegisterInterfaces(reg) -} - -// DefaultGenesis returns a default GenesisState for the module, marshalled to json.RawMessage. The default GenesisState need to be defined by the module developer and is primarily used for testing -func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) -} - -// ValidateGenesis used to validate the GenesisState, given in its json.RawMessage form -func (AppModuleBasic) ValidateGenesis(cdc codec.JSONCodec, config client.TxEncodingConfig, bz json.RawMessage) error { - var genState types.GenesisState - if err := cdc.UnmarshalJSON(bz, &genState); err != nil { - return fmt.Errorf("failed to unmarshal %s genesis state: %w", types.ModuleName, err) - } - return genState.Validate() -} - -// RegisterRESTRoutes registers the capability module's REST service handlers. -func (AppModuleBasic) RegisterRESTRoutes(clientCtx client.Context, rtr *mux.Router) { -} - -// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the module -func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *runtime.ServeMux) { - types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)) -} - -// GetTxCmd returns the root Tx command for the module. The subcommands of this root command are used by end-users to generate new transactions containing messages defined in the module -func (a AppModuleBasic) GetTxCmd() *cobra.Command { - return cli.GetTxCmd() -} - -// GetQueryCmd returns the root query command for the module. The subcommands of this root command are used by end-users to generate new queries to the subset of the state defined by the module -func (AppModuleBasic) GetQueryCmd() *cobra.Command { - return cli.GetQueryCmd(types.StoreKey) -} - -// ---------------------------------------------------------------------------- -// AppModule -// ---------------------------------------------------------------------------- - -// AppModule implements the AppModule interface that defines the inter-dependent methods that modules need to implement -type AppModule struct { - AppModuleBasic - - keeper *keeper.Keeper - accountKeeper types.AccountKeeper - bankKeeper types.BankKeeper -} - -func NewAppModule( - cdc codec.Codec, - keeper *keeper.Keeper, - accountKeeper types.AccountKeeper, - bankKeeper types.BankKeeper, -) AppModule { - return AppModule{ - AppModuleBasic: NewAppModuleBasic(cdc), - keeper: keeper, - accountKeeper: accountKeeper, - bankKeeper: bankKeeper, - } -} - -// Deprecated: use RegisterServices -func (am AppModule) Route() sdk.Route { return sdk.Route{} } - -// Deprecated: use RegisterServices -func (AppModule) QuerierRoute() string { return types.RouterKey } - -// Deprecated: use RegisterServices -func (am AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { - return nil -} - -// RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries -func (am AppModule) RegisterServices(cfg module.Configurator) { - types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) - types.RegisterQueryServer(cfg.QueryServer(), am.keeper) -} - -// RegisterInvariants registers the invariants of the module. If an invariant deviates from its predicted value, the InvariantRegistry triggers appropriate logic (most often the chain will be halted) -func (am AppModule) RegisterInvariants(_ sdk.InvariantRegistry) {} - -// InitGenesis performs the module's genesis initialization. It returns no validator updates. -func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.RawMessage) []abci.ValidatorUpdate { - var genState types.GenesisState - // Initialize global index to index in genesis state - cdc.MustUnmarshalJSON(gs, &genState) - - InitGenesis(ctx, am.keeper, am.bankKeeper, genState) - - return []abci.ValidatorUpdate{} -} - -// ExportGenesis returns the module's exported genesis state as raw JSON bytes. -func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.RawMessage { - genState := ExportGenesis(ctx, am.keeper) - return cdc.MustMarshalJSON(genState) -} - -// ConsensusVersion is a sequence number for state-breaking change of the module. It should be incremented on each consensus-breaking change introduced by the module. To avoid wrong/empty versions, the initial version should be set to 1 -func (AppModule) ConsensusVersion() uint64 { return 1 } - -// BeginBlock contains the logic that is automatically triggered at the beginning of each block -func (am AppModule) BeginBlock(_ sdk.Context, _ abci.RequestBeginBlock) {} - -// EndBlock contains the logic that is automatically triggered at the end of each block -func (am AppModule) EndBlock(_ sdk.Context, _ abci.RequestEndBlock) []abci.ValidatorUpdate { - return []abci.ValidatorUpdate{} -} diff --git a/x/tokenfactory/module_simulation.go b/x/tokenfactory/module_simulation.go deleted file mode 100644 index 2ff544ac..00000000 --- a/x/tokenfactory/module_simulation.go +++ /dev/null @@ -1,306 +0,0 @@ -package tokenfactory - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/module" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/simulation" - "github.com/noble-assets/noble/v7/testutil/sample" - tokenfactorysimulation "github.com/noble-assets/noble/v7/x/tokenfactory/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -// avoid unused import issue -var ( - _ = sample.AccAddress - _ = tokenfactorysimulation.FindAccount - _ = simappparams.StakePerAccount - _ = simulation.MsgEntryKind - _ = baseapp.Paramspace -) - -const ( - opWeightMsgUpdateMasterMinter = "op_weight_msg_update_master_minter" - // TODO: Determine the simulation weight value - defaultWeightMsgUpdateMasterMinter int = 100 - - opWeightMsgUpdatePauser = "op_weight_msg_update_pauser" - // TODO: Determine the simulation weight value - defaultWeightMsgUpdatePauser int = 100 - - opWeightMsgUpdateBlacklister = "op_weight_msg_update_blacklister" - // TODO: Determine the simulation weight value - defaultWeightMsgUpdateBlacklister int = 100 - - opWeightMsgUpdateOwner = "op_weight_msg_update_owner" - // TODO: Determine the simulation weight value - defaultWeightMsgUpdateOwner int = 100 - - opWeightMsgConfigureMinter = "op_weight_msg_configure_minter" - // TODO: Determine the simulation weight value - defaultWeightMsgConfigureMinter int = 100 - - opWeightMsgRemoveMinter = "op_weight_msg_remove_minter" - // TODO: Determine the simulation weight value - defaultWeightMsgRemoveMinter int = 100 - - opWeightMsgMint = "op_weight_msg_mint" - // TODO: Determine the simulation weight value - defaultWeightMsgMint int = 100 - - opWeightMsgBurn = "op_weight_msg_burn" - // TODO: Determine the simulation weight value - defaultWeightMsgBurn int = 100 - - opWeightMsgBlacklist = "op_weight_msg_blacklist" - // TODO: Determine the simulation weight value - defaultWeightMsgBlacklist int = 100 - - opWeightMsgUnblacklist = "op_weight_msg_unblacklist" - // TODO: Determine the simulation weight value - defaultWeightMsgUnblacklist int = 100 - - opWeightMsgPause = "op_weight_msg_pause" - // TODO: Determine the simulation weight value - defaultWeightMsgPause int = 100 - - opWeightMsgUnpause = "op_weight_msg_unpause" - // TODO: Determine the simulation weight value - defaultWeightMsgUnpause int = 100 - - opWeightMsgConfigureMinterController = "op_weight_msg_configure_minter_controller" - // TODO: Determine the simulation weight value - defaultWeightMsgConfigureMinterController int = 100 - - opWeightMsgRemoveMinterController = "op_weight_msg_remove_minter_controller" - // TODO: Determine the simulation weight value - defaultWeightMsgRemoveMinterController int = 100 - - // this line is used by starport scaffolding # simapp/module/const -) - -// GenerateGenesisState creates a randomized GenState of the module -func (AppModule) GenerateGenesisState(simState *module.SimulationState) { - // x/tokenfactory - - genesis := types.GenesisState{ - MintingDenom: &types.MintingDenom{Denom: "ufrienzies"}, - } - - simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&genesis) - - // x/bank - - bankGenesisBz := simState.GenState[banktypes.ModuleName] - var bankGenesis banktypes.GenesisState - simState.Cdc.MustUnmarshalJSON(bankGenesisBz, &bankGenesis) - - bankGenesis.DenomMetadata = append(bankGenesis.DenomMetadata, banktypes.Metadata{ - Description: "Frienzies are an IBC token redeemable exclusively for a physical asset issued by the Noble entity.", - DenomUnits: []*banktypes.DenomUnit{ - { - Denom: "ufrienzies", - Exponent: 0, - Aliases: []string{"microfrienzies"}, - }, - { - Denom: "mfrienzies", - Exponent: 3, - Aliases: []string{"millifrienzies"}, - }, - { - Denom: "frienzies", - Exponent: 6, - Aliases: []string{}, - }, - }, - Base: "ufrienzies", - Display: "frienzies", - Name: "frienzies", - Symbol: "FRNZ", - }) - - simState.GenState[banktypes.ModuleName] = simState.Cdc.MustMarshalJSON(&bankGenesis) -} - -// ProposalContents doesn't return any content functions for governance proposals -func (AppModule) ProposalContents(_ module.SimulationState) []simtypes.WeightedProposalContent { - return nil -} - -// RandomizedParams creates randomized param changes for the simulator -func (am AppModule) RandomizedParams(_ *rand.Rand) []simtypes.ParamChange { - - return []simtypes.ParamChange{} -} - -// RegisterStoreDecoder registers a decoder -func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} - -// WeightedOperations returns the all the gov module operations with their respective weights. -func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { - operations := make([]simtypes.WeightedOperation, 0) - - var weightMsgUpdateMasterMinter int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUpdateMasterMinter, &weightMsgUpdateMasterMinter, nil, - func(_ *rand.Rand) { - weightMsgUpdateMasterMinter = defaultWeightMsgUpdateMasterMinter - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUpdateMasterMinter, - tokenfactorysimulation.SimulateMsgUpdateMasterMinter(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgUpdatePauser int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUpdatePauser, &weightMsgUpdatePauser, nil, - func(_ *rand.Rand) { - weightMsgUpdatePauser = defaultWeightMsgUpdatePauser - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUpdatePauser, - tokenfactorysimulation.SimulateMsgUpdatePauser(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgUpdateBlacklister int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUpdateBlacklister, &weightMsgUpdateBlacklister, nil, - func(_ *rand.Rand) { - weightMsgUpdateBlacklister = defaultWeightMsgUpdateBlacklister - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUpdateBlacklister, - tokenfactorysimulation.SimulateMsgUpdateBlacklister(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgUpdateOwner int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUpdateOwner, &weightMsgUpdateOwner, nil, - func(_ *rand.Rand) { - weightMsgUpdateOwner = defaultWeightMsgUpdateOwner - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUpdateOwner, - tokenfactorysimulation.SimulateMsgUpdateOwner(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgConfigureMinter int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgConfigureMinter, &weightMsgConfigureMinter, nil, - func(_ *rand.Rand) { - weightMsgConfigureMinter = defaultWeightMsgConfigureMinter - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgConfigureMinter, - tokenfactorysimulation.SimulateMsgConfigureMinter(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgRemoveMinter int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgRemoveMinter, &weightMsgRemoveMinter, nil, - func(_ *rand.Rand) { - weightMsgRemoveMinter = defaultWeightMsgRemoveMinter - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgRemoveMinter, - tokenfactorysimulation.SimulateMsgRemoveMinter(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgMint int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgMint, &weightMsgMint, nil, - func(_ *rand.Rand) { - weightMsgMint = defaultWeightMsgMint - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgMint, - tokenfactorysimulation.SimulateMsgMint(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgBurn int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgBurn, &weightMsgBurn, nil, - func(_ *rand.Rand) { - weightMsgBurn = defaultWeightMsgBurn - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgBurn, - tokenfactorysimulation.SimulateMsgBurn(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgBlacklist int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgBlacklist, &weightMsgBlacklist, nil, - func(_ *rand.Rand) { - weightMsgBlacklist = defaultWeightMsgBlacklist - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgBlacklist, - tokenfactorysimulation.SimulateMsgBlacklist(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgUnblacklist int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUnblacklist, &weightMsgUnblacklist, nil, - func(_ *rand.Rand) { - weightMsgUnblacklist = defaultWeightMsgUnblacklist - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUnblacklist, - tokenfactorysimulation.SimulateMsgUnblacklist(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgPause int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgPause, &weightMsgPause, nil, - func(_ *rand.Rand) { - weightMsgPause = defaultWeightMsgPause - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgPause, - tokenfactorysimulation.SimulateMsgPause(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgUnpause int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgUnpause, &weightMsgUnpause, nil, - func(_ *rand.Rand) { - weightMsgUnpause = defaultWeightMsgUnpause - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgUnpause, - tokenfactorysimulation.SimulateMsgUnpause(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgConfigureMinterController int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgConfigureMinterController, &weightMsgConfigureMinterController, nil, - func(_ *rand.Rand) { - weightMsgConfigureMinterController = defaultWeightMsgConfigureMinterController - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgConfigureMinterController, - tokenfactorysimulation.SimulateMsgConfigureMinterController(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - var weightMsgRemoveMinterController int - simState.AppParams.GetOrGenerate(simState.Cdc, opWeightMsgRemoveMinterController, &weightMsgRemoveMinterController, nil, - func(_ *rand.Rand) { - weightMsgRemoveMinterController = defaultWeightMsgRemoveMinterController - }, - ) - operations = append(operations, simulation.NewWeightedOperation( - weightMsgRemoveMinterController, - tokenfactorysimulation.SimulateMsgRemoveMinterController(am.accountKeeper, am.bankKeeper, am.keeper), - )) - - // this line is used by starport scaffolding # simapp/module/operation - - return operations -} diff --git a/x/tokenfactory/simulation/blacklist.go b/x/tokenfactory/simulation/blacklist.go deleted file mode 100644 index 3f4619ac..00000000 --- a/x/tokenfactory/simulation/blacklist.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgBlacklist( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgBlacklist{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Blacklist simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Blacklist simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/burn.go b/x/tokenfactory/simulation/burn.go deleted file mode 100644 index 50eab11a..00000000 --- a/x/tokenfactory/simulation/burn.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgBurn( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgBurn{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Burn simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Burn simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/configure_minter.go b/x/tokenfactory/simulation/configure_minter.go deleted file mode 100644 index 55b916d0..00000000 --- a/x/tokenfactory/simulation/configure_minter.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgConfigureMinter( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgConfigureMinter{ - From: simAccount.Address.String(), - } - - // TODO: Handling the ConfigureMinter simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "ConfigureMinter simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/configure_minter_controller.go b/x/tokenfactory/simulation/configure_minter_controller.go deleted file mode 100644 index 5170d7ff..00000000 --- a/x/tokenfactory/simulation/configure_minter_controller.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgConfigureMinterController( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgConfigureMinterController{ - From: simAccount.Address.String(), - } - - // TODO: Handling the ConfigureMinterController simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "ConfigureMinterController simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/helpers.go b/x/tokenfactory/simulation/helpers.go deleted file mode 100644 index 92c437c0..00000000 --- a/x/tokenfactory/simulation/helpers.go +++ /dev/null @@ -1,15 +0,0 @@ -package simulation - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" -) - -// FindAccount find a specific address from an account list -func FindAccount(accs []simtypes.Account, address string) (simtypes.Account, bool) { - creator, err := sdk.AccAddressFromBech32(address) - if err != nil { - panic(err) - } - return simtypes.FindAccount(accs, creator) -} diff --git a/x/tokenfactory/simulation/mint.go b/x/tokenfactory/simulation/mint.go deleted file mode 100644 index 9c91257b..00000000 --- a/x/tokenfactory/simulation/mint.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgMint( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgMint{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Mint simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Mint simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/pause.go b/x/tokenfactory/simulation/pause.go deleted file mode 100644 index 4769da58..00000000 --- a/x/tokenfactory/simulation/pause.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgPause( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgPause{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Pause simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Pause simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/remove_minter.go b/x/tokenfactory/simulation/remove_minter.go deleted file mode 100644 index 0166a312..00000000 --- a/x/tokenfactory/simulation/remove_minter.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgRemoveMinter( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgRemoveMinter{ - From: simAccount.Address.String(), - } - - // TODO: Handling the RemoveMinter simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "RemoveMinter simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/remove_minter_controller.go b/x/tokenfactory/simulation/remove_minter_controller.go deleted file mode 100644 index 5a7b9e19..00000000 --- a/x/tokenfactory/simulation/remove_minter_controller.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgRemoveMinterController( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgRemoveMinterController{ - From: simAccount.Address.String(), - } - - // TODO: Handling the RemoveMinterController simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "RemoveMinterController simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/unblacklist.go b/x/tokenfactory/simulation/unblacklist.go deleted file mode 100644 index d2e072a2..00000000 --- a/x/tokenfactory/simulation/unblacklist.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUnblacklist( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUnblacklist{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Unblacklist simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Unblacklist simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/unpause.go b/x/tokenfactory/simulation/unpause.go deleted file mode 100644 index 89596d4c..00000000 --- a/x/tokenfactory/simulation/unpause.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUnpause( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUnpause{ - From: simAccount.Address.String(), - } - - // TODO: Handling the Unpause simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "Unpause simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/update_blacklister.go b/x/tokenfactory/simulation/update_blacklister.go deleted file mode 100644 index 115992fc..00000000 --- a/x/tokenfactory/simulation/update_blacklister.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUpdateBlacklister( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUpdateBlacklister{ - From: simAccount.Address.String(), - } - - // TODO: Handling the UpdateBlacklister simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "UpdateBlacklister simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/update_master_minter.go b/x/tokenfactory/simulation/update_master_minter.go deleted file mode 100644 index b787e748..00000000 --- a/x/tokenfactory/simulation/update_master_minter.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUpdateMasterMinter( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUpdateMasterMinter{ - From: simAccount.Address.String(), - } - - // TODO: Handling the UpdateMasterMinter simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "UpdateMasterMinter simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/update_owner.go b/x/tokenfactory/simulation/update_owner.go deleted file mode 100644 index a6bb617e..00000000 --- a/x/tokenfactory/simulation/update_owner.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUpdateOwner( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUpdateOwner{ - From: simAccount.Address.String(), - } - - // TODO: Handling the UpdateOwner simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "UpdateOwner simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/simulation/update_pauser.go b/x/tokenfactory/simulation/update_pauser.go deleted file mode 100644 index b8a8af18..00000000 --- a/x/tokenfactory/simulation/update_pauser.go +++ /dev/null @@ -1,29 +0,0 @@ -package simulation - -import ( - "math/rand" - - "github.com/cosmos/cosmos-sdk/baseapp" - sdk "github.com/cosmos/cosmos-sdk/types" - simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/noble-assets/noble/v7/x/tokenfactory/keeper" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" -) - -func SimulateMsgUpdatePauser( - ak types.AccountKeeper, - bk types.BankKeeper, - k *keeper.Keeper, -) simtypes.Operation { - return func(r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, - ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { - simAccount, _ := simtypes.RandomAcc(r, accs) - msg := &types.MsgUpdatePauser{ - From: simAccount.Address.String(), - } - - // TODO: Handling the UpdatePauser simulation - - return simtypes.NoOpMsg(types.ModuleName, msg.Type(), "UpdatePauser simulation not implemented"), nil, nil - } -} diff --git a/x/tokenfactory/types/blacklisted.pb.go b/x/tokenfactory/types/blacklisted.pb.go deleted file mode 100644 index 062a6c10..00000000 --- a/x/tokenfactory/types/blacklisted.pb.go +++ /dev/null @@ -1,317 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/blacklisted.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Blacklisted struct { - AddressBz []byte `protobuf:"bytes,1,opt,name=addressBz,proto3" json:"addressBz,omitempty"` -} - -func (m *Blacklisted) Reset() { *m = Blacklisted{} } -func (m *Blacklisted) String() string { return proto.CompactTextString(m) } -func (*Blacklisted) ProtoMessage() {} -func (*Blacklisted) Descriptor() ([]byte, []int) { - return fileDescriptor_43ff59c42df01ab4, []int{0} -} -func (m *Blacklisted) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Blacklisted) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Blacklisted.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Blacklisted) XXX_Merge(src proto.Message) { - xxx_messageInfo_Blacklisted.Merge(m, src) -} -func (m *Blacklisted) XXX_Size() int { - return m.Size() -} -func (m *Blacklisted) XXX_DiscardUnknown() { - xxx_messageInfo_Blacklisted.DiscardUnknown(m) -} - -var xxx_messageInfo_Blacklisted proto.InternalMessageInfo - -func (m *Blacklisted) GetAddressBz() []byte { - if m != nil { - return m.AddressBz - } - return nil -} - -func init() { - proto.RegisterType((*Blacklisted)(nil), "noble.tokenfactory.Blacklisted") -} - -func init() { proto.RegisterFile("tokenfactory/blacklisted.proto", fileDescriptor_43ff59c42df01ab4) } - -var fileDescriptor_43ff59c42df01ab4 = []byte{ - // 165 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0x4f, 0xca, 0x49, 0x4c, 0xce, 0xce, 0xc9, - 0x2c, 0x2e, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, - 0x49, 0xd5, 0x43, 0x56, 0xa5, 0xa4, 0xcd, 0xc5, 0xed, 0x84, 0x50, 0x28, 0x24, 0xc3, 0xc5, 0x99, - 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0xec, 0x54, 0x25, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x13, 0x84, - 0x10, 0x70, 0xf2, 0x3f, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, - 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xd3, 0xf4, - 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0xb0, 0x2d, 0xba, 0x89, 0xc5, 0xc5, - 0xa9, 0x25, 0xc5, 0x10, 0x8e, 0x7e, 0x99, 0xb9, 0x7e, 0x85, 0x3e, 0x8a, 0xeb, 0x4a, 0x2a, 0x0b, - 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x0e, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x08, 0x86, 0x3d, - 0x44, 0xba, 0x00, 0x00, 0x00, -} - -func (m *Blacklisted) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Blacklisted) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Blacklisted) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.AddressBz) > 0 { - i -= len(m.AddressBz) - copy(dAtA[i:], m.AddressBz) - i = encodeVarintBlacklisted(dAtA, i, uint64(len(m.AddressBz))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintBlacklisted(dAtA []byte, offset int, v uint64) int { - offset -= sovBlacklisted(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Blacklisted) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.AddressBz) - if l > 0 { - n += 1 + l + sovBlacklisted(uint64(l)) - } - return n -} - -func sovBlacklisted(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozBlacklisted(x uint64) (n int) { - return sovBlacklisted(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Blacklisted) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBlacklisted - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Blacklisted: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Blacklisted: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AddressBz", wireType) - } - var byteLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBlacklisted - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - byteLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if byteLen < 0 { - return ErrInvalidLengthBlacklisted - } - postIndex := iNdEx + byteLen - if postIndex < 0 { - return ErrInvalidLengthBlacklisted - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AddressBz = append(m.AddressBz[:0], dAtA[iNdEx:postIndex]...) - if m.AddressBz == nil { - m.AddressBz = []byte{} - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipBlacklisted(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthBlacklisted - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipBlacklisted(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklisted - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklisted - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklisted - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthBlacklisted - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupBlacklisted - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthBlacklisted - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthBlacklisted = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowBlacklisted = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupBlacklisted = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/blacklister.pb.go b/x/tokenfactory/types/blacklister.pb.go deleted file mode 100644 index f29844bd..00000000 --- a/x/tokenfactory/types/blacklister.pb.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/blacklister.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Blacklister struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *Blacklister) Reset() { *m = Blacklister{} } -func (m *Blacklister) String() string { return proto.CompactTextString(m) } -func (*Blacklister) ProtoMessage() {} -func (*Blacklister) Descriptor() ([]byte, []int) { - return fileDescriptor_c4e04641cbe52423, []int{0} -} -func (m *Blacklister) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Blacklister) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Blacklister.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Blacklister) XXX_Merge(src proto.Message) { - xxx_messageInfo_Blacklister.Merge(m, src) -} -func (m *Blacklister) XXX_Size() int { - return m.Size() -} -func (m *Blacklister) XXX_DiscardUnknown() { - xxx_messageInfo_Blacklister.DiscardUnknown(m) -} - -var xxx_messageInfo_Blacklister proto.InternalMessageInfo - -func (m *Blacklister) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func init() { - proto.RegisterType((*Blacklister)(nil), "noble.tokenfactory.Blacklister") -} - -func init() { proto.RegisterFile("tokenfactory/blacklister.proto", fileDescriptor_c4e04641cbe52423) } - -var fileDescriptor_c4e04641cbe52423 = []byte{ - // 163 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2b, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0x4f, 0xca, 0x49, 0x4c, 0xce, 0xce, 0xc9, - 0x2c, 0x2e, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, - 0x49, 0xd5, 0x43, 0x56, 0xa5, 0xa4, 0xce, 0xc5, 0xed, 0x84, 0x50, 0x28, 0x24, 0xc1, 0xc5, 0x9e, - 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x04, 0xe3, 0x3a, - 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, - 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x69, 0x7a, 0x66, 0x49, - 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd8, 0x06, 0xdd, 0xc4, 0xe2, 0xe2, 0xd4, 0x92, - 0x62, 0x08, 0x47, 0xbf, 0xcc, 0x5c, 0xbf, 0x42, 0x1f, 0xc5, 0x65, 0x25, 0x95, 0x05, 0xa9, 0xc5, - 0x49, 0x6c, 0x60, 0x47, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x10, 0x3b, 0xa2, 0xb6, - 0x00, 0x00, 0x00, -} - -func (m *Blacklister) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Blacklister) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Blacklister) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintBlacklister(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintBlacklister(dAtA []byte, offset int, v uint64) int { - offset -= sovBlacklister(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Blacklister) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovBlacklister(uint64(l)) - } - return n -} - -func sovBlacklister(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozBlacklister(x uint64) (n int) { - return sovBlacklister(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Blacklister) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBlacklister - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Blacklister: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Blacklister: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowBlacklister - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthBlacklister - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthBlacklister - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipBlacklister(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthBlacklister - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipBlacklister(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklister - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklister - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowBlacklister - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthBlacklister - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupBlacklister - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthBlacklister - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthBlacklister = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowBlacklister = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupBlacklister = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/codec.go b/x/tokenfactory/types/codec.go deleted file mode 100644 index dd5c9ff3..00000000 --- a/x/tokenfactory/types/codec.go +++ /dev/null @@ -1,59 +0,0 @@ -package types - -import ( - "github.com/cosmos/cosmos-sdk/codec" - cdctypes "github.com/cosmos/cosmos-sdk/codec/types" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/msgservice" -) - -func init() { - RegisterLegacyAminoCodec(amino) - amino.Seal() -} - -func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgUpdateMasterMinter{}, "tokenfactory/UpdateMasterMinter", nil) - cdc.RegisterConcrete(&MsgUpdatePauser{}, "tokenfactory/UpdatePauser", nil) - cdc.RegisterConcrete(&MsgUpdateBlacklister{}, "tokenfactory/UpdateBlacklister", nil) - cdc.RegisterConcrete(&MsgUpdateOwner{}, "tokenfactory/UpdateOwner", nil) - cdc.RegisterConcrete(&MsgConfigureMinter{}, "tokenfactory/ConfigureMinter", nil) - cdc.RegisterConcrete(&MsgRemoveMinter{}, "tokenfactory/RemoveMinter", nil) - cdc.RegisterConcrete(&MsgMint{}, "tokenfactory/Mint", nil) - cdc.RegisterConcrete(&MsgBurn{}, "tokenfactory/Burn", nil) - cdc.RegisterConcrete(&MsgBlacklist{}, "tokenfactory/Blacklist", nil) - cdc.RegisterConcrete(&MsgUnblacklist{}, "tokenfactory/Unblacklist", nil) - cdc.RegisterConcrete(&MsgPause{}, "tokenfactory/Pause", nil) - cdc.RegisterConcrete(&MsgUnpause{}, "tokenfactory/Unpause", nil) - cdc.RegisterConcrete(&MsgConfigureMinterController{}, "tokenfactory/ConfigureMinterController", nil) - cdc.RegisterConcrete(&MsgRemoveMinterController{}, "tokenfactory/RemoveMinterController", nil) - // this line is used by starport scaffolding # 2 -} - -func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { - registry.RegisterImplementations((*sdk.Msg)(nil), - &MsgUpdateMasterMinter{}, - &MsgUpdatePauser{}, - &MsgUpdateBlacklister{}, - &MsgUpdateOwner{}, - &MsgConfigureMinter{}, - &MsgRemoveMinter{}, - &MsgMint{}, - &MsgBurn{}, - &MsgBlacklist{}, - &MsgUnblacklist{}, - &MsgPause{}, - &MsgUnpause{}, - &MsgConfigureMinterController{}, - &MsgRemoveMinterController{}, - ) - - // this line is used by starport scaffolding # 3 - - msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) -} - -var ( - amino = codec.NewLegacyAmino() - ModuleCdc = codec.NewProtoCodec(cdctypes.NewInterfaceRegistry()) -) diff --git a/x/tokenfactory/types/errors.go b/x/tokenfactory/types/errors.go deleted file mode 100644 index 954facd2..00000000 --- a/x/tokenfactory/types/errors.go +++ /dev/null @@ -1,21 +0,0 @@ -package types - -// DONTCOVER - -import ( - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// x/tokenfactory module sentinel errors -var ( - ErrUnauthorized = sdkerrors.Register(ModuleName, 2, "unauthorized") - ErrUserNotFound = sdkerrors.Register(ModuleName, 3, "user not found") - ErrMint = sdkerrors.Register(ModuleName, 4, "tokens can not be minted") - ErrSendCoinsToAccount = sdkerrors.Register(ModuleName, 5, "can't send tokens to account") - ErrBurn = sdkerrors.Register(ModuleName, 6, "tokens can not be burned") - ErrPaused = sdkerrors.Register(ModuleName, 7, "the chain is paused") - ErrMintingDenomSet = sdkerrors.Register(ModuleName, 9, "the minting denom has already been set") - ErrUserBlacklisted = sdkerrors.Register(ModuleName, 10, "user is already blacklisted") - ErrAlreadyPrivileged = sdkerrors.Register(ModuleName, 11, "address is already assigned to privileged role") - ErrDenomNotRegistered = sdkerrors.Register(ModuleName, 12, "denom not registered in bank module") -) diff --git a/x/tokenfactory/types/expected_keepers.go b/x/tokenfactory/types/expected_keepers.go deleted file mode 100644 index 72838b17..00000000 --- a/x/tokenfactory/types/expected_keepers.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" -) - -// AccountKeeper defines the expected account keeper used for simulations (noalias) -type AccountKeeper interface { - GetAccount(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI - // Methods imported from account should be defined here -} - -// BankKeeper defines the expected interface needed to retrieve account balances. -type BankKeeper interface { - SpendableCoins(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins - MintCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - BurnCoins(ctx sdk.Context, moduleName string, amt sdk.Coins) error - SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error - SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error - GetDenomMetaData(ctx sdk.Context, denom string) (banktypes.Metadata, bool) -} diff --git a/x/tokenfactory/types/genesis.go b/x/tokenfactory/types/genesis.go deleted file mode 100644 index 35953185..00000000 --- a/x/tokenfactory/types/genesis.go +++ /dev/null @@ -1,138 +0,0 @@ -package types - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -// DefaultGenesis returns the default genesis state -func DefaultGenesis() *GenesisState { - return &GenesisState{ - BlacklistedList: []Blacklisted{}, - Paused: nil, - MasterMinter: nil, - MintersList: []Minters{}, - Pauser: nil, - Blacklister: nil, - Owner: nil, - MinterControllerList: []MinterController{}, - MintingDenom: nil, - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), - } -} - -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // Check for duplicated index in blacklisted - blacklistedIndexMap := make(map[string]struct{}) - for _, elem := range gs.BlacklistedList { - index := string(BlacklistedKey(elem.AddressBz)) - if _, ok := blacklistedIndexMap[index]; ok { - return fmt.Errorf("duplicated index for blacklisted") - } - blacklistedIndexMap[index] = struct{}{} - } - - // Check for duplicated index in minters and validate minter addr and allowance - mintersIndexMap := make(map[string]struct{}) - for _, elem := range gs.MintersList { - index := string(MintersKey(elem.Address)) - if _, ok := mintersIndexMap[index]; ok { - return fmt.Errorf("duplicated index for minters") - } - mintersIndexMap[index] = struct{}{} - - if _, err := sdk.AccAddressFromBech32(elem.Address); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid minter address (%s)", err) - } - - if elem.Allowance.IsNil() || elem.Allowance.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "minter allowance cannot be nil or negative") - } - } - - // Check for duplicated index in minterController and validate both controller and minter addresses - minterControllerIndexMap := make(map[string]struct{}) - for _, elem := range gs.MinterControllerList { - index := string(MinterControllerKey(elem.Controller)) - if _, ok := minterControllerIndexMap[index]; ok { - return fmt.Errorf("duplicated index for minterController") - } - minterControllerIndexMap[index] = struct{}{} - - if _, err := sdk.AccAddressFromBech32(elem.Minter); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "minter controller has invalid minter address (%s)", err) - } - - if _, err := sdk.AccAddressFromBech32(elem.Controller); err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "minter controller has invalid controller address (%s)", err) - } - } - - var addresses []sdk.AccAddress - - if gs.Owner != nil { - owner, err := sdk.AccAddressFromBech32(gs.Owner.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid owner address (%s)", err) - } - addresses = append(addresses, owner) - } - - if gs.MasterMinter != nil { - masterMinter, err := sdk.AccAddressFromBech32(gs.MasterMinter.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid master minter address (%s)", err) - } - addresses = append(addresses, masterMinter) - } - - if gs.Pauser != nil { - pauser, err := sdk.AccAddressFromBech32(gs.Pauser.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid pauser address (%s)", err) - } - addresses = append(addresses, pauser) - } - - if gs.Blacklister != nil { - blacklister, err := sdk.AccAddressFromBech32(gs.Blacklister.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid black lister address (%s)", err) - } - addresses = append(addresses, blacklister) - } - - if err := validatePrivileges(addresses); err != nil { - return err - } - - if gs.MintingDenom != nil && gs.MintingDenom.Denom == "" { - return fmt.Errorf("minting denom cannot be an empty string") - } - - // this line is used by starport scaffolding # genesis/types/validate - - return gs.Params.Validate() -} - -// validatePrivileges ensures that the same address is not being assigned to more than one privileged role. -func validatePrivileges(addresses []sdk.AccAddress) error { - for i, current := range addresses { - for j, target := range addresses { - if i == j { - continue - } - - if current.String() == target.String() { - return sdkerrors.Wrapf(ErrAlreadyPrivileged, "%s", current) - } - } - } - - return nil -} diff --git a/x/tokenfactory/types/genesis.pb.go b/x/tokenfactory/types/genesis.pb.go deleted file mode 100644 index d47784f4..00000000 --- a/x/tokenfactory/types/genesis.pb.go +++ /dev/null @@ -1,883 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/genesis.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// GenesisState defines the tokenfactory module's genesis state. -type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - BlacklistedList []Blacklisted `protobuf:"bytes,2,rep,name=blacklistedList,proto3" json:"blacklistedList"` - Paused *Paused `protobuf:"bytes,3,opt,name=paused,proto3" json:"paused,omitempty"` - MasterMinter *MasterMinter `protobuf:"bytes,4,opt,name=masterMinter,proto3" json:"masterMinter,omitempty"` - MintersList []Minters `protobuf:"bytes,5,rep,name=mintersList,proto3" json:"mintersList"` - Pauser *Pauser `protobuf:"bytes,6,opt,name=pauser,proto3" json:"pauser,omitempty"` - Blacklister *Blacklister `protobuf:"bytes,7,opt,name=blacklister,proto3" json:"blacklister,omitempty"` - Owner *Owner `protobuf:"bytes,8,opt,name=owner,proto3" json:"owner,omitempty"` - MinterControllerList []MinterController `protobuf:"bytes,9,rep,name=minterControllerList,proto3" json:"minterControllerList"` - MintingDenom *MintingDenom `protobuf:"bytes,10,opt,name=mintingDenom,proto3" json:"mintingDenom,omitempty"` -} - -func (m *GenesisState) Reset() { *m = GenesisState{} } -func (m *GenesisState) String() string { return proto.CompactTextString(m) } -func (*GenesisState) ProtoMessage() {} -func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_415d5acd9b7bd461, []int{0} -} -func (m *GenesisState) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_GenesisState.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *GenesisState) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenesisState.Merge(m, src) -} -func (m *GenesisState) XXX_Size() int { - return m.Size() -} -func (m *GenesisState) XXX_DiscardUnknown() { - xxx_messageInfo_GenesisState.DiscardUnknown(m) -} - -var xxx_messageInfo_GenesisState proto.InternalMessageInfo - -func (m *GenesisState) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -func (m *GenesisState) GetBlacklistedList() []Blacklisted { - if m != nil { - return m.BlacklistedList - } - return nil -} - -func (m *GenesisState) GetPaused() *Paused { - if m != nil { - return m.Paused - } - return nil -} - -func (m *GenesisState) GetMasterMinter() *MasterMinter { - if m != nil { - return m.MasterMinter - } - return nil -} - -func (m *GenesisState) GetMintersList() []Minters { - if m != nil { - return m.MintersList - } - return nil -} - -func (m *GenesisState) GetPauser() *Pauser { - if m != nil { - return m.Pauser - } - return nil -} - -func (m *GenesisState) GetBlacklister() *Blacklister { - if m != nil { - return m.Blacklister - } - return nil -} - -func (m *GenesisState) GetOwner() *Owner { - if m != nil { - return m.Owner - } - return nil -} - -func (m *GenesisState) GetMinterControllerList() []MinterController { - if m != nil { - return m.MinterControllerList - } - return nil -} - -func (m *GenesisState) GetMintingDenom() *MintingDenom { - if m != nil { - return m.MintingDenom - } - return nil -} - -func init() { - proto.RegisterType((*GenesisState)(nil), "noble.tokenfactory.GenesisState") -} - -func init() { proto.RegisterFile("tokenfactory/genesis.proto", fileDescriptor_415d5acd9b7bd461) } - -var fileDescriptor_415d5acd9b7bd461 = []byte{ - // 451 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0x41, 0x8e, 0xd3, 0x30, - 0x18, 0x85, 0x13, 0x66, 0x5a, 0xc0, 0x19, 0x09, 0xc9, 0x9a, 0x85, 0x27, 0x48, 0x99, 0x08, 0xcd, - 0x62, 0x36, 0x24, 0x52, 0x11, 0x82, 0x2d, 0x6d, 0x25, 0x36, 0x54, 0x45, 0x61, 0xc7, 0x82, 0x2a, - 0x49, 0x4d, 0x88, 0x9a, 0xd8, 0x95, 0xed, 0x02, 0xbd, 0x05, 0xa7, 0xe0, 0x2c, 0x5d, 0x76, 0xc9, - 0x0a, 0xa1, 0xf6, 0x22, 0x28, 0xb6, 0x95, 0xc6, 0xe0, 0xb6, 0xbb, 0x19, 0xbd, 0xef, 0xbd, 0xfe, - 0xef, 0xf7, 0x1f, 0xe0, 0x0b, 0xba, 0xc0, 0xe4, 0x73, 0x9a, 0x0b, 0xca, 0xd6, 0x71, 0x81, 0x09, - 0xe6, 0x25, 0x8f, 0x96, 0x8c, 0x0a, 0x0a, 0x21, 0xa1, 0x59, 0x85, 0xa3, 0x2e, 0xe1, 0x5f, 0x17, - 0xb4, 0xa0, 0x52, 0x8e, 0x9b, 0xbf, 0x14, 0xe9, 0x07, 0x46, 0x4a, 0x56, 0xa5, 0xf9, 0xa2, 0x2a, - 0xb9, 0xc0, 0xf3, 0x33, 0x3a, 0xd3, 0x7a, 0x68, 0xe8, 0x75, 0xda, 0x48, 0xb3, 0xba, 0x24, 0x07, - 0xe2, 0xce, 0x24, 0xa4, 0x34, 0xcb, 0x29, 0x11, 0x8c, 0x56, 0x55, 0x4b, 0xf9, 0x16, 0x8a, 0xdb, - 0x7f, 0xa3, 0x24, 0xa2, 0x24, 0xc5, 0x6c, 0x8e, 0x09, 0xad, 0x35, 0x81, 0x0c, 0x82, 0x7e, 0x23, - 0x6d, 0xee, 0x8d, 0xa1, 0x2c, 0x53, 0x96, 0xd6, 0xfc, 0x88, 0xb4, 0xe2, 0x6d, 0x6b, 0x8b, 0xa4, - 0x03, 0x9f, 0xfd, 0xec, 0x81, 0xab, 0xb7, 0x6a, 0xd9, 0x1f, 0x44, 0x2a, 0x30, 0x7c, 0x0d, 0xfa, - 0x2a, 0x16, 0xb9, 0xa1, 0x7b, 0xef, 0x0d, 0xfc, 0xe8, 0xff, 0xe5, 0x47, 0xef, 0x25, 0x31, 0xbc, - 0xdc, 0xfc, 0xbe, 0x75, 0x12, 0xcd, 0xc3, 0x29, 0x78, 0xd2, 0x59, 0xf8, 0xbb, 0x92, 0x0b, 0xf4, - 0x20, 0xbc, 0xb8, 0xf7, 0x06, 0xb7, 0xb6, 0x88, 0xe1, 0x01, 0xd5, 0x39, 0xff, 0xba, 0xe1, 0xa0, - 0x19, 0xa5, 0xa9, 0x81, 0x2e, 0x4e, 0x8d, 0xd2, 0x10, 0x89, 0x26, 0xe1, 0x18, 0x5c, 0xa9, 0x57, - 0x9b, 0xc8, 0x9d, 0xa3, 0x4b, 0xe9, 0x0c, 0x6d, 0xce, 0x49, 0x87, 0x4b, 0x0c, 0x17, 0x1c, 0x01, - 0x4f, 0xbf, 0x99, 0xac, 0xd1, 0x93, 0x35, 0x9e, 0x5a, 0x43, 0x14, 0xa6, 0x2b, 0x74, 0x5d, 0xed, - 0xf8, 0x0c, 0xf5, 0xcf, 0x8c, 0xcf, 0xf4, 0xf8, 0x0c, 0xbe, 0x01, 0x5e, 0xe7, 0x28, 0xd1, 0x43, - 0x69, 0x3c, 0xb3, 0x3f, 0x96, 0x74, 0x3d, 0x30, 0x06, 0x3d, 0x79, 0x31, 0xe8, 0x91, 0x34, 0xdf, - 0xd8, 0xcc, 0xd3, 0x06, 0x48, 0x14, 0x07, 0x3f, 0x81, 0x6b, 0x35, 0xf6, 0xa8, 0xbd, 0x62, 0xd9, - 0xfa, 0xb1, 0x6c, 0x7d, 0x77, 0xbc, 0xf5, 0x81, 0xd7, 0xf5, 0xad, 0x39, 0xf2, 0x49, 0xd4, 0x91, - 0x8f, 0x9b, 0x1b, 0x47, 0xe0, 0xc4, 0x93, 0x74, 0xb8, 0xc4, 0x70, 0x0d, 0xa7, 0x9b, 0x5d, 0xe0, - 0x6e, 0x77, 0x81, 0xfb, 0x67, 0x17, 0xb8, 0x3f, 0xf6, 0x81, 0xb3, 0xdd, 0x07, 0xce, 0xaf, 0x7d, - 0xe0, 0x7c, 0x7c, 0x59, 0x94, 0xe2, 0xcb, 0x2a, 0x8b, 0x72, 0x5a, 0xc7, 0x32, 0xf3, 0x79, 0xca, - 0x39, 0x16, 0x5c, 0xfd, 0x13, 0x7f, 0x7d, 0x15, 0x7f, 0x8f, 0x8d, 0x0f, 0x40, 0xac, 0x97, 0x98, - 0x67, 0x7d, 0xf9, 0x01, 0xbc, 0xf8, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x0a, 0xd9, 0xd4, 0x4c, 0x79, - 0x04, 0x00, 0x00, -} - -func (m *GenesisState) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *GenesisState) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.MintingDenom != nil { - { - size, err := m.MintingDenom.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x52 - } - if len(m.MinterControllerList) > 0 { - for iNdEx := len(m.MinterControllerList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.MinterControllerList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x4a - } - } - if m.Owner != nil { - { - size, err := m.Owner.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x42 - } - if m.Blacklister != nil { - { - size, err := m.Blacklister.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x3a - } - if m.Pauser != nil { - { - size, err := m.Pauser.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x32 - } - if len(m.MintersList) > 0 { - for iNdEx := len(m.MintersList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.MintersList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x2a - } - } - if m.MasterMinter != nil { - { - size, err := m.MasterMinter.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x22 - } - if m.Paused != nil { - { - size, err := m.Paused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - } - if len(m.BlacklistedList) > 0 { - for iNdEx := len(m.BlacklistedList) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.BlacklistedList[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - } - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGenesis(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { - offset -= sovGenesis(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *GenesisState) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovGenesis(uint64(l)) - if len(m.BlacklistedList) > 0 { - for _, e := range m.BlacklistedList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if m.Paused != nil { - l = m.Paused.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - if m.MasterMinter != nil { - l = m.MasterMinter.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - if len(m.MintersList) > 0 { - for _, e := range m.MintersList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if m.Pauser != nil { - l = m.Pauser.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - if m.Blacklister != nil { - l = m.Blacklister.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - if m.Owner != nil { - l = m.Owner.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - if len(m.MinterControllerList) > 0 { - for _, e := range m.MinterControllerList { - l = e.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - } - if m.MintingDenom != nil { - l = m.MintingDenom.Size() - n += 1 + l + sovGenesis(uint64(l)) - } - return n -} - -func sovGenesis(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenesis(x uint64) (n int) { - return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *GenesisState) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: GenesisState: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: GenesisState: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field BlacklistedList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.BlacklistedList = append(m.BlacklistedList, Blacklisted{}) - if err := m.BlacklistedList[len(m.BlacklistedList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Paused == nil { - m.Paused = &Paused{} - } - if err := m.Paused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 4: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MasterMinter", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MasterMinter == nil { - m.MasterMinter = &MasterMinter{} - } - if err := m.MasterMinter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MintersList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.MintersList = append(m.MintersList, Minters{}) - if err := m.MintersList[len(m.MintersList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 6: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pauser", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pauser == nil { - m.Pauser = &Pauser{} - } - if err := m.Pauser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 7: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Blacklister", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Blacklister == nil { - m.Blacklister = &Blacklister{} - } - if err := m.Blacklister.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 8: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Owner == nil { - m.Owner = &Owner{} - } - if err := m.Owner.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 9: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinterControllerList", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.MinterControllerList = append(m.MinterControllerList, MinterController{}) - if err := m.MinterControllerList[len(m.MinterControllerList)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 10: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MintingDenom", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGenesis - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthGenesis - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthGenesis - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MintingDenom == nil { - m.MintingDenom = &MintingDenom{} - } - if err := m.MintingDenom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGenesis(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGenesis - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGenesis(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGenesis - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGenesis - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGenesis - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGenesis - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGenesis = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGenesis = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGenesis = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/genesis_test.go b/x/tokenfactory/types/genesis_test.go deleted file mode 100644 index af2cc2e7..00000000 --- a/x/tokenfactory/types/genesis_test.go +++ /dev/null @@ -1,186 +0,0 @@ -package types_test - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/noble-assets/noble/v7/x/tokenfactory/types" - - "github.com/stretchr/testify/require" -) - -var testAddress = sample.AccAddress() - -func TestGenesisState_Validate(t *testing.T) { - for _, tc := range []struct { - desc string - genState *types.GenesisState - valid bool - }{ - { - desc: "default is valid", - genState: types.DefaultGenesis(), - valid: true, - }, - { - desc: "valid genesis state", - genState: &types.GenesisState{ - - BlacklistedList: []types.Blacklisted{ - { - AddressBz: sample.AddressBz(), - }, - { - AddressBz: sample.AddressBz(), - }, - }, - Paused: &types.Paused{ - Paused: true, - }, - MasterMinter: &types.MasterMinter{ - Address: sample.AccAddress(), - }, - MintersList: []types.Minters{ - { - Address: sample.AccAddress(), - Allowance: sdk.NewCoin("test", sdk.NewInt(1)), - }, - { - Address: sample.AccAddress(), - Allowance: sdk.NewCoin("test", sdk.NewInt(1)), - }, - }, - Pauser: &types.Pauser{ - Address: sample.AccAddress(), - }, - Blacklister: &types.Blacklister{ - Address: sample.AccAddress(), - }, - Owner: &types.Owner{ - Address: sample.AccAddress(), - }, - MinterControllerList: []types.MinterController{ - { - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - { - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - }, - MintingDenom: &types.MintingDenom{ - Denom: "test", - }, - // this line is used by starport scaffolding # types/genesis/validField - }, - valid: true, - }, - { - desc: "invalid privilege separation", - genState: &types.GenesisState{ - - BlacklistedList: []types.Blacklisted{ - { - AddressBz: sample.AddressBz(), - }, - { - sample.AddressBz(), - }, - }, - Paused: &types.Paused{ - Paused: true, - }, - MasterMinter: &types.MasterMinter{ - Address: testAddress, - }, - MintersList: []types.Minters{ - { - Address: sample.AccAddress(), - Allowance: sdk.NewCoin("test", sdk.NewInt(1)), - }, - { - Address: sample.AccAddress(), - Allowance: sdk.NewCoin("test", sdk.NewInt(1)), - }, - }, - Pauser: &types.Pauser{ - Address: testAddress, - }, - Blacklister: &types.Blacklister{ - Address: testAddress, - }, - Owner: &types.Owner{ - Address: testAddress, - }, - MinterControllerList: []types.MinterController{ - { - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - { - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - }, - MintingDenom: &types.MintingDenom{ - Denom: "test", - }, - }, - valid: false, - }, - { - desc: "duplicated blacklisted", - genState: &types.GenesisState{ - BlacklistedList: []types.Blacklisted{ - { - AddressBz: []byte("0"), - }, - { - AddressBz: []byte("0"), - }, - }, - }, - valid: false, - }, - { - desc: "duplicated minters", - genState: &types.GenesisState{ - MintersList: []types.Minters{ - { - Address: "0", - }, - { - Address: "0", - }, - }, - }, - valid: false, - }, - { - desc: "duplicated minterController", - genState: &types.GenesisState{ - MinterControllerList: []types.MinterController{ - { - Minter: "0", - }, - { - Minter: "0", - }, - }, - }, - valid: false, - }, - // this line is used by starport scaffolding # types/genesis/testcase - } { - t.Run(tc.desc, func(t *testing.T) { - err := tc.genState.Validate() - if tc.valid { - require.NoError(t, err) - } else { - require.Error(t, err) - } - }) - } -} diff --git a/x/tokenfactory/types/keys.go b/x/tokenfactory/types/keys.go deleted file mode 100644 index 9c787133..00000000 --- a/x/tokenfactory/types/keys.go +++ /dev/null @@ -1,49 +0,0 @@ -package types - -const ( - // ModuleName defines the module name - ModuleName = "tokenfactory" - - // StoreKey defines the primary module store key - StoreKey = ModuleName - - // RouterKey defines the module's message routing key - RouterKey = ModuleName - - // MemStoreKey defines the in-memory store key - MemStoreKey = "mem_tokenfactory" - - PausedKey = "Paused/value/" - MasterMinterKey = "MasterMinter/value/" - PauserKey = "Pauser/value/" - BlacklisterKey = "Blacklister/value/" - OwnerKey = "Owner/value/" - PendingOwnerKey = "PendingOwner/value/" - BlacklistedKeyPrefix = "Blacklisted/value/" - MintersKeyPrefix = "Minters/value/" - MinterControllerKeyPrefix = "MinterController/value/" -) - -func KeyPrefix(p string) []byte { - return []byte(p) -} - -// BlacklistedKey returns the store key to retrieve a Blacklisted from the index fields -func BlacklistedKey(addressBz []byte) []byte { - return append(addressBz, []byte("/")...) -} - -// MintersKey returns the store key to retrieve a Minters from the index fields -func MintersKey(address string) []byte { - return append([]byte(address), []byte("/")...) -} - -// MinterControllerKey returns the store key to retrieve a MinterController from the index fields -func MinterControllerKey(controllerAddress string) []byte { - return append([]byte(controllerAddress), []byte("/")...) - -} - -const ( - MintingDenomKey = "MintingDenom/value/" -) diff --git a/x/tokenfactory/types/master_minter.pb.go b/x/tokenfactory/types/master_minter.pb.go deleted file mode 100644 index 3ca3ee56..00000000 --- a/x/tokenfactory/types/master_minter.pb.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/master_minter.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type MasterMinter struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MasterMinter) Reset() { *m = MasterMinter{} } -func (m *MasterMinter) String() string { return proto.CompactTextString(m) } -func (*MasterMinter) ProtoMessage() {} -func (*MasterMinter) Descriptor() ([]byte, []int) { - return fileDescriptor_c337f384f876b9f9, []int{0} -} -func (m *MasterMinter) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MasterMinter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MasterMinter.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MasterMinter) XXX_Merge(src proto.Message) { - xxx_messageInfo_MasterMinter.Merge(m, src) -} -func (m *MasterMinter) XXX_Size() int { - return m.Size() -} -func (m *MasterMinter) XXX_DiscardUnknown() { - xxx_messageInfo_MasterMinter.DiscardUnknown(m) -} - -var xxx_messageInfo_MasterMinter proto.InternalMessageInfo - -func (m *MasterMinter) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func init() { - proto.RegisterType((*MasterMinter)(nil), "noble.tokenfactory.MasterMinter") -} - -func init() { proto.RegisterFile("tokenfactory/master_minter.proto", fileDescriptor_c337f384f876b9f9) } - -var fileDescriptor_c337f384f876b9f9 = []byte{ - // 168 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x28, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0xcf, 0x4d, 0x2c, 0x2e, 0x49, 0x2d, 0x8a, - 0xcf, 0xcd, 0xcc, 0x2b, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, - 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0xa7, 0xa4, 0xc1, 0xc5, 0xe3, 0x0b, 0x56, 0xea, 0x0b, 0x56, - 0x29, 0x24, 0xc1, 0xc5, 0x9e, 0x98, 0x92, 0x52, 0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, - 0xc1, 0x19, 0x04, 0xe3, 0x3a, 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, - 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, - 0x94, 0x69, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd8, 0x0a, 0xdd, - 0xc4, 0xe2, 0xe2, 0xd4, 0x92, 0x62, 0x08, 0x47, 0xbf, 0xcc, 0x5c, 0xbf, 0x42, 0x1f, 0xc5, 0x71, - 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0x57, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xf0, 0x85, 0x09, 0x64, 0xb9, 0x00, 0x00, 0x00, -} - -func (m *MasterMinter) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MasterMinter) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MasterMinter) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintMasterMinter(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintMasterMinter(dAtA []byte, offset int, v uint64) int { - offset -= sovMasterMinter(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MasterMinter) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovMasterMinter(uint64(l)) - } - return n -} - -func sovMasterMinter(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozMasterMinter(x uint64) (n int) { - return sovMasterMinter(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MasterMinter) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMasterMinter - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MasterMinter: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MasterMinter: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMasterMinter - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMasterMinter - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMasterMinter - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMasterMinter(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMasterMinter - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipMasterMinter(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMasterMinter - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMasterMinter - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMasterMinter - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthMasterMinter - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupMasterMinter - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthMasterMinter - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthMasterMinter = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowMasterMinter = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupMasterMinter = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/message_accept_owner.go b/x/tokenfactory/types/message_accept_owner.go deleted file mode 100644 index 5ca6bf79..00000000 --- a/x/tokenfactory/types/message_accept_owner.go +++ /dev/null @@ -1,45 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgAcceptOwner = "accept_owner" - -var _ sdk.Msg = &MsgAcceptOwner{} - -func NewMsgAcceptOwner(from string) *MsgAcceptOwner { - return &MsgAcceptOwner{ - From: from, - } -} - -func (msg *MsgAcceptOwner) Route() string { - return RouterKey -} - -func (msg *MsgAcceptOwner) Type() string { - return TypeMsgAcceptOwner -} - -func (msg *MsgAcceptOwner) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgAcceptOwner) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgAcceptOwner) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_blacklist.go b/x/tokenfactory/types/message_blacklist.go deleted file mode 100644 index 348c9321..00000000 --- a/x/tokenfactory/types/message_blacklist.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgBlacklist = "blacklist" - -var _ sdk.Msg = &MsgBlacklist{} - -func NewMsgBlacklist(from, address string) *MsgBlacklist { - return &MsgBlacklist{ - From: from, - Address: address, - } -} - -func (msg *MsgBlacklist) Route() string { - return RouterKey -} - -func (msg *MsgBlacklist) Type() string { - return TypeMsgBlacklist -} - -func (msg *MsgBlacklist) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgBlacklist) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgBlacklist) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - - if len(msg.Address) <= 0 { - return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, "address length cannot be less than or equal to 0") - } - return nil -} diff --git a/x/tokenfactory/types/message_blacklist_test.go b/x/tokenfactory/types/message_blacklist_test.go deleted file mode 100644 index 7c47531d..00000000 --- a/x/tokenfactory/types/message_blacklist_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgBlacklist_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgBlacklist - err error - }{ - { - name: "invalid from", - msg: MsgBlacklist{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid block address", - msg: MsgBlacklist{ - From: sample.AccAddress(), - Address: "", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid block and from address", - msg: MsgBlacklist{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_burn.go b/x/tokenfactory/types/message_burn.go deleted file mode 100644 index 72e25b75..00000000 --- a/x/tokenfactory/types/message_burn.go +++ /dev/null @@ -1,59 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgBurn = "burn" - -var _ sdk.Msg = &MsgBurn{} - -func NewMsgBurn(from string, amount sdk.Coin) *MsgBurn { - return &MsgBurn{ - From: from, - Amount: amount, - } -} - -func (msg *MsgBurn) Route() string { - return RouterKey -} - -func (msg *MsgBurn) Type() string { - return TypeMsgBurn -} - -func (msg *MsgBurn) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgBurn) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgBurn) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - - if msg.Amount.IsNil() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "burn amount cannot be nil") - } - - if msg.Amount.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "burn amount cannot be negative") - } - - if msg.Amount.IsZero() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "burn amount cannot be zero") - } - - return nil -} diff --git a/x/tokenfactory/types/message_burn_test.go b/x/tokenfactory/types/message_burn_test.go deleted file mode 100644 index 9d9e0a7e..00000000 --- a/x/tokenfactory/types/message_burn_test.go +++ /dev/null @@ -1,42 +0,0 @@ -package types - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgBurn_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgBurn - err error - }{ - { - name: "invalid address", - msg: MsgBurn{ - From: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, { - name: "valid address", - msg: MsgBurn{ - From: sample.AccAddress(), - Amount: sdk.NewCoin("test", sdk.NewInt(1)), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_configure_minter.go b/x/tokenfactory/types/message_configure_minter.go deleted file mode 100644 index c1022139..00000000 --- a/x/tokenfactory/types/message_configure_minter.go +++ /dev/null @@ -1,61 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgConfigureMinter = "configure_minter" - -var _ sdk.Msg = &MsgConfigureMinter{} - -func NewMsgConfigureMinter(from string, address string, allowance sdk.Coin) *MsgConfigureMinter { - return &MsgConfigureMinter{ - From: from, - Address: address, - Allowance: allowance, - } -} - -func (msg *MsgConfigureMinter) Route() string { - return RouterKey -} - -func (msg *MsgConfigureMinter) Type() string { - return TypeMsgConfigureMinter -} - -func (msg *MsgConfigureMinter) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgConfigureMinter) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgConfigureMinter) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid minter address (%s)", err) - } - - if msg.Allowance.IsNil() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "allowance amount cannot be nil") - } - - if msg.Allowance.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "allowance amount cannot be negative") - } - - return nil -} diff --git a/x/tokenfactory/types/message_configure_minter_controller.go b/x/tokenfactory/types/message_configure_minter_controller.go deleted file mode 100644 index 8a8a7747..00000000 --- a/x/tokenfactory/types/message_configure_minter_controller.go +++ /dev/null @@ -1,55 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgConfigureMinterController = "configure_minter_controller" - -var _ sdk.Msg = &MsgConfigureMinterController{} - -func NewMsgConfigureMinterController(from string, controller string, minter string) *MsgConfigureMinterController { - return &MsgConfigureMinterController{ - From: from, - Controller: controller, - Minter: minter, - } -} - -func (msg *MsgConfigureMinterController) Route() string { - return RouterKey -} - -func (msg *MsgConfigureMinterController) Type() string { - return TypeMsgConfigureMinterController -} - -func (msg *MsgConfigureMinterController) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgConfigureMinterController) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgConfigureMinterController) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Controller) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid controller address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Minter) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid minter address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_configure_minter_controller_test.go b/x/tokenfactory/types/message_configure_minter_controller_test.go deleted file mode 100644 index 0ba966a3..00000000 --- a/x/tokenfactory/types/message_configure_minter_controller_test.go +++ /dev/null @@ -1,63 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgConfigureMinterController_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgConfigureMinterController - err error - }{ - { - name: "invalid from", - msg: MsgConfigureMinterController{ - From: "invalid_address", - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid controller", - msg: MsgConfigureMinterController{ - From: sample.AccAddress(), - Controller: "invalid_address", - Minter: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid minter", - msg: MsgConfigureMinterController{ - From: sample.AccAddress(), - Controller: sample.AccAddress(), - Minter: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address, minter, and controller", - msg: MsgConfigureMinterController{ - From: sample.AccAddress(), - Controller: sample.AccAddress(), - Minter: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_configure_minter_test.go b/x/tokenfactory/types/message_configure_minter_test.go deleted file mode 100644 index ec687c32..00000000 --- a/x/tokenfactory/types/message_configure_minter_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package types - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgConfigureMinter_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgConfigureMinter - err error - }{ - { - name: "invalid from", - msg: MsgConfigureMinter{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgConfigureMinter{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgConfigureMinter{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - Allowance: sdk.NewCoin("test", sdk.NewInt(1)), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_mint.go b/x/tokenfactory/types/message_mint.go deleted file mode 100644 index 600a8091..00000000 --- a/x/tokenfactory/types/message_mint.go +++ /dev/null @@ -1,65 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgMint = "mint" - -var _ sdk.Msg = &MsgMint{} - -func NewMsgMint(from string, address string, amount sdk.Coin) *MsgMint { - return &MsgMint{ - From: from, - Address: address, - Amount: amount, - } -} - -func (msg *MsgMint) Route() string { - return RouterKey -} - -func (msg *MsgMint) Type() string { - return TypeMsgMint -} - -func (msg *MsgMint) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgMint) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgMint) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid address (%s)", err) - } - - if msg.Amount.IsNil() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "mint amount cannot be nil") - } - - if msg.Amount.IsNegative() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "mint amount cannot be negative") - } - - if msg.Amount.IsZero() { - return sdkerrors.Wrap(sdkerrors.ErrInvalidCoins, "mint amount cannot be zero") - } - - return nil -} diff --git a/x/tokenfactory/types/message_mint_test.go b/x/tokenfactory/types/message_mint_test.go deleted file mode 100644 index f7a5a5c9..00000000 --- a/x/tokenfactory/types/message_mint_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package types - -import ( - "testing" - - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgMint_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgMint - err error - }{ - { - name: "invalid from", - msg: MsgMint{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgMint{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgMint{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - Amount: sdk.NewCoin("test", sdk.NewInt(1)), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_pause.go b/x/tokenfactory/types/message_pause.go deleted file mode 100644 index c784cf51..00000000 --- a/x/tokenfactory/types/message_pause.go +++ /dev/null @@ -1,45 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgPause = "pause" - -var _ sdk.Msg = &MsgPause{} - -func NewMsgPause(from string) *MsgPause { - return &MsgPause{ - From: from, - } -} - -func (msg *MsgPause) Route() string { - return RouterKey -} - -func (msg *MsgPause) Type() string { - return TypeMsgPause -} - -func (msg *MsgPause) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgPause) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgPause) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_pause_test.go b/x/tokenfactory/types/message_pause_test.go deleted file mode 100644 index 43bc2567..00000000 --- a/x/tokenfactory/types/message_pause_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgPause_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgPause - err error - }{ - { - name: "invalid address", - msg: MsgPause{ - From: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, { - name: "valid address", - msg: MsgPause{ - From: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_remove_minter.go b/x/tokenfactory/types/message_remove_minter.go deleted file mode 100644 index edbdd2ce..00000000 --- a/x/tokenfactory/types/message_remove_minter.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgRemoveMinter = "remove_minter" - -var _ sdk.Msg = &MsgRemoveMinter{} - -func NewMsgRemoveMinter(from string, address string) *MsgRemoveMinter { - return &MsgRemoveMinter{ - From: from, - Address: address, - } -} - -func (msg *MsgRemoveMinter) Route() string { - return RouterKey -} - -func (msg *MsgRemoveMinter) Type() string { - return TypeMsgRemoveMinter -} - -func (msg *MsgRemoveMinter) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgRemoveMinter) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgRemoveMinter) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid minter address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_remove_minter_controller.go b/x/tokenfactory/types/message_remove_minter_controller.go deleted file mode 100644 index 21c5acc3..00000000 --- a/x/tokenfactory/types/message_remove_minter_controller.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgRemoveMinterController = "remove_minter_controller" - -var _ sdk.Msg = &MsgRemoveMinterController{} - -func NewMsgRemoveMinterController(from string, address string) *MsgRemoveMinterController { - return &MsgRemoveMinterController{ - From: from, - Controller: address, - } -} - -func (msg *MsgRemoveMinterController) Route() string { - return RouterKey -} - -func (msg *MsgRemoveMinterController) Type() string { - return TypeMsgRemoveMinterController -} - -func (msg *MsgRemoveMinterController) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgRemoveMinterController) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgRemoveMinterController) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Controller) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid minter controller address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_remove_minter_controller_test.go b/x/tokenfactory/types/message_remove_minter_controller_test.go deleted file mode 100644 index a6cb1f3b..00000000 --- a/x/tokenfactory/types/message_remove_minter_controller_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgRemoveMinterController_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgRemoveMinterController - err error - }{ - { - name: "invalid from", - msg: MsgRemoveMinterController{ - From: "invalid_address", - Controller: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid controller", - msg: MsgRemoveMinterController{ - From: sample.AccAddress(), - Controller: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid controller and from", - msg: MsgRemoveMinterController{ - From: sample.AccAddress(), - Controller: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_remove_minter_test.go b/x/tokenfactory/types/message_remove_minter_test.go deleted file mode 100644 index 48b25b7a..00000000 --- a/x/tokenfactory/types/message_remove_minter_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgRemoveMinter_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgRemoveMinter - err error - }{ - { - name: "invalid from", - msg: MsgRemoveMinter{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgRemoveMinter{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgRemoveMinter{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_unblacklist.go b/x/tokenfactory/types/message_unblacklist.go deleted file mode 100644 index acc84092..00000000 --- a/x/tokenfactory/types/message_unblacklist.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUnblacklist = "unblacklist" - -var _ sdk.Msg = &MsgUnblacklist{} - -func NewMsgUnblacklist(from, address string) *MsgUnblacklist { - return &MsgUnblacklist{ - From: from, - Address: address, - } -} - -func (msg *MsgUnblacklist) Route() string { - return RouterKey -} - -func (msg *MsgUnblacklist) Type() string { - return TypeMsgUnblacklist -} - -func (msg *MsgUnblacklist) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUnblacklist) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUnblacklist) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - - if len(msg.Address) <= 0 { - return sdkerrors.Wrap(sdkerrors.ErrInvalidAddress, "address length cannot be less than or equal to 0") - } - return nil -} diff --git a/x/tokenfactory/types/message_unblacklist_test.go b/x/tokenfactory/types/message_unblacklist_test.go deleted file mode 100644 index 0bfedc43..00000000 --- a/x/tokenfactory/types/message_unblacklist_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUnblacklist_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUnblacklist - err error - }{ - { - name: "invalid from", - msg: MsgUnblacklist{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid block address", - msg: MsgUnblacklist{ - From: sample.AccAddress(), - Address: "", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid block address and from", - msg: MsgUnblacklist{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_unpause.go b/x/tokenfactory/types/message_unpause.go deleted file mode 100644 index 8e3b45c1..00000000 --- a/x/tokenfactory/types/message_unpause.go +++ /dev/null @@ -1,45 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUnpause = "unpause" - -var _ sdk.Msg = &MsgUnpause{} - -func NewMsgUnpause(from string) *MsgUnpause { - return &MsgUnpause{ - From: from, - } -} - -func (msg *MsgUnpause) Route() string { - return RouterKey -} - -func (msg *MsgUnpause) Type() string { - return TypeMsgUnpause -} - -func (msg *MsgUnpause) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUnpause) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUnpause) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_unpause_test.go b/x/tokenfactory/types/message_unpause_test.go deleted file mode 100644 index 2644f939..00000000 --- a/x/tokenfactory/types/message_unpause_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUnpause_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUnpause - err error - }{ - { - name: "invalid address", - msg: MsgUnpause{ - From: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, { - name: "valid address", - msg: MsgUnpause{ - From: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_update_blacklister.go b/x/tokenfactory/types/message_update_blacklister.go deleted file mode 100644 index 3986ed3a..00000000 --- a/x/tokenfactory/types/message_update_blacklister.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUpdateBlacklister = "update_blacklister" - -var _ sdk.Msg = &MsgUpdateBlacklister{} - -func NewMsgUpdateBlacklister(from string, address string) *MsgUpdateBlacklister { - return &MsgUpdateBlacklister{ - From: from, - Address: address, - } -} - -func (msg *MsgUpdateBlacklister) Route() string { - return RouterKey -} - -func (msg *MsgUpdateBlacklister) Type() string { - return TypeMsgUpdateBlacklister -} - -func (msg *MsgUpdateBlacklister) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUpdateBlacklister) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateBlacklister) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid blacklister address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_update_blacklister_test.go b/x/tokenfactory/types/message_update_blacklister_test.go deleted file mode 100644 index 51b502a9..00000000 --- a/x/tokenfactory/types/message_update_blacklister_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUpdateBlacklister_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUpdateBlacklister - err error - }{ - { - name: "invalid from", - msg: MsgUpdateBlacklister{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgUpdateBlacklister{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgUpdateBlacklister{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_update_master_minter.go b/x/tokenfactory/types/message_update_master_minter.go deleted file mode 100644 index 156d4f41..00000000 --- a/x/tokenfactory/types/message_update_master_minter.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUpdateMasterMinter = "update_master_minter" - -var _ sdk.Msg = &MsgUpdateMasterMinter{} - -func NewMsgUpdateMasterMinter(from string, address string) *MsgUpdateMasterMinter { - return &MsgUpdateMasterMinter{ - From: from, - Address: address, - } -} - -func (msg *MsgUpdateMasterMinter) Route() string { - return RouterKey -} - -func (msg *MsgUpdateMasterMinter) Type() string { - return TypeMsgUpdateMasterMinter -} - -func (msg *MsgUpdateMasterMinter) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUpdateMasterMinter) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateMasterMinter) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid master minter address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_update_master_minter_test.go b/x/tokenfactory/types/message_update_master_minter_test.go deleted file mode 100644 index d045d09d..00000000 --- a/x/tokenfactory/types/message_update_master_minter_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUpdateMasterMinter_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUpdateMasterMinter - err error - }{ - { - name: "invalid from", - msg: MsgUpdateMasterMinter{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgUpdateMasterMinter{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgUpdateMasterMinter{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_update_owner.go b/x/tokenfactory/types/message_update_owner.go deleted file mode 100644 index 105ac91e..00000000 --- a/x/tokenfactory/types/message_update_owner.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUpdateOwner = "update_owner" - -var _ sdk.Msg = &MsgUpdateOwner{} - -func NewMsgUpdateOwner(from string, address string) *MsgUpdateOwner { - return &MsgUpdateOwner{ - From: from, - Address: address, - } -} - -func (msg *MsgUpdateOwner) Route() string { - return RouterKey -} - -func (msg *MsgUpdateOwner) Type() string { - return TypeMsgUpdateOwner -} - -func (msg *MsgUpdateOwner) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUpdateOwner) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdateOwner) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid owner address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_update_owner_test.go b/x/tokenfactory/types/message_update_owner_test.go deleted file mode 100644 index 5f78fef1..00000000 --- a/x/tokenfactory/types/message_update_owner_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUpdateOwner_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUpdateOwner - err error - }{ - { - name: "invalid from", - msg: MsgUpdateOwner{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgUpdateOwner{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgUpdateOwner{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/message_update_pauser.go b/x/tokenfactory/types/message_update_pauser.go deleted file mode 100644 index f1212d3a..00000000 --- a/x/tokenfactory/types/message_update_pauser.go +++ /dev/null @@ -1,50 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" -) - -const TypeMsgUpdatePauser = "update_pauser" - -var _ sdk.Msg = &MsgUpdatePauser{} - -func NewMsgUpdatePauser(from string, address string) *MsgUpdatePauser { - return &MsgUpdatePauser{ - From: from, - Address: address, - } -} - -func (msg *MsgUpdatePauser) Route() string { - return RouterKey -} - -func (msg *MsgUpdatePauser) Type() string { - return TypeMsgUpdatePauser -} - -func (msg *MsgUpdatePauser) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - panic(err) - } - return []sdk.AccAddress{from} -} - -func (msg *MsgUpdatePauser) GetSignBytes() []byte { - bz := ModuleCdc.MustMarshalJSON(msg) - return sdk.MustSortJSON(bz) -} - -func (msg *MsgUpdatePauser) ValidateBasic() error { - _, err := sdk.AccAddressFromBech32(msg.From) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid from address (%s)", err) - } - _, err = sdk.AccAddressFromBech32(msg.Address) - if err != nil { - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid pauser address (%s)", err) - } - return nil -} diff --git a/x/tokenfactory/types/message_update_pauser_test.go b/x/tokenfactory/types/message_update_pauser_test.go deleted file mode 100644 index eaad8ce9..00000000 --- a/x/tokenfactory/types/message_update_pauser_test.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import ( - "testing" - - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - "github.com/noble-assets/noble/v7/testutil/sample" - "github.com/stretchr/testify/require" -) - -func TestMsgUpdatePauser_ValidateBasic(t *testing.T) { - tests := []struct { - name string - msg MsgUpdatePauser - err error - }{ - { - name: "invalid from", - msg: MsgUpdatePauser{ - From: "invalid_address", - Address: sample.AccAddress(), - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "invalid address", - msg: MsgUpdatePauser{ - From: sample.AccAddress(), - Address: "invalid_address", - }, - err: sdkerrors.ErrInvalidAddress, - }, - { - name: "valid address and from", - msg: MsgUpdatePauser{ - From: sample.AccAddress(), - Address: sample.AccAddress(), - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - err := tt.msg.ValidateBasic() - if tt.err != nil { - require.ErrorIs(t, err, tt.err) - return - } - require.NoError(t, err) - }) - } -} diff --git a/x/tokenfactory/types/minter_controller.pb.go b/x/tokenfactory/types/minter_controller.pb.go deleted file mode 100644 index 990e45f9..00000000 --- a/x/tokenfactory/types/minter_controller.pb.go +++ /dev/null @@ -1,369 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/minter_controller.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type MinterController struct { - Minter string `protobuf:"bytes,1,opt,name=minter,proto3" json:"minter,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *MinterController) Reset() { *m = MinterController{} } -func (m *MinterController) String() string { return proto.CompactTextString(m) } -func (*MinterController) ProtoMessage() {} -func (*MinterController) Descriptor() ([]byte, []int) { - return fileDescriptor_08f20cf60d2060bd, []int{0} -} -func (m *MinterController) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MinterController) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MinterController.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MinterController) XXX_Merge(src proto.Message) { - xxx_messageInfo_MinterController.Merge(m, src) -} -func (m *MinterController) XXX_Size() int { - return m.Size() -} -func (m *MinterController) XXX_DiscardUnknown() { - xxx_messageInfo_MinterController.DiscardUnknown(m) -} - -var xxx_messageInfo_MinterController proto.InternalMessageInfo - -func (m *MinterController) GetMinter() string { - if m != nil { - return m.Minter - } - return "" -} - -func (m *MinterController) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -func init() { - proto.RegisterType((*MinterController)(nil), "noble.tokenfactory.MinterController") -} - -func init() { - proto.RegisterFile("tokenfactory/minter_controller.proto", fileDescriptor_08f20cf60d2060bd) -} - -var fileDescriptor_08f20cf60d2060bd = []byte{ - // 179 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x29, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0xcf, 0xcd, 0xcc, 0x2b, 0x49, 0x2d, 0x8a, - 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, - 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0xab, 0xe4, 0xc5, 0x25, 0xe0, 0x0b, - 0x56, 0xee, 0x0c, 0x57, 0x2d, 0x24, 0xc6, 0xc5, 0x06, 0x31, 0x42, 0x82, 0x51, 0x81, 0x51, 0x83, - 0x33, 0x08, 0xca, 0x13, 0x92, 0xe3, 0xe2, 0x42, 0x98, 0x29, 0xc1, 0x04, 0x96, 0x43, 0x12, 0x71, - 0xf2, 0x3f, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, - 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xd3, 0xf4, 0xcc, 0x92, - 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, 0x7d, 0xb0, 0x23, 0x74, 0x13, 0x8b, 0x8b, 0x53, 0x4b, - 0x8a, 0x21, 0x1c, 0xfd, 0x32, 0x73, 0xfd, 0x0a, 0x7d, 0x14, 0x2f, 0x94, 0x54, 0x16, 0xa4, 0x16, - 0x27, 0xb1, 0x81, 0xdd, 0x6d, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xf3, 0x72, 0xaa, 0xdf, - 0x00, 0x00, 0x00, -} - -func (m *MinterController) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MinterController) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MinterController) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintMinterController(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x12 - } - if len(m.Minter) > 0 { - i -= len(m.Minter) - copy(dAtA[i:], m.Minter) - i = encodeVarintMinterController(dAtA, i, uint64(len(m.Minter))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintMinterController(dAtA []byte, offset int, v uint64) int { - offset -= sovMinterController(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MinterController) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Minter) - if l > 0 { - n += 1 + l + sovMinterController(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovMinterController(uint64(l)) - } - return n -} - -func sovMinterController(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozMinterController(x uint64) (n int) { - return sovMinterController(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MinterController) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinterController - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MinterController: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MinterController: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Minter", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinterController - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMinterController - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMinterController - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Minter = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinterController - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMinterController - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMinterController - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMinterController(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMinterController - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipMinterController(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinterController - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinterController - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinterController - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthMinterController - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupMinterController - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthMinterController - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthMinterController = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowMinterController = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupMinterController = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/minters.pb.go b/x/tokenfactory/types/minters.pb.go deleted file mode 100644 index 0152d5f3..00000000 --- a/x/tokenfactory/types/minters.pb.go +++ /dev/null @@ -1,375 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/minters.proto - -package types - -import ( - fmt "fmt" - types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Minters struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Allowance types.Coin `protobuf:"bytes,2,opt,name=allowance,proto3" json:"allowance"` -} - -func (m *Minters) Reset() { *m = Minters{} } -func (m *Minters) String() string { return proto.CompactTextString(m) } -func (*Minters) ProtoMessage() {} -func (*Minters) Descriptor() ([]byte, []int) { - return fileDescriptor_ac9d7080b5299f2f, []int{0} -} -func (m *Minters) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Minters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Minters.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Minters) XXX_Merge(src proto.Message) { - xxx_messageInfo_Minters.Merge(m, src) -} -func (m *Minters) XXX_Size() int { - return m.Size() -} -func (m *Minters) XXX_DiscardUnknown() { - xxx_messageInfo_Minters.DiscardUnknown(m) -} - -var xxx_messageInfo_Minters proto.InternalMessageInfo - -func (m *Minters) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *Minters) GetAllowance() types.Coin { - if m != nil { - return m.Allowance - } - return types.Coin{} -} - -func init() { - proto.RegisterType((*Minters)(nil), "noble.tokenfactory.Minters") -} - -func init() { proto.RegisterFile("tokenfactory/minters.proto", fileDescriptor_ac9d7080b5299f2f) } - -var fileDescriptor_ac9d7080b5299f2f = []byte{ - // 244 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0xb1, 0x4e, 0xc3, 0x30, - 0x10, 0x86, 0x63, 0x84, 0xa8, 0x1a, 0xb6, 0x88, 0x21, 0x64, 0x30, 0x15, 0x53, 0x17, 0x7c, 0x2a, - 0x08, 0x31, 0xb1, 0x94, 0x19, 0x21, 0x75, 0x64, 0xb3, 0xdd, 0x23, 0x44, 0x24, 0xbe, 0xca, 0x67, - 0x0a, 0x7d, 0x0b, 0x1e, 0xab, 0x63, 0x47, 0x26, 0x84, 0x92, 0x17, 0x41, 0x89, 0x41, 0xc0, 0xf6, - 0xff, 0xa7, 0xfb, 0xef, 0xbb, 0xbb, 0xb4, 0x08, 0xf4, 0x84, 0xee, 0x41, 0xdb, 0x40, 0x7e, 0x03, - 0x4d, 0xe5, 0x02, 0x7a, 0x56, 0x2b, 0x4f, 0x81, 0xb2, 0xcc, 0x91, 0xa9, 0x51, 0xfd, 0xed, 0x28, - 0xa4, 0x25, 0x6e, 0x88, 0xc1, 0x68, 0x46, 0x58, 0xcf, 0x0c, 0x06, 0x3d, 0x03, 0x4b, 0x95, 0x8b, - 0x99, 0xe2, 0xa8, 0xa4, 0x92, 0x06, 0x09, 0xbd, 0x8a, 0xd5, 0x53, 0x93, 0x8e, 0x6e, 0xe3, 0xe8, - 0x2c, 0x4f, 0x47, 0x7a, 0xb9, 0xf4, 0xc8, 0x9c, 0x8b, 0x89, 0x98, 0x8e, 0x17, 0x3f, 0x36, 0xbb, - 0x4e, 0xc7, 0xba, 0xae, 0xe9, 0x45, 0x3b, 0x8b, 0xf9, 0xde, 0x44, 0x4c, 0x0f, 0xcf, 0x8f, 0x55, - 0xc4, 0xa9, 0x1e, 0xa7, 0xbe, 0x71, 0xea, 0x86, 0x2a, 0x37, 0xdf, 0xdf, 0x7e, 0x9c, 0x24, 0x8b, - 0xdf, 0xc4, 0xfc, 0x6e, 0xdb, 0x4a, 0xb1, 0x6b, 0xa5, 0xf8, 0x6c, 0xa5, 0x78, 0xeb, 0x64, 0xb2, - 0xeb, 0x64, 0xf2, 0xde, 0xc9, 0xe4, 0xfe, 0xb2, 0xac, 0xc2, 0xe3, 0xb3, 0x51, 0x96, 0x1a, 0x18, - 0x4e, 0x3a, 0xd3, 0xcc, 0x18, 0x38, 0x1a, 0x58, 0x5f, 0xc1, 0x2b, 0xfc, 0x7b, 0x43, 0xd8, 0xac, - 0x90, 0xcd, 0xc1, 0xb0, 0xfb, 0xc5, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x74, 0xdc, 0x8a, - 0x23, 0x01, 0x00, 0x00, -} - -func (m *Minters) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Minters) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Minters) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintMinters(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintMinters(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintMinters(dAtA []byte, offset int, v uint64) int { - offset -= sovMinters(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Minters) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovMinters(uint64(l)) - } - l = m.Allowance.Size() - n += 1 + l + sovMinters(uint64(l)) - return n -} - -func sovMinters(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozMinters(x uint64) (n int) { - return sovMinters(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Minters) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinters - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Minters: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Minters: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinters - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMinters - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMinters - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Allowance", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMinters - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthMinters - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthMinters - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMinters(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMinters - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipMinters(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinters - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinters - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMinters - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthMinters - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupMinters - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthMinters - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthMinters = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowMinters = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupMinters = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/minting_denom.pb.go b/x/tokenfactory/types/minting_denom.pb.go deleted file mode 100644 index 84e04268..00000000 --- a/x/tokenfactory/types/minting_denom.pb.go +++ /dev/null @@ -1,315 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/minting_denom.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type MintingDenom struct { - Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` -} - -func (m *MintingDenom) Reset() { *m = MintingDenom{} } -func (m *MintingDenom) String() string { return proto.CompactTextString(m) } -func (*MintingDenom) ProtoMessage() {} -func (*MintingDenom) Descriptor() ([]byte, []int) { - return fileDescriptor_478a1499404b8e04, []int{0} -} -func (m *MintingDenom) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MintingDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MintingDenom.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MintingDenom) XXX_Merge(src proto.Message) { - xxx_messageInfo_MintingDenom.Merge(m, src) -} -func (m *MintingDenom) XXX_Size() int { - return m.Size() -} -func (m *MintingDenom) XXX_DiscardUnknown() { - xxx_messageInfo_MintingDenom.DiscardUnknown(m) -} - -var xxx_messageInfo_MintingDenom proto.InternalMessageInfo - -func (m *MintingDenom) GetDenom() string { - if m != nil { - return m.Denom - } - return "" -} - -func init() { - proto.RegisterType((*MintingDenom)(nil), "noble.tokenfactory.MintingDenom") -} - -func init() { proto.RegisterFile("tokenfactory/minting_denom.proto", fileDescriptor_478a1499404b8e04) } - -var fileDescriptor_478a1499404b8e04 = []byte{ - // 163 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x28, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0xcf, 0xcd, 0xcc, 0x2b, 0xc9, 0xcc, 0x4b, - 0x8f, 0x4f, 0x49, 0xcd, 0xcb, 0xcf, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, - 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0xa7, 0xa4, 0xc2, 0xc5, 0xe3, 0x0b, 0x51, 0xea, 0x02, 0x52, - 0x29, 0x24, 0xc2, 0xc5, 0x0a, 0xd6, 0x22, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x04, 0xe1, 0x38, - 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, - 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x69, 0x7a, 0x66, 0x49, - 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd8, 0x78, 0xdd, 0xc4, 0xe2, 0xe2, 0xd4, 0x92, - 0x62, 0x08, 0x47, 0xbf, 0xcc, 0x5c, 0xbf, 0x42, 0x1f, 0xc5, 0x61, 0x25, 0x95, 0x05, 0xa9, 0xc5, - 0x49, 0x6c, 0x60, 0x17, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0xa8, 0xcd, 0x08, 0x22, 0xb5, - 0x00, 0x00, 0x00, -} - -func (m *MintingDenom) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MintingDenom) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MintingDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Denom) > 0 { - i -= len(m.Denom) - copy(dAtA[i:], m.Denom) - i = encodeVarintMintingDenom(dAtA, i, uint64(len(m.Denom))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintMintingDenom(dAtA []byte, offset int, v uint64) int { - offset -= sovMintingDenom(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MintingDenom) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Denom) - if l > 0 { - n += 1 + l + sovMintingDenom(uint64(l)) - } - return n -} - -func sovMintingDenom(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozMintingDenom(x uint64) (n int) { - return sovMintingDenom(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MintingDenom) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMintingDenom - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MintingDenom: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MintingDenom: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowMintingDenom - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthMintingDenom - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthMintingDenom - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Denom = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipMintingDenom(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthMintingDenom - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipMintingDenom(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMintingDenom - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMintingDenom - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowMintingDenom - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthMintingDenom - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupMintingDenom - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthMintingDenom - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthMintingDenom = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowMintingDenom = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupMintingDenom = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/owner.pb.go b/x/tokenfactory/types/owner.pb.go deleted file mode 100644 index ecc4247c..00000000 --- a/x/tokenfactory/types/owner.pb.go +++ /dev/null @@ -1,314 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/owner.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Owner struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *Owner) Reset() { *m = Owner{} } -func (m *Owner) String() string { return proto.CompactTextString(m) } -func (*Owner) ProtoMessage() {} -func (*Owner) Descriptor() ([]byte, []int) { - return fileDescriptor_9a4e397b1130eab4, []int{0} -} -func (m *Owner) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Owner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Owner.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Owner) XXX_Merge(src proto.Message) { - xxx_messageInfo_Owner.Merge(m, src) -} -func (m *Owner) XXX_Size() int { - return m.Size() -} -func (m *Owner) XXX_DiscardUnknown() { - xxx_messageInfo_Owner.DiscardUnknown(m) -} - -var xxx_messageInfo_Owner proto.InternalMessageInfo - -func (m *Owner) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func init() { - proto.RegisterType((*Owner)(nil), "noble.tokenfactory.Owner") -} - -func init() { proto.RegisterFile("tokenfactory/owner.proto", fileDescriptor_9a4e397b1130eab4) } - -var fileDescriptor_9a4e397b1130eab4 = []byte{ - // 157 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x28, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0xcf, 0x2f, 0xcf, 0x4b, 0x2d, 0xd2, 0x2b, - 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x96, 0x57, 0x52, - 0xe4, 0x62, 0xf5, 0x07, 0x29, 0x11, 0x92, 0xe0, 0x62, 0x4f, 0x4c, 0x49, 0x29, 0x4a, 0x2d, 0x2e, - 0x96, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0c, 0x82, 0x71, 0x9d, 0xfc, 0x4f, 0x3c, 0x92, 0x63, 0xbc, - 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, - 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x34, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, - 0x57, 0x1f, 0x6c, 0xb6, 0x6e, 0x62, 0x71, 0x71, 0x6a, 0x49, 0x31, 0x84, 0xa3, 0x5f, 0x66, 0xae, - 0x5f, 0xa1, 0x8f, 0xe2, 0x9a, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0x73, 0x8c, 0x01, - 0x01, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x57, 0xdf, 0x45, 0xaa, 0x00, 0x00, 0x00, -} - -func (m *Owner) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Owner) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Owner) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintOwner(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintOwner(dAtA []byte, offset int, v uint64) int { - offset -= sovOwner(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Owner) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovOwner(uint64(l)) - } - return n -} - -func sovOwner(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozOwner(x uint64) (n int) { - return sovOwner(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Owner) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowOwner - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Owner: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Owner: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowOwner - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthOwner - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthOwner - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipOwner(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthOwner - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipOwner(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowOwner - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowOwner - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowOwner - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthOwner - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupOwner - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthOwner - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthOwner = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowOwner = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupOwner = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/params.go b/x/tokenfactory/types/params.go deleted file mode 100644 index 357196ad..00000000 --- a/x/tokenfactory/types/params.go +++ /dev/null @@ -1,39 +0,0 @@ -package types - -import ( - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - "gopkg.in/yaml.v2" -) - -var _ paramtypes.ParamSet = (*Params)(nil) - -// ParamKeyTable the param key table for launch module -func ParamKeyTable() paramtypes.KeyTable { - return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) -} - -// NewParams creates a new Params instance -func NewParams() Params { - return Params{} -} - -// DefaultParams returns a default set of parameters -func DefaultParams() Params { - return NewParams() -} - -// ParamSetPairs get the params.ParamSet -func (p *Params) ParamSetPairs() paramtypes.ParamSetPairs { - return paramtypes.ParamSetPairs{} -} - -// Validate validates the set of params -func (p Params) Validate() error { - return nil -} - -// String implements the Stringer interface. -func (p Params) String() string { - out, _ := yaml.Marshal(p) - return string(out) -} diff --git a/x/tokenfactory/types/params.pb.go b/x/tokenfactory/types/params.pb.go deleted file mode 100644 index bc23e83b..00000000 --- a/x/tokenfactory/types/params.pb.go +++ /dev/null @@ -1,264 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/params.proto - -package types - -import ( - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// Params defines the parameters for the module. -type Params struct { -} - -func (m *Params) Reset() { *m = Params{} } -func (*Params) ProtoMessage() {} -func (*Params) Descriptor() ([]byte, []int) { - return fileDescriptor_0f39a375875b281a, []int{0} -} -func (m *Params) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Params.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Params) XXX_Merge(src proto.Message) { - xxx_messageInfo_Params.Merge(m, src) -} -func (m *Params) XXX_Size() int { - return m.Size() -} -func (m *Params) XXX_DiscardUnknown() { - xxx_messageInfo_Params.DiscardUnknown(m) -} - -var xxx_messageInfo_Params proto.InternalMessageInfo - -func init() { - proto.RegisterType((*Params)(nil), "noble.tokenfactory.Params") -} - -func init() { proto.RegisterFile("tokenfactory/params.proto", fileDescriptor_0f39a375875b281a) } - -var fileDescriptor_0f39a375875b281a = []byte{ - // 157 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0x20, - 0x25, 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x96, 0xd6, 0x07, 0xb1, 0x20, 0x2a, 0x95, 0xf8, 0xb8, 0xd8, - 0x02, 0xc0, 0x3a, 0xad, 0x58, 0x66, 0x2c, 0x90, 0x67, 0x70, 0xf2, 0x3f, 0xf1, 0x48, 0x8e, 0xf1, - 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, - 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xd3, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, - 0x5c, 0x7d, 0xb0, 0xf1, 0xba, 0x89, 0xc5, 0xc5, 0xa9, 0x25, 0xc5, 0x10, 0x8e, 0x7e, 0x99, 0xb9, - 0x7e, 0x85, 0x3e, 0x8a, 0x8b, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0xf6, 0x18, 0x03, - 0x02, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x4e, 0x87, 0x03, 0xae, 0x00, 0x00, 0x00, -} - -func (m *Params) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Params) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func encodeVarintParams(dAtA []byte, offset int, v uint64) int { - offset -= sovParams(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Params) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func sovParams(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozParams(x uint64) (n int) { - return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Params) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowParams - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Params: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipParams(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthParams - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipParams(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowParams - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthParams - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupParams - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthParams - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/paused.pb.go b/x/tokenfactory/types/paused.pb.go deleted file mode 100644 index 8692541c..00000000 --- a/x/tokenfactory/types/paused.pb.go +++ /dev/null @@ -1,304 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/paused.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Paused struct { - Paused bool `protobuf:"varint,1,opt,name=paused,proto3" json:"paused,omitempty"` -} - -func (m *Paused) Reset() { *m = Paused{} } -func (m *Paused) String() string { return proto.CompactTextString(m) } -func (*Paused) ProtoMessage() {} -func (*Paused) Descriptor() ([]byte, []int) { - return fileDescriptor_f80e08031f66ef0e, []int{0} -} -func (m *Paused) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Paused) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Paused.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Paused) XXX_Merge(src proto.Message) { - xxx_messageInfo_Paused.Merge(m, src) -} -func (m *Paused) XXX_Size() int { - return m.Size() -} -func (m *Paused) XXX_DiscardUnknown() { - xxx_messageInfo_Paused.DiscardUnknown(m) -} - -var xxx_messageInfo_Paused proto.InternalMessageInfo - -func (m *Paused) GetPaused() bool { - if m != nil { - return m.Paused - } - return false -} - -func init() { - proto.RegisterType((*Paused)(nil), "noble.tokenfactory.Paused") -} - -func init() { proto.RegisterFile("tokenfactory/paused.proto", fileDescriptor_f80e08031f66ef0e) } - -var fileDescriptor_f80e08031f66ef0e = []byte{ - // 153 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0x2f, 0x48, 0x2c, 0x2d, 0x4e, 0x4d, 0xd1, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0xa0, - 0xa4, 0xc0, 0xc5, 0x16, 0x00, 0x56, 0x23, 0x24, 0xc6, 0xc5, 0x06, 0x51, 0x2d, 0xc1, 0xa8, 0xc0, - 0xa8, 0xc1, 0x11, 0x04, 0xe5, 0x39, 0xf9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, - 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, - 0x43, 0x94, 0x69, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x3e, 0xd8, 0x68, - 0xdd, 0xc4, 0xe2, 0xe2, 0xd4, 0x92, 0x62, 0x08, 0x47, 0xbf, 0xcc, 0x5c, 0xbf, 0x42, 0x1f, 0xc5, - 0x35, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0xd7, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, - 0xff, 0x3c, 0x19, 0x0c, 0x97, 0xaa, 0x00, 0x00, 0x00, -} - -func (m *Paused) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Paused) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Paused) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Paused { - i-- - if m.Paused { - dAtA[i] = 1 - } else { - dAtA[i] = 0 - } - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - -func encodeVarintPaused(dAtA []byte, offset int, v uint64) int { - offset -= sovPaused(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Paused) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Paused { - n += 2 - } - return n -} - -func sovPaused(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozPaused(x uint64) (n int) { - return sovPaused(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Paused) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPaused - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Paused: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Paused: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPaused - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.Paused = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skipPaused(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthPaused - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipPaused(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPaused - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPaused - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPaused - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthPaused - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupPaused - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthPaused - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthPaused = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowPaused = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupPaused = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/pauser.pb.go b/x/tokenfactory/types/pauser.pb.go deleted file mode 100644 index 743ef3ab..00000000 --- a/x/tokenfactory/types/pauser.pb.go +++ /dev/null @@ -1,314 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/pauser.proto - -package types - -import ( - fmt "fmt" - proto "github.com/gogo/protobuf/proto" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type Pauser struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *Pauser) Reset() { *m = Pauser{} } -func (m *Pauser) String() string { return proto.CompactTextString(m) } -func (*Pauser) ProtoMessage() {} -func (*Pauser) Descriptor() ([]byte, []int) { - return fileDescriptor_67e2f3360489cd3e, []int{0} -} -func (m *Pauser) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *Pauser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_Pauser.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *Pauser) XXX_Merge(src proto.Message) { - xxx_messageInfo_Pauser.Merge(m, src) -} -func (m *Pauser) XXX_Size() int { - return m.Size() -} -func (m *Pauser) XXX_DiscardUnknown() { - xxx_messageInfo_Pauser.DiscardUnknown(m) -} - -var xxx_messageInfo_Pauser proto.InternalMessageInfo - -func (m *Pauser) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func init() { - proto.RegisterType((*Pauser)(nil), "noble.tokenfactory.Pauser") -} - -func init() { proto.RegisterFile("tokenfactory/pauser.proto", fileDescriptor_67e2f3360489cd3e) } - -var fileDescriptor_67e2f3360489cd3e = []byte{ - // 158 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2c, 0xc9, 0xcf, 0x4e, - 0xcd, 0x4b, 0x4b, 0x4c, 0x2e, 0xc9, 0x2f, 0xaa, 0xd4, 0x2f, 0x48, 0x2c, 0x2d, 0x4e, 0x2d, 0xd2, - 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0xca, 0xcb, 0x4f, 0xca, 0x49, 0xd5, 0x43, 0x56, 0xa0, - 0xa4, 0xc4, 0xc5, 0x16, 0x00, 0x56, 0x23, 0x24, 0xc1, 0xc5, 0x9e, 0x98, 0x92, 0x52, 0x94, 0x5a, - 0x5c, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x19, 0x04, 0xe3, 0x3a, 0xf9, 0x9f, 0x78, 0x24, 0xc7, - 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, - 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x69, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, - 0x7e, 0xae, 0x3e, 0xd8, 0x70, 0xdd, 0xc4, 0xe2, 0xe2, 0xd4, 0x92, 0x62, 0x08, 0x47, 0xbf, 0xcc, - 0x5c, 0xbf, 0x42, 0x1f, 0xc5, 0x3d, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0xf7, 0x18, - 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x38, 0x02, 0xa9, 0xd2, 0xac, 0x00, 0x00, 0x00, -} - -func (m *Pauser) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *Pauser) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *Pauser) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintPauser(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintPauser(dAtA []byte, offset int, v uint64) int { - offset -= sovPauser(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *Pauser) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovPauser(uint64(l)) - } - return n -} - -func sovPauser(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozPauser(x uint64) (n int) { - return sovPauser(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *Pauser) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPauser - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: Pauser: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: Pauser: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowPauser - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthPauser - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthPauser - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipPauser(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthPauser - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipPauser(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPauser - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPauser - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowPauser - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthPauser - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupPauser - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthPauser - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthPauser = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowPauser = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupPauser = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/query.pb.go b/x/tokenfactory/types/query.pb.go deleted file mode 100644 index 68475a03..00000000 --- a/x/tokenfactory/types/query.pb.go +++ /dev/null @@ -1,5076 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/query.proto - -package types - -import ( - context "context" - fmt "fmt" - query "github.com/cosmos/cosmos-sdk/types/query" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - _ "google.golang.org/genproto/googleapis/api/annotations" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -// QueryParamsRequest is request type for the Query/Params RPC method. -type QueryParamsRequest struct { -} - -func (m *QueryParamsRequest) Reset() { *m = QueryParamsRequest{} } -func (m *QueryParamsRequest) String() string { return proto.CompactTextString(m) } -func (*QueryParamsRequest) ProtoMessage() {} -func (*QueryParamsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{0} -} -func (m *QueryParamsRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsRequest.Merge(m, src) -} -func (m *QueryParamsRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsRequest proto.InternalMessageInfo - -// QueryParamsResponse is response type for the Query/Params RPC method. -type QueryParamsResponse struct { - // params holds all the parameters of this module. - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` -} - -func (m *QueryParamsResponse) Reset() { *m = QueryParamsResponse{} } -func (m *QueryParamsResponse) String() string { return proto.CompactTextString(m) } -func (*QueryParamsResponse) ProtoMessage() {} -func (*QueryParamsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{1} -} -func (m *QueryParamsResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryParamsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryParamsResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryParamsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryParamsResponse.Merge(m, src) -} -func (m *QueryParamsResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryParamsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryParamsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryParamsResponse proto.InternalMessageInfo - -func (m *QueryParamsResponse) GetParams() Params { - if m != nil { - return m.Params - } - return Params{} -} - -type QueryGetBlacklistedRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *QueryGetBlacklistedRequest) Reset() { *m = QueryGetBlacklistedRequest{} } -func (m *QueryGetBlacklistedRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetBlacklistedRequest) ProtoMessage() {} -func (*QueryGetBlacklistedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{2} -} -func (m *QueryGetBlacklistedRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetBlacklistedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetBlacklistedRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetBlacklistedRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetBlacklistedRequest.Merge(m, src) -} -func (m *QueryGetBlacklistedRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetBlacklistedRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetBlacklistedRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetBlacklistedRequest proto.InternalMessageInfo - -func (m *QueryGetBlacklistedRequest) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type QueryGetBlacklistedResponse struct { - Blacklisted Blacklisted `protobuf:"bytes,1,opt,name=blacklisted,proto3" json:"blacklisted"` -} - -func (m *QueryGetBlacklistedResponse) Reset() { *m = QueryGetBlacklistedResponse{} } -func (m *QueryGetBlacklistedResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetBlacklistedResponse) ProtoMessage() {} -func (*QueryGetBlacklistedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{3} -} -func (m *QueryGetBlacklistedResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetBlacklistedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetBlacklistedResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetBlacklistedResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetBlacklistedResponse.Merge(m, src) -} -func (m *QueryGetBlacklistedResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetBlacklistedResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetBlacklistedResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetBlacklistedResponse proto.InternalMessageInfo - -func (m *QueryGetBlacklistedResponse) GetBlacklisted() Blacklisted { - if m != nil { - return m.Blacklisted - } - return Blacklisted{} -} - -type QueryAllBlacklistedRequest struct { - Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllBlacklistedRequest) Reset() { *m = QueryAllBlacklistedRequest{} } -func (m *QueryAllBlacklistedRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllBlacklistedRequest) ProtoMessage() {} -func (*QueryAllBlacklistedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{4} -} -func (m *QueryAllBlacklistedRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllBlacklistedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllBlacklistedRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllBlacklistedRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllBlacklistedRequest.Merge(m, src) -} -func (m *QueryAllBlacklistedRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryAllBlacklistedRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllBlacklistedRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllBlacklistedRequest proto.InternalMessageInfo - -func (m *QueryAllBlacklistedRequest) GetPagination() *query.PageRequest { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryAllBlacklistedResponse struct { - Blacklisted []Blacklisted `protobuf:"bytes,1,rep,name=blacklisted,proto3" json:"blacklisted"` - Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllBlacklistedResponse) Reset() { *m = QueryAllBlacklistedResponse{} } -func (m *QueryAllBlacklistedResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllBlacklistedResponse) ProtoMessage() {} -func (*QueryAllBlacklistedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{5} -} -func (m *QueryAllBlacklistedResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllBlacklistedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllBlacklistedResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllBlacklistedResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllBlacklistedResponse.Merge(m, src) -} -func (m *QueryAllBlacklistedResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryAllBlacklistedResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllBlacklistedResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllBlacklistedResponse proto.InternalMessageInfo - -func (m *QueryAllBlacklistedResponse) GetBlacklisted() []Blacklisted { - if m != nil { - return m.Blacklisted - } - return nil -} - -func (m *QueryAllBlacklistedResponse) GetPagination() *query.PageResponse { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryGetPausedRequest struct { -} - -func (m *QueryGetPausedRequest) Reset() { *m = QueryGetPausedRequest{} } -func (m *QueryGetPausedRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetPausedRequest) ProtoMessage() {} -func (*QueryGetPausedRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{6} -} -func (m *QueryGetPausedRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetPausedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetPausedRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetPausedRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetPausedRequest.Merge(m, src) -} -func (m *QueryGetPausedRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetPausedRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetPausedRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetPausedRequest proto.InternalMessageInfo - -type QueryGetPausedResponse struct { - Paused Paused `protobuf:"bytes,1,opt,name=paused,proto3" json:"paused"` -} - -func (m *QueryGetPausedResponse) Reset() { *m = QueryGetPausedResponse{} } -func (m *QueryGetPausedResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetPausedResponse) ProtoMessage() {} -func (*QueryGetPausedResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{7} -} -func (m *QueryGetPausedResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetPausedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetPausedResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetPausedResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetPausedResponse.Merge(m, src) -} -func (m *QueryGetPausedResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetPausedResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetPausedResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetPausedResponse proto.InternalMessageInfo - -func (m *QueryGetPausedResponse) GetPaused() Paused { - if m != nil { - return m.Paused - } - return Paused{} -} - -type QueryGetMasterMinterRequest struct { -} - -func (m *QueryGetMasterMinterRequest) Reset() { *m = QueryGetMasterMinterRequest{} } -func (m *QueryGetMasterMinterRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetMasterMinterRequest) ProtoMessage() {} -func (*QueryGetMasterMinterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{8} -} -func (m *QueryGetMasterMinterRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMasterMinterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMasterMinterRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMasterMinterRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMasterMinterRequest.Merge(m, src) -} -func (m *QueryGetMasterMinterRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMasterMinterRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMasterMinterRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMasterMinterRequest proto.InternalMessageInfo - -type QueryGetMasterMinterResponse struct { - MasterMinter MasterMinter `protobuf:"bytes,1,opt,name=masterMinter,proto3" json:"masterMinter"` -} - -func (m *QueryGetMasterMinterResponse) Reset() { *m = QueryGetMasterMinterResponse{} } -func (m *QueryGetMasterMinterResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetMasterMinterResponse) ProtoMessage() {} -func (*QueryGetMasterMinterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{9} -} -func (m *QueryGetMasterMinterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMasterMinterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMasterMinterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMasterMinterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMasterMinterResponse.Merge(m, src) -} -func (m *QueryGetMasterMinterResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMasterMinterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMasterMinterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMasterMinterResponse proto.InternalMessageInfo - -func (m *QueryGetMasterMinterResponse) GetMasterMinter() MasterMinter { - if m != nil { - return m.MasterMinter - } - return MasterMinter{} -} - -type QueryGetMintersRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *QueryGetMintersRequest) Reset() { *m = QueryGetMintersRequest{} } -func (m *QueryGetMintersRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetMintersRequest) ProtoMessage() {} -func (*QueryGetMintersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{10} -} -func (m *QueryGetMintersRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMintersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMintersRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMintersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMintersRequest.Merge(m, src) -} -func (m *QueryGetMintersRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMintersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMintersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMintersRequest proto.InternalMessageInfo - -func (m *QueryGetMintersRequest) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type QueryGetMintersResponse struct { - Minters Minters `protobuf:"bytes,1,opt,name=minters,proto3" json:"minters"` -} - -func (m *QueryGetMintersResponse) Reset() { *m = QueryGetMintersResponse{} } -func (m *QueryGetMintersResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetMintersResponse) ProtoMessage() {} -func (*QueryGetMintersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{11} -} -func (m *QueryGetMintersResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMintersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMintersResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMintersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMintersResponse.Merge(m, src) -} -func (m *QueryGetMintersResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMintersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMintersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMintersResponse proto.InternalMessageInfo - -func (m *QueryGetMintersResponse) GetMinters() Minters { - if m != nil { - return m.Minters - } - return Minters{} -} - -type QueryAllMintersRequest struct { - Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllMintersRequest) Reset() { *m = QueryAllMintersRequest{} } -func (m *QueryAllMintersRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllMintersRequest) ProtoMessage() {} -func (*QueryAllMintersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{12} -} -func (m *QueryAllMintersRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllMintersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllMintersRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllMintersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllMintersRequest.Merge(m, src) -} -func (m *QueryAllMintersRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryAllMintersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllMintersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllMintersRequest proto.InternalMessageInfo - -func (m *QueryAllMintersRequest) GetPagination() *query.PageRequest { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryAllMintersResponse struct { - Minters []Minters `protobuf:"bytes,1,rep,name=minters,proto3" json:"minters"` - Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllMintersResponse) Reset() { *m = QueryAllMintersResponse{} } -func (m *QueryAllMintersResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllMintersResponse) ProtoMessage() {} -func (*QueryAllMintersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{13} -} -func (m *QueryAllMintersResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllMintersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllMintersResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllMintersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllMintersResponse.Merge(m, src) -} -func (m *QueryAllMintersResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryAllMintersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllMintersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllMintersResponse proto.InternalMessageInfo - -func (m *QueryAllMintersResponse) GetMinters() []Minters { - if m != nil { - return m.Minters - } - return nil -} - -func (m *QueryAllMintersResponse) GetPagination() *query.PageResponse { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryGetPauserRequest struct { -} - -func (m *QueryGetPauserRequest) Reset() { *m = QueryGetPauserRequest{} } -func (m *QueryGetPauserRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetPauserRequest) ProtoMessage() {} -func (*QueryGetPauserRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{14} -} -func (m *QueryGetPauserRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetPauserRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetPauserRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetPauserRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetPauserRequest.Merge(m, src) -} -func (m *QueryGetPauserRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetPauserRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetPauserRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetPauserRequest proto.InternalMessageInfo - -type QueryGetPauserResponse struct { - Pauser Pauser `protobuf:"bytes,1,opt,name=pauser,proto3" json:"pauser"` -} - -func (m *QueryGetPauserResponse) Reset() { *m = QueryGetPauserResponse{} } -func (m *QueryGetPauserResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetPauserResponse) ProtoMessage() {} -func (*QueryGetPauserResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{15} -} -func (m *QueryGetPauserResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetPauserResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetPauserResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetPauserResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetPauserResponse.Merge(m, src) -} -func (m *QueryGetPauserResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetPauserResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetPauserResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetPauserResponse proto.InternalMessageInfo - -func (m *QueryGetPauserResponse) GetPauser() Pauser { - if m != nil { - return m.Pauser - } - return Pauser{} -} - -type QueryGetBlacklisterRequest struct { -} - -func (m *QueryGetBlacklisterRequest) Reset() { *m = QueryGetBlacklisterRequest{} } -func (m *QueryGetBlacklisterRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetBlacklisterRequest) ProtoMessage() {} -func (*QueryGetBlacklisterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{16} -} -func (m *QueryGetBlacklisterRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetBlacklisterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetBlacklisterRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetBlacklisterRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetBlacklisterRequest.Merge(m, src) -} -func (m *QueryGetBlacklisterRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetBlacklisterRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetBlacklisterRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetBlacklisterRequest proto.InternalMessageInfo - -type QueryGetBlacklisterResponse struct { - Blacklister Blacklister `protobuf:"bytes,1,opt,name=blacklister,proto3" json:"blacklister"` -} - -func (m *QueryGetBlacklisterResponse) Reset() { *m = QueryGetBlacklisterResponse{} } -func (m *QueryGetBlacklisterResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetBlacklisterResponse) ProtoMessage() {} -func (*QueryGetBlacklisterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{17} -} -func (m *QueryGetBlacklisterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetBlacklisterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetBlacklisterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetBlacklisterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetBlacklisterResponse.Merge(m, src) -} -func (m *QueryGetBlacklisterResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetBlacklisterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetBlacklisterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetBlacklisterResponse proto.InternalMessageInfo - -func (m *QueryGetBlacklisterResponse) GetBlacklister() Blacklister { - if m != nil { - return m.Blacklister - } - return Blacklister{} -} - -type QueryGetOwnerRequest struct { -} - -func (m *QueryGetOwnerRequest) Reset() { *m = QueryGetOwnerRequest{} } -func (m *QueryGetOwnerRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetOwnerRequest) ProtoMessage() {} -func (*QueryGetOwnerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{18} -} -func (m *QueryGetOwnerRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetOwnerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetOwnerRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetOwnerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetOwnerRequest.Merge(m, src) -} -func (m *QueryGetOwnerRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetOwnerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetOwnerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetOwnerRequest proto.InternalMessageInfo - -type QueryGetOwnerResponse struct { - Owner Owner `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner"` -} - -func (m *QueryGetOwnerResponse) Reset() { *m = QueryGetOwnerResponse{} } -func (m *QueryGetOwnerResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetOwnerResponse) ProtoMessage() {} -func (*QueryGetOwnerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{19} -} -func (m *QueryGetOwnerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetOwnerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetOwnerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetOwnerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetOwnerResponse.Merge(m, src) -} -func (m *QueryGetOwnerResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetOwnerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetOwnerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetOwnerResponse proto.InternalMessageInfo - -func (m *QueryGetOwnerResponse) GetOwner() Owner { - if m != nil { - return m.Owner - } - return Owner{} -} - -type QueryGetMinterControllerRequest struct { - ControllerAddress string `protobuf:"bytes,1,opt,name=controllerAddress,proto3" json:"controllerAddress,omitempty"` -} - -func (m *QueryGetMinterControllerRequest) Reset() { *m = QueryGetMinterControllerRequest{} } -func (m *QueryGetMinterControllerRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetMinterControllerRequest) ProtoMessage() {} -func (*QueryGetMinterControllerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{20} -} -func (m *QueryGetMinterControllerRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMinterControllerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMinterControllerRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMinterControllerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMinterControllerRequest.Merge(m, src) -} -func (m *QueryGetMinterControllerRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMinterControllerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMinterControllerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMinterControllerRequest proto.InternalMessageInfo - -func (m *QueryGetMinterControllerRequest) GetControllerAddress() string { - if m != nil { - return m.ControllerAddress - } - return "" -} - -type QueryGetMinterControllerResponse struct { - MinterController MinterController `protobuf:"bytes,1,opt,name=minterController,proto3" json:"minterController"` -} - -func (m *QueryGetMinterControllerResponse) Reset() { *m = QueryGetMinterControllerResponse{} } -func (m *QueryGetMinterControllerResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetMinterControllerResponse) ProtoMessage() {} -func (*QueryGetMinterControllerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{21} -} -func (m *QueryGetMinterControllerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMinterControllerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMinterControllerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMinterControllerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMinterControllerResponse.Merge(m, src) -} -func (m *QueryGetMinterControllerResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMinterControllerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMinterControllerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMinterControllerResponse proto.InternalMessageInfo - -func (m *QueryGetMinterControllerResponse) GetMinterController() MinterController { - if m != nil { - return m.MinterController - } - return MinterController{} -} - -type QueryAllMinterControllerRequest struct { - Pagination *query.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllMinterControllerRequest) Reset() { *m = QueryAllMinterControllerRequest{} } -func (m *QueryAllMinterControllerRequest) String() string { return proto.CompactTextString(m) } -func (*QueryAllMinterControllerRequest) ProtoMessage() {} -func (*QueryAllMinterControllerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{22} -} -func (m *QueryAllMinterControllerRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllMinterControllerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllMinterControllerRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllMinterControllerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllMinterControllerRequest.Merge(m, src) -} -func (m *QueryAllMinterControllerRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryAllMinterControllerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllMinterControllerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllMinterControllerRequest proto.InternalMessageInfo - -func (m *QueryAllMinterControllerRequest) GetPagination() *query.PageRequest { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryAllMinterControllerResponse struct { - MinterController []MinterController `protobuf:"bytes,1,rep,name=minterController,proto3" json:"minterController"` - Pagination *query.PageResponse `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"` -} - -func (m *QueryAllMinterControllerResponse) Reset() { *m = QueryAllMinterControllerResponse{} } -func (m *QueryAllMinterControllerResponse) String() string { return proto.CompactTextString(m) } -func (*QueryAllMinterControllerResponse) ProtoMessage() {} -func (*QueryAllMinterControllerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{23} -} -func (m *QueryAllMinterControllerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryAllMinterControllerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryAllMinterControllerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryAllMinterControllerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryAllMinterControllerResponse.Merge(m, src) -} -func (m *QueryAllMinterControllerResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryAllMinterControllerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryAllMinterControllerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryAllMinterControllerResponse proto.InternalMessageInfo - -func (m *QueryAllMinterControllerResponse) GetMinterController() []MinterController { - if m != nil { - return m.MinterController - } - return nil -} - -func (m *QueryAllMinterControllerResponse) GetPagination() *query.PageResponse { - if m != nil { - return m.Pagination - } - return nil -} - -type QueryGetMintingDenomRequest struct { -} - -func (m *QueryGetMintingDenomRequest) Reset() { *m = QueryGetMintingDenomRequest{} } -func (m *QueryGetMintingDenomRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetMintingDenomRequest) ProtoMessage() {} -func (*QueryGetMintingDenomRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{24} -} -func (m *QueryGetMintingDenomRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMintingDenomRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMintingDenomRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMintingDenomRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMintingDenomRequest.Merge(m, src) -} -func (m *QueryGetMintingDenomRequest) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMintingDenomRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMintingDenomRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMintingDenomRequest proto.InternalMessageInfo - -type QueryGetMintingDenomResponse struct { - MintingDenom MintingDenom `protobuf:"bytes,1,opt,name=mintingDenom,proto3" json:"mintingDenom"` -} - -func (m *QueryGetMintingDenomResponse) Reset() { *m = QueryGetMintingDenomResponse{} } -func (m *QueryGetMintingDenomResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetMintingDenomResponse) ProtoMessage() {} -func (*QueryGetMintingDenomResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_78516c77a1ba9513, []int{25} -} -func (m *QueryGetMintingDenomResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *QueryGetMintingDenomResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_QueryGetMintingDenomResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *QueryGetMintingDenomResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMintingDenomResponse.Merge(m, src) -} -func (m *QueryGetMintingDenomResponse) XXX_Size() int { - return m.Size() -} -func (m *QueryGetMintingDenomResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMintingDenomResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_QueryGetMintingDenomResponse proto.InternalMessageInfo - -func (m *QueryGetMintingDenomResponse) GetMintingDenom() MintingDenom { - if m != nil { - return m.MintingDenom - } - return MintingDenom{} -} - -func init() { - proto.RegisterType((*QueryParamsRequest)(nil), "noble.tokenfactory.QueryParamsRequest") - proto.RegisterType((*QueryParamsResponse)(nil), "noble.tokenfactory.QueryParamsResponse") - proto.RegisterType((*QueryGetBlacklistedRequest)(nil), "noble.tokenfactory.QueryGetBlacklistedRequest") - proto.RegisterType((*QueryGetBlacklistedResponse)(nil), "noble.tokenfactory.QueryGetBlacklistedResponse") - proto.RegisterType((*QueryAllBlacklistedRequest)(nil), "noble.tokenfactory.QueryAllBlacklistedRequest") - proto.RegisterType((*QueryAllBlacklistedResponse)(nil), "noble.tokenfactory.QueryAllBlacklistedResponse") - proto.RegisterType((*QueryGetPausedRequest)(nil), "noble.tokenfactory.QueryGetPausedRequest") - proto.RegisterType((*QueryGetPausedResponse)(nil), "noble.tokenfactory.QueryGetPausedResponse") - proto.RegisterType((*QueryGetMasterMinterRequest)(nil), "noble.tokenfactory.QueryGetMasterMinterRequest") - proto.RegisterType((*QueryGetMasterMinterResponse)(nil), "noble.tokenfactory.QueryGetMasterMinterResponse") - proto.RegisterType((*QueryGetMintersRequest)(nil), "noble.tokenfactory.QueryGetMintersRequest") - proto.RegisterType((*QueryGetMintersResponse)(nil), "noble.tokenfactory.QueryGetMintersResponse") - proto.RegisterType((*QueryAllMintersRequest)(nil), "noble.tokenfactory.QueryAllMintersRequest") - proto.RegisterType((*QueryAllMintersResponse)(nil), "noble.tokenfactory.QueryAllMintersResponse") - proto.RegisterType((*QueryGetPauserRequest)(nil), "noble.tokenfactory.QueryGetPauserRequest") - proto.RegisterType((*QueryGetPauserResponse)(nil), "noble.tokenfactory.QueryGetPauserResponse") - proto.RegisterType((*QueryGetBlacklisterRequest)(nil), "noble.tokenfactory.QueryGetBlacklisterRequest") - proto.RegisterType((*QueryGetBlacklisterResponse)(nil), "noble.tokenfactory.QueryGetBlacklisterResponse") - proto.RegisterType((*QueryGetOwnerRequest)(nil), "noble.tokenfactory.QueryGetOwnerRequest") - proto.RegisterType((*QueryGetOwnerResponse)(nil), "noble.tokenfactory.QueryGetOwnerResponse") - proto.RegisterType((*QueryGetMinterControllerRequest)(nil), "noble.tokenfactory.QueryGetMinterControllerRequest") - proto.RegisterType((*QueryGetMinterControllerResponse)(nil), "noble.tokenfactory.QueryGetMinterControllerResponse") - proto.RegisterType((*QueryAllMinterControllerRequest)(nil), "noble.tokenfactory.QueryAllMinterControllerRequest") - proto.RegisterType((*QueryAllMinterControllerResponse)(nil), "noble.tokenfactory.QueryAllMinterControllerResponse") - proto.RegisterType((*QueryGetMintingDenomRequest)(nil), "noble.tokenfactory.QueryGetMintingDenomRequest") - proto.RegisterType((*QueryGetMintingDenomResponse)(nil), "noble.tokenfactory.QueryGetMintingDenomResponse") -} - -func init() { proto.RegisterFile("tokenfactory/query.proto", fileDescriptor_78516c77a1ba9513) } - -var fileDescriptor_78516c77a1ba9513 = []byte{ - // 1109 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6f, 0xdc, 0x44, - 0x14, 0x8f, 0x1b, 0x92, 0x88, 0x49, 0x05, 0x65, 0x1a, 0xda, 0xc4, 0x49, 0x37, 0xc9, 0xb4, 0x34, - 0x4d, 0x4a, 0x6d, 0x92, 0x50, 0xfe, 0xa8, 0xa7, 0x0d, 0x88, 0x48, 0x48, 0x25, 0x61, 0x0f, 0x3d, - 0x70, 0x09, 0xde, 0x5d, 0x77, 0x31, 0xf5, 0x7a, 0xb6, 0x33, 0xde, 0x42, 0xa8, 0x22, 0x24, 0xb8, - 0x71, 0x02, 0x71, 0x40, 0x42, 0x48, 0x88, 0x4f, 0xd0, 0xaf, 0x80, 0xe0, 0xd2, 0x63, 0x24, 0x2e, - 0x9c, 0x10, 0x4a, 0xf8, 0x20, 0xc8, 0x33, 0xcf, 0xeb, 0x99, 0xf5, 0xac, 0xed, 0x85, 0xf4, 0x96, - 0xcc, 0xfb, 0xf3, 0xfb, 0x3d, 0xcf, 0x6f, 0xde, 0x7b, 0x09, 0x9a, 0x8f, 0xe9, 0x03, 0x3f, 0xba, - 0xef, 0xb5, 0x62, 0xca, 0x0e, 0xdd, 0x87, 0x7d, 0x9f, 0x1d, 0x3a, 0x3d, 0x46, 0x63, 0x8a, 0x71, - 0x44, 0x9b, 0xa1, 0xef, 0xa8, 0x76, 0x7b, 0xa3, 0x45, 0x79, 0x97, 0x72, 0xb7, 0xe9, 0x71, 0x5f, - 0x3a, 0xbb, 0x8f, 0x36, 0x9b, 0x7e, 0xec, 0x6d, 0xba, 0x3d, 0xaf, 0x13, 0x44, 0x5e, 0x1c, 0xd0, - 0x48, 0xc6, 0xdb, 0x73, 0x1d, 0xda, 0xa1, 0xe2, 0x47, 0x37, 0xf9, 0x09, 0x4e, 0x97, 0x3a, 0x94, - 0x76, 0x42, 0xdf, 0xf5, 0x7a, 0x81, 0xeb, 0x45, 0x11, 0x8d, 0x45, 0x08, 0x07, 0x6b, 0x4d, 0x63, - 0xd3, 0x0c, 0xbd, 0xd6, 0x83, 0x30, 0xe0, 0xb1, 0xdf, 0x2e, 0xb1, 0x33, 0xb0, 0xaf, 0x68, 0xf6, - 0xae, 0x97, 0x98, 0x0e, 0xba, 0x41, 0x94, 0x79, 0x5c, 0xd3, 0x3d, 0x84, 0xe9, 0xa0, 0x45, 0xa3, - 0x98, 0xd1, 0x30, 0x1c, 0x78, 0xd9, 0x06, 0x2f, 0x6e, 0xc6, 0x08, 0xa2, 0x38, 0x88, 0x3a, 0x07, - 0x6d, 0x3f, 0xa2, 0x5d, 0xf0, 0xd0, 0xbf, 0x29, 0xfd, 0x2c, 0x1a, 0xe4, 0x5d, 0xd0, 0x2c, 0x3d, - 0x8f, 0x79, 0x5d, 0x3e, 0xc2, 0xd4, 0xe7, 0x83, 0xaa, 0x0d, 0x26, 0x48, 0x48, 0xe6, 0x10, 0xfe, - 0x30, 0xb9, 0x86, 0x7d, 0x91, 0xaa, 0xe1, 0x3f, 0xec, 0xfb, 0x3c, 0x26, 0x7b, 0xe8, 0xa2, 0x76, - 0xca, 0x7b, 0x34, 0xe2, 0x3e, 0x7e, 0x0b, 0x4d, 0x4b, 0xc8, 0x79, 0x6b, 0xc5, 0xba, 0x31, 0xbb, - 0x65, 0x3b, 0xf9, 0x2b, 0x76, 0x64, 0xcc, 0xce, 0x73, 0x4f, 0xff, 0x5a, 0x9e, 0x68, 0x80, 0x3f, - 0x79, 0x03, 0xd9, 0x22, 0xe1, 0xae, 0x1f, 0xef, 0x64, 0x97, 0x02, 0x70, 0x78, 0x1e, 0xcd, 0x78, - 0xed, 0x36, 0xf3, 0xb9, 0x4c, 0xfc, 0x7c, 0x23, 0xfd, 0x95, 0xdc, 0x47, 0x8b, 0xc6, 0x38, 0x20, - 0xb4, 0x8b, 0x66, 0x95, 0x3b, 0x06, 0x56, 0xcb, 0x26, 0x56, 0x4a, 0x34, 0x50, 0x53, 0x23, 0x49, - 0x1b, 0xf8, 0xd5, 0xc3, 0xd0, 0xc0, 0xef, 0x3d, 0x84, 0x32, 0x75, 0x02, 0xca, 0x75, 0x47, 0x4a, - 0xd9, 0x49, 0xa4, 0xec, 0x48, 0xdd, 0x83, 0x94, 0x9d, 0x7d, 0xaf, 0xe3, 0x43, 0x6c, 0x43, 0x89, - 0x24, 0x4f, 0x2c, 0x28, 0x67, 0x18, 0x66, 0x54, 0x39, 0x93, 0xff, 0xad, 0x1c, 0xbc, 0xab, 0x11, - 0x3e, 0x27, 0x08, 0xaf, 0x95, 0x12, 0x96, 0x2c, 0x34, 0xc6, 0x97, 0xd1, 0xcb, 0xe9, 0xf7, 0xdf, - 0x17, 0x8a, 0x4a, 0x15, 0xd2, 0x40, 0x97, 0x86, 0x0d, 0xaa, 0x48, 0x92, 0x93, 0x62, 0x91, 0x24, - 0x1e, 0x99, 0x48, 0x92, 0xdf, 0xc8, 0x95, 0xec, 0xb2, 0xef, 0x8a, 0x97, 0x77, 0x57, 0xbc, 0x9b, - 0x14, 0xf2, 0x53, 0xb4, 0x64, 0x36, 0x03, 0xf0, 0xfb, 0xe8, 0x7c, 0x57, 0x39, 0x07, 0xf8, 0x15, - 0x13, 0xbc, 0x1a, 0x0f, 0x24, 0xb4, 0x58, 0xb2, 0x95, 0x95, 0x27, 0x4f, 0x78, 0xb9, 0x56, 0xef, - 0xa1, 0xcb, 0xb9, 0x18, 0xa0, 0x76, 0x07, 0xcd, 0x40, 0x0f, 0x00, 0x56, 0x8b, 0x46, 0x56, 0xd2, - 0x05, 0x08, 0xa5, 0x11, 0xe4, 0x63, 0xe0, 0x52, 0x0f, 0xc3, 0x21, 0x2e, 0x67, 0xa5, 0xcb, 0x9f, - 0x2d, 0xa0, 0xae, 0x42, 0x98, 0xa8, 0x4f, 0x8e, 0x47, 0xfd, 0xd9, 0xe9, 0x90, 0x8d, 0xd2, 0x21, - 0xcb, 0xe9, 0x90, 0x95, 0xea, 0x90, 0x69, 0x3a, 0x64, 0x64, 0xc9, 0xd4, 0xac, 0x06, 0x88, 0xc6, - 0x96, 0xc4, 0xcc, 0x6f, 0x98, 0x55, 0x6b, 0x49, 0x2c, 0xff, 0x86, 0x19, 0xb9, 0x84, 0xe6, 0x52, - 0x9c, 0xbd, 0x64, 0x02, 0xa4, 0xf8, 0x1f, 0x64, 0x9f, 0x02, 0xce, 0x01, 0xf9, 0x36, 0x9a, 0x12, - 0xa3, 0x02, 0x30, 0x17, 0x4c, 0x98, 0x22, 0x02, 0xd0, 0xa4, 0x37, 0xd9, 0x43, 0xcb, 0xba, 0x6c, - 0xdf, 0x19, 0x0c, 0xb3, 0x54, 0x67, 0xaf, 0xa2, 0x97, 0xb2, 0x09, 0x57, 0xd7, 0xd4, 0x9f, 0x37, - 0x90, 0x2f, 0xd0, 0xca, 0xe8, 0x84, 0xc0, 0xf5, 0x1e, 0xba, 0xd0, 0x1d, 0xb2, 0x01, 0xed, 0x6b, - 0xa3, 0xe5, 0x95, 0xf9, 0x42, 0x05, 0xb9, 0x1c, 0x24, 0x80, 0x62, 0x06, 0x42, 0xce, 0x17, 0x73, - 0x56, 0x8f, 0xe6, 0x77, 0x0b, 0xea, 0x34, 0x62, 0x15, 0xd6, 0x39, 0xf9, 0x7f, 0xeb, 0x3c, 0xbb, - 0x87, 0xa5, 0xf6, 0x5c, 0xb9, 0x89, 0xbc, 0x9b, 0x2c, 0x22, 0xa6, 0x9e, 0xab, 0x99, 0x95, 0x9e, - 0xab, 0x9c, 0x17, 0xf6, 0x5c, 0xc5, 0x6f, 0xd0, 0x73, 0x95, 0xb3, 0xad, 0xdf, 0x5e, 0x44, 0x53, - 0x02, 0x0c, 0x1f, 0xa1, 0x69, 0xb9, 0x45, 0xe0, 0xeb, 0xa6, 0x4c, 0xf9, 0x85, 0xc5, 0x5e, 0x2b, - 0xf5, 0x93, 0x84, 0x09, 0xf9, 0xea, 0x8f, 0x7f, 0xbe, 0x3f, 0xb7, 0x84, 0x6d, 0x57, 0x04, 0xb8, - 0x86, 0x7d, 0x0a, 0xff, 0x62, 0xa1, 0x59, 0x65, 0xc0, 0x62, 0x67, 0x64, 0x72, 0xe3, 0x3a, 0x63, - 0xbb, 0x95, 0xfd, 0x81, 0xd4, 0xa6, 0x20, 0x75, 0x13, 0xaf, 0x9b, 0x48, 0x29, 0x73, 0xdd, 0x7d, - 0x0c, 0xb3, 0xe6, 0x08, 0xff, 0x68, 0xa1, 0x17, 0x94, 0x54, 0xf5, 0x30, 0x2c, 0xa0, 0x69, 0xdc, - 0x6a, 0x0a, 0x68, 0x9a, 0xd7, 0x13, 0xb2, 0x26, 0x68, 0xae, 0xe2, 0xe5, 0x12, 0x9a, 0xf8, 0x6b, - 0x2b, 0xb9, 0xc0, 0x64, 0xa6, 0xe3, 0xf5, 0xa2, 0x6f, 0xa1, 0xad, 0x14, 0xf6, 0x46, 0x15, 0xd7, - 0x6a, 0xd7, 0x28, 0xa0, 0x7f, 0xb2, 0xd0, 0x79, 0x75, 0xd0, 0xe3, 0xc2, 0x7b, 0x31, 0x6c, 0x1c, - 0xf6, 0x6b, 0xd5, 0x03, 0x80, 0xd7, 0xba, 0xe0, 0x75, 0x15, 0xaf, 0x9a, 0x78, 0x69, 0x7f, 0x4e, - 0xe0, 0xef, 0x2c, 0x34, 0x03, 0x63, 0x13, 0x17, 0x96, 0xae, 0x0f, 0x7d, 0xfb, 0x66, 0x25, 0x5f, - 0xe0, 0x73, 0x4b, 0xf0, 0x59, 0xc3, 0xaf, 0x18, 0xf9, 0x48, 0x67, 0x45, 0x55, 0xdf, 0x58, 0x08, - 0x41, 0x8a, 0x44, 0x51, 0x1b, 0x45, 0x0a, 0xa9, 0x4c, 0x2b, 0xbf, 0x54, 0x90, 0xab, 0x82, 0xd6, - 0x15, 0xbc, 0x58, 0x40, 0x2b, 0x53, 0x11, 0xab, 0xa0, 0x22, 0x56, 0x5d, 0x45, 0x6c, 0x0c, 0x15, - 0x31, 0xfc, 0x83, 0xd6, 0x0c, 0x58, 0xd5, 0x66, 0xc0, 0xc6, 0x6c, 0x06, 0x6c, 0xdc, 0x57, 0xc6, - 0xf0, 0x97, 0x68, 0x4a, 0x8c, 0x73, 0x7c, 0xa3, 0x08, 0x42, 0xdd, 0x1d, 0xec, 0xf5, 0x0a, 0x9e, - 0x40, 0x63, 0x55, 0xd0, 0x58, 0xc4, 0x0b, 0x26, 0x1a, 0x62, 0x73, 0xc0, 0xbf, 0x5a, 0xe8, 0xc2, - 0xf0, 0xc4, 0xc2, 0xdb, 0xe5, 0xf2, 0xcc, 0xcd, 0x64, 0xfb, 0xf5, 0xf1, 0x82, 0x80, 0x62, 0x5d, - 0x50, 0xbc, 0x83, 0xdf, 0x1e, 0xad, 0x22, 0xe5, 0x2f, 0x73, 0xf7, 0x71, 0x6e, 0x55, 0x39, 0xc2, - 0x4f, 0x2c, 0x74, 0x71, 0x38, 0x7f, 0xa2, 0xfc, 0xed, 0x72, 0x35, 0x8f, 0x53, 0x45, 0xc1, 0x8a, - 0x50, 0xe5, 0x89, 0x2a, 0x55, 0xc8, 0xae, 0xa6, 0x8c, 0xcd, 0x92, 0xae, 0x96, 0x9f, 0xe9, 0x25, - 0x5d, 0xcd, 0x30, 0xe5, 0x4b, 0xba, 0x9a, 0xfa, 0x0f, 0x8c, 0x9d, 0xbd, 0xa7, 0x27, 0x35, 0xeb, - 0xf8, 0xa4, 0x66, 0xfd, 0x7d, 0x52, 0xb3, 0xbe, 0x3d, 0xad, 0x4d, 0x1c, 0x9f, 0xd6, 0x26, 0xfe, - 0x3c, 0xad, 0x4d, 0x7c, 0x74, 0xbb, 0x13, 0xc4, 0x9f, 0xf4, 0x9b, 0x4e, 0x8b, 0x76, 0x65, 0x9a, - 0x5b, 0x1e, 0xe7, 0x7e, 0xcc, 0x21, 0xe7, 0xa3, 0x37, 0xdd, 0xcf, 0xf5, 0xc4, 0xf1, 0x61, 0xcf, - 0xe7, 0xcd, 0x69, 0xf1, 0x7f, 0x8a, 0xed, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x65, 0x3c, 0x29, - 0x21, 0x68, 0x12, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// QueryClient is the client API for Query service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type QueryClient interface { - // Parameters queries the parameters of the module. - Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) - // Queries a Blacklisted by index. - Blacklisted(ctx context.Context, in *QueryGetBlacklistedRequest, opts ...grpc.CallOption) (*QueryGetBlacklistedResponse, error) - // Queries a list of Blacklisted items. - BlacklistedAll(ctx context.Context, in *QueryAllBlacklistedRequest, opts ...grpc.CallOption) (*QueryAllBlacklistedResponse, error) - // Queries a Paused by index. - Paused(ctx context.Context, in *QueryGetPausedRequest, opts ...grpc.CallOption) (*QueryGetPausedResponse, error) - // Queries a MasterMinter by index. - MasterMinter(ctx context.Context, in *QueryGetMasterMinterRequest, opts ...grpc.CallOption) (*QueryGetMasterMinterResponse, error) - // Queries a Minters by index. - Minters(ctx context.Context, in *QueryGetMintersRequest, opts ...grpc.CallOption) (*QueryGetMintersResponse, error) - // Queries a list of Minters items. - MintersAll(ctx context.Context, in *QueryAllMintersRequest, opts ...grpc.CallOption) (*QueryAllMintersResponse, error) - // Queries a Pauser by index. - Pauser(ctx context.Context, in *QueryGetPauserRequest, opts ...grpc.CallOption) (*QueryGetPauserResponse, error) - // Queries a Blacklister by index. - Blacklister(ctx context.Context, in *QueryGetBlacklisterRequest, opts ...grpc.CallOption) (*QueryGetBlacklisterResponse, error) - // Queries a Owner by index. - Owner(ctx context.Context, in *QueryGetOwnerRequest, opts ...grpc.CallOption) (*QueryGetOwnerResponse, error) - // Queries a MinterController by index. - MinterController(ctx context.Context, in *QueryGetMinterControllerRequest, opts ...grpc.CallOption) (*QueryGetMinterControllerResponse, error) - // Queries a list of MinterController items. - MinterControllerAll(ctx context.Context, in *QueryAllMinterControllerRequest, opts ...grpc.CallOption) (*QueryAllMinterControllerResponse, error) - // Queries a MintingDenom by index. - MintingDenom(ctx context.Context, in *QueryGetMintingDenomRequest, opts ...grpc.CallOption) (*QueryGetMintingDenomResponse, error) -} - -type queryClient struct { - cc grpc1.ClientConn -} - -func NewQueryClient(cc grpc1.ClientConn) QueryClient { - return &queryClient{cc} -} - -func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) { - out := new(QueryParamsResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Params", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Blacklisted(ctx context.Context, in *QueryGetBlacklistedRequest, opts ...grpc.CallOption) (*QueryGetBlacklistedResponse, error) { - out := new(QueryGetBlacklistedResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Blacklisted", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) BlacklistedAll(ctx context.Context, in *QueryAllBlacklistedRequest, opts ...grpc.CallOption) (*QueryAllBlacklistedResponse, error) { - out := new(QueryAllBlacklistedResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/BlacklistedAll", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Paused(ctx context.Context, in *QueryGetPausedRequest, opts ...grpc.CallOption) (*QueryGetPausedResponse, error) { - out := new(QueryGetPausedResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Paused", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) MasterMinter(ctx context.Context, in *QueryGetMasterMinterRequest, opts ...grpc.CallOption) (*QueryGetMasterMinterResponse, error) { - out := new(QueryGetMasterMinterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/MasterMinter", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Minters(ctx context.Context, in *QueryGetMintersRequest, opts ...grpc.CallOption) (*QueryGetMintersResponse, error) { - out := new(QueryGetMintersResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Minters", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) MintersAll(ctx context.Context, in *QueryAllMintersRequest, opts ...grpc.CallOption) (*QueryAllMintersResponse, error) { - out := new(QueryAllMintersResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/MintersAll", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Pauser(ctx context.Context, in *QueryGetPauserRequest, opts ...grpc.CallOption) (*QueryGetPauserResponse, error) { - out := new(QueryGetPauserResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Pauser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Blacklister(ctx context.Context, in *QueryGetBlacklisterRequest, opts ...grpc.CallOption) (*QueryGetBlacklisterResponse, error) { - out := new(QueryGetBlacklisterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Blacklister", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) Owner(ctx context.Context, in *QueryGetOwnerRequest, opts ...grpc.CallOption) (*QueryGetOwnerResponse, error) { - out := new(QueryGetOwnerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/Owner", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) MinterController(ctx context.Context, in *QueryGetMinterControllerRequest, opts ...grpc.CallOption) (*QueryGetMinterControllerResponse, error) { - out := new(QueryGetMinterControllerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/MinterController", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) MinterControllerAll(ctx context.Context, in *QueryAllMinterControllerRequest, opts ...grpc.CallOption) (*QueryAllMinterControllerResponse, error) { - out := new(QueryAllMinterControllerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/MinterControllerAll", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *queryClient) MintingDenom(ctx context.Context, in *QueryGetMintingDenomRequest, opts ...grpc.CallOption) (*QueryGetMintingDenomResponse, error) { - out := new(QueryGetMintingDenomResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Query/MintingDenom", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// QueryServer is the server API for Query service. -type QueryServer interface { - // Parameters queries the parameters of the module. - Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) - // Queries a Blacklisted by index. - Blacklisted(context.Context, *QueryGetBlacklistedRequest) (*QueryGetBlacklistedResponse, error) - // Queries a list of Blacklisted items. - BlacklistedAll(context.Context, *QueryAllBlacklistedRequest) (*QueryAllBlacklistedResponse, error) - // Queries a Paused by index. - Paused(context.Context, *QueryGetPausedRequest) (*QueryGetPausedResponse, error) - // Queries a MasterMinter by index. - MasterMinter(context.Context, *QueryGetMasterMinterRequest) (*QueryGetMasterMinterResponse, error) - // Queries a Minters by index. - Minters(context.Context, *QueryGetMintersRequest) (*QueryGetMintersResponse, error) - // Queries a list of Minters items. - MintersAll(context.Context, *QueryAllMintersRequest) (*QueryAllMintersResponse, error) - // Queries a Pauser by index. - Pauser(context.Context, *QueryGetPauserRequest) (*QueryGetPauserResponse, error) - // Queries a Blacklister by index. - Blacklister(context.Context, *QueryGetBlacklisterRequest) (*QueryGetBlacklisterResponse, error) - // Queries a Owner by index. - Owner(context.Context, *QueryGetOwnerRequest) (*QueryGetOwnerResponse, error) - // Queries a MinterController by index. - MinterController(context.Context, *QueryGetMinterControllerRequest) (*QueryGetMinterControllerResponse, error) - // Queries a list of MinterController items. - MinterControllerAll(context.Context, *QueryAllMinterControllerRequest) (*QueryAllMinterControllerResponse, error) - // Queries a MintingDenom by index. - MintingDenom(context.Context, *QueryGetMintingDenomRequest) (*QueryGetMintingDenomResponse, error) -} - -// UnimplementedQueryServer can be embedded to have forward compatible implementations. -type UnimplementedQueryServer struct { -} - -func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") -} -func (*UnimplementedQueryServer) Blacklisted(ctx context.Context, req *QueryGetBlacklistedRequest) (*QueryGetBlacklistedResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Blacklisted not implemented") -} -func (*UnimplementedQueryServer) BlacklistedAll(ctx context.Context, req *QueryAllBlacklistedRequest) (*QueryAllBlacklistedResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method BlacklistedAll not implemented") -} -func (*UnimplementedQueryServer) Paused(ctx context.Context, req *QueryGetPausedRequest) (*QueryGetPausedResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Paused not implemented") -} -func (*UnimplementedQueryServer) MasterMinter(ctx context.Context, req *QueryGetMasterMinterRequest) (*QueryGetMasterMinterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MasterMinter not implemented") -} -func (*UnimplementedQueryServer) Minters(ctx context.Context, req *QueryGetMintersRequest) (*QueryGetMintersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Minters not implemented") -} -func (*UnimplementedQueryServer) MintersAll(ctx context.Context, req *QueryAllMintersRequest) (*QueryAllMintersResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MintersAll not implemented") -} -func (*UnimplementedQueryServer) Pauser(ctx context.Context, req *QueryGetPauserRequest) (*QueryGetPauserResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Pauser not implemented") -} -func (*UnimplementedQueryServer) Blacklister(ctx context.Context, req *QueryGetBlacklisterRequest) (*QueryGetBlacklisterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Blacklister not implemented") -} -func (*UnimplementedQueryServer) Owner(ctx context.Context, req *QueryGetOwnerRequest) (*QueryGetOwnerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Owner not implemented") -} -func (*UnimplementedQueryServer) MinterController(ctx context.Context, req *QueryGetMinterControllerRequest) (*QueryGetMinterControllerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MinterController not implemented") -} -func (*UnimplementedQueryServer) MinterControllerAll(ctx context.Context, req *QueryAllMinterControllerRequest) (*QueryAllMinterControllerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MinterControllerAll not implemented") -} -func (*UnimplementedQueryServer) MintingDenom(ctx context.Context, req *QueryGetMintingDenomRequest) (*QueryGetMintingDenomResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MintingDenom not implemented") -} - -func RegisterQueryServer(s grpc1.Server, srv QueryServer) { - s.RegisterService(&_Query_serviceDesc, srv) -} - -func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryParamsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Params(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Params", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Params(ctx, req.(*QueryParamsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Blacklisted_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetBlacklistedRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Blacklisted(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Blacklisted", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Blacklisted(ctx, req.(*QueryGetBlacklistedRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_BlacklistedAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllBlacklistedRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).BlacklistedAll(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/BlacklistedAll", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).BlacklistedAll(ctx, req.(*QueryAllBlacklistedRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Paused_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetPausedRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Paused(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Paused", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Paused(ctx, req.(*QueryGetPausedRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_MasterMinter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetMasterMinterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).MasterMinter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/MasterMinter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).MasterMinter(ctx, req.(*QueryGetMasterMinterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Minters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetMintersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Minters(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Minters", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Minters(ctx, req.(*QueryGetMintersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_MintersAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllMintersRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).MintersAll(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/MintersAll", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).MintersAll(ctx, req.(*QueryAllMintersRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Pauser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetPauserRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Pauser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Pauser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Pauser(ctx, req.(*QueryGetPauserRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Blacklister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetBlacklisterRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Blacklister(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Blacklister", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Blacklister(ctx, req.(*QueryGetBlacklisterRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_Owner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetOwnerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).Owner(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/Owner", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).Owner(ctx, req.(*QueryGetOwnerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_MinterController_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetMinterControllerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).MinterController(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/MinterController", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).MinterController(ctx, req.(*QueryGetMinterControllerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_MinterControllerAll_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryAllMinterControllerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).MinterControllerAll(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/MinterControllerAll", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).MinterControllerAll(ctx, req.(*QueryAllMinterControllerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Query_MintingDenom_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetMintingDenomRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(QueryServer).MintingDenom(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Query/MintingDenom", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).MintingDenom(ctx, req.(*QueryGetMintingDenomRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Query_serviceDesc = grpc.ServiceDesc{ - ServiceName: "noble.tokenfactory.Query", - HandlerType: (*QueryServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "Params", - Handler: _Query_Params_Handler, - }, - { - MethodName: "Blacklisted", - Handler: _Query_Blacklisted_Handler, - }, - { - MethodName: "BlacklistedAll", - Handler: _Query_BlacklistedAll_Handler, - }, - { - MethodName: "Paused", - Handler: _Query_Paused_Handler, - }, - { - MethodName: "MasterMinter", - Handler: _Query_MasterMinter_Handler, - }, - { - MethodName: "Minters", - Handler: _Query_Minters_Handler, - }, - { - MethodName: "MintersAll", - Handler: _Query_MintersAll_Handler, - }, - { - MethodName: "Pauser", - Handler: _Query_Pauser_Handler, - }, - { - MethodName: "Blacklister", - Handler: _Query_Blacklister_Handler, - }, - { - MethodName: "Owner", - Handler: _Query_Owner_Handler, - }, - { - MethodName: "MinterController", - Handler: _Query_MinterController_Handler, - }, - { - MethodName: "MinterControllerAll", - Handler: _Query_MinterControllerAll_Handler, - }, - { - MethodName: "MintingDenom", - Handler: _Query_MintingDenom_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "tokenfactory/query.proto", -} - -func (m *QueryParamsRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryParamsResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryParamsResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetBlacklistedRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetBlacklistedRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetBlacklistedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetBlacklistedResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetBlacklistedResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetBlacklistedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Blacklisted.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryAllBlacklistedRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllBlacklistedRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllBlacklistedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryAllBlacklistedResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllBlacklistedResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllBlacklistedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.Blacklisted) > 0 { - for iNdEx := len(m.Blacklisted) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Blacklisted[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *QueryGetPausedRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetPausedRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetPausedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetPausedResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetPausedResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetPausedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Paused.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetMasterMinterRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMasterMinterRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMasterMinterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetMasterMinterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMasterMinterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMasterMinterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.MasterMinter.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetMintersRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMintersRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMintersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetMintersResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMintersResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMintersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Minters.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryAllMintersRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllMintersRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllMintersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryAllMintersResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllMintersResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllMintersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.Minters) > 0 { - for iNdEx := len(m.Minters) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Minters[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *QueryGetPauserRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetPauserRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetPauserRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetPauserResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetPauserResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetPauserResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Pauser.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetBlacklisterRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetBlacklisterRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetBlacklisterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetBlacklisterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetBlacklisterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetBlacklisterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Blacklister.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetOwnerRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetOwnerRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetOwnerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetOwnerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetOwnerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetOwnerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Owner.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryGetMinterControllerRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMinterControllerRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMinterControllerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.ControllerAddress) > 0 { - i -= len(m.ControllerAddress) - copy(dAtA[i:], m.ControllerAddress) - i = encodeVarintQuery(dAtA, i, uint64(len(m.ControllerAddress))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryGetMinterControllerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMinterControllerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMinterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.MinterController.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func (m *QueryAllMinterControllerRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllMinterControllerRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllMinterControllerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *QueryAllMinterControllerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryAllMinterControllerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryAllMinterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Pagination != nil { - { - size, err := m.Pagination.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - if len(m.MinterController) > 0 { - for iNdEx := len(m.MinterController) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.MinterController[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - } - } - return len(dAtA) - i, nil -} - -func (m *QueryGetMintingDenomRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMintingDenomRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMintingDenomRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *QueryGetMintingDenomResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *QueryGetMintingDenomResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *QueryGetMintingDenomResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.MintingDenom.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintQuery(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa - return len(dAtA) - i, nil -} - -func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { - offset -= sovQuery(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *QueryParamsRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryParamsResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Params.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetBlacklistedRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetBlacklistedResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Blacklisted.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryAllBlacklistedRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryAllBlacklistedResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Blacklisted) > 0 { - for _, e := range m.Blacklisted { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetPausedRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetPausedResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Paused.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetMasterMinterRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetMasterMinterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.MasterMinter.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetMintersRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetMintersResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Minters.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryAllMintersRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryAllMintersResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.Minters) > 0 { - for _, e := range m.Minters { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetPauserRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetPauserResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Pauser.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetBlacklisterRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetBlacklisterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Blacklister.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetOwnerRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetOwnerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.Owner.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryGetMinterControllerRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.ControllerAddress) - if l > 0 { - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetMinterControllerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.MinterController.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func (m *QueryAllMinterControllerRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryAllMinterControllerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if len(m.MinterController) > 0 { - for _, e := range m.MinterController { - l = e.Size() - n += 1 + l + sovQuery(uint64(l)) - } - } - if m.Pagination != nil { - l = m.Pagination.Size() - n += 1 + l + sovQuery(uint64(l)) - } - return n -} - -func (m *QueryGetMintingDenomRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *QueryGetMintingDenomResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = m.MintingDenom.Size() - n += 1 + l + sovQuery(uint64(l)) - return n -} - -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryParamsResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryParamsResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetBlacklistedRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetBlacklistedRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetBlacklistedRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetBlacklistedResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetBlacklistedResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetBlacklistedResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Blacklisted", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Blacklisted.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllBlacklistedRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllBlacklistedRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllBlacklistedRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllBlacklistedResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllBlacklistedResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllBlacklistedResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Blacklisted", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Blacklisted = append(m.Blacklisted, Blacklisted{}) - if err := m.Blacklisted[len(m.Blacklisted)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetPausedRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetPausedRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetPausedRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetPausedResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetPausedResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetPausedResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Paused", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Paused.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMasterMinterRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMasterMinterRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMasterMinterRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMasterMinterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMasterMinterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMasterMinterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MasterMinter", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MasterMinter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMintersRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMintersRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMintersRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMintersResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMintersResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMintersResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Minters", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Minters.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllMintersRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllMintersRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllMintersRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllMintersResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllMintersResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllMintersResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Minters", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Minters = append(m.Minters, Minters{}) - if err := m.Minters[len(m.Minters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetPauserRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetPauserRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetPauserRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetPauserResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetPauserResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetPauserResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pauser", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Pauser.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetBlacklisterRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetBlacklisterRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetBlacklisterRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetBlacklisterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetBlacklisterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetBlacklisterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Blacklister", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Blacklister.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetOwnerRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetOwnerRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetOwnerRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetOwnerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetOwnerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetOwnerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Owner.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMinterControllerRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMinterControllerRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMinterControllerRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ControllerAddress", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ControllerAddress = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMinterControllerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMinterControllerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMinterControllerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinterController", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MinterController.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllMinterControllerRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllMinterControllerRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllMinterControllerRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageRequest{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryAllMinterControllerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryAllMinterControllerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryAllMinterControllerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinterController", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.MinterController = append(m.MinterController, MinterController{}) - if err := m.MinterController[len(m.MinterController)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pagination", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Pagination == nil { - m.Pagination = &query.PageResponse{} - } - if err := m.Pagination.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMintingDenomRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMintingDenomRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMintingDenomRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *QueryGetMintingDenomResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: QueryGetMintingDenomResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMintingDenomResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MintingDenom", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthQuery - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthQuery - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.MintingDenom.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipQuery(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthQuery - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipQuery(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowQuery - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthQuery - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupQuery - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthQuery - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/tokenfactory/types/query.pb.gw.go b/x/tokenfactory/types/query.pb.gw.go deleted file mode 100644 index ec797a39..00000000 --- a/x/tokenfactory/types/query.pb.gw.go +++ /dev/null @@ -1,1095 +0,0 @@ -// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: tokenfactory/query.proto - -/* -Package types is a reverse proxy. - -It translates gRPC into RESTful JSON APIs. -*/ -package types - -import ( - "context" - "io" - "net/http" - - "github.com/golang/protobuf/descriptor" - "github.com/golang/protobuf/proto" - "github.com/grpc-ecosystem/grpc-gateway/runtime" - "github.com/grpc-ecosystem/grpc-gateway/utilities" - "google.golang.org/grpc" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/grpclog" - "google.golang.org/grpc/metadata" - "google.golang.org/grpc/status" -) - -// Suppress "imported and not used" errors -var _ codes.Code -var _ io.Reader -var _ status.Status -var _ = runtime.String -var _ = utilities.NewDoubleArray -var _ = descriptor.ForMessage -var _ = metadata.Join - -func request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := client.Params(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryParamsRequest - var metadata runtime.ServerMetadata - - msg, err := server.Params(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Blacklisted_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetBlacklistedRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["address"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") - } - - protoReq.Address, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) - } - - msg, err := client.Blacklisted(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Blacklisted_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetBlacklistedRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["address"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") - } - - protoReq.Address, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) - } - - msg, err := server.Blacklisted(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Query_BlacklistedAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Query_BlacklistedAll_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllBlacklistedRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_BlacklistedAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.BlacklistedAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_BlacklistedAll_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllBlacklistedRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_BlacklistedAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.BlacklistedAll(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Paused_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetPausedRequest - var metadata runtime.ServerMetadata - - msg, err := client.Paused(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Paused_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetPausedRequest - var metadata runtime.ServerMetadata - - msg, err := server.Paused(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_MasterMinter_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMasterMinterRequest - var metadata runtime.ServerMetadata - - msg, err := client.MasterMinter(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_MasterMinter_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMasterMinterRequest - var metadata runtime.ServerMetadata - - msg, err := server.MasterMinter(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Minters_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMintersRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["address"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") - } - - protoReq.Address, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) - } - - msg, err := client.Minters(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Minters_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMintersRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["address"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "address") - } - - protoReq.Address, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "address", err) - } - - msg, err := server.Minters(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Query_MintersAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Query_MintersAll_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllMintersRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MintersAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.MintersAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_MintersAll_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllMintersRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MintersAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.MintersAll(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Pauser_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetPauserRequest - var metadata runtime.ServerMetadata - - msg, err := client.Pauser(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Pauser_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetPauserRequest - var metadata runtime.ServerMetadata - - msg, err := server.Pauser(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Blacklister_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetBlacklisterRequest - var metadata runtime.ServerMetadata - - msg, err := client.Blacklister(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Blacklister_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetBlacklisterRequest - var metadata runtime.ServerMetadata - - msg, err := server.Blacklister(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_Owner_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetOwnerRequest - var metadata runtime.ServerMetadata - - msg, err := client.Owner(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_Owner_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetOwnerRequest - var metadata runtime.ServerMetadata - - msg, err := server.Owner(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_MinterController_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMinterControllerRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["controllerAddress"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "controllerAddress") - } - - protoReq.ControllerAddress, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "controllerAddress", err) - } - - msg, err := client.MinterController(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_MinterController_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMinterControllerRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["controllerAddress"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "controllerAddress") - } - - protoReq.ControllerAddress, err = runtime.String(val) - - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "controllerAddress", err) - } - - msg, err := server.MinterController(ctx, &protoReq) - return msg, metadata, err - -} - -var ( - filter_Query_MinterControllerAll_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - -func request_Query_MinterControllerAll_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllMinterControllerRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MinterControllerAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := client.MinterControllerAll(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_MinterControllerAll_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryAllMinterControllerRequest - var metadata runtime.ServerMetadata - - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Query_MinterControllerAll_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - - msg, err := server.MinterControllerAll(ctx, &protoReq) - return msg, metadata, err - -} - -func request_Query_MintingDenom_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMintingDenomRequest - var metadata runtime.ServerMetadata - - msg, err := client.MintingDenom(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_Query_MintingDenom_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMintingDenomRequest - var metadata runtime.ServerMetadata - - msg, err := server.MintingDenom(ctx, &protoReq) - return msg, metadata, err - -} - -// RegisterQueryHandlerServer registers the http handlers for service Query to "mux". -// UnaryRPC :call QueryServer directly. -// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. -// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterQueryHandlerFromEndpoint instead. -func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, server QueryServer) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Params_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Blacklisted_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Blacklisted_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Blacklisted_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_BlacklistedAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_BlacklistedAll_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_BlacklistedAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Paused_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Paused_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Paused_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MasterMinter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_MasterMinter_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MasterMinter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Minters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Minters_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Minters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MintersAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_MintersAll_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MintersAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Pauser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Pauser_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Pauser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Blacklister_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Blacklister_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Blacklister_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Owner_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_Owner_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Owner_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MinterController_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_MinterController_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MinterController_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MinterControllerAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_MinterControllerAll_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MinterControllerAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MintingDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_Query_MintingDenom_0(rctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MintingDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -// RegisterQueryHandlerFromEndpoint is same as RegisterQueryHandler but -// automatically dials to "endpoint" and closes the connection when "ctx" gets done. -func RegisterQueryHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { - conn, err := grpc.Dial(endpoint, opts...) - if err != nil { - return err - } - defer func() { - if err != nil { - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - return - } - go func() { - <-ctx.Done() - if cerr := conn.Close(); cerr != nil { - grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) - } - }() - }() - - return RegisterQueryHandler(ctx, mux, conn) -} - -// RegisterQueryHandler registers the http handlers for service Query to "mux". -// The handlers forward requests to the grpc endpoint over "conn". -func RegisterQueryHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { - return RegisterQueryHandlerClient(ctx, mux, NewQueryClient(conn)) -} - -// RegisterQueryHandlerClient registers the http handlers for service Query -// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "QueryClient". -// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "QueryClient" -// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in -// "QueryClient" to call the correct interceptors. -func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, client QueryClient) error { - - mux.Handle("GET", pattern_Query_Params_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Params_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Params_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Blacklisted_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Blacklisted_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Blacklisted_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_BlacklistedAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_BlacklistedAll_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_BlacklistedAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Paused_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Paused_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Paused_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MasterMinter_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_MasterMinter_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MasterMinter_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Minters_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Minters_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Minters_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MintersAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_MintersAll_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MintersAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Pauser_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Pauser_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Pauser_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Blacklister_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Blacklister_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Blacklister_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_Owner_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_Owner_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_Owner_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MinterController_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_MinterController_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MinterController_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MinterControllerAll_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_MinterControllerAll_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MinterControllerAll_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("GET", pattern_Query_MintingDenom_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - rctx, err := runtime.AnnotateContext(ctx, mux, req) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_Query_MintingDenom_0(rctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_Query_MintingDenom_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - return nil -} - -var ( - pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "params"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Blacklisted_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"noble", "tokenfactory", "blacklisted", "address"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_BlacklistedAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "blacklisted"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Paused_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "paused"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_MasterMinter_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "master_minter"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Minters_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"noble", "tokenfactory", "minters", "address"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_MintersAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "minters"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Pauser_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "pauser"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Blacklister_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "blacklister"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_Owner_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "owner"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_MinterController_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"noble", "tokenfactory", "minter_controller", "controllerAddress"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_MinterControllerAll_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "minter_controller"}, "", runtime.AssumeColonVerbOpt(true))) - - pattern_Query_MintingDenom_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"noble", "tokenfactory", "minting_denom"}, "", runtime.AssumeColonVerbOpt(true))) -) - -var ( - forward_Query_Params_0 = runtime.ForwardResponseMessage - - forward_Query_Blacklisted_0 = runtime.ForwardResponseMessage - - forward_Query_BlacklistedAll_0 = runtime.ForwardResponseMessage - - forward_Query_Paused_0 = runtime.ForwardResponseMessage - - forward_Query_MasterMinter_0 = runtime.ForwardResponseMessage - - forward_Query_Minters_0 = runtime.ForwardResponseMessage - - forward_Query_MintersAll_0 = runtime.ForwardResponseMessage - - forward_Query_Pauser_0 = runtime.ForwardResponseMessage - - forward_Query_Blacklister_0 = runtime.ForwardResponseMessage - - forward_Query_Owner_0 = runtime.ForwardResponseMessage - - forward_Query_MinterController_0 = runtime.ForwardResponseMessage - - forward_Query_MinterControllerAll_0 = runtime.ForwardResponseMessage - - forward_Query_MintingDenom_0 = runtime.ForwardResponseMessage -) diff --git a/x/tokenfactory/types/tx.pb.go b/x/tokenfactory/types/tx.pb.go deleted file mode 100644 index 2b5cfed2..00000000 --- a/x/tokenfactory/types/tx.pb.go +++ /dev/null @@ -1,5881 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: tokenfactory/tx.proto - -package types - -import ( - context "context" - fmt "fmt" - types "github.com/cosmos/cosmos-sdk/types" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type MsgUpdateMasterMinter struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgUpdateMasterMinter) Reset() { *m = MsgUpdateMasterMinter{} } -func (m *MsgUpdateMasterMinter) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMasterMinter) ProtoMessage() {} -func (*MsgUpdateMasterMinter) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{0} -} -func (m *MsgUpdateMasterMinter) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMasterMinter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMasterMinter.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMasterMinter) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMasterMinter.Merge(m, src) -} -func (m *MsgUpdateMasterMinter) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMasterMinter) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMasterMinter.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMasterMinter proto.InternalMessageInfo - -func (m *MsgUpdateMasterMinter) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgUpdateMasterMinter) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgUpdateMasterMinterResponse struct { -} - -func (m *MsgUpdateMasterMinterResponse) Reset() { *m = MsgUpdateMasterMinterResponse{} } -func (m *MsgUpdateMasterMinterResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMasterMinterResponse) ProtoMessage() {} -func (*MsgUpdateMasterMinterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{1} -} -func (m *MsgUpdateMasterMinterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMasterMinterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMasterMinterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMasterMinterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMasterMinterResponse.Merge(m, src) -} -func (m *MsgUpdateMasterMinterResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMasterMinterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMasterMinterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMasterMinterResponse proto.InternalMessageInfo - -type MsgUpdatePauser struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgUpdatePauser) Reset() { *m = MsgUpdatePauser{} } -func (m *MsgUpdatePauser) String() string { return proto.CompactTextString(m) } -func (*MsgUpdatePauser) ProtoMessage() {} -func (*MsgUpdatePauser) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{2} -} -func (m *MsgUpdatePauser) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdatePauser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdatePauser.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdatePauser) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdatePauser.Merge(m, src) -} -func (m *MsgUpdatePauser) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdatePauser) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdatePauser.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdatePauser proto.InternalMessageInfo - -func (m *MsgUpdatePauser) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgUpdatePauser) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgUpdatePauserResponse struct { -} - -func (m *MsgUpdatePauserResponse) Reset() { *m = MsgUpdatePauserResponse{} } -func (m *MsgUpdatePauserResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdatePauserResponse) ProtoMessage() {} -func (*MsgUpdatePauserResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{3} -} -func (m *MsgUpdatePauserResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdatePauserResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdatePauserResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdatePauserResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdatePauserResponse.Merge(m, src) -} -func (m *MsgUpdatePauserResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdatePauserResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdatePauserResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdatePauserResponse proto.InternalMessageInfo - -type MsgUpdateBlacklister struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgUpdateBlacklister) Reset() { *m = MsgUpdateBlacklister{} } -func (m *MsgUpdateBlacklister) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateBlacklister) ProtoMessage() {} -func (*MsgUpdateBlacklister) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{4} -} -func (m *MsgUpdateBlacklister) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateBlacklister) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateBlacklister.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateBlacklister) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateBlacklister.Merge(m, src) -} -func (m *MsgUpdateBlacklister) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateBlacklister) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateBlacklister.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateBlacklister proto.InternalMessageInfo - -func (m *MsgUpdateBlacklister) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgUpdateBlacklister) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgUpdateBlacklisterResponse struct { -} - -func (m *MsgUpdateBlacklisterResponse) Reset() { *m = MsgUpdateBlacklisterResponse{} } -func (m *MsgUpdateBlacklisterResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateBlacklisterResponse) ProtoMessage() {} -func (*MsgUpdateBlacklisterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{5} -} -func (m *MsgUpdateBlacklisterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateBlacklisterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateBlacklisterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateBlacklisterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateBlacklisterResponse.Merge(m, src) -} -func (m *MsgUpdateBlacklisterResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateBlacklisterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateBlacklisterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateBlacklisterResponse proto.InternalMessageInfo - -type MsgUpdateOwner struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgUpdateOwner) Reset() { *m = MsgUpdateOwner{} } -func (m *MsgUpdateOwner) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateOwner) ProtoMessage() {} -func (*MsgUpdateOwner) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{6} -} -func (m *MsgUpdateOwner) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateOwner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateOwner.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateOwner) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateOwner.Merge(m, src) -} -func (m *MsgUpdateOwner) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateOwner) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateOwner.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateOwner proto.InternalMessageInfo - -func (m *MsgUpdateOwner) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgUpdateOwner) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgUpdateOwnerResponse struct { -} - -func (m *MsgUpdateOwnerResponse) Reset() { *m = MsgUpdateOwnerResponse{} } -func (m *MsgUpdateOwnerResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateOwnerResponse) ProtoMessage() {} -func (*MsgUpdateOwnerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{7} -} -func (m *MsgUpdateOwnerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateOwnerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateOwnerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateOwnerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateOwnerResponse.Merge(m, src) -} -func (m *MsgUpdateOwnerResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateOwnerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateOwnerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateOwnerResponse proto.InternalMessageInfo - -type MsgAcceptOwner struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` -} - -func (m *MsgAcceptOwner) Reset() { *m = MsgAcceptOwner{} } -func (m *MsgAcceptOwner) String() string { return proto.CompactTextString(m) } -func (*MsgAcceptOwner) ProtoMessage() {} -func (*MsgAcceptOwner) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{8} -} -func (m *MsgAcceptOwner) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAcceptOwner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAcceptOwner.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAcceptOwner) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAcceptOwner.Merge(m, src) -} -func (m *MsgAcceptOwner) XXX_Size() int { - return m.Size() -} -func (m *MsgAcceptOwner) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAcceptOwner.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAcceptOwner proto.InternalMessageInfo - -func (m *MsgAcceptOwner) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -type MsgAcceptOwnerResponse struct { -} - -func (m *MsgAcceptOwnerResponse) Reset() { *m = MsgAcceptOwnerResponse{} } -func (m *MsgAcceptOwnerResponse) String() string { return proto.CompactTextString(m) } -func (*MsgAcceptOwnerResponse) ProtoMessage() {} -func (*MsgAcceptOwnerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{9} -} -func (m *MsgAcceptOwnerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAcceptOwnerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAcceptOwnerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAcceptOwnerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAcceptOwnerResponse.Merge(m, src) -} -func (m *MsgAcceptOwnerResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgAcceptOwnerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAcceptOwnerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAcceptOwnerResponse proto.InternalMessageInfo - -type MsgConfigureMinter struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Allowance types.Coin `protobuf:"bytes,3,opt,name=allowance,proto3" json:"allowance"` -} - -func (m *MsgConfigureMinter) Reset() { *m = MsgConfigureMinter{} } -func (m *MsgConfigureMinter) String() string { return proto.CompactTextString(m) } -func (*MsgConfigureMinter) ProtoMessage() {} -func (*MsgConfigureMinter) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{10} -} -func (m *MsgConfigureMinter) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgConfigureMinter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgConfigureMinter.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgConfigureMinter) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgConfigureMinter.Merge(m, src) -} -func (m *MsgConfigureMinter) XXX_Size() int { - return m.Size() -} -func (m *MsgConfigureMinter) XXX_DiscardUnknown() { - xxx_messageInfo_MsgConfigureMinter.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgConfigureMinter proto.InternalMessageInfo - -func (m *MsgConfigureMinter) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgConfigureMinter) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *MsgConfigureMinter) GetAllowance() types.Coin { - if m != nil { - return m.Allowance - } - return types.Coin{} -} - -type MsgConfigureMinterResponse struct { -} - -func (m *MsgConfigureMinterResponse) Reset() { *m = MsgConfigureMinterResponse{} } -func (m *MsgConfigureMinterResponse) String() string { return proto.CompactTextString(m) } -func (*MsgConfigureMinterResponse) ProtoMessage() {} -func (*MsgConfigureMinterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{11} -} -func (m *MsgConfigureMinterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgConfigureMinterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgConfigureMinterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgConfigureMinterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgConfigureMinterResponse.Merge(m, src) -} -func (m *MsgConfigureMinterResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgConfigureMinterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgConfigureMinterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgConfigureMinterResponse proto.InternalMessageInfo - -type MsgRemoveMinter struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgRemoveMinter) Reset() { *m = MsgRemoveMinter{} } -func (m *MsgRemoveMinter) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMinter) ProtoMessage() {} -func (*MsgRemoveMinter) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{12} -} -func (m *MsgRemoveMinter) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMinter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMinter.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMinter) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMinter.Merge(m, src) -} -func (m *MsgRemoveMinter) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMinter) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMinter.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMinter proto.InternalMessageInfo - -func (m *MsgRemoveMinter) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgRemoveMinter) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgRemoveMinterResponse struct { -} - -func (m *MsgRemoveMinterResponse) Reset() { *m = MsgRemoveMinterResponse{} } -func (m *MsgRemoveMinterResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMinterResponse) ProtoMessage() {} -func (*MsgRemoveMinterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{13} -} -func (m *MsgRemoveMinterResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMinterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMinterResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMinterResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMinterResponse.Merge(m, src) -} -func (m *MsgRemoveMinterResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMinterResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMinterResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMinterResponse proto.InternalMessageInfo - -type MsgMint struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Amount types.Coin `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount"` -} - -func (m *MsgMint) Reset() { *m = MsgMint{} } -func (m *MsgMint) String() string { return proto.CompactTextString(m) } -func (*MsgMint) ProtoMessage() {} -func (*MsgMint) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{14} -} -func (m *MsgMint) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgMint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgMint.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgMint) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgMint.Merge(m, src) -} -func (m *MsgMint) XXX_Size() int { - return m.Size() -} -func (m *MsgMint) XXX_DiscardUnknown() { - xxx_messageInfo_MsgMint.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgMint proto.InternalMessageInfo - -func (m *MsgMint) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgMint) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -func (m *MsgMint) GetAmount() types.Coin { - if m != nil { - return m.Amount - } - return types.Coin{} -} - -type MsgMintResponse struct { -} - -func (m *MsgMintResponse) Reset() { *m = MsgMintResponse{} } -func (m *MsgMintResponse) String() string { return proto.CompactTextString(m) } -func (*MsgMintResponse) ProtoMessage() {} -func (*MsgMintResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{15} -} -func (m *MsgMintResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgMintResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgMintResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgMintResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgMintResponse.Merge(m, src) -} -func (m *MsgMintResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgMintResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgMintResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgMintResponse proto.InternalMessageInfo - -type MsgBurn struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Amount types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount"` -} - -func (m *MsgBurn) Reset() { *m = MsgBurn{} } -func (m *MsgBurn) String() string { return proto.CompactTextString(m) } -func (*MsgBurn) ProtoMessage() {} -func (*MsgBurn) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{16} -} -func (m *MsgBurn) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgBurn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgBurn.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgBurn) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgBurn.Merge(m, src) -} -func (m *MsgBurn) XXX_Size() int { - return m.Size() -} -func (m *MsgBurn) XXX_DiscardUnknown() { - xxx_messageInfo_MsgBurn.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgBurn proto.InternalMessageInfo - -func (m *MsgBurn) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgBurn) GetAmount() types.Coin { - if m != nil { - return m.Amount - } - return types.Coin{} -} - -type MsgBurnResponse struct { -} - -func (m *MsgBurnResponse) Reset() { *m = MsgBurnResponse{} } -func (m *MsgBurnResponse) String() string { return proto.CompactTextString(m) } -func (*MsgBurnResponse) ProtoMessage() {} -func (*MsgBurnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{17} -} -func (m *MsgBurnResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgBurnResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgBurnResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgBurnResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgBurnResponse.Merge(m, src) -} -func (m *MsgBurnResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgBurnResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgBurnResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgBurnResponse proto.InternalMessageInfo - -type MsgBlacklist struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgBlacklist) Reset() { *m = MsgBlacklist{} } -func (m *MsgBlacklist) String() string { return proto.CompactTextString(m) } -func (*MsgBlacklist) ProtoMessage() {} -func (*MsgBlacklist) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{18} -} -func (m *MsgBlacklist) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgBlacklist) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgBlacklist.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgBlacklist) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgBlacklist.Merge(m, src) -} -func (m *MsgBlacklist) XXX_Size() int { - return m.Size() -} -func (m *MsgBlacklist) XXX_DiscardUnknown() { - xxx_messageInfo_MsgBlacklist.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgBlacklist proto.InternalMessageInfo - -func (m *MsgBlacklist) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgBlacklist) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgBlacklistResponse struct { -} - -func (m *MsgBlacklistResponse) Reset() { *m = MsgBlacklistResponse{} } -func (m *MsgBlacklistResponse) String() string { return proto.CompactTextString(m) } -func (*MsgBlacklistResponse) ProtoMessage() {} -func (*MsgBlacklistResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{19} -} -func (m *MsgBlacklistResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgBlacklistResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgBlacklistResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgBlacklistResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgBlacklistResponse.Merge(m, src) -} -func (m *MsgBlacklistResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgBlacklistResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgBlacklistResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgBlacklistResponse proto.InternalMessageInfo - -type MsgUnblacklist struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` -} - -func (m *MsgUnblacklist) Reset() { *m = MsgUnblacklist{} } -func (m *MsgUnblacklist) String() string { return proto.CompactTextString(m) } -func (*MsgUnblacklist) ProtoMessage() {} -func (*MsgUnblacklist) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{20} -} -func (m *MsgUnblacklist) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUnblacklist) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUnblacklist.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUnblacklist) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnblacklist.Merge(m, src) -} -func (m *MsgUnblacklist) XXX_Size() int { - return m.Size() -} -func (m *MsgUnblacklist) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnblacklist.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUnblacklist proto.InternalMessageInfo - -func (m *MsgUnblacklist) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgUnblacklist) GetAddress() string { - if m != nil { - return m.Address - } - return "" -} - -type MsgUnblacklistResponse struct { -} - -func (m *MsgUnblacklistResponse) Reset() { *m = MsgUnblacklistResponse{} } -func (m *MsgUnblacklistResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUnblacklistResponse) ProtoMessage() {} -func (*MsgUnblacklistResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{21} -} -func (m *MsgUnblacklistResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUnblacklistResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUnblacklistResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUnblacklistResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnblacklistResponse.Merge(m, src) -} -func (m *MsgUnblacklistResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUnblacklistResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnblacklistResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUnblacklistResponse proto.InternalMessageInfo - -type MsgPause struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` -} - -func (m *MsgPause) Reset() { *m = MsgPause{} } -func (m *MsgPause) String() string { return proto.CompactTextString(m) } -func (*MsgPause) ProtoMessage() {} -func (*MsgPause) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{22} -} -func (m *MsgPause) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgPause) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgPause.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgPause) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgPause.Merge(m, src) -} -func (m *MsgPause) XXX_Size() int { - return m.Size() -} -func (m *MsgPause) XXX_DiscardUnknown() { - xxx_messageInfo_MsgPause.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgPause proto.InternalMessageInfo - -func (m *MsgPause) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -type MsgPauseResponse struct { -} - -func (m *MsgPauseResponse) Reset() { *m = MsgPauseResponse{} } -func (m *MsgPauseResponse) String() string { return proto.CompactTextString(m) } -func (*MsgPauseResponse) ProtoMessage() {} -func (*MsgPauseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{23} -} -func (m *MsgPauseResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgPauseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgPauseResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgPauseResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgPauseResponse.Merge(m, src) -} -func (m *MsgPauseResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgPauseResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgPauseResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgPauseResponse proto.InternalMessageInfo - -type MsgUnpause struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` -} - -func (m *MsgUnpause) Reset() { *m = MsgUnpause{} } -func (m *MsgUnpause) String() string { return proto.CompactTextString(m) } -func (*MsgUnpause) ProtoMessage() {} -func (*MsgUnpause) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{24} -} -func (m *MsgUnpause) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUnpause) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUnpause.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUnpause) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnpause.Merge(m, src) -} -func (m *MsgUnpause) XXX_Size() int { - return m.Size() -} -func (m *MsgUnpause) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnpause.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUnpause proto.InternalMessageInfo - -func (m *MsgUnpause) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -type MsgUnpauseResponse struct { -} - -func (m *MsgUnpauseResponse) Reset() { *m = MsgUnpauseResponse{} } -func (m *MsgUnpauseResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUnpauseResponse) ProtoMessage() {} -func (*MsgUnpauseResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{25} -} -func (m *MsgUnpauseResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUnpauseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUnpauseResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUnpauseResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUnpauseResponse.Merge(m, src) -} -func (m *MsgUnpauseResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUnpauseResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUnpauseResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUnpauseResponse proto.InternalMessageInfo - -type MsgConfigureMinterController struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` - Minter string `protobuf:"bytes,3,opt,name=minter,proto3" json:"minter,omitempty"` -} - -func (m *MsgConfigureMinterController) Reset() { *m = MsgConfigureMinterController{} } -func (m *MsgConfigureMinterController) String() string { return proto.CompactTextString(m) } -func (*MsgConfigureMinterController) ProtoMessage() {} -func (*MsgConfigureMinterController) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{26} -} -func (m *MsgConfigureMinterController) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgConfigureMinterController) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgConfigureMinterController.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgConfigureMinterController) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgConfigureMinterController.Merge(m, src) -} -func (m *MsgConfigureMinterController) XXX_Size() int { - return m.Size() -} -func (m *MsgConfigureMinterController) XXX_DiscardUnknown() { - xxx_messageInfo_MsgConfigureMinterController.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgConfigureMinterController proto.InternalMessageInfo - -func (m *MsgConfigureMinterController) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgConfigureMinterController) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -func (m *MsgConfigureMinterController) GetMinter() string { - if m != nil { - return m.Minter - } - return "" -} - -type MsgConfigureMinterControllerResponse struct { -} - -func (m *MsgConfigureMinterControllerResponse) Reset() { *m = MsgConfigureMinterControllerResponse{} } -func (m *MsgConfigureMinterControllerResponse) String() string { return proto.CompactTextString(m) } -func (*MsgConfigureMinterControllerResponse) ProtoMessage() {} -func (*MsgConfigureMinterControllerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{27} -} -func (m *MsgConfigureMinterControllerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgConfigureMinterControllerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgConfigureMinterControllerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgConfigureMinterControllerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgConfigureMinterControllerResponse.Merge(m, src) -} -func (m *MsgConfigureMinterControllerResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgConfigureMinterControllerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgConfigureMinterControllerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgConfigureMinterControllerResponse proto.InternalMessageInfo - -type MsgRemoveMinterController struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - Controller string `protobuf:"bytes,2,opt,name=controller,proto3" json:"controller,omitempty"` -} - -func (m *MsgRemoveMinterController) Reset() { *m = MsgRemoveMinterController{} } -func (m *MsgRemoveMinterController) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMinterController) ProtoMessage() {} -func (*MsgRemoveMinterController) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{28} -} -func (m *MsgRemoveMinterController) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMinterController) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMinterController.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMinterController) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMinterController.Merge(m, src) -} -func (m *MsgRemoveMinterController) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMinterController) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMinterController.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMinterController proto.InternalMessageInfo - -func (m *MsgRemoveMinterController) GetFrom() string { - if m != nil { - return m.From - } - return "" -} - -func (m *MsgRemoveMinterController) GetController() string { - if m != nil { - return m.Controller - } - return "" -} - -type MsgRemoveMinterControllerResponse struct { -} - -func (m *MsgRemoveMinterControllerResponse) Reset() { *m = MsgRemoveMinterControllerResponse{} } -func (m *MsgRemoveMinterControllerResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMinterControllerResponse) ProtoMessage() {} -func (*MsgRemoveMinterControllerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_51ab120c97d57038, []int{29} -} -func (m *MsgRemoveMinterControllerResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMinterControllerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMinterControllerResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMinterControllerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMinterControllerResponse.Merge(m, src) -} -func (m *MsgRemoveMinterControllerResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMinterControllerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMinterControllerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMinterControllerResponse proto.InternalMessageInfo - -func init() { - proto.RegisterType((*MsgUpdateMasterMinter)(nil), "noble.tokenfactory.MsgUpdateMasterMinter") - proto.RegisterType((*MsgUpdateMasterMinterResponse)(nil), "noble.tokenfactory.MsgUpdateMasterMinterResponse") - proto.RegisterType((*MsgUpdatePauser)(nil), "noble.tokenfactory.MsgUpdatePauser") - proto.RegisterType((*MsgUpdatePauserResponse)(nil), "noble.tokenfactory.MsgUpdatePauserResponse") - proto.RegisterType((*MsgUpdateBlacklister)(nil), "noble.tokenfactory.MsgUpdateBlacklister") - proto.RegisterType((*MsgUpdateBlacklisterResponse)(nil), "noble.tokenfactory.MsgUpdateBlacklisterResponse") - proto.RegisterType((*MsgUpdateOwner)(nil), "noble.tokenfactory.MsgUpdateOwner") - proto.RegisterType((*MsgUpdateOwnerResponse)(nil), "noble.tokenfactory.MsgUpdateOwnerResponse") - proto.RegisterType((*MsgAcceptOwner)(nil), "noble.tokenfactory.MsgAcceptOwner") - proto.RegisterType((*MsgAcceptOwnerResponse)(nil), "noble.tokenfactory.MsgAcceptOwnerResponse") - proto.RegisterType((*MsgConfigureMinter)(nil), "noble.tokenfactory.MsgConfigureMinter") - proto.RegisterType((*MsgConfigureMinterResponse)(nil), "noble.tokenfactory.MsgConfigureMinterResponse") - proto.RegisterType((*MsgRemoveMinter)(nil), "noble.tokenfactory.MsgRemoveMinter") - proto.RegisterType((*MsgRemoveMinterResponse)(nil), "noble.tokenfactory.MsgRemoveMinterResponse") - proto.RegisterType((*MsgMint)(nil), "noble.tokenfactory.MsgMint") - proto.RegisterType((*MsgMintResponse)(nil), "noble.tokenfactory.MsgMintResponse") - proto.RegisterType((*MsgBurn)(nil), "noble.tokenfactory.MsgBurn") - proto.RegisterType((*MsgBurnResponse)(nil), "noble.tokenfactory.MsgBurnResponse") - proto.RegisterType((*MsgBlacklist)(nil), "noble.tokenfactory.MsgBlacklist") - proto.RegisterType((*MsgBlacklistResponse)(nil), "noble.tokenfactory.MsgBlacklistResponse") - proto.RegisterType((*MsgUnblacklist)(nil), "noble.tokenfactory.MsgUnblacklist") - proto.RegisterType((*MsgUnblacklistResponse)(nil), "noble.tokenfactory.MsgUnblacklistResponse") - proto.RegisterType((*MsgPause)(nil), "noble.tokenfactory.MsgPause") - proto.RegisterType((*MsgPauseResponse)(nil), "noble.tokenfactory.MsgPauseResponse") - proto.RegisterType((*MsgUnpause)(nil), "noble.tokenfactory.MsgUnpause") - proto.RegisterType((*MsgUnpauseResponse)(nil), "noble.tokenfactory.MsgUnpauseResponse") - proto.RegisterType((*MsgConfigureMinterController)(nil), "noble.tokenfactory.MsgConfigureMinterController") - proto.RegisterType((*MsgConfigureMinterControllerResponse)(nil), "noble.tokenfactory.MsgConfigureMinterControllerResponse") - proto.RegisterType((*MsgRemoveMinterController)(nil), "noble.tokenfactory.MsgRemoveMinterController") - proto.RegisterType((*MsgRemoveMinterControllerResponse)(nil), "noble.tokenfactory.MsgRemoveMinterControllerResponse") -} - -func init() { proto.RegisterFile("tokenfactory/tx.proto", fileDescriptor_51ab120c97d57038) } - -var fileDescriptor_51ab120c97d57038 = []byte{ - // 798 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x4d, 0x6f, 0xd3, 0x4a, - 0x14, 0x8d, 0xdb, 0xbe, 0xf6, 0xe5, 0xb6, 0x7a, 0x7d, 0x1d, 0xb5, 0x21, 0x31, 0xc5, 0x0d, 0x6e, - 0x55, 0x05, 0x50, 0xed, 0xb6, 0xa8, 0x2a, 0x0b, 0x3e, 0x44, 0x0a, 0x12, 0x12, 0x8a, 0x0a, 0x91, - 0x00, 0x09, 0x09, 0x09, 0xc7, 0x9d, 0x9a, 0xd0, 0xc4, 0x13, 0x79, 0x9c, 0x7e, 0x6c, 0x90, 0x58, - 0xb1, 0xe5, 0x67, 0x75, 0x83, 0xd4, 0x25, 0x2b, 0x84, 0xda, 0x3f, 0x82, 0x3c, 0xb1, 0x27, 0x93, - 0xc4, 0xe3, 0xda, 0x61, 0x67, 0xcf, 0x3d, 0xe7, 0xdc, 0x3b, 0x9d, 0xe3, 0x33, 0x0d, 0x2c, 0xf9, - 0xe4, 0x08, 0xbb, 0x87, 0x96, 0xed, 0x13, 0xef, 0xcc, 0xf4, 0x4f, 0x8d, 0x8e, 0x47, 0x7c, 0x82, - 0x90, 0x4b, 0x1a, 0x2d, 0x6c, 0x88, 0x45, 0x55, 0xb3, 0x09, 0x6d, 0x13, 0x6a, 0x36, 0x2c, 0x8a, - 0xcd, 0xe3, 0xad, 0x06, 0xf6, 0xad, 0x2d, 0xd3, 0x26, 0x4d, 0xb7, 0xc7, 0x51, 0x17, 0x1d, 0xe2, - 0x10, 0xf6, 0x68, 0x06, 0x4f, 0xbd, 0x55, 0xfd, 0x39, 0x2c, 0xd5, 0xa8, 0xf3, 0xa6, 0x73, 0x60, - 0xf9, 0xb8, 0x66, 0x51, 0x1f, 0x7b, 0xb5, 0xa6, 0xeb, 0x63, 0x0f, 0x21, 0x98, 0x3a, 0xf4, 0x48, - 0xbb, 0xa8, 0x94, 0x95, 0x4a, 0xbe, 0xce, 0x9e, 0x51, 0x11, 0x66, 0xac, 0x83, 0x03, 0x0f, 0x53, - 0x5a, 0x9c, 0x60, 0xcb, 0xd1, 0xab, 0xbe, 0x02, 0xb7, 0x62, 0x65, 0xea, 0x98, 0x76, 0x88, 0x4b, - 0xb1, 0xfe, 0x04, 0xe6, 0x39, 0xe0, 0x95, 0xd5, 0xa5, 0x99, 0x3b, 0x94, 0xe0, 0xc6, 0x90, 0x00, - 0xd7, 0x7e, 0x06, 0x8b, 0xbc, 0x54, 0x6d, 0x59, 0xf6, 0x51, 0xab, 0x49, 0xb3, 0x6f, 0x41, 0x83, - 0xe5, 0x38, 0x15, 0xde, 0xe5, 0x31, 0xfc, 0xc7, 0xeb, 0xfb, 0x27, 0x6e, 0x66, 0xfd, 0x22, 0x14, - 0x06, 0xf9, 0x5c, 0x79, 0x8d, 0x29, 0x3f, 0xb5, 0x6d, 0xdc, 0xf1, 0xa5, 0xca, 0x21, 0x5f, 0x40, - 0x71, 0xfe, 0x57, 0x05, 0x50, 0x8d, 0x3a, 0x7b, 0xc4, 0x3d, 0x6c, 0x3a, 0x5d, 0x0f, 0x8f, 0x73, - 0x82, 0xe8, 0x11, 0xe4, 0xad, 0x56, 0x8b, 0x9c, 0x58, 0xae, 0x8d, 0x8b, 0x93, 0x65, 0xa5, 0x32, - 0xbb, 0x5d, 0x32, 0x7a, 0x96, 0x32, 0x02, 0x4b, 0x19, 0xa1, 0xa5, 0x8c, 0x3d, 0xd2, 0x74, 0xab, - 0x53, 0xe7, 0xbf, 0x56, 0x72, 0xf5, 0x3e, 0x43, 0x5f, 0x06, 0x75, 0x74, 0x84, 0xa1, 0xd3, 0xaf, - 0xe3, 0x36, 0x39, 0x1e, 0x6b, 0xba, 0xf0, 0xf4, 0x45, 0x01, 0xae, 0xdd, 0x81, 0x99, 0x1a, 0x75, - 0x82, 0xc5, 0x8c, 0x3b, 0xde, 0x85, 0x69, 0xab, 0x4d, 0xba, 0xae, 0x9f, 0x76, 0xbb, 0x21, 0x5c, - 0x5f, 0x60, 0xbb, 0x09, 0x3a, 0xf2, 0x21, 0xde, 0xb2, 0x21, 0xaa, 0x5d, 0xcf, 0x8d, 0x1d, 0xa2, - 0xdf, 0x6a, 0x62, 0x9c, 0x56, 0x81, 0x2e, 0x6f, 0xf5, 0x10, 0xe6, 0x82, 0xa5, 0xc8, 0xa1, 0x19, - 0xff, 0x90, 0x05, 0xf6, 0xad, 0x70, 0xf6, 0xb0, 0xbb, 0xdd, 0xc6, 0x98, 0xba, 0xa1, 0xbb, 0xfb, - 0x7c, 0xae, 0xac, 0xc1, 0xbf, 0x35, 0xea, 0xb0, 0x4f, 0x36, 0xd6, 0xd7, 0x08, 0xfe, 0x8f, 0xea, - 0x9c, 0x53, 0x06, 0x60, 0x6a, 0x1d, 0x29, 0x6b, 0x91, 0x59, 0x3e, 0x44, 0x70, 0xde, 0x67, 0xf6, - 0x0d, 0x0f, 0xb9, 0x70, 0x8f, 0xb8, 0xbe, 0x47, 0x5a, 0x2d, 0x89, 0xe9, 0x34, 0x00, 0x9b, 0x23, - 0xc2, 0x6d, 0x09, 0x2b, 0xa8, 0x00, 0xd3, 0x6d, 0xa6, 0xc3, 0x6c, 0x92, 0xaf, 0x87, 0x6f, 0xfa, - 0x3a, 0xac, 0x25, 0xf5, 0xe2, 0x33, 0xed, 0x43, 0x69, 0xc8, 0xba, 0x7f, 0x37, 0x90, 0xbe, 0x0a, - 0xb7, 0xa5, 0x82, 0x51, 0xd7, 0xed, 0x1f, 0xb3, 0x30, 0x59, 0xa3, 0x0e, 0xf2, 0x00, 0xc5, 0x84, - 0xfb, 0x1d, 0x63, 0xf4, 0x02, 0x31, 0x62, 0x03, 0x5c, 0xdd, 0x4a, 0x0d, 0x8d, 0x7a, 0xa3, 0x8f, - 0x30, 0x37, 0x10, 0xf4, 0xab, 0x89, 0x12, 0x3d, 0x90, 0x7a, 0x2f, 0x05, 0x88, 0x77, 0x20, 0xb0, - 0x30, 0x1a, 0xf7, 0x95, 0x44, 0x05, 0x01, 0xa9, 0x6e, 0xa6, 0x45, 0xf2, 0x86, 0x1f, 0x60, 0x56, - 0x4c, 0x7e, 0x3d, 0x51, 0x80, 0x61, 0xd4, 0xbb, 0xd7, 0x63, 0x44, 0x79, 0x31, 0xfe, 0x65, 0xf2, - 0x02, 0x46, 0x2a, 0x1f, 0x73, 0x41, 0xa0, 0x26, 0xcc, 0x0f, 0x5f, 0x0e, 0xeb, 0x12, 0xfa, 0x10, - 0x4e, 0x35, 0xd2, 0xe1, 0xc4, 0xb3, 0x1f, 0x88, 0x79, 0xd9, 0xd9, 0x8b, 0x20, 0xe9, 0xd9, 0xc7, - 0xe5, 0x3d, 0x7a, 0x01, 0x53, 0x2c, 0xec, 0x6f, 0x4a, 0x48, 0x41, 0x51, 0x5d, 0x4d, 0x28, 0x8a, - 0x4a, 0x2c, 0xb1, 0x65, 0x4a, 0x41, 0x51, 0xaa, 0x24, 0x66, 0x32, 0x7a, 0x07, 0xf9, 0x7e, 0x20, - 0x97, 0x65, 0x8c, 0x08, 0xa1, 0x56, 0xae, 0x43, 0x0c, 0xf8, 0x4e, 0xc8, 0x64, 0xa9, 0xef, 0xfa, - 0x18, 0xb9, 0xef, 0x46, 0xb3, 0x19, 0xbd, 0x84, 0x7f, 0x7a, 0xc1, 0xbc, 0x2c, 0x21, 0xb1, 0xaa, - 0xba, 0x96, 0x54, 0xe5, 0x62, 0xaf, 0x61, 0x26, 0x4a, 0x6c, 0x4d, 0x3a, 0x03, 0xab, 0xab, 0xeb, - 0xc9, 0x75, 0x2e, 0xf9, 0x4d, 0x81, 0x92, 0x3c, 0xcd, 0x37, 0xd3, 0x79, 0xb3, 0xcf, 0x50, 0x1f, - 0x64, 0x65, 0xf0, 0x49, 0xbe, 0x40, 0x41, 0x12, 0xe1, 0x1b, 0x29, 0xcc, 0x2b, 0x8c, 0xb0, 0x93, - 0x09, 0x1e, 0xf5, 0xaf, 0xee, 0x9f, 0x5f, 0x6a, 0xca, 0xc5, 0xa5, 0xa6, 0xfc, 0xbe, 0xd4, 0x94, - 0xef, 0x57, 0x5a, 0xee, 0xe2, 0x4a, 0xcb, 0xfd, 0xbc, 0xd2, 0x72, 0xef, 0x77, 0x9c, 0xa6, 0xff, - 0xa9, 0xdb, 0x30, 0x6c, 0xd2, 0x36, 0x99, 0xf4, 0x86, 0x45, 0x29, 0xf6, 0x69, 0xef, 0xc5, 0x3c, - 0xde, 0x35, 0x4f, 0xcd, 0xc1, 0x5f, 0x11, 0x67, 0x1d, 0x4c, 0x1b, 0xd3, 0xec, 0xff, 0xff, 0xfb, - 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1d, 0x0d, 0xe5, 0x11, 0x62, 0x0c, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// MsgClient is the client API for Msg service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MsgClient interface { - UpdateMasterMinter(ctx context.Context, in *MsgUpdateMasterMinter, opts ...grpc.CallOption) (*MsgUpdateMasterMinterResponse, error) - UpdatePauser(ctx context.Context, in *MsgUpdatePauser, opts ...grpc.CallOption) (*MsgUpdatePauserResponse, error) - UpdateBlacklister(ctx context.Context, in *MsgUpdateBlacklister, opts ...grpc.CallOption) (*MsgUpdateBlacklisterResponse, error) - UpdateOwner(ctx context.Context, in *MsgUpdateOwner, opts ...grpc.CallOption) (*MsgUpdateOwnerResponse, error) - AcceptOwner(ctx context.Context, in *MsgAcceptOwner, opts ...grpc.CallOption) (*MsgAcceptOwnerResponse, error) - ConfigureMinter(ctx context.Context, in *MsgConfigureMinter, opts ...grpc.CallOption) (*MsgConfigureMinterResponse, error) - RemoveMinter(ctx context.Context, in *MsgRemoveMinter, opts ...grpc.CallOption) (*MsgRemoveMinterResponse, error) - Mint(ctx context.Context, in *MsgMint, opts ...grpc.CallOption) (*MsgMintResponse, error) - Burn(ctx context.Context, in *MsgBurn, opts ...grpc.CallOption) (*MsgBurnResponse, error) - Blacklist(ctx context.Context, in *MsgBlacklist, opts ...grpc.CallOption) (*MsgBlacklistResponse, error) - Unblacklist(ctx context.Context, in *MsgUnblacklist, opts ...grpc.CallOption) (*MsgUnblacklistResponse, error) - Pause(ctx context.Context, in *MsgPause, opts ...grpc.CallOption) (*MsgPauseResponse, error) - Unpause(ctx context.Context, in *MsgUnpause, opts ...grpc.CallOption) (*MsgUnpauseResponse, error) - ConfigureMinterController(ctx context.Context, in *MsgConfigureMinterController, opts ...grpc.CallOption) (*MsgConfigureMinterControllerResponse, error) - RemoveMinterController(ctx context.Context, in *MsgRemoveMinterController, opts ...grpc.CallOption) (*MsgRemoveMinterControllerResponse, error) -} - -type msgClient struct { - cc grpc1.ClientConn -} - -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} -} - -func (c *msgClient) UpdateMasterMinter(ctx context.Context, in *MsgUpdateMasterMinter, opts ...grpc.CallOption) (*MsgUpdateMasterMinterResponse, error) { - out := new(MsgUpdateMasterMinterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/UpdateMasterMinter", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) UpdatePauser(ctx context.Context, in *MsgUpdatePauser, opts ...grpc.CallOption) (*MsgUpdatePauserResponse, error) { - out := new(MsgUpdatePauserResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/UpdatePauser", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) UpdateBlacklister(ctx context.Context, in *MsgUpdateBlacklister, opts ...grpc.CallOption) (*MsgUpdateBlacklisterResponse, error) { - out := new(MsgUpdateBlacklisterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/UpdateBlacklister", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) UpdateOwner(ctx context.Context, in *MsgUpdateOwner, opts ...grpc.CallOption) (*MsgUpdateOwnerResponse, error) { - out := new(MsgUpdateOwnerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/UpdateOwner", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) AcceptOwner(ctx context.Context, in *MsgAcceptOwner, opts ...grpc.CallOption) (*MsgAcceptOwnerResponse, error) { - out := new(MsgAcceptOwnerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/AcceptOwner", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) ConfigureMinter(ctx context.Context, in *MsgConfigureMinter, opts ...grpc.CallOption) (*MsgConfigureMinterResponse, error) { - out := new(MsgConfigureMinterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/ConfigureMinter", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RemoveMinter(ctx context.Context, in *MsgRemoveMinter, opts ...grpc.CallOption) (*MsgRemoveMinterResponse, error) { - out := new(MsgRemoveMinterResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/RemoveMinter", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Mint(ctx context.Context, in *MsgMint, opts ...grpc.CallOption) (*MsgMintResponse, error) { - out := new(MsgMintResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Mint", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Burn(ctx context.Context, in *MsgBurn, opts ...grpc.CallOption) (*MsgBurnResponse, error) { - out := new(MsgBurnResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Burn", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Blacklist(ctx context.Context, in *MsgBlacklist, opts ...grpc.CallOption) (*MsgBlacklistResponse, error) { - out := new(MsgBlacklistResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Blacklist", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Unblacklist(ctx context.Context, in *MsgUnblacklist, opts ...grpc.CallOption) (*MsgUnblacklistResponse, error) { - out := new(MsgUnblacklistResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Unblacklist", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Pause(ctx context.Context, in *MsgPause, opts ...grpc.CallOption) (*MsgPauseResponse, error) { - out := new(MsgPauseResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Pause", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) Unpause(ctx context.Context, in *MsgUnpause, opts ...grpc.CallOption) (*MsgUnpauseResponse, error) { - out := new(MsgUnpauseResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/Unpause", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) ConfigureMinterController(ctx context.Context, in *MsgConfigureMinterController, opts ...grpc.CallOption) (*MsgConfigureMinterControllerResponse, error) { - out := new(MsgConfigureMinterControllerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/ConfigureMinterController", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RemoveMinterController(ctx context.Context, in *MsgRemoveMinterController, opts ...grpc.CallOption) (*MsgRemoveMinterControllerResponse, error) { - out := new(MsgRemoveMinterControllerResponse) - err := c.cc.Invoke(ctx, "/noble.tokenfactory.Msg/RemoveMinterController", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// MsgServer is the server API for Msg service. -type MsgServer interface { - UpdateMasterMinter(context.Context, *MsgUpdateMasterMinter) (*MsgUpdateMasterMinterResponse, error) - UpdatePauser(context.Context, *MsgUpdatePauser) (*MsgUpdatePauserResponse, error) - UpdateBlacklister(context.Context, *MsgUpdateBlacklister) (*MsgUpdateBlacklisterResponse, error) - UpdateOwner(context.Context, *MsgUpdateOwner) (*MsgUpdateOwnerResponse, error) - AcceptOwner(context.Context, *MsgAcceptOwner) (*MsgAcceptOwnerResponse, error) - ConfigureMinter(context.Context, *MsgConfigureMinter) (*MsgConfigureMinterResponse, error) - RemoveMinter(context.Context, *MsgRemoveMinter) (*MsgRemoveMinterResponse, error) - Mint(context.Context, *MsgMint) (*MsgMintResponse, error) - Burn(context.Context, *MsgBurn) (*MsgBurnResponse, error) - Blacklist(context.Context, *MsgBlacklist) (*MsgBlacklistResponse, error) - Unblacklist(context.Context, *MsgUnblacklist) (*MsgUnblacklistResponse, error) - Pause(context.Context, *MsgPause) (*MsgPauseResponse, error) - Unpause(context.Context, *MsgUnpause) (*MsgUnpauseResponse, error) - ConfigureMinterController(context.Context, *MsgConfigureMinterController) (*MsgConfigureMinterControllerResponse, error) - RemoveMinterController(context.Context, *MsgRemoveMinterController) (*MsgRemoveMinterControllerResponse, error) -} - -// UnimplementedMsgServer can be embedded to have forward compatible implementations. -type UnimplementedMsgServer struct { -} - -func (*UnimplementedMsgServer) UpdateMasterMinter(ctx context.Context, req *MsgUpdateMasterMinter) (*MsgUpdateMasterMinterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateMasterMinter not implemented") -} -func (*UnimplementedMsgServer) UpdatePauser(ctx context.Context, req *MsgUpdatePauser) (*MsgUpdatePauserResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdatePauser not implemented") -} -func (*UnimplementedMsgServer) UpdateBlacklister(ctx context.Context, req *MsgUpdateBlacklister) (*MsgUpdateBlacklisterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateBlacklister not implemented") -} -func (*UnimplementedMsgServer) UpdateOwner(ctx context.Context, req *MsgUpdateOwner) (*MsgUpdateOwnerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateOwner not implemented") -} -func (*UnimplementedMsgServer) AcceptOwner(ctx context.Context, req *MsgAcceptOwner) (*MsgAcceptOwnerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AcceptOwner not implemented") -} -func (*UnimplementedMsgServer) ConfigureMinter(ctx context.Context, req *MsgConfigureMinter) (*MsgConfigureMinterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ConfigureMinter not implemented") -} -func (*UnimplementedMsgServer) RemoveMinter(ctx context.Context, req *MsgRemoveMinter) (*MsgRemoveMinterResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveMinter not implemented") -} -func (*UnimplementedMsgServer) Mint(ctx context.Context, req *MsgMint) (*MsgMintResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Mint not implemented") -} -func (*UnimplementedMsgServer) Burn(ctx context.Context, req *MsgBurn) (*MsgBurnResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Burn not implemented") -} -func (*UnimplementedMsgServer) Blacklist(ctx context.Context, req *MsgBlacklist) (*MsgBlacklistResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Blacklist not implemented") -} -func (*UnimplementedMsgServer) Unblacklist(ctx context.Context, req *MsgUnblacklist) (*MsgUnblacklistResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unblacklist not implemented") -} -func (*UnimplementedMsgServer) Pause(ctx context.Context, req *MsgPause) (*MsgPauseResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Pause not implemented") -} -func (*UnimplementedMsgServer) Unpause(ctx context.Context, req *MsgUnpause) (*MsgUnpauseResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Unpause not implemented") -} -func (*UnimplementedMsgServer) ConfigureMinterController(ctx context.Context, req *MsgConfigureMinterController) (*MsgConfigureMinterControllerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method ConfigureMinterController not implemented") -} -func (*UnimplementedMsgServer) RemoveMinterController(ctx context.Context, req *MsgRemoveMinterController) (*MsgRemoveMinterControllerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveMinterController not implemented") -} - -func RegisterMsgServer(s grpc1.Server, srv MsgServer) { - s.RegisterService(&_Msg_serviceDesc, srv) -} - -func _Msg_UpdateMasterMinter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateMasterMinter) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateMasterMinter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/UpdateMasterMinter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateMasterMinter(ctx, req.(*MsgUpdateMasterMinter)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_UpdatePauser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdatePauser) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdatePauser(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/UpdatePauser", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdatePauser(ctx, req.(*MsgUpdatePauser)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_UpdateBlacklister_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateBlacklister) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateBlacklister(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/UpdateBlacklister", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateBlacklister(ctx, req.(*MsgUpdateBlacklister)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_UpdateOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateOwner) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).UpdateOwner(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/UpdateOwner", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).UpdateOwner(ctx, req.(*MsgUpdateOwner)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_AcceptOwner_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAcceptOwner) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).AcceptOwner(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/AcceptOwner", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).AcceptOwner(ctx, req.(*MsgAcceptOwner)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_ConfigureMinter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgConfigureMinter) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).ConfigureMinter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/ConfigureMinter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ConfigureMinter(ctx, req.(*MsgConfigureMinter)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RemoveMinter_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRemoveMinter) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).RemoveMinter(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/RemoveMinter", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RemoveMinter(ctx, req.(*MsgRemoveMinter)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Mint_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgMint) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Mint(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Mint", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Mint(ctx, req.(*MsgMint)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Burn_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgBurn) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Burn(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Burn", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Burn(ctx, req.(*MsgBurn)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Blacklist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgBlacklist) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Blacklist(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Blacklist", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Blacklist(ctx, req.(*MsgBlacklist)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Unblacklist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUnblacklist) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Unblacklist(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Unblacklist", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Unblacklist(ctx, req.(*MsgUnblacklist)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Pause_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgPause) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Pause(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Pause", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Pause(ctx, req.(*MsgPause)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_Unpause_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUnpause) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Unpause(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/Unpause", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Unpause(ctx, req.(*MsgUnpause)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_ConfigureMinterController_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgConfigureMinterController) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).ConfigureMinterController(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/ConfigureMinterController", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).ConfigureMinterController(ctx, req.(*MsgConfigureMinterController)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RemoveMinterController_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRemoveMinterController) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).RemoveMinterController(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/noble.tokenfactory.Msg/RemoveMinterController", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RemoveMinterController(ctx, req.(*MsgRemoveMinterController)) - } - return interceptor(ctx, in, info, handler) -} - -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "noble.tokenfactory.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "UpdateMasterMinter", - Handler: _Msg_UpdateMasterMinter_Handler, - }, - { - MethodName: "UpdatePauser", - Handler: _Msg_UpdatePauser_Handler, - }, - { - MethodName: "UpdateBlacklister", - Handler: _Msg_UpdateBlacklister_Handler, - }, - { - MethodName: "UpdateOwner", - Handler: _Msg_UpdateOwner_Handler, - }, - { - MethodName: "AcceptOwner", - Handler: _Msg_AcceptOwner_Handler, - }, - { - MethodName: "ConfigureMinter", - Handler: _Msg_ConfigureMinter_Handler, - }, - { - MethodName: "RemoveMinter", - Handler: _Msg_RemoveMinter_Handler, - }, - { - MethodName: "Mint", - Handler: _Msg_Mint_Handler, - }, - { - MethodName: "Burn", - Handler: _Msg_Burn_Handler, - }, - { - MethodName: "Blacklist", - Handler: _Msg_Blacklist_Handler, - }, - { - MethodName: "Unblacklist", - Handler: _Msg_Unblacklist_Handler, - }, - { - MethodName: "Pause", - Handler: _Msg_Pause_Handler, - }, - { - MethodName: "Unpause", - Handler: _Msg_Unpause_Handler, - }, - { - MethodName: "ConfigureMinterController", - Handler: _Msg_ConfigureMinterController_Handler, - }, - { - MethodName: "RemoveMinterController", - Handler: _Msg_RemoveMinterController_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "tokenfactory/tx.proto", -} - -func (m *MsgUpdateMasterMinter) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMasterMinter) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMasterMinter) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateMasterMinterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMasterMinterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMasterMinterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdatePauser) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdatePauser) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdatePauser) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdatePauserResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdatePauserResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdatePauserResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateBlacklister) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateBlacklister) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateBlacklister) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateBlacklisterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateBlacklisterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateBlacklisterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateOwner) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateOwner) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateOwner) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateOwnerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateOwnerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateOwnerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgAcceptOwner) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAcceptOwner) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAcceptOwner) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgAcceptOwnerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAcceptOwnerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAcceptOwnerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgConfigureMinter) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgConfigureMinter) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgConfigureMinter) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Allowance.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgConfigureMinterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgConfigureMinterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgConfigureMinterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMinter) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMinter) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMinter) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMinterResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMinterResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMinterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgMint) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgMint) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgMint) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgMintResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgMintResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgMintResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgBurn) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgBurn) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgBurn) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - { - size, err := m.Amount.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintTx(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgBurnResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgBurnResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgBurnResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgBlacklist) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgBlacklist) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgBlacklist) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgBlacklistResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgBlacklistResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgBlacklistResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUnblacklist) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUnblacklist) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUnblacklist) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUnblacklistResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUnblacklistResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUnblacklistResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgPause) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgPause) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgPause) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgPauseResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgPauseResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgPauseResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUnpause) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUnpause) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUnpause) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUnpauseResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUnpauseResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUnpauseResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgConfigureMinterController) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgConfigureMinterController) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgConfigureMinterController) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Minter) > 0 { - i -= len(m.Minter) - copy(dAtA[i:], m.Minter) - i = encodeVarintTx(dAtA, i, uint64(len(m.Minter))) - i-- - dAtA[i] = 0x1a - } - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgConfigureMinterControllerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgConfigureMinterControllerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgConfigureMinterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMinterController) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMinterController) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMinterController) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Controller) > 0 { - i -= len(m.Controller) - copy(dAtA[i:], m.Controller) - i = encodeVarintTx(dAtA, i, uint64(len(m.Controller))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMinterControllerResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMinterControllerResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMinterControllerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MsgUpdateMasterMinter) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUpdateMasterMinterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUpdatePauser) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUpdatePauserResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUpdateBlacklister) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUpdateBlacklisterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUpdateOwner) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUpdateOwnerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgAcceptOwner) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgAcceptOwnerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgConfigureMinter) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = m.Allowance.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgConfigureMinterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgRemoveMinter) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgRemoveMinterResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgMint) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgMintResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgBurn) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = m.Amount.Size() - n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgBurnResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgBlacklist) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgBlacklistResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUnblacklist) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUnblacklistResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgPause) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgPauseResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUnpause) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgUnpauseResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgConfigureMinterController) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Minter) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgConfigureMinterControllerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgRemoveMinterController) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Controller) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgRemoveMinterControllerResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MsgUpdateMasterMinter) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMasterMinter: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMasterMinter: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateMasterMinterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMasterMinterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMasterMinterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdatePauser) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdatePauser: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdatePauser: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdatePauserResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdatePauserResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdatePauserResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateBlacklister) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateBlacklister: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateBlacklister: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateBlacklisterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateBlacklisterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateBlacklisterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateOwner) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateOwner: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateOwner: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateOwnerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateOwnerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateOwnerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgAcceptOwner) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAcceptOwner: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAcceptOwner: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgAcceptOwnerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAcceptOwnerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAcceptOwnerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgConfigureMinter) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgConfigureMinter: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConfigureMinter: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Allowance", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Allowance.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgConfigureMinterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgConfigureMinterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConfigureMinterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMinter) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMinter: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMinter: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMinterResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMinterResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMinterResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgMint) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgMint: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgMint: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgMintResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgMintResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgMintResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgBurn) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgBurn: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBurn: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgBurnResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgBurnResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBurnResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgBlacklist) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgBlacklist: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBlacklist: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgBlacklistResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgBlacklistResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgBlacklistResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUnblacklist) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUnblacklist: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnblacklist: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUnblacklistResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUnblacklistResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnblacklistResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgPause) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgPause: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgPause: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgPauseResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgPauseResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgPauseResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUnpause) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUnpause: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnpause: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUnpauseResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUnpauseResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUnpauseResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgConfigureMinterController) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgConfigureMinterController: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConfigureMinterController: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Minter", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Minter = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgConfigureMinterControllerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgConfigureMinterControllerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgConfigureMinterControllerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMinterController) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMinterController: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMinterController: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Controller", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Controller = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMinterControllerResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMinterControllerResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMinterControllerResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTx(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthTx - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupTx - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthTx - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") -) From f2f4ba95717c2fb415518206a7b6376db582e5a3 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Wed, 16 Oct 2024 17:23:23 -0700 Subject: [PATCH 2/9] chore: update changelog (#411) --- .changelog/v8.0.0/summary.md | 2 +- CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.changelog/v8.0.0/summary.md b/.changelog/v8.0.0/summary.md index 4349cecb..6a7664c3 100644 --- a/.changelog/v8.0.0/summary.md +++ b/.changelog/v8.0.0/summary.md @@ -1,4 +1,4 @@ -*Oct 17, 2024* +*Oct 16, 2024* This is the Helium major release of Noble. It upgrades the Noble's core dependencies, namely CometBFT (f.k.a. Tendermint), Cosmos SDK, and IBC to their diff --git a/CHANGELOG.md b/CHANGELOG.md index 5b8e4b3d..8c1214ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ ## v8.0.0 -*Oct 17, 2024* +*Oct 16, 2024* This is the Helium major release of Noble. It upgrades the Noble's core dependencies, namely CometBFT (f.k.a. Tendermint), Cosmos SDK, and IBC to their From 8361d3f301588337d40a874a87de3fa4a9e3316e Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 01:28:09 -0700 Subject: [PATCH 3/9] feat: owner e2e tests for fiattokenfactory (#367) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 173 ++++++++++++++++++++++++++++++++++++++++++++ e2e/utils.go | 16 ++-- 2 files changed, 181 insertions(+), 8 deletions(-) create mode 100644 e2e/fiat_tf_test.go diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go new file mode 100644 index 00000000..e45aaa7a --- /dev/null +++ b/e2e/fiat_tf_test.go @@ -0,0 +1,173 @@ +package e2e_test + +import ( + "context" + "testing" + + "cosmossdk.io/math" + fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" + "github.com/noble-assets/noble/e2e" + "github.com/strangelove-ventures/interchaintest/v8" + "github.com/stretchr/testify/require" +) + +func TestFiatTFUpdateOwner(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Update owner while TF is paused + // EXPECTED: Success; Pending owner set + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + w := interchaintest.GetAndFundTestUsers(t, ctx, "new-owner-1", math.OneInt(), noble) + newOwner1 := w[0] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-owner", newOwner1.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Update owner from unprivileged account + // EXPECTED: Request fails; pending owner not set + + w = interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "update-owner", newOwner1.FormattedAddress()) + require.ErrorContains(t, err, "you are not the owner: unauthorized") + + // ACTION: Update Owner from blacklisted owner account + // EXPECTED: Success; pending owner set + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Owner) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-owner", newOwner1.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") + + // ACTION: Update Owner to a blacklisted account + // EXPECTED: Success; pending owner set + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, newOwner1) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-owner", newOwner1.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") +} + +func TestFiatTFAcceptOwner(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: accept owner + // EXPECTED: Success; pending owner accepted + + w := interchaintest.GetAndFundTestUsers(t, ctx, "new-owner-1", math.OneInt(), noble) + newOwner1 := w[0] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-owner", newOwner1.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") + + _, err = val.ExecTx(ctx, newOwner1.KeyName(), "fiat-tokenfactory", "accept-owner") + require.NoError(t, err, "failed to accept owner") + + showOwnerRes, err := e2e.ShowOwner(ctx, val) + require.NoError(t, err, "failed to query show-owner") + expectedOwnerResponse := fiattokenfactorytypes.QueryGetOwnerResponse{ + Owner: fiattokenfactorytypes.Owner{ + Address: newOwner1.FormattedAddress(), + }, + } + require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) + + // ACTION: Accept owner when no pending owner is set + // EXPECTED: Request fails; pending owner not set + // Status: + // Owner: newOwner1 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-owner-1", math.OneInt(), noble) + newOwner2 := w[0] + + _, err = val.ExecTx(ctx, newOwner2.KeyName(), "fiat-tokenfactory", "accept-owner") + require.ErrorContains(t, err, "pending owner is not set") + + showOwnerRes, err = e2e.ShowOwner(ctx, val) + require.NoError(t, err, "failed to query show-owner") + require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) + + // ACTION: Accept owner while TF is paused + // EXPECTED: Success; pending owner accepted + // Status: + // Owner: newOwner1 + + _, err = val.ExecTx(ctx, newOwner1.KeyName(), "fiat-tokenfactory", "update-owner", newOwner2.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err = val.ExecTx(ctx, newOwner2.KeyName(), "fiat-tokenfactory", "accept-owner") + require.NoError(t, err, "failed to accept owner") + + showOwnerRes, err = e2e.ShowOwner(ctx, val) + require.NoError(t, err, "failed to query show-owner") + expectedOwnerResponse = fiattokenfactorytypes.QueryGetOwnerResponse{ + Owner: fiattokenfactorytypes.Owner{ + Address: newOwner2.FormattedAddress(), + }, + } + require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Accept owner from non pending owner + // EXPECTED: Request fails; pending owner not accepted + // Status: + // Owner: newOwner2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + newOwner3 := w[0] + alice := w[1] + + _, err = val.ExecTx(ctx, newOwner2.KeyName(), "fiat-tokenfactory", "update-owner", newOwner3.FormattedAddress()) + require.NoError(t, err, "error broadcasting update owner message") + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "accept-owner") + require.ErrorContains(t, err, "you are not the pending owner: unauthorized") + + showOwnerRes, err = e2e.ShowOwner(ctx, val) + require.NoError(t, err, "failed to query show-owner") + require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) + + // ACTION: Accept owner from blacklisted pending owner + // EXPECTED: Success; pending owner accepted + // Status: + // Owner: newOwner2 + // Pending: newOwner3 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, newOwner3) + + _, err = val.ExecTx(ctx, newOwner3.KeyName(), "fiat-tokenfactory", "accept-owner") + require.NoError(t, err, "failed to accept owner") + + showOwnerRes, err = e2e.ShowOwner(ctx, val) + require.NoError(t, err, "failed to query show-owner") + expectedOwnerResponse = fiattokenfactorytypes.QueryGetOwnerResponse{ + Owner: fiattokenfactorytypes.Owner{ + Address: newOwner3.FormattedAddress(), + }, + } + require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) +} diff --git a/e2e/utils.go b/e2e/utils.go index c9edb9ec..f562aac7 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -476,9 +476,9 @@ func NobleSpinUpIBC(t *testing.T, ctx context.Context, setupAllCircleRoles bool) // Fiat Token Factory Helpers // //////////////////////////////// -// blacklistAccount blacklists an account and then runs the `show-blacklisted` query to ensure the +// BlacklistAccount blacklists an account and then runs the `show-blacklisted` query to ensure the // account was successfully blacklisted on chain -func blacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, toBlacklist ibc.Wallet) { +func BlacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, toBlacklist ibc.Wallet) { _, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "blacklist", toBlacklist.FormattedAddress()) require.NoError(t, err, "failed to broadcast blacklist message") @@ -508,9 +508,9 @@ func unblacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode require.Error(t, err, "query succeeded, blacklisted account should not exist") } -// pauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the +// PauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the // the tokenfactory was successfully paused -func pauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { +func PauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { _, err := val.ExecTx(ctx, pauser.KeyName(), "fiat-tokenfactory", "pause") require.NoError(t, err, "error pausing fiat-tokenfactory") @@ -529,9 +529,9 @@ func pauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pause require.Equal(t, expectedPaused, showPausedResponse) } -// unpauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the +// UnpauseFiatTF pauses the fiat tokenfactory. It then runs the `show-paused` query to ensure the // the tokenfactory was successfully unpaused -func unpauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { +func UnpauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pauser ibc.Wallet) { _, err := val.ExecTx(ctx, pauser.KeyName(), "fiat-tokenfactory", "unpause") require.NoError(t, err, "error pausing fiat-tokenfactory") @@ -629,8 +629,8 @@ func showMinters(ctx context.Context, val *cosmos.ChainNode, minter ibc.Wallet) return showMinters, nil } -// showOwner queries for the token factory Owner by running: `query fiat-tokenfactory show-owner`. -func showOwner(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetOwnerResponse, error) { +// ShowOwner queries for the token factory Owner by running: `query fiat-tokenfactory show-owner`. +func ShowOwner(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetOwnerResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-owner") if err != nil { return fiattokenfactorytypes.QueryGetOwnerResponse{}, err From 7c0fce07000dc4310441114de894e40c47b515e2 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 01:50:51 -0700 Subject: [PATCH 4/9] feat: minter e2e tests for fiattokenfactory (#368) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 602 ++++++++++++++++++++++++++++++++++++++++++++ e2e/utils.go | 30 +-- 2 files changed, 617 insertions(+), 15 deletions(-) diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go index e45aaa7a..b77d7c01 100644 --- a/e2e/fiat_tf_test.go +++ b/e2e/fiat_tf_test.go @@ -2,10 +2,13 @@ package e2e_test import ( "context" + "encoding/json" + "fmt" "testing" "cosmossdk.io/math" fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" + sdk "github.com/cosmos/cosmos-sdk/types" "github.com/noble-assets/noble/e2e" "github.com/strangelove-ventures/interchaintest/v8" "github.com/stretchr/testify/require" @@ -171,3 +174,602 @@ func TestFiatTFAcceptOwner(t *testing.T) { } require.Equal(t, expectedOwnerResponse.Owner, showOwnerRes.Owner) } + +func TestFiatTFUpdateMasterMinter(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy Path: Update Master Minter + // EXPECTED: Success; Master Minter updated + + w := interchaintest.GetAndFundTestUsers(t, ctx, "new-masterMinter-1", math.OneInt(), noble) + newMM1 := w[0] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM1.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-master-minter message") + + showMMRes, err := e2e.ShowMasterMinter(ctx, val) + require.NoError(t, err, "failed to query show-master-minter") + expectedGetMasterMinterResponse := fiattokenfactorytypes.QueryGetMasterMinterResponse{ + MasterMinter: fiattokenfactorytypes.MasterMinter{ + Address: newMM1.FormattedAddress(), + }, + } + require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, showMMRes.MasterMinter) + + // ACTION: Update Master Minter while TF is paused + // EXPECTED: Success; Master Minter updated + // Status: + // Master Minter: newMM1 + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-masterMinter-2", math.OneInt(), noble) + newMM2 := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM2.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-master-minter message") + + showMMRes, err = e2e.ShowMasterMinter(ctx, val) + require.NoError(t, err, "failed to query show-master-minter") + expectedGetMasterMinterResponse = fiattokenfactorytypes.QueryGetMasterMinterResponse{ + MasterMinter: fiattokenfactorytypes.MasterMinter{ + Address: newMM2.FormattedAddress(), + }, + } + require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, showMMRes.MasterMinter) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Update Master Minter from non owner account + // EXPECTED: Request fails; Master Minter not updated + // Status: + // Master Minter: newMM2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + newMM3 := w[0] + alice := w[1] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM3.FormattedAddress()) + require.ErrorContains(t, err, "you are not the owner: unauthorized") + + showMMRes, err = e2e.ShowMasterMinter(ctx, val) + require.NoError(t, err, "failed to query show-master-minter") + require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, showMMRes.MasterMinter) + + // ACTION: Update Master Minter from blacklisted owner account + // EXPECTED: Success; Master Minter updated + // Status: + // Master Minter: newMM2 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Owner) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM3.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-master-minter message") + + showMMRes, err = e2e.ShowMasterMinter(ctx, val) + require.NoError(t, err, "failed to query show-master-minter") + expectedGetMasterMinterResponse = fiattokenfactorytypes.QueryGetMasterMinterResponse{ + MasterMinter: fiattokenfactorytypes.MasterMinter{ + Address: newMM3.FormattedAddress(), + }, + } + + require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, showMMRes.MasterMinter) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Owner) + + // ACTION: Update Master Minter to blacklisted Master Minter account + // EXPECTED: Success; Master Minter updated + // Status: + // Master Minter: newMM3 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-mm-4", math.OneInt(), noble) + newMM4 := w[0] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, newMM4) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-master-minter", newMM4.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-master-minter message") + + showMMRes, err = e2e.ShowMasterMinter(ctx, val) + require.NoError(t, err, "failed to query show-master-minter") + expectedGetMasterMinterResponse = fiattokenfactorytypes.QueryGetMasterMinterResponse{ + MasterMinter: fiattokenfactorytypes.MasterMinter{ + Address: newMM4.FormattedAddress(), + }, + } + require.Equal(t, expectedGetMasterMinterResponse.MasterMinter, showMMRes.MasterMinter) +} + +func TestFiatTFConfigureMinterController(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Configure Minter Controller + // EXPECTED: Success; Minter Controller is configured with Minter + + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + minterController1 := w[0] + minter1 := w[1] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController1.FormattedAddress(), minter1.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err := e2e.ShowMinterController(ctx, val, minterController1) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController := fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter1.FormattedAddress(), + Controller: minterController1.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + // ACTION: Configure Minter Controller while TF is paused + // EXPECTED: Success; Minter Controller is configured with Minter + // Status: + // minterController1 -> minter1 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + minterController2 := w[0] + minter2 := w[1] + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController2.FormattedAddress(), minter2.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err = e2e.ShowMinterController(ctx, val, minterController2) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController = fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter2.FormattedAddress(), + Controller: minterController2.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Configure Minter Controller from non Master Minter account + // EXPECTED: Request fails; Minter Controller not configured with Minter + // Status: + // minterController1 -> minter1 + // minterController2 -> minter2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble, noble) + minterController3 := w[0] + minter3 := w[1] + alice := w[2] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController3.FormattedAddress(), minter3.FormattedAddress()) + require.ErrorContains(t, err, "you are not the master minter: unauthorized") + + _, err = e2e.ShowMinterController(ctx, val, minterController3) + require.Error(t, err, "successfully queried for the minter controller when it should have failed") + + // ACTION: Configure a blacklisted Minter Controller and Minter from blacklisted Master Minter account + // EXPECTED: Success; Minter Controller is configured with Minter + // Status: + // minterController1 -> minter1 + // minterController2 -> minter2 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MasterMinter) + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, minterController2) + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, minter2) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController3.FormattedAddress(), minter3.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err = e2e.ShowMinterController(ctx, val, minterController3) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController = fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter3.FormattedAddress(), + Controller: minterController3.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MasterMinter) + + // ACTION: Configure an already configured Minter Controller with a new Minter + // EXPECTED: Success; Minter Controller is configured with Minter. The old minter should be disassociated + // from Minter Controller but keep its status and allowance + // Status: + // minterController1 -> minter1 + // minterController2 -> minter2 + // minterController3 -> minter3 + + // configuring minter1 to ensure allowance stays the same after assigning minterController1 a new minter + _, err = val.ExecTx(ctx, minterController1.KeyName(), "fiat-tokenfactory", "configure-minter", minter1.FormattedAddress(), "1uusdc") + require.NoError(t, err, "error configuring minter controller") + + showMinterPreUpdateMinterController, err := e2e.ShowMinters(ctx, val, minter1) + require.NoError(t, err, "failed to query show-minter") + expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ + Minters: fiattokenfactorytypes.Minters{ + Address: minter1.FormattedAddress(), + Allowance: sdk.Coin{ + Denom: "uusdc", + Amount: math.OneInt(), + }, + }, + } + require.Equal(t, expectedShowMinters.Minters, showMinterPreUpdateMinterController.Minters, "configured minter and or allowance is not as expected") + + w = interchaintest.GetAndFundTestUsers(t, ctx, "minter-4", math.OneInt(), noble) + minter4 := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController1.FormattedAddress(), minter4.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err = e2e.ShowMinterController(ctx, val, minterController1) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController = fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter4.FormattedAddress(), + Controller: minterController1.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController, "expected minter and minter controller is not as expected") + + showMinterPostUpdateMinterController, err := e2e.ShowMinters(ctx, val, minter1) + require.NoError(t, err, "failed to query show-minter") + require.Equal(t, showMinterPreUpdateMinterController.Minters, showMinterPostUpdateMinterController.Minters, "the minter should not have changed since updating the minter controller with a new minter") + + // ACTION:- Configure an already configured Minter to another Minter Controller + // EXPECTED: Success; Minter Controller is configured with new Minter. Minter can have multiple Minter Controllers. + // Status: + // minterController1 -> minter4 + // minterController2 -> minter2 + // minterController3 -> minter3 + // + // minter1 has a minting allowance but is not controlled by any minterController + + w = interchaintest.GetAndFundTestUsers(t, ctx, "minter-controller-4", math.OneInt(), noble) + minterController4 := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController4.FormattedAddress(), minter4.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err = e2e.ShowMinterController(ctx, val, minterController4) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController = fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter4.FormattedAddress(), + Controller: minterController4.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + showMCRes, err = e2e.ShowMinterController(ctx, val, minterController1) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController = fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter4.FormattedAddress(), + Controller: minterController1.FormattedAddress(), + }, + } + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "list-minter-controller") + require.NoError(t, err, "failed to query list-minter-controller") + var listMinterController fiattokenfactorytypes.QueryAllMinterControllerResponse + _ = json.Unmarshal(res, &listMinterController) + // ignore error because `pagination` does not unmarshal + + expectedListMinterController := fiattokenfactorytypes.QueryAllMinterControllerResponse{ + MinterController: []fiattokenfactorytypes.MinterController{ + { // this minter and controller were created/assigned at genesis + Minter: nw.FiatTfRoles.Minter.FormattedAddress(), + Controller: nw.FiatTfRoles.MinterController.FormattedAddress(), + }, + { + Minter: minter4.FormattedAddress(), + Controller: minterController1.FormattedAddress(), + }, + { + Minter: minter2.FormattedAddress(), + Controller: minterController2.FormattedAddress(), + }, + { + Minter: minter3.FormattedAddress(), + Controller: minterController3.FormattedAddress(), + }, + { + Minter: minter4.FormattedAddress(), + Controller: minterController4.FormattedAddress(), + }, + }, + } + + require.ElementsMatch(t, expectedListMinterController.MinterController, listMinterController.MinterController) +} + +func TestFiatTFRemoveMinterController(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Remove Minter Controller + // EXPECTED: Success; Minter Controller is removed + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "remove-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress()) + require.NoError(t, err, "error removing minter controller") + + _, err = e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.Error(t, err, "successfully queried for the minter controller when it should have failed") + + // ACTION: Remove Minter Controller while TF is paused + // EXPECTED: Success; Minter Controller is removed + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), nw.FiatTfRoles.Minter.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err := e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController := fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: nw.FiatTfRoles.Minter.FormattedAddress(), + Controller: nw.FiatTfRoles.MinterController.FormattedAddress(), + }, + } + + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "remove-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress()) + require.NoError(t, err, "error removing minter controller") + + _, err = e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.Error(t, err, "successfully queried for the minter controller when it should have failed") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Remove a Minter Controller from non Master Minter account + // EXPECTED: Request fails; Minter Controller remains configured with Minter + + w := interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress(), nw.FiatTfRoles.Minter.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err = e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.NoError(t, err, "failed to query show-minter-controller") + + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "remove-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress()) + require.ErrorContains(t, err, "you are not the master minter: unauthorized") + + showMCRes, err = e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.NoError(t, err, "failed to query show-minter-controller") + + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + // ACTION: Remove Minter Controller while MasterMinter and Minter Controller are blacklisted + // EXPECTED: Success; Minter Controller is removed + // Status: + // gw minterController -> gw minter + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MasterMinter) + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MinterController) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "remove-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress()) + require.NoError(t, err, "error removing minter controller") + + _, err = e2e.ShowMinterController(ctx, val, nw.FiatTfRoles.MinterController) + require.Error(t, err, "successfully queried for the minter controller when it should have failed") + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MasterMinter) + + // ACTION: Remove a a non existent Minter Controller + // EXPECTED: Request fails + // Status: + // no minterController setup + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "remove-minter-controller", nw.FiatTfRoles.MinterController.FormattedAddress()) + require.ErrorContains(t, err, fmt.Sprintf("minter controller with a given address (%s) doesn't exist: user not found", nw.FiatTfRoles.MinterController.FormattedAddress())) + +} + +func TestFiatTFConfigureMinter(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Configure minter + // EXPECTED: Success; Minter is configured with allowance + + e2e.ConfigureMinter(t, ctx, val, nw.FiatTfRoles.MinterController, nw.FiatTfRoles.Minter, 20) + + // ACTION: Configure minter while TF is paused + // EXPECTED: Request fails; Minter is not configured + + // configure new minter controller and minter + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + minterController1 := w[0] + minter1 := w[1] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.MasterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController1.FormattedAddress(), minter1.FormattedAddress()) + require.NoError(t, err, "error configuring minter controller") + + showMCRes, err := e2e.ShowMinterController(ctx, val, minterController1) + require.NoError(t, err, "failed to query show-minter-controller") + expectedShowMinterController := fiattokenfactorytypes.QueryGetMinterControllerResponse{ + MinterController: fiattokenfactorytypes.MinterController{ + Minter: minter1.FormattedAddress(), + Controller: minterController1.FormattedAddress(), + }, + } + + require.Equal(t, expectedShowMinterController.MinterController, showMCRes.MinterController) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + allowance := int64(10) + + _, err = val.ExecTx(ctx, minterController1.KeyName(), "fiat-tokenfactory", "configure-minter", minter1.FormattedAddress(), fmt.Sprintf("%duusdc", allowance)) + require.ErrorContains(t, err, "minting is paused") + + _, err = e2e.ShowMinters(ctx, val, minter1) + require.Error(t, err, "minter found; configuring minter should not have succeeded") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Configure minter from a minter controller not associated with the minter + // EXPECTED: Request fails; Minter is not configured with new Minter Controller but old Minter retains its allowance + // Status: + // minterController1 -> minter1 (un-configured) + // gw minterController -> gw minter + + // reconfigure minter1 to ensure balance does not change + e2e.ConfigureMinter(t, ctx, val, minterController1, minter1, allowance) + + // reconfigure minter1 with a new allownace from a minter controller not associated with the minter + differentAllowance := allowance + 99 + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), "fiat-tokenfactory", "configure-minter", minter1.FormattedAddress(), fmt.Sprintf("%duusdc", differentAllowance)) + require.ErrorContains(t, err, "minter address ≠ minter controller's minter address") + + showMintersRes, err := e2e.ShowMinters(ctx, val, minter1) + require.NoError(t, err, "failed to query show-minters") + expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ + Minters: fiattokenfactorytypes.Minters{ + Address: minter1.FormattedAddress(), + Allowance: sdk.Coin{ + Denom: "uusdc", + Amount: math.NewInt(allowance), + }, + }, + } + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters, "configured minter allowance is not as expected") + + // ACTION: Configure a minter is blacklisted from a blacklisted minter controller + // EXPECTED: Success; Minter is configured with allowance + // Status: + // minterController1 -> minter1 + // gw minterController -> gw minter + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, minterController1) + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, minter1) + + e2e.ConfigureMinter(t, ctx, val, minterController1, minter1, 11) +} + +func TestFiatTFRemoveMinter(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Remove minter + // EXPECTED: Success; Minter is removed + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), "fiat-tokenfactory", "remove-minter", nw.FiatTfRoles.Minter.FormattedAddress()) + require.NoError(t, err, "error broadcasting removing minter") + + _, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.Error(t, err, "minter found; not successfully removed") + + // ACTION: Remove minter while TF is paused + // EXPECTED: Success; Minter is removed + + allowance := int64(10) + + // reconfigure minter + e2e.ConfigureMinter(t, ctx, val, nw.FiatTfRoles.MinterController, nw.FiatTfRoles.Minter, allowance) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), "fiat-tokenfactory", "remove-minter", nw.FiatTfRoles.Minter.FormattedAddress()) + require.NoError(t, err, "error broadcasting removing minter") + + _, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.Error(t, err, "minter found; not successfully removed") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Remove minter from a minter controller not associated with the minter + // EXPECTED: Request fails; Minter is not removed + // Status: + // gw minterController -> gw minter (Removed) + + // reconfigure minter + e2e.ConfigureMinter(t, ctx, val, nw.FiatTfRoles.MinterController, nw.FiatTfRoles.Minter, allowance) + + minter1, _ := e2e.SetupMinterAndController(t, ctx, noble, val, nw.FiatTfRoles.MasterMinter, allowance) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), "fiat-tokenfactory", "remove-minter", minter1.FormattedAddress()) + require.ErrorContains(t, err, "minter address ≠ minter controller's minter address") + + // ensure minter still exists + showMintersRes, err := e2e.ShowMinters(ctx, val, minter1) + require.NoError(t, err, "failed to query show-minter") + expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ + Minters: fiattokenfactorytypes.Minters{ + Address: minter1.FormattedAddress(), + Allowance: sdk.Coin{ + Denom: "uusdc", + Amount: math.NewInt(allowance), + }, + }, + } + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters) + + // ACTION: Remove blacklisted minter from a blacklisted minter controller + // EXPECTED: Success; Minter is removed + // Status: + // gw minterController -> gw minter + // minterController1 -> minter1 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.MinterController) + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Minter) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.MinterController.KeyName(), "fiat-tokenfactory", "remove-minter", nw.FiatTfRoles.Minter.FormattedAddress()) + require.NoError(t, err, "error broadcasting removing minter") + + _, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.Error(t, err, "minter found; not successfully removed") +} diff --git a/e2e/utils.go b/e2e/utils.go index f562aac7..910b6522 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -498,9 +498,9 @@ func BlacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, require.Equal(t, expectedBlacklistResponse.Blacklisted, showBlacklistedResponse.Blacklisted) } -// unblacklistAccount unblacklists an account and then runs the `show-blacklisted` query to ensure the +// UnblacklistAccount unblacklists an account and then runs the `show-blacklisted` query to ensure the // account was successfully unblacklisted on chain -func unblacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, unBlacklist ibc.Wallet) { +func UnblacklistAccount(t *testing.T, ctx context.Context, val *cosmos.ChainNode, blacklister ibc.Wallet, unBlacklist ibc.Wallet) { _, err := val.ExecTx(ctx, blacklister.KeyName(), "fiat-tokenfactory", "unblacklist", unBlacklist.FormattedAddress()) require.NoError(t, err, "failed to broadcast blacklist message") @@ -550,8 +550,8 @@ func UnpauseFiatTF(t *testing.T, ctx context.Context, val *cosmos.ChainNode, pau require.Equal(t, expectedUnpaused, showPausedResponse) } -// setupMinterAndController creates a minter controller and minter. It also sets up a minter with an specified allowance of `uusdc` -func setupMinterAndController(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, val *cosmos.ChainNode, masterMinter ibc.Wallet, allowance int64) (minter ibc.Wallet, minterController ibc.Wallet) { +// SetupMinterAndController creates a minter controller and minter. It also sets up a minter with an specified allowance of `uusdc` +func SetupMinterAndController(t *testing.T, ctx context.Context, noble *cosmos.CosmosChain, val *cosmos.ChainNode, masterMinter ibc.Wallet, allowance int64) (minter ibc.Wallet, minterController ibc.Wallet) { w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) minterController = w[0] minter = w[1] @@ -559,7 +559,7 @@ func setupMinterAndController(t *testing.T, ctx context.Context, noble *cosmos.C _, err := val.ExecTx(ctx, masterMinter.KeyName(), "fiat-tokenfactory", "configure-minter-controller", minterController.FormattedAddress(), minter.FormattedAddress()) require.NoError(t, err, "error configuring minter controller") - showMC, err := showMinterController(ctx, val, minterController) + showMC, err := ShowMinterController(ctx, val, minterController) require.NoError(t, err, "failed to query show-minter-controller") expectedShowMinterController := fiattokenfactorytypes.QueryGetMinterControllerResponse{ MinterController: fiattokenfactorytypes.MinterController{ @@ -569,18 +569,18 @@ func setupMinterAndController(t *testing.T, ctx context.Context, noble *cosmos.C } require.Equal(t, expectedShowMinterController.MinterController, showMC.MinterController) - configureMinter(t, ctx, val, minterController, minter, allowance) + ConfigureMinter(t, ctx, val, minterController, minter, allowance) return minter, minterController } -// configureMinter configures a minter with a specified allowance of `uusdc`. It then runs the `show-minters` query to ensure +// ConfigureMinter configures a minter with a specified allowance of `uusdc`. It then runs the `show-minters` query to ensure // the minter was properly configured -func configureMinter(t *testing.T, ctx context.Context, val *cosmos.ChainNode, minterController, minter ibc.Wallet, allowance int64) { +func ConfigureMinter(t *testing.T, ctx context.Context, val *cosmos.ChainNode, minterController, minter ibc.Wallet, allowance int64) { _, err := val.ExecTx(ctx, minterController.KeyName(), "fiat-tokenfactory", "configure-minter", minter.FormattedAddress(), fmt.Sprintf("%duusdc", allowance)) require.NoError(t, err, "error configuring minter") - showMinter, err := showMinters(ctx, val, minter) + showMinter, err := ShowMinters(ctx, val, minter) require.NoError(t, err, "failed to query show-minter") expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ Minters: fiattokenfactorytypes.Minters{ @@ -595,9 +595,9 @@ func configureMinter(t *testing.T, ctx context.Context, val *cosmos.ChainNode, m require.Equal(t, expectedShowMinters.Minters, showMinter.Minters) } -// showMinterController queries for a specific minter controller by running: `query fiat-tokenfactory show-minter-controller
`. +// ShowMinterController queries for a specific minter controller by running: `query fiat-tokenfactory show-minter-controller
`. // An error is returned if the minter controller does not exist -func showMinterController(ctx context.Context, val *cosmos.ChainNode, minterController ibc.Wallet) (fiattokenfactorytypes.QueryGetMinterControllerResponse, error) { +func ShowMinterController(ctx context.Context, val *cosmos.ChainNode, minterController ibc.Wallet) (fiattokenfactorytypes.QueryGetMinterControllerResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-minter-controller", minterController.FormattedAddress()) if err != nil { return fiattokenfactorytypes.QueryGetMinterControllerResponse{}, err @@ -612,9 +612,9 @@ func showMinterController(ctx context.Context, val *cosmos.ChainNode, minterCont return showMinterController, nil } -// showMinters queries for a specific minter by running: `query fiat-tokenfactory show-minters
`. +// ShowMinters queries for a specific minter by running: `query fiat-tokenfactory show-minters
`. // An error is returned if the minter does not exist -func showMinters(ctx context.Context, val *cosmos.ChainNode, minter ibc.Wallet) (fiattokenfactorytypes.QueryGetMintersResponse, error) { +func ShowMinters(ctx context.Context, val *cosmos.ChainNode, minter ibc.Wallet) (fiattokenfactorytypes.QueryGetMintersResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-minters", minter.FormattedAddress()) if err != nil { return fiattokenfactorytypes.QueryGetMintersResponse{}, err @@ -645,8 +645,8 @@ func ShowOwner(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytype return showOwnerResponse, nil } -// showMasterMinter queries for the token factory Master Minter by running: `query fiat-tokenfactory show-master-minter`. -func showMasterMinter(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetMasterMinterResponse, error) { +// ShowMasterMinter queries for the token factory Master Minter by running: `query fiat-tokenfactory show-master-minter`. +func ShowMasterMinter(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetMasterMinterResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-master-minter") if err != nil { return fiattokenfactorytypes.QueryGetMasterMinterResponse{}, err From 1f89643de59a31548998bb7444b2b1b93c8637a2 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 02:10:27 -0700 Subject: [PATCH 5/9] feat: pause e2e tests for fiattokenfactory (#369) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 230 ++++++++++++++++++++++++++++++++++++++++++++ e2e/utils.go | 8 +- 2 files changed, 234 insertions(+), 4 deletions(-) diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go index b77d7c01..c7533f1f 100644 --- a/e2e/fiat_tf_test.go +++ b/e2e/fiat_tf_test.go @@ -773,3 +773,233 @@ func TestFiatTFRemoveMinter(t *testing.T) { _, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) require.Error(t, err, "minter found; not successfully removed") } + +func TestFiatTFUpdatePauser(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Update Pauser + // EXPECTED: Success; pauser updated + + w := interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-1", math.OneInt(), noble) + newPauser1 := w[0] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser1.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-pauser message") + + showPauserRes, err := e2e.ShowPauser(ctx, val) + require.NoError(t, err, "failed to query show-pauser") + expectedGetPauserResponse := fiattokenfactorytypes.QueryGetPauserResponse{ + Pauser: fiattokenfactorytypes.Pauser{ + Address: newPauser1.FormattedAddress(), + }, + } + require.Equal(t, expectedGetPauserResponse.Pauser, showPauserRes.Pauser) + + // ACTION: Update Pauser while TF is paused + // EXPECTED: Success; pauser updated + // Status: + // Pauser: newPauser1 + + e2e.PauseFiatTF(t, ctx, val, newPauser1) + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-2", math.OneInt(), noble) + newPauser2 := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser2.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-pauser message") + + showPauserRes, err = e2e.ShowPauser(ctx, val) + require.NoError(t, err, "failed to query show-pauser") + expectedGetPauserResponse = fiattokenfactorytypes.QueryGetPauserResponse{ + Pauser: fiattokenfactorytypes.Pauser{ + Address: newPauser2.FormattedAddress(), + }, + } + require.Equal(t, expectedGetPauserResponse.Pauser, showPauserRes.Pauser) + + e2e.UnpauseFiatTF(t, ctx, val, newPauser2) + + // ACTION: Update Pauser from non owner account + // EXPECTED: Request fails; pauser not updated + // Status: + // Pauser: newPauser2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + newPauser3 := w[0] + alice := w[1] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser3.FormattedAddress()) + require.ErrorContains(t, err, "you are not the owner: unauthorized") + + showPauserRes, err = e2e.ShowPauser(ctx, val) + require.NoError(t, err, "failed to query show-pauser") + require.Equal(t, expectedGetPauserResponse.Pauser, showPauserRes.Pauser) + + // ACTION: Update Pauser from blacklisted owner account + // EXPECTED: Success; pauser updated + // Status: + // Pauser: newPauser2 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Owner) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser3.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-pauser message") + + showPauserRes, err = e2e.ShowPauser(ctx, val) + require.NoError(t, err, "failed to query show-pauser") + expectedGetPauserResponse = fiattokenfactorytypes.QueryGetPauserResponse{ + Pauser: fiattokenfactorytypes.Pauser{ + Address: newPauser3.FormattedAddress(), + }, + } + require.Equal(t, expectedGetPauserResponse.Pauser, showPauserRes.Pauser) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Owner) + + // ACTION: Update Pauser to blacklisted Pauser account + // EXPECTED: Success; pauser updated + // Status: + // Pauser: newPauser3 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-pauser-4", math.OneInt(), noble) + newPauser4 := w[0] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, newPauser4) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-pauser", newPauser4.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-pauser message") + + showPauserRes, err = e2e.ShowPauser(ctx, val) + require.NoError(t, err, "failed to query show-pauser") + expectedGetPauserResponse = fiattokenfactorytypes.QueryGetPauserResponse{ + Pauser: fiattokenfactorytypes.Pauser{ + Address: newPauser4.FormattedAddress(), + }, + } + require.Equal(t, expectedGetPauserResponse.Pauser, showPauserRes.Pauser) +} + +func TestFiatTFPause(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Pause TF + // EXPECTED: Success; TF is paused + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Pause TF from an account that is not the Pauser + // EXPECTED: Request fails; TF not paused + // Status: + // Paused: true + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + w := interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + _, err := val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "pause") + require.ErrorContains(t, err, "you are not the pauser: unauthorized") + + showPausedRes, err := e2e.ShowPaused(ctx, val) + require.NoError(t, err, "error querying for paused state") + expectedPaused := fiattokenfactorytypes.QueryGetPausedResponse{ + Paused: fiattokenfactorytypes.Paused{ + Paused: false, + }, + } + require.Equal(t, expectedPaused, showPausedRes) + + // ACTION: Pause TF from a blacklisted Pauser account + // EXPECTED: Success; TF is paused + // Status: + // Paused: false + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Pauser) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Pauser) + + // ACTION: Pause TF while TF is already paused + // EXPECTED: Success; TF remains paused + // Status: + // Paused: true + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) +} + +func TestFiatTFUnpause(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Unpause TF + // EXPECTED: Success; TF is unpaused + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Unpause TF from an account that is not a Pauser + // EXPECTED: Request fails; TF remains paused + + w := interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err := val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "unpause") + require.ErrorContains(t, err, "you are not the pauser: unauthorized") + + showPausedRes, err := e2e.ShowPaused(ctx, val) + require.NoError(t, err, "error querying for paused state") + expectedPaused := fiattokenfactorytypes.QueryGetPausedResponse{ + Paused: fiattokenfactorytypes.Paused{ + Paused: true, + }, + } + require.Equal(t, expectedPaused, showPausedRes) + + // ACTION: Unpause TF from a blacklisted Pauser account + // EXPECTED: Success; TF is unpaused + // Status: + // Paused: true + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Pauser) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Pauser) + + // ACTION: Unpause TF while TF is already unpaused + // EXPECTED: Success; TF remains unpaused + // Status: + // Paused: false + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) +} diff --git a/e2e/utils.go b/e2e/utils.go index 910b6522..415cca85 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -661,8 +661,8 @@ func ShowMasterMinter(ctx context.Context, val *cosmos.ChainNode) (fiattokenfact return showMMResponse, nil } -// showPauser queries for the token factory Pauser by running: `query fiat-tokenfactory show-pauser`. -func showPauser(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPauserResponse, error) { +// ShowPauser queries for the token factory Pauser by running: `query fiat-tokenfactory show-pauser`. +func ShowPauser(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPauserResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-pauser") if err != nil { return fiattokenfactorytypes.QueryGetPauserResponse{}, err @@ -710,8 +710,8 @@ func showBlacklisted(ctx context.Context, val *cosmos.ChainNode, blacklistedWall return showBlacklistedRes, nil } -// showPaused queries the paused state of the token factory by running: `query fiat-tokenfactory show-paused`. -func showPaused(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPausedResponse, error) { +// ShowPaused queries the paused state of the token factory by running: `query fiat-tokenfactory show-paused`. +func ShowPaused(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetPausedResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-paused") if err != nil { return fiattokenfactorytypes.QueryGetPausedResponse{}, err From 8664bcfbb37b763eef17b223fa8beb7dee6028e6 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 02:24:32 -0700 Subject: [PATCH 6/9] feat: blacklist e2e tests for fiattokenfactory (#370) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 285 ++++++++++++++++++++++++++++++++++++++++++++ e2e/utils.go | 8 +- 2 files changed, 289 insertions(+), 4 deletions(-) diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go index c7533f1f..81f4f91c 100644 --- a/e2e/fiat_tf_test.go +++ b/e2e/fiat_tf_test.go @@ -1003,3 +1003,288 @@ func TestFiatTFUnpause(t *testing.T) { e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) } + +func TestFiatTFUpdateBlacklister(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Update Blacklister + // EXPECTED: Success; blacklister updated + + w := interchaintest.GetAndFundTestUsers(t, ctx, "new-blacklister-1", math.OneInt(), noble) + newBlacklister1 := w[0] + + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-blacklister", newBlacklister1.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-blacklister message") + + showBlacklisterRes, err := e2e.ShowBlacklister(ctx, val) + require.NoError(t, err, "failed to query show-blacklister") + expectedGetBlacklisterResponse := fiattokenfactorytypes.QueryGetBlacklisterResponse{ + Blacklister: fiattokenfactorytypes.Blacklister{ + Address: newBlacklister1.FormattedAddress(), + }, + } + require.Equal(t, expectedGetBlacklisterResponse.Blacklister, showBlacklisterRes.Blacklister) + + // ACTION: Update Blacklister while TF is paused + // EXPECTED: Success; blacklister updated + // Status: + // Blacklister: newBlacklister1 + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-blacklister-2", math.OneInt(), noble) + newBlacklister2 := w[0] + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-blacklister", newBlacklister2.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-blacklister message") + + showBlacklisterRes, err = e2e.ShowBlacklister(ctx, val) + require.NoError(t, err, "failed to query show-blacklister") + expectedGetBlacklisterResponse = fiattokenfactorytypes.QueryGetBlacklisterResponse{ + Blacklister: fiattokenfactorytypes.Blacklister{ + Address: newBlacklister2.FormattedAddress(), + }, + } + require.Equal(t, expectedGetBlacklisterResponse.Blacklister, showBlacklisterRes.Blacklister) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Update Blacklister from non owner account + // EXPECTED: Request fails; blacklister not updated + // Status: + // Blacklister: newBlacklister2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + newBlacklister3 := w[0] + alice := w[1] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "update-blacklister", newBlacklister3.FormattedAddress()) + require.ErrorContains(t, err, "you are not the owner: unauthorized") + + showBlacklisterRes, err = e2e.ShowBlacklister(ctx, val) + require.NoError(t, err, "failed to query show-blacklister") + require.Equal(t, expectedGetBlacklisterResponse.Blacklister, showBlacklisterRes.Blacklister) + + // ACTION: Update Blacklister from blacklisted owner account + // EXPECTED: Success; blacklister updated + // Status: + // Blacklister: newBlacklister2 + + e2e.BlacklistAccount(t, ctx, val, newBlacklister2, nw.FiatTfRoles.Owner) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-blacklister", newBlacklister3.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-blacklister message") + + showBlacklisterRes, err = e2e.ShowBlacklister(ctx, val) + require.NoError(t, err, "failed to query show-blacklister") + expectedGetBlacklisterResponse = fiattokenfactorytypes.QueryGetBlacklisterResponse{ + Blacklister: fiattokenfactorytypes.Blacklister{ + Address: newBlacklister3.FormattedAddress(), + }, + } + require.Equal(t, expectedGetBlacklisterResponse.Blacklister, showBlacklisterRes.Blacklister) + + e2e.UnblacklistAccount(t, ctx, val, newBlacklister3, nw.FiatTfRoles.Owner) + + // ACTION: Update Blacklister to blacklisted Blacklister account + // EXPECTED: Success; blacklister updated + // Status: + // Blacklister: newBlacklister3 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "new-blacklister-4", math.OneInt(), noble) + newBlacklister4 := w[0] + + e2e.BlacklistAccount(t, ctx, val, newBlacklister3, newBlacklister4) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Owner.KeyName(), "fiat-tokenfactory", "update-blacklister", newBlacklister4.FormattedAddress()) + require.NoError(t, err, "failed to broadcast update-blacklister message") + + showBlacklisterRes, err = e2e.ShowBlacklister(ctx, val) + require.NoError(t, err, "failed to query show-blacklister") + expectedGetBlacklisterResponse = fiattokenfactorytypes.QueryGetBlacklisterResponse{ + Blacklister: fiattokenfactorytypes.Blacklister{ + Address: newBlacklister4.FormattedAddress(), + }, + } + require.Equal(t, expectedGetBlacklisterResponse.Blacklister, showBlacklisterRes.Blacklister) +} + +func TestFiatTFBlacklist(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Blacklist user + // EXPECTED: Success; user blacklisted + + w := interchaintest.GetAndFundTestUsers(t, ctx, "to-blacklist-1", math.OneInt(), noble) + toBlacklist1 := w[0] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, toBlacklist1) + + // ACTION: Blacklist user while TF is paused + // EXPECTED: Success; user blacklisted + // Status: + // blacklisted: toBlacklist1 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "to-blacklist-2", math.OneInt(), noble) + toBlacklist2 := w[0] + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, toBlacklist2) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Blacklist user from non Blacklister account + // EXPECTED: Request failed; user not blacklisted + // Status: + // blacklisted: toBlacklist1, toBlacklist2 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + toBlacklist3 := w[0] + alice := w[1] + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "list-blacklisted") + require.NoError(t, err, "failed to query list-blacklisted") + + var preFailedBlacklist, postFailedBlacklist fiattokenfactorytypes.QueryAllBlacklistedResponse + _ = json.Unmarshal(res, &preFailedBlacklist) + // ignore the error since `pagination` does not unmarshal) + require.NotContains(t, preFailedBlacklist.Blacklisted, toBlacklist3.Address()) + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "blacklist", toBlacklist3.FormattedAddress()) + require.ErrorContains(t, err, "you are not the blacklister: unauthorized") + + res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "list-blacklisted") + require.NoError(t, err, "failed to query list-blacklisted") + _ = json.Unmarshal(res, &postFailedBlacklist) + // ignore the error since `pagination` does not unmarshal) + require.ElementsMatch(t, preFailedBlacklist.Blacklisted, postFailedBlacklist.Blacklisted) + + // Blacklist an account while the blacklister is blacklisted + // EXPECTED: Success; user blacklisted + // Status: + // blacklisted: toBlacklist1, toBlacklist2 + // not blacklisted: toBlacklist3 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Blacklister) + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, toBlacklist3) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Blacklister) + + // Blacklist an already blacklisted account + // EXPECTED: Request fails; user remains blacklisted + // Status: + // blacklisted: toBlacklist1, toBlacklist2, toBlacklist3 + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Blacklister.KeyName(), "fiat-tokenfactory", "blacklist", toBlacklist1.FormattedAddress()) + require.ErrorContains(t, err, "user is already blacklisted") + + showBlacklistedRes, err := e2e.ShowBlacklisted(ctx, val, toBlacklist1) + require.NoError(t, err, "failed to query show-blacklisted") + expectedBlacklistResponse := fiattokenfactorytypes.QueryGetBlacklistedResponse{ + Blacklisted: fiattokenfactorytypes.Blacklisted{ + AddressBz: toBlacklist1.Address(), + }, + } + require.Equal(t, expectedBlacklistResponse.Blacklisted, showBlacklistedRes.Blacklisted) +} + +func TestFiatTFUnblacklist(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Happy path: Unblacklist user + // EXPECTED: Success; user unblacklisted + + w := interchaintest.GetAndFundTestUsers(t, ctx, "blacklist-user-1", math.OneInt(), noble) + blacklistedUser1 := w[0] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + // ACTION: Unblacklist user while TF is paused + // EXPECTED: Success; user unblacklisted + // Status: + // not blacklisted: blacklistedUser1 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + // ACTION: Unblacklist user from non Blacklister account + // EXPECTED: Request fails; user not unblacklisted + // Status: + // not blacklisted: blacklistedUser1 + + w = interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "list-blacklisted") + require.NoError(t, err, "failed to query list-blacklisted") + var preFailedUnblacklist, postFailedUnblacklist fiattokenfactorytypes.QueryAllBlacklistedResponse + _ = json.Unmarshal(res, &preFailedUnblacklist) + // ignore the error since `pagination` does not unmarshal) + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "unblacklist", blacklistedUser1.FormattedAddress()) + require.ErrorContains(t, err, "you are not the blacklister: unauthorized") + + res, _, err = val.ExecQuery(ctx, "fiat-tokenfactory", "list-blacklisted") + require.NoError(t, err, "failed to query list-blacklisted") + _ = json.Unmarshal(res, &postFailedUnblacklist) + // ignore the error since `pagination` does not unmarshal) + require.ElementsMatch(t, preFailedUnblacklist.Blacklisted, postFailedUnblacklist.Blacklisted) + + // ACTION: Unblacklist an account while the blacklister is blacklisted + // EXPECTED: Success; user unblacklisted + // Status: + // blacklisted: blacklistedUser1 + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Blacklister) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, blacklistedUser1) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Blacklister) + + // ACTION: Unblacklist an account that is not blacklisted + // EXPECTED: Request fails; user remains unblacklisted + // Status: + // not blacklisted: blacklistedUser1 + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Blacklister.KeyName(), "fiat-tokenfactory", "unblacklist", blacklistedUser1.FormattedAddress()) + require.ErrorContains(t, err, "the specified address is not blacklisted") + + _, err = e2e.ShowBlacklisted(ctx, val, blacklistedUser1) + require.Error(t, err, "query succeeded, blacklisted account should not exist") +} diff --git a/e2e/utils.go b/e2e/utils.go index 415cca85..20658f7a 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -677,8 +677,8 @@ func ShowPauser(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytyp return showPauserRes, nil } -// showBlacklister queries for the token factory Blacklister by running: `query fiat-tokenfactory show-blacklister`. -func showBlacklister(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetBlacklisterResponse, error) { +// ShowBlacklister queries for the token factory Blacklister by running: `query fiat-tokenfactory show-blacklister`. +func ShowBlacklister(ctx context.Context, val *cosmos.ChainNode) (fiattokenfactorytypes.QueryGetBlacklisterResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklister") if err != nil { return fiattokenfactorytypes.QueryGetBlacklisterResponse{}, err @@ -693,9 +693,9 @@ func showBlacklister(ctx context.Context, val *cosmos.ChainNode) (fiattokenfacto return showBlacklisterRes, nil } -// showBlacklisted queries for a specific blacklisted address by running: `query fiat-tokenfactory show-blacklisted
`. +// ShowBlacklisted queries for a specific blacklisted address by running: `query fiat-tokenfactory show-blacklisted
`. // An error is returned if the address is not blacklisted -func showBlacklisted(ctx context.Context, val *cosmos.ChainNode, blacklistedWallet ibc.Wallet) (fiattokenfactorytypes.QueryGetBlacklistedResponse, error) { +func ShowBlacklisted(ctx context.Context, val *cosmos.ChainNode, blacklistedWallet ibc.Wallet) (fiattokenfactorytypes.QueryGetBlacklistedResponse, error) { res, _, err := val.ExecQuery(ctx, "fiat-tokenfactory", "show-blacklisted", blacklistedWallet.FormattedAddress()) if err != nil { return fiattokenfactorytypes.QueryGetBlacklistedResponse{}, err From 8cb4c9fd5bad2aaa610d3a8c6cce70fb10a75765 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 02:37:09 -0700 Subject: [PATCH 7/9] feat: mint & burn e2e tests for fiattokenfactory (#371) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 233 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 233 insertions(+) diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go index 81f4f91c..aad332ec 100644 --- a/e2e/fiat_tf_test.go +++ b/e2e/fiat_tf_test.go @@ -1288,3 +1288,236 @@ func TestFiatTFUnblacklist(t *testing.T) { _, err = e2e.ShowBlacklisted(ctx, val, blacklistedUser1) require.Error(t, err, "query succeeded, blacklisted account should not exist") } + +func TestFiatTFMint(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Mint while TF is paused + // EXPECTED: Request fails; amount not minted + + w := interchaintest.GetAndFundTestUsers(t, ctx, "receiver-1", math.OneInt(), noble) + receiver1 := w[0] + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + showMinterPreMint, err := e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + + preMintAllowance := showMinterPreMint.Minters.Allowance.Amount + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), "1uusdc") + require.ErrorContains(t, err, "minting is paused") + + bal, err := noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.IsZero()) + + // allowance should not have changed + showMinterPostMint, err := e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + expectedShowMinters := fiattokenfactorytypes.QueryGetMintersResponse{ + Minters: fiattokenfactorytypes.Minters{ + Address: nw.FiatTfRoles.Minter.FormattedAddress(), + Allowance: sdk.Coin{ + Denom: "uusdc", + Amount: preMintAllowance, + }, + }, + } + + require.Equal(t, expectedShowMinters.Minters, showMinterPostMint.Minters) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Mint from non minter + // EXPECTED: Request fails; amount not minted + + w = interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.OneInt(), noble) + alice := w[0] + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), "1uusdc") + require.ErrorContains(t, err, "you are not a minter") + + bal, err = noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.IsZero()) + + // ACTION: Mint from blacklisted minter + // EXPECTED: Request fails; amount not minted + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Minter) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), "1uusdc") + require.ErrorContains(t, err, "minter address is blacklisted") + + bal, err = noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.IsZero()) + + // allowance should not have changed + showMintersRes, err := e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Minter) + + // ACTION: Mint to blacklisted account + // EXPECTED: Request fails; amount not minted + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, receiver1) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), "1uusdc") + require.ErrorContains(t, err, "receiver address is blacklisted") + + bal, err = noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.IsZero()) + + // allowance should not have changed + showMintersRes, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, receiver1) + + // ACTION: Mint an amount that exceeds the minters allowance + // EXPECTED: Request fails; amount not minted + + exceedAllowance := preMintAllowance.Add(math.NewInt(99)) + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), fmt.Sprintf("%duusdc", exceedAllowance.Int64())) + require.ErrorContains(t, err, "minting amount is greater than the allowance") + + bal, err = noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.IsZero()) + + // allowance should not have changed + showMintersRes, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters) + + // ACTION: Successfully mint into an account + // EXPECTED: Success + + mintAmount := int64(3) + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", receiver1.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err, "error minting") + + bal, err = noble.GetBalance(ctx, receiver1.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.Equal(math.NewInt(mintAmount))) + + showMintersRes, err = e2e.ShowMinters(ctx, val, nw.FiatTfRoles.Minter) + require.NoError(t, err, "failed to query show-minter") + expectedShowMinters.Minters.Allowance = sdk.Coin{ + Denom: "uusdc", + Amount: preMintAllowance.Sub(math.NewInt(mintAmount)), + } + + require.Equal(t, expectedShowMinters.Minters, showMintersRes.Minters) +} + +func TestFiatTFBurn(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // setup - mint into minter's wallet + mintAmount := int64(5) + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", nw.FiatTfRoles.Minter.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err, "error minting") + + bal, err := noble.GetBalance(ctx, nw.FiatTfRoles.Minter.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.EqualValues(t, mintAmount, bal.Int64()) + + // ACTION: Burn while TF is paused + // EXPECTED: Request fails; amount not burned + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + burnAmount := int64(1) + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "burn", fmt.Sprintf("%duusdc", burnAmount)) + require.ErrorContains(t, err, "burning is paused") + + bal, err = noble.GetBalance(ctx, nw.FiatTfRoles.Minter.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.EqualValues(t, mintAmount, bal.Int64(), "minters balance should not have decreased") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Burn from non minter account + // EXPECTED: Request fails; amount not burned + + w := interchaintest.GetAndFundTestUsers(t, ctx, "alice", math.NewInt(burnAmount), noble) + alice := w[0] + + // mint into Alice's account to give her a balance to burn + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", alice.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err, "error minting") + + bal, err = noble.GetBalance(ctx, alice.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bal.Equal(math.NewInt(mintAmount))) + + _, err = val.ExecTx(ctx, alice.KeyName(), "fiat-tokenfactory", "burn", fmt.Sprintf("%duusdc", burnAmount)) + require.ErrorContains(t, err, "you are not a minter") + + bal, err = noble.GetBalance(ctx, alice.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.EqualValues(t, mintAmount, bal.Int64(), "minters balance should not have decreased") + + // ACTION: Burn from a blacklisted minter account + // EXPECTED: Request fails; amount not burned + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Minter) + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "burn", fmt.Sprintf("%duusdc", burnAmount)) + require.ErrorContains(t, err, "minter address is blacklisted") + + bal, err = noble.GetBalance(ctx, nw.FiatTfRoles.Minter.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.EqualValues(t, mintAmount, bal.Int64(), "minters balance should not have decreased") + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, nw.FiatTfRoles.Minter) + + // ACTION: Burn amount greater than the minters balance + // EXPECTED: Request fails; amount not burned + + exceedAllowance := bal.Add(math.NewInt(99)) + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "burn", fmt.Sprintf("%duusdc", exceedAllowance.Int64())) + require.ErrorContains(t, err, "insufficient funds") + + bal, err = noble.GetBalance(ctx, nw.FiatTfRoles.Minter.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.EqualValues(t, mintAmount, bal.Int64(), "minters balance should not have decreased") + + // ACTION: Successfully burn tokens + // EXPECTED: Success; amount burned and Minters balance is decreased + + _, err = val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "burn", fmt.Sprintf("%duusdc", burnAmount)) + require.NoError(t, err, "error broadcasting burn") + + bal, err = noble.GetBalance(ctx, nw.FiatTfRoles.Minter.FormattedAddress(), "uusdc") + expectedAmount := mintAmount - burnAmount + require.NoError(t, err, "error getting balance") + require.EqualValues(t, expectedAmount, bal.Int64()) +} From 4d9b4f51b85dd32544d725343e5ad6d56848c143 Mon Sep 17 00:00:00 2001 From: Dan Kanefsky <56059752+boojamya@users.noreply.github.com> Date: Thu, 17 Oct 2024 03:06:44 -0700 Subject: [PATCH 8/9] feat: auth, authz, bank e2e tests for fiattokenfactory (#373) Co-authored-by: John Letey --- e2e/fiat_tf_test.go | 325 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 325 insertions(+) diff --git a/e2e/fiat_tf_test.go b/e2e/fiat_tf_test.go index aad332ec..c7f4cecc 100644 --- a/e2e/fiat_tf_test.go +++ b/e2e/fiat_tf_test.go @@ -8,9 +8,11 @@ import ( "cosmossdk.io/math" fiattokenfactorytypes "github.com/circlefin/noble-fiattokenfactory/x/fiattokenfactory/types" + "github.com/cosmos/cosmos-sdk/crypto/keyring" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/noble-assets/noble/e2e" "github.com/strangelove-ventures/interchaintest/v8" + "github.com/strangelove-ventures/interchaintest/v8/ibc" "github.com/stretchr/testify/require" ) @@ -1521,3 +1523,326 @@ func TestFiatTFBurn(t *testing.T) { require.NoError(t, err, "error getting balance") require.EqualValues(t, expectedAmount, bal.Int64()) } + +func TestFiatTFAuth(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Send non TF token but pay fee in TF token while the TF is paused + // EXPECTED: Request fails; TF is paused + + originalAmount := math.OneInt() + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", originalAmount, noble, noble) + alice := w[0] // 1ustake + bob := w[1] // 1ustake + + mintAmount := int64(100) + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", alice.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err) + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + sendAmount := 1 + uusdcFee := int64(5) + _, err = val.ExecTx(ctx, alice.KeyName(), "bank", "send", alice.KeyName(), bob.FormattedAddress(), fmt.Sprintf("%dustake", sendAmount), "--fees", fmt.Sprintf("%duusdc", uusdcFee)) + require.ErrorContains(t, err, "the chain is paused") + + uStakebal, err := noble.GetBalance(ctx, alice.FormattedAddress(), "ustake") + require.NoError(t, err) + require.Equal(t, originalAmount, uStakebal) + + uusdcBal, err := noble.GetBalance(ctx, alice.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.Equal(t, math.NewInt(mintAmount), uusdcBal) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Send non TF token but pay fee in TF token while the sender is blacklisted + // EXPECTED: Request fails + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, alice) + + _, err = val.ExecTx(ctx, alice.KeyName(), "bank", "send", alice.KeyName(), bob.FormattedAddress(), fmt.Sprintf("%dustake", sendAmount), "--fees", fmt.Sprintf("%duusdc", uusdcFee)) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not send tokens: unauthorized", alice.FormattedAddress())) + + bal, err := noble.GetBalance(ctx, alice.FormattedAddress(), "ustake") + require.NoError(t, err) + require.Equal(t, originalAmount, bal) + + uusdcBal, err = noble.GetBalance(ctx, alice.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.Equal(t, math.NewInt(mintAmount), uusdcBal) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, alice) + + // ACTION: Successfully send non TF token but pay fee in TF token + // EXPECTED: Success; Fee withdrawn from users balance + + _, err = val.ExecTx(ctx, alice.KeyName(), "bank", "send", alice.KeyName(), bob.FormattedAddress(), fmt.Sprintf("%dustake", sendAmount), "--fees", fmt.Sprintf("%duusdc", uusdcFee)) + require.NoError(t, err) + + bobBalStake, err := noble.GetBalance(ctx, bob.FormattedAddress(), "ustake") + require.NoError(t, err) + require.Equal(t, originalAmount.Add(math.NewInt(int64(sendAmount))), bobBalStake) + + aliceBalUusdc, err := noble.GetBalance(ctx, alice.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.EqualValues(t, mintAmount-uusdcFee, aliceBalUusdc.Int64()) +} + +func TestFiatTFAuthzGrant(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // ACTION: Grant an authz SEND using a TF token while TF is paused + // EXPECTED: Request fails + + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + granter1 := w[0] + grantee1 := w[1] + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err := val.AuthzGrant(ctx, granter1, grantee1.FormattedAddress(), "send", "--spend-limit=100uusdc") + require.ErrorContains(t, err, "can not perform token authorizations: the chain is paused") + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Grant an authz SEND using a TF token to a grantee who is blacklisted + // EXPECTED: Success; + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + granter2 := w[0] + grantee2 := w[1] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, grantee2) + + res, err := val.AuthzGrant(ctx, granter2, grantee2.FormattedAddress(), "send", "--spend-limit=100uusdc") + require.NoError(t, err) + require.Zero(t, res.Code) + + // ACTION: Grant an authz SEND using a TF token from a granter who is blacklisted + // EXPECTED: Success; + + w = interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + granter3 := w[0] + grantee3 := w[1] + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, granter3) + + res, err = val.AuthzGrant(ctx, granter3, grantee3.FormattedAddress(), "send", "--spend-limit=100uusdc") + require.NoError(t, err) + require.Zero(t, res.Code) +} + +func TestFiatTFAuthzSend(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + // setup + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble, noble) + granter := w[0] + grantee := w[1] + receiver := w[2] + + mintAmount := int64(100) + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", granter.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err, "error minting") + + res, err := val.AuthzGrant(ctx, granter, grantee.FormattedAddress(), "send", "--spend-limit=100uusdc") + require.NoError(t, err) + require.Zero(t, res.Code) + + sendAmount := int64(5) + nestedCmd := []string{ + noble.Config().Bin, + "tx", "bank", "send", granter.FormattedAddress(), receiver.FormattedAddress(), fmt.Sprintf("%duusdc", sendAmount), + "--from", granter.FormattedAddress(), "--generate-only", + "--chain-id", noble.GetNode().Chain.Config().ChainID, + "--node", noble.GetNode().Chain.GetRPCAddress(), + "--home", noble.GetNode().HomeDir(), + "--keyring-backend", keyring.BackendTest, + "--output", "json", + "--yes", + } + + // ACTION: Execute an authz SEND using a TF token from a grantee who is blacklisted + // EXPECTED: Request fails; Even though grantee is acting on behalf of the granter, + // the granter still cannot execute `send` due to being blacklisted + // Status: + // Granter1 has authorized Grantee1 to send 100usdc from their wallet + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, grantee) + + _, err = val.AuthzExec(ctx, grantee, nestedCmd) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not authorize tokens: unauthorized", receiver.FormattedAddress())) + + bal, err := noble.GetBalance(ctx, receiver.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.True(t, bal.IsZero()) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, grantee) + + // ACTION: Execute an authz SEND using a TF token from a granter who is blacklisted + // EXPECTED: Request fails; Granter is blacklisted + // Status: + // Granter1 has authorized Grantee1 to send 100usdc from their wallet + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, granter) + + _, err = val.AuthzExec(ctx, grantee, nestedCmd) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not send tokens: unauthorized", granter.FormattedAddress())) + + bal, err = noble.GetBalance(ctx, receiver.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.True(t, bal.IsZero()) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, granter) + + // ACTION: Execute an authz SEND using a TF token to a receiver who is blacklisted + // EXPECTED: Request fails; Granter is blacklisted + // Status: + // Granter1 has authorized Grantee1 to send 100usdc from their wallet + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, receiver) + + _, err = val.AuthzExec(ctx, grantee, nestedCmd) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not receive tokens: unauthorized", receiver.FormattedAddress())) + + bal, err = noble.GetBalance(ctx, receiver.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.True(t, bal.IsZero()) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, receiver) + + // ACTION: Execute an authz SEND using a TF token while the TF is paused + // EXPECTED: Request fails; chain is paused + // Status: + // Granter1 has authorized Grantee1 to send 100usdc from their wallet + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + _, err = val.AuthzExec(ctx, grantee, nestedCmd) + require.ErrorContains(t, err, "the chain is paused") + + bal, err = noble.GetBalance(ctx, receiver.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.True(t, bal.IsZero()) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Happy path: Execute an authz SEND using a TF token + // EXPECTED: Success; authz send is successful. + // Status: + // Granter1 has authorized Grantee1 to send 100usdc from their wallet + + _, err = val.AuthzExec(ctx, grantee, nestedCmd) + require.NoError(t, err) + + bal, err = noble.GetBalance(ctx, receiver.FormattedAddress(), "uusdc") + require.NoError(t, err) + require.Equal(t, math.NewInt(sendAmount), bal) + +} + +func TestFiatTFBankSend(t *testing.T) { + if testing.Short() { + t.Skip() + } + t.Parallel() + + ctx := context.Background() + + nw := e2e.NobleSpinUp(t, ctx, true) + noble := nw.Chain + val := noble.Validators[0] + + w := interchaintest.GetAndFundTestUsers(t, ctx, "default", math.OneInt(), noble, noble) + alice := w[0] + bob := w[1] + + mintAmount := int64(100) + _, err := val.ExecTx(ctx, nw.FiatTfRoles.Minter.KeyName(), "fiat-tokenfactory", "mint", alice.FormattedAddress(), fmt.Sprintf("%duusdc", mintAmount)) + require.NoError(t, err, "error minting") + + // ACTION: Send TF token while TF is paused + // EXPECTED: Request fails; token not sent + + e2e.PauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + amountToSend := ibc.WalletAmount{ + Address: bob.FormattedAddress(), + Denom: "uusdc", + Amount: math.OneInt(), + } + err = noble.SendFunds(ctx, alice.KeyName(), amountToSend) + require.ErrorContains(t, err, "the chain is paused") + + bobBal, err := noble.GetBalance(ctx, bob.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bobBal.IsZero()) + + e2e.UnpauseFiatTF(t, ctx, val, nw.FiatTfRoles.Pauser) + + // ACTION: Send TF token while FROM address is blacklisted + // EXPECTED: Request fails; token not sent + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, alice) + + err = noble.SendFunds(ctx, alice.KeyName(), amountToSend) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not send tokens", alice.FormattedAddress())) + + bobBal, err = noble.GetBalance(ctx, bob.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bobBal.IsZero()) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, alice) + + // ACTION: Send TF token while TO address is blacklisted + // EXPECTED: Request fails; token not sent + + e2e.BlacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, bob) + + err = noble.SendFunds(ctx, alice.KeyName(), amountToSend) + require.ErrorContains(t, err, fmt.Sprintf("an address (%s) is blacklisted and can not receive tokens", bob.FormattedAddress())) + + bobBal, err = noble.GetBalance(ctx, bob.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.True(t, bobBal.IsZero()) + + e2e.UnblacklistAccount(t, ctx, val, nw.FiatTfRoles.Blacklister, bob) + + // ACTION: Successfully send TF token + // EXPECTED: Success + + err = noble.SendFunds(ctx, alice.KeyName(), amountToSend) + require.NoError(t, err, "error sending funds") + + bobBal, err = noble.GetBalance(ctx, bob.FormattedAddress(), "uusdc") + require.NoError(t, err, "error getting balance") + require.Equal(t, amountToSend.Amount, bobBal) +} From f998e11e06f8bae3c2ae5f1309554544536e3622 Mon Sep 17 00:00:00 2001 From: John Letey Date: Thu, 17 Oct 2024 17:29:50 +0200 Subject: [PATCH 9/9] fix: include crisis module in upgrade store loader (#412) --- upgrade/store.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/upgrade/store.go b/upgrade/store.go index 2c6129a8..c3931d30 100644 --- a/upgrade/store.go +++ b/upgrade/store.go @@ -5,6 +5,7 @@ import ( upgradetypes "cosmossdk.io/x/upgrade/types" "github.com/cosmos/cosmos-sdk/baseapp" consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" + crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" authoritytypes "github.com/noble-assets/authority/types" ) @@ -13,6 +14,7 @@ func CreateStoreLoader(upgradeHeight int64) baseapp.StoreLoader { Added: []string{ // Cosmos Modules consensustypes.StoreKey, + crisistypes.StoreKey, // Noble Modules authoritytypes.ModuleName, },