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"
)

var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

const _ = proto.GoGoProtoPackageIsVersion3 

type Params struct {
	PeggyId                       string                                 `protobuf:"bytes,1,opt,name=peggy_id,json=peggyId,proto3" json:"peggy_id,omitempty"`
	ContractSourceHash            string                                 `protobuf:"bytes,2,opt,name=contract_source_hash,json=contractSourceHash,proto3" json:"contract_source_hash,omitempty"`
	BridgeEthereumAddress         string                                 `protobuf:"bytes,3,opt,name=bridge_ethereum_address,json=bridgeEthereumAddress,proto3" json:"bridge_ethereum_address,omitempty"`
	BridgeChainId                 uint64                                 `protobuf:"varint,4,opt,name=bridge_chain_id,json=bridgeChainId,proto3" json:"bridge_chain_id,omitempty"`
	SignedValsetsWindow           uint64                                 `protobuf:"varint,5,opt,name=signed_valsets_window,json=signedValsetsWindow,proto3" json:"signed_valsets_window,omitempty"`
	SignedBatchesWindow           uint64                                 `protobuf:"varint,6,opt,name=signed_batches_window,json=signedBatchesWindow,proto3" json:"signed_batches_window,omitempty"`
	TargetBatchTimeout            uint64                                 `protobuf:"varint,7,opt,name=target_batch_timeout,json=targetBatchTimeout,proto3" json:"target_batch_timeout,omitempty"`
	AverageBlockTime              uint64                                 `protobuf:"varint,8,opt,name=average_block_time,json=averageBlockTime,proto3" json:"average_block_time,omitempty"`
	AverageEthereumBlockTime      uint64                                 `protobuf:"varint,9,opt,name=average_ethereum_block_time,json=averageEthereumBlockTime,proto3" json:"average_ethereum_block_time,omitempty"`
	SlashFractionValset           github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=slash_fraction_valset,json=slashFractionValset,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_valset"`
	SlashFractionBatch            github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=slash_fraction_batch,json=slashFractionBatch,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_batch"`
	SlashFractionClaim            github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=slash_fraction_claim,json=slashFractionClaim,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_claim"`
	SlashFractionConflictingClaim github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=slash_fraction_conflicting_claim,json=slashFractionConflictingClaim,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_conflicting_claim"`
	UnbondSlashingValsetsWindow   uint64                                 `protobuf:"varint,14,opt,name=unbond_slashing_valsets_window,json=unbondSlashingValsetsWindow,proto3" json:"unbond_slashing_valsets_window,omitempty"`
	SlashFractionBadEthSignature  github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,15,opt,name=slash_fraction_bad_eth_signature,json=slashFractionBadEthSignature,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_bad_eth_signature"`
	BridgeContractStartHeight     uint64                                 `protobuf:"varint,16,opt,name=bridge_contract_start_height,json=bridgeContractStartHeight,proto3" json:"bridge_contract_start_height,omitempty"`
	ValsetReward                  types.Coin                             `protobuf:"bytes,17,opt,name=valset_reward,json=valsetReward,proto3" json:"valset_reward"`
}

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_3a3891bc0dfe5831, []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) GetPeggyId() string {
	if m != nil {
		return m.PeggyId
	}
	return ""
}

func (m *Params) GetContractSourceHash() string {
	if m != nil {
		return m.ContractSourceHash
	}
	return ""
}

func (m *Params) GetBridgeEthereumAddress() string {
	if m != nil {
		return m.BridgeEthereumAddress
	}
	return ""
}

func (m *Params) GetBridgeChainId() uint64 {
	if m != nil {
		return m.BridgeChainId
	}
	return 0
}

func (m *Params) GetSignedValsetsWindow() uint64 {
	if m != nil {
		return m.SignedValsetsWindow
	}
	return 0
}

func (m *Params) GetSignedBatchesWindow() uint64 {
	if m != nil {
		return m.SignedBatchesWindow
	}
	return 0
}

func (m *Params) GetTargetBatchTimeout() uint64 {
	if m != nil {
		return m.TargetBatchTimeout
	}
	return 0
}

func (m *Params) GetAverageBlockTime() uint64 {
	if m != nil {
		return m.AverageBlockTime
	}
	return 0
}

func (m *Params) GetAverageEthereumBlockTime() uint64 {
	if m != nil {
		return m.AverageEthereumBlockTime
	}
	return 0
}

func (m *Params) GetUnbondSlashingValsetsWindow() uint64 {
	if m != nil {
		return m.UnbondSlashingValsetsWindow
	}
	return 0
}

func (m *Params) GetBridgeContractStartHeight() uint64 {
	if m != nil {
		return m.BridgeContractStartHeight
	}
	return 0
}

func (m *Params) GetValsetReward() types.Coin {
	if m != nil {
		return m.ValsetReward
	}
	return types.Coin{}
}

type GenesisState struct {
	Params                     *Params                        `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
	LastObservedNonce          uint64                         `protobuf:"varint,2,opt,name=last_observed_nonce,json=lastObservedNonce,proto3" json:"last_observed_nonce,omitempty"`
	Valsets                    []*Valset                      `protobuf:"bytes,3,rep,name=valsets,proto3" json:"valsets,omitempty"`
	ValsetConfirms             []*MsgValsetConfirm            `protobuf:"bytes,4,rep,name=valset_confirms,json=valsetConfirms,proto3" json:"valset_confirms,omitempty"`
	Batches                    []*OutgoingTxBatch             `protobuf:"bytes,5,rep,name=batches,proto3" json:"batches,omitempty"`
	BatchConfirms              []*MsgConfirmBatch             `protobuf:"bytes,6,rep,name=batch_confirms,json=batchConfirms,proto3" json:"batch_confirms,omitempty"`
	Attestations               []*Attestation                 `protobuf:"bytes,7,rep,name=attestations,proto3" json:"attestations,omitempty"`
	OrchestratorAddresses      []*MsgSetOrchestratorAddresses `protobuf:"bytes,8,rep,name=orchestrator_addresses,json=orchestratorAddresses,proto3" json:"orchestrator_addresses,omitempty"`
	Erc20ToDenoms              []*ERC20ToDenom                `protobuf:"bytes,9,rep,name=erc20_to_denoms,json=erc20ToDenoms,proto3" json:"erc20_to_denoms,omitempty"`
	UnbatchedTransfers         []*OutgoingTransferTx          `protobuf:"bytes,10,rep,name=unbatched_transfers,json=unbatchedTransfers,proto3" json:"unbatched_transfers,omitempty"`
	LastObservedEthereumHeight uint64                         `protobuf:"varint,11,opt,name=last_observed_ethereum_height,json=lastObservedEthereumHeight,proto3" json:"last_observed_ethereum_height,omitempty"`
	LastOutgoingBatchId        uint64                         `protobuf:"varint,12,opt,name=last_outgoing_batch_id,json=lastOutgoingBatchId,proto3" json:"last_outgoing_batch_id,omitempty"`
	LastOutgoingPoolId         uint64                         `protobuf:"varint,13,opt,name=last_outgoing_pool_id,json=lastOutgoingPoolId,proto3" json:"last_outgoing_pool_id,omitempty"`
	LastObservedValset         Valset                         `protobuf:"bytes,14,opt,name=last_observed_valset,json=lastObservedValset,proto3" json:"last_observed_valset"`
}

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_3a3891bc0dfe5831, []int{1}
}
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 nil
}

func (m *GenesisState) GetLastObservedNonce() uint64 {
	if m != nil {
		return m.LastObservedNonce
	}
	return 0
}

func (m *GenesisState) GetValsets() []*Valset {
	if m != nil {
		return m.Valsets
	}
	return nil
}

func (m *GenesisState) GetValsetConfirms() []*MsgValsetConfirm {
	if m != nil {
		return m.ValsetConfirms
	}
	return nil
}

func (m *GenesisState) GetBatches() []*OutgoingTxBatch {
	if m != nil {
		return m.Batches
	}
	return nil
}

func (m *GenesisState) GetBatchConfirms() []*MsgConfirmBatch {
	if m != nil {
		return m.BatchConfirms
	}
	return nil
}

func (m *GenesisState) GetAttestations() []*Attestation {
	if m != nil {
		return m.Attestations
	}
	return nil
}

func (m *GenesisState) GetOrchestratorAddresses() []*MsgSetOrchestratorAddresses {
	if m != nil {
		return m.OrchestratorAddresses
	}
	return nil
}

func (m *GenesisState) GetErc20ToDenoms() []*ERC20ToDenom {
	if m != nil {
		return m.Erc20ToDenoms
	}
	return nil
}

func (m *GenesisState) GetUnbatchedTransfers() []*OutgoingTransferTx {
	if m != nil {
		return m.UnbatchedTransfers
	}
	return nil
}

func (m *GenesisState) GetLastObservedEthereumHeight() uint64 {
	if m != nil {
		return m.LastObservedEthereumHeight
	}
	return 0
}

func (m *GenesisState) GetLastOutgoingBatchId() uint64 {
	if m != nil {
		return m.LastOutgoingBatchId
	}
	return 0
}

func (m *GenesisState) GetLastOutgoingPoolId() uint64 {
	if m != nil {
		return m.LastOutgoingPoolId
	}
	return 0
}

func (m *GenesisState) GetLastObservedValset() Valset {
	if m != nil {
		return m.LastObservedValset
	}
	return Valset{}
}

func init() {
	proto.RegisterType((*Params)(nil), "umeenetwork.umee.peggy.v1.Params")
	proto.RegisterType((*GenesisState)(nil), "umeenetwork.umee.peggy.v1.GenesisState")
}

func init() { proto.RegisterFile("umee/peggy/v1/genesis.proto", fileDescriptor_3a3891bc0dfe5831) }

var fileDescriptor_3a3891bc0dfe5831 = []byte{

	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x4e, 0x1b, 0x47,
	0x14, 0xc6, 0xc5, 0xe1, 0x67, 0xc0, 0x90, 0x0c, 0x3f, 0x1d, 0x20, 0x31, 0x6e, 0x2e, 0x28, 0x4a,
	0xcb, 0x1a, 0x88, 0x14, 0xa9, 0xad, 0xaa, 0x0a, 0x0c, 0x6d, 0xa8, 0x94, 0x92, 0xae, 0xad, 0x56,
	0xed, 0x45, 0xb7, 0xb3, 0xbb, 0xc3, 0xee, 0x0a, 0xef, 0x8e, 0x35, 0x33, 0xb6, 0xc9, 0x5d, 0x1f,
	0xa1, 0x77, 0x7d, 0x84, 0xbe, 0x4a, 0x2e, 0x73, 0x59, 0x55, 0x55, 0x54, 0xc1, 0x8b, 0x54, 0x73,
	0x66, 0xd6, 0xac, 0x5d, 0x6a, 0x2a, 0x94, 0x2b, 0xd8, 0xfd, 0xce, 0xf7, 0x7d, 0x67, 0xcf, 0x9c,
	0x73, 0xc6, 0x68, 0xa3, 0x9b, 0x32, 0x56, 0xef, 0xb0, 0x28, 0x7a, 0x55, 0xef, 0xed, 0xd5, 0x23,
	0x96, 0x31, 0x99, 0x48, 0xa7, 0x23, 0xb8, 0xe2, 0x78, 0x4d, 0x83, 0x19, 0x53, 0x7d, 0x2e, 0xce,
	0x1d, 0xfd, 0xbf, 0x03, 0x81, 0x4e, 0x6f, 0x6f, 0x7d, 0x39, 0xe2, 0x11, 0x87, 0xa8, 0xba, 0xfe,
	0xcf, 0x10, 0xd6, 0xd7, 0x86, 0xd5, 0xd4, 0xab, 0x0e, 0xb3, 0x5a, 0xeb, 0xab, 0x23, 0xd0, 0xc5,
	0xcd, 0x14, 0x9f, 0xaa, 0x20, 0xb6, 0xd0, 0xe6, 0x30, 0x44, 0x95, 0x62, 0x52, 0x51, 0x95, 0xf0,
	0xcc, 0x06, 0x54, 0x03, 0x2e, 0x53, 0x2e, 0xeb, 0x3e, 0x95, 0xac, 0xde, 0xdb, 0xf3, 0x99, 0xa2,
	0x7b, 0xf5, 0x80, 0x27, 0x16, 0x7f, 0xfc, 0xfb, 0x2c, 0x9a, 0x7a, 0x49, 0x05, 0x4d, 0x25, 0x5e,
	0x43, 0x33, 0x20, 0xe4, 0x25, 0x21, 0x29, 0xd5, 0x4a, 0xdb, 0xb3, 0xee, 0x34, 0x3c, 0x9f, 0x84,
	0x78, 0x17, 0x2d, 0x07, 0x3c, 0x53, 0x82, 0x06, 0xca, 0x93, 0xbc, 0x2b, 0x02, 0xe6, 0xc5, 0x54,
	0xc6, 0xe4, 0x3d, 0x08, 0xc3, 0x39, 0xd6, 0x04, 0xe8, 0x39, 0x95, 0x31, 0x7e, 0x86, 0xde, 0xf7,
	0x45, 0x12, 0x46, 0xcc, 0x63, 0x2a, 0x66, 0x82, 0x75, 0x53, 0x8f, 0x86, 0xa1, 0x60, 0x52, 0x92,
	0x49, 0x20, 0xad, 0x18, 0xf8, 0xd8, 0xa2, 0x07, 0x06, 0xc4, 0x5b, 0x68, 0xd1, 0xf2, 0x82, 0x98,
	0x26, 0x99, 0xce, 0xa5, 0x5c, 0x2b, 0x6d, 0x97, 0xdd, 0x8a, 0x79, 0xdd, 0xd0, 0x6f, 0x4f, 0x42,
	0xbc, 0x8f, 0x56, 0x64, 0x12, 0x65, 0x2c, 0xf4, 0x7a, 0xb4, 0x2d, 0x99, 0x92, 0x5e, 0x3f, 0xc9,
	0x42, 0xde, 0x27, 0xf7, 0x20, 0x7a, 0xc9, 0x80, 0xdf, 0x19, 0xec, 0x7b, 0x80, 0x0a, 0x1c, 0x28,
	0x21, 0x1b, 0x70, 0xa6, 0x8a, 0x9c, 0x43, 0x83, 0x59, 0xce, 0x2e, 0x5a, 0x56, 0x54, 0x44, 0x4c,
	0x19, 0x8e, 0xa7, 0x92, 0x94, 0xf1, 0xae, 0x22, 0xd3, 0x40, 0xc1, 0x06, 0x03, 0x4a, 0xcb, 0x20,
	0xf8, 0x63, 0x84, 0x69, 0x8f, 0x09, 0x1a, 0x31, 0xcf, 0x6f, 0xf3, 0xe0, 0x1c, 0x28, 0x64, 0x06,
	0xe2, 0xef, 0x5b, 0xe4, 0x50, 0x03, 0x9a, 0x80, 0x3f, 0x47, 0x1b, 0x79, 0xf4, 0xa0, 0x50, 0x05,
	0xda, 0x2c, 0xd0, 0x88, 0x0d, 0xc9, 0x8b, 0x75, 0x4d, 0xf7, 0xd1, 0x8a, 0x6c, 0x53, 0x19, 0x7b,
	0x67, 0xba, 0xfe, 0x09, 0xcf, 0x6c, 0x39, 0x08, 0xaa, 0x95, 0xb6, 0xe7, 0x0f, 0x9d, 0xd7, 0x6f,
	0x37, 0x27, 0xfe, 0x7c, 0xbb, 0xb9, 0x15, 0x25, 0x2a, 0xee, 0xfa, 0x4e, 0xc0, 0xd3, 0xba, 0x6d,
	0x08, 0xf3, 0x67, 0x47, 0x86, 0xe7, 0xb6, 0x07, 0x8f, 0x58, 0xe0, 0x2e, 0x81, 0xd8, 0x97, 0x56,
	0xcb, 0x54, 0x0f, 0xff, 0x8c, 0x96, 0x47, 0x3c, 0xa0, 0x14, 0x64, 0xee, 0x4e, 0x16, 0x78, 0xc8,
	0x02, 0x2a, 0x77, 0x83, 0x43, 0xd0, 0xa6, 0x49, 0x4a, 0xe6, 0xdf, 0x81, 0x43, 0x43, 0x2b, 0xe1,
	0x3e, 0xaa, 0x8d, 0x3a, 0xf0, 0xec, 0xac, 0x9d, 0x04, 0x2a, 0xc9, 0x22, 0xeb, 0x56, 0xb9, 0x93,
	0xdb, 0xa3, 0x61, 0xb7, 0x6b, 0x55, 0x63, 0xdc, 0x40, 0xd5, 0x6e, 0xe6, 0xf3, 0x2c, 0xf4, 0x20,
	0x4e, 0xbb, 0x8d, 0x34, 0xec, 0x02, 0x1c, 0xf1, 0x86, 0x89, 0x6a, 0xda, 0xa0, 0xe1, 0xc6, 0xed,
	0xfd, 0x2b, 0x7b, 0x9f, 0x86, 0xba, 0x5f, 0x3c, 0xdd, 0xb2, 0x54, 0x75, 0x05, 0x23, 0x8b, 0x77,
	0xca, 0xfe, 0xe1, 0xc8, 0x69, 0x84, 0xc7, 0x2a, 0x6e, 0xe6, 0x9a, 0xf8, 0x0b, 0xf4, 0x30, 0x1f,
	0xc6, 0xc1, 0xf4, 0x2b, 0x2a, 0x94, 0x17, 0xb3, 0x24, 0x8a, 0x15, 0xb9, 0x0f, 0xa9, 0xaf, 0xd9,
	0xc9, 0xcc, 0x97, 0x80, 0x8e, 0x78, 0x0e, 0x01, 0xf8, 0x08, 0x55, 0xcc, 0xd7, 0x7a, 0x82, 0xf5,
	0xa9, 0x08, 0xc9, 0x83, 0x5a, 0x69, 0x7b, 0x6e, 0x7f, 0xcd, 0x31, 0xc9, 0x38, 0x7a, 0x2b, 0x39,
	0x76, 0x2b, 0x39, 0x0d, 0x9e, 0x64, 0x87, 0x65, 0xfd, 0x01, 0xee, 0xbc, 0x61, 0xb9, 0x40, 0xfa,
	0xb4, 0xfc, 0xcb, 0x5f, 0xb5, 0x89, 0xc7, 0xbf, 0xcd, 0xa0, 0xf9, 0xaf, 0xcc, 0xee, 0x6d, 0x2a,
	0xaa, 0x18, 0xfe, 0x04, 0x4d, 0x75, 0x60, 0x73, 0xc1, 0xb6, 0x9a, 0xdb, 0xff, 0xc0, 0xf9, 0xcf,
	0x5d, 0xec, 0x98, 0x15, 0xe7, 0x5a, 0x02, 0x76, 0xd0, 0x52, 0x9b, 0x4a, 0xe5, 0x71, 0x5f, 0x32,
	0xd1, 0x63, 0xa1, 0x97, 0xf1, 0x2c, 0x60, 0xb0, 0xce, 0xca, 0xee, 0x03, 0x0d, 0x9d, 0x5a, 0xe4,
	0x1b, 0x0d, 0xe0, 0xcf, 0xd0, 0xb4, 0x3d, 0x35, 0x32, 0x59, 0x9b, 0xbc, 0xc5, 0xcb, 0x9c, 0x9d,
	0x9b, 0x33, 0x70, 0x0b, 0x2d, 0xda, 0x22, 0xe8, 0x9e, 0x4b, 0x44, 0x2a, 0x49, 0x19, 0x44, 0x3e,
	0x1a, 0x23, 0xf2, 0x42, 0xda, 0x1e, 0x68, 0x18, 0x8e, 0xbb, 0xd0, 0x2b, 0x3e, 0x4a, 0x7c, 0x84,
	0xa6, 0xed, 0x16, 0x23, 0xf7, 0x40, 0xed, 0xc9, 0x18, 0xb5, 0xd3, 0xae, 0x8a, 0x78, 0x92, 0x45,
	0xad, 0x0b, 0x18, 0x38, 0x37, 0xa7, 0xe2, 0x6f, 0xd1, 0x82, 0xd9, 0x6b, 0x83, 0xd4, 0xa6, 0x6e,
	0x15, 0x7b, 0x21, 0x23, 0x9b, 0x85, 0x11, 0xab, 0x80, 0xc2, 0x20, 0xb1, 0xaf, 0xd1, 0x7c, 0xe1,
	0x1a, 0x92, 0x64, 0x1a, 0x04, 0xb7, 0xc6, 0x08, 0x1e, 0x5c, 0x87, 0xbb, 0x43, 0x5c, 0x9c, 0xa2,
	0x55, 0x2e, 0x74, 0xa2, 0x4a, 0x50, 0xc5, 0x45, 0x7e, 0x85, 0x30, 0x49, 0x66, 0x40, 0xf5, 0xd9,
	0xf8, 0x34, 0x9b, 0x4c, 0x9d, 0x16, 0xe8, 0x07, 0x39, 0xdb, 0x5d, 0xe1, 0x37, 0xbd, 0xc6, 0xa7,
	0x68, 0x91, 0x89, 0x60, 0x7f, 0xd7, 0x53, 0xdc, 0x0b, 0x59, 0xc6, 0x53, 0x49, 0x66, 0xc1, 0xe7,
	0xc3, 0x31, 0x3e, 0xc7, 0x6e, 0x63, 0x7f, 0xb7, 0xc5, 0x8f, 0x74, 0xbc, 0x5b, 0x01, 0xbe, 0x7d,
	0x92, 0xf8, 0x27, 0xb4, 0xd4, 0xcd, 0x4c, 0xad, 0x43, 0x4f, 0x09, 0x9a, 0xc9, 0x33, 0x26, 0x24,
	0x41, 0x20, 0xba, 0xf3, 0x7f, 0x0e, 0xcc, 0x72, 0x5a, 0x17, 0x2e, 0x1e, 0x28, 0xe5, 0x2f, 0x25,
	0x3e, 0x40, 0x8f, 0x86, 0xfb, 0x78, 0x70, 0x87, 0xd8, 0x09, 0x9d, 0x83, 0x8e, 0x5e, 0x2f, 0x76,
	0x74, 0x7e, 0x89, 0xd8, 0x11, 0x7d, 0x8a, 0x56, 0x8d, 0x84, 0x75, 0xb4, 0xf7, 0x5c, 0x12, 0xc2,
	0xf6, 0x2d, 0xbb, 0x30, 0x28, 0x79, 0x3a, 0x70, 0xe0, 0x27, 0x21, 0xde, 0x43, 0x2b, 0xc3, 0xa4,
	0x0e, 0xe7, 0x6d, 0xcd, 0xa9, 0x98, 0x6b, 0xb1, 0xc8, 0x79, 0xc9, 0x79, 0xfb, 0x24, 0xc4, 0x3f,
	0xa0, 0xe5, 0xe1, 0x54, 0xed, 0x45, 0xb5, 0x70, 0xeb, 0xec, 0x9a, 0x39, 0xb0, 0x9b, 0x01, 0x17,
	0x3f, 0xc5, 0x22, 0x47, 0xaf, 0x2f, 0xab, 0xa5, 0x37, 0x97, 0xd5, 0xd2, 0xdf, 0x97, 0xd5, 0xd2,
	0xaf, 0x57, 0xd5, 0x89, 0x37, 0x57, 0xd5, 0x89, 0x3f, 0xae, 0xaa, 0x13, 0x3f, 0x3e, 0x29, 0xac,
	0x41, 0x2d, 0xba, 0x63, 0x1d, 0xe0, 0xa1, 0x7e, 0x61, 0x7f, 0x38, 0xc1, 0x3a, 0xf4, 0xa7, 0xe0,
	0x07, 0xd1, 0xd3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x53, 0x20, 0x3b, 0x91, 0xef, 0x09, 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
	{
		size, err := m.ValsetReward.MarshalToSizedBuffer(dAtA[:i])
		if err != nil {
			return 0, err
		}
		i -= size
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x1
	i--
	dAtA[i] = 0x8a
	if m.BridgeContractStartHeight != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.BridgeContractStartHeight))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0x80
	}
	{
		size := m.SlashFractionBadEthSignature.Size()
		i -= size
		if _, err := m.SlashFractionBadEthSignature.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x7a
	if m.UnbondSlashingValsetsWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.UnbondSlashingValsetsWindow))
		i--
		dAtA[i] = 0x70
	}
	{
		size := m.SlashFractionConflictingClaim.Size()
		i -= size
		if _, err := m.SlashFractionConflictingClaim.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x6a
	{
		size := m.SlashFractionClaim.Size()
		i -= size
		if _, err := m.SlashFractionClaim.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x62
	{
		size := m.SlashFractionBatch.Size()
		i -= size
		if _, err := m.SlashFractionBatch.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x5a
	{
		size := m.SlashFractionValset.Size()
		i -= size
		if _, err := m.SlashFractionValset.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x52
	if m.AverageEthereumBlockTime != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.AverageEthereumBlockTime))
		i--
		dAtA[i] = 0x48
	}
	if m.AverageBlockTime != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.AverageBlockTime))
		i--
		dAtA[i] = 0x40
	}
	if m.TargetBatchTimeout != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.TargetBatchTimeout))
		i--
		dAtA[i] = 0x38
	}
	if m.SignedBatchesWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.SignedBatchesWindow))
		i--
		dAtA[i] = 0x30
	}
	if m.SignedValsetsWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.SignedValsetsWindow))
		i--
		dAtA[i] = 0x28
	}
	if m.BridgeChainId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.BridgeChainId))
		i--
		dAtA[i] = 0x20
	}
	if len(m.BridgeEthereumAddress) > 0 {
		i -= len(m.BridgeEthereumAddress)
		copy(dAtA[i:], m.BridgeEthereumAddress)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.BridgeEthereumAddress)))
		i--
		dAtA[i] = 0x1a
	}
	if len(m.ContractSourceHash) > 0 {
		i -= len(m.ContractSourceHash)
		copy(dAtA[i:], m.ContractSourceHash)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.ContractSourceHash)))
		i--
		dAtA[i] = 0x12
	}
	if len(m.PeggyId) > 0 {
		i -= len(m.PeggyId)
		copy(dAtA[i:], m.PeggyId)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.PeggyId)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

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.LastObservedValset.MarshalToSizedBuffer(dAtA[:i])
		if err != nil {
			return 0, err
		}
		i -= size
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x72
	if m.LastOutgoingPoolId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastOutgoingPoolId))
		i--
		dAtA[i] = 0x68
	}
	if m.LastOutgoingBatchId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastOutgoingBatchId))
		i--
		dAtA[i] = 0x60
	}
	if m.LastObservedEthereumHeight != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastObservedEthereumHeight))
		i--
		dAtA[i] = 0x58
	}
	if len(m.UnbatchedTransfers) > 0 {
		for iNdEx := len(m.UnbatchedTransfers) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.UnbatchedTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x52
		}
	}
	if len(m.Erc20ToDenoms) > 0 {
		for iNdEx := len(m.Erc20ToDenoms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Erc20ToDenoms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x4a
		}
	}
	if len(m.OrchestratorAddresses) > 0 {
		for iNdEx := len(m.OrchestratorAddresses) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.OrchestratorAddresses[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x42
		}
	}
	if len(m.Attestations) > 0 {
		for iNdEx := len(m.Attestations) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Attestations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x3a
		}
	}
	if len(m.BatchConfirms) > 0 {
		for iNdEx := len(m.BatchConfirms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.BatchConfirms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x32
		}
	}
	if len(m.Batches) > 0 {
		for iNdEx := len(m.Batches) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Batches[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x2a
		}
	}
	if len(m.ValsetConfirms) > 0 {
		for iNdEx := len(m.ValsetConfirms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.ValsetConfirms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x22
		}
	}
	if len(m.Valsets) > 0 {
		for iNdEx := len(m.Valsets) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Valsets[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x1a
		}
	}
	if m.LastObservedNonce != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastObservedNonce))
		i--
		dAtA[i] = 0x10
	}
	if m.Params != nil {
		{
			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 *Params) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.PeggyId)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	l = len(m.ContractSourceHash)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	l = len(m.BridgeEthereumAddress)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	if m.BridgeChainId != 0 {
		n += 1 + sovGenesis(uint64(m.BridgeChainId))
	}
	if m.SignedValsetsWindow != 0 {
		n += 1 + sovGenesis(uint64(m.SignedValsetsWindow))
	}
	if m.SignedBatchesWindow != 0 {
		n += 1 + sovGenesis(uint64(m.SignedBatchesWindow))
	}
	if m.TargetBatchTimeout != 0 {
		n += 1 + sovGenesis(uint64(m.TargetBatchTimeout))
	}
	if m.AverageBlockTime != 0 {
		n += 1 + sovGenesis(uint64(m.AverageBlockTime))
	}
	if m.AverageEthereumBlockTime != 0 {
		n += 1 + sovGenesis(uint64(m.AverageEthereumBlockTime))
	}
	l = m.SlashFractionValset.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionBatch.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionClaim.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionConflictingClaim.Size()
	n += 1 + l + sovGenesis(uint64(l))
	if m.UnbondSlashingValsetsWindow != 0 {
		n += 1 + sovGenesis(uint64(m.UnbondSlashingValsetsWindow))
	}
	l = m.SlashFractionBadEthSignature.Size()
	n += 1 + l + sovGenesis(uint64(l))
	if m.BridgeContractStartHeight != 0 {
		n += 2 + sovGenesis(uint64(m.BridgeContractStartHeight))
	}
	l = m.ValsetReward.Size()
	n += 2 + l + sovGenesis(uint64(l))
	return n
}

func (m *GenesisState) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Params != nil {
		l = m.Params.Size()
		n += 1 + l + sovGenesis(uint64(l))
	}
	if m.LastObservedNonce != 0 {
		n += 1 + sovGenesis(uint64(m.LastObservedNonce))
	}
	if len(m.Valsets) > 0 {
		for _, e := range m.Valsets {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.ValsetConfirms) > 0 {
		for _, e := range m.ValsetConfirms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Batches) > 0 {
		for _, e := range m.Batches {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.BatchConfirms) > 0 {
		for _, e := range m.BatchConfirms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Attestations) > 0 {
		for _, e := range m.Attestations {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.OrchestratorAddresses) > 0 {
		for _, e := range m.OrchestratorAddresses {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Erc20ToDenoms) > 0 {
		for _, e := range m.Erc20ToDenoms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.UnbatchedTransfers) > 0 {
		for _, e := range m.UnbatchedTransfers {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if m.LastObservedEthereumHeight != 0 {
		n += 1 + sovGenesis(uint64(m.LastObservedEthereumHeight))
	}
	if m.LastOutgoingBatchId != 0 {
		n += 1 + sovGenesis(uint64(m.LastOutgoingBatchId))
	}
	if m.LastOutgoingPoolId != 0 {
		n += 1 + sovGenesis(uint64(m.LastOutgoingPoolId))
	}
	l = m.LastObservedValset.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 *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 PeggyId", 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.PeggyId = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ContractSourceHash", 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.ContractSourceHash = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeEthereumAddress", 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.BridgeEthereumAddress = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 4:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeChainId", wireType)
			}
			m.BridgeChainId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.BridgeChainId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 5:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SignedValsetsWindow", wireType)
			}
			m.SignedValsetsWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SignedValsetsWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 6:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SignedBatchesWindow", wireType)
			}
			m.SignedBatchesWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SignedBatchesWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 7:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field TargetBatchTimeout", wireType)
			}
			m.TargetBatchTimeout = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.TargetBatchTimeout |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 8:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field AverageBlockTime", wireType)
			}
			m.AverageBlockTime = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.AverageBlockTime |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 9:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field AverageEthereumBlockTime", wireType)
			}
			m.AverageEthereumBlockTime = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.AverageEthereumBlockTime |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 10:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionValset", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionValset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 11:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionBatch", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionBatch.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 12:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionClaim", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionClaim.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 13:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionConflictingClaim", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionConflictingClaim.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 14:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field UnbondSlashingValsetsWindow", wireType)
			}
			m.UnbondSlashingValsetsWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.UnbondSlashingValsetsWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 15:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionBadEthSignature", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionBadEthSignature.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 16:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeContractStartHeight", wireType)
			}
			m.BridgeContractStartHeight = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.BridgeContractStartHeight |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 17:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ValsetReward", 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.ValsetReward.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 *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 m.Params == nil {
				m.Params = &Params{}
			}
			if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedNonce", wireType)
			}
			m.LastObservedNonce = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastObservedNonce |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Valsets", 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.Valsets = append(m.Valsets, &Valset{})
			if err := m.Valsets[len(m.Valsets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 4:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ValsetConfirms", 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.ValsetConfirms = append(m.ValsetConfirms, &MsgValsetConfirm{})
			if err := m.ValsetConfirms[len(m.ValsetConfirms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Batches", 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.Batches = append(m.Batches, &OutgoingTxBatch{})
			if err := m.Batches[len(m.Batches)-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 BatchConfirms", 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.BatchConfirms = append(m.BatchConfirms, &MsgConfirmBatch{})
			if err := m.BatchConfirms[len(m.BatchConfirms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 7:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Attestations", 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.Attestations = append(m.Attestations, &Attestation{})
			if err := m.Attestations[len(m.Attestations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 8:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field OrchestratorAddresses", 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.OrchestratorAddresses = append(m.OrchestratorAddresses, &MsgSetOrchestratorAddresses{})
			if err := m.OrchestratorAddresses[len(m.OrchestratorAddresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 9:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Erc20ToDenoms", 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.Erc20ToDenoms = append(m.Erc20ToDenoms, &ERC20ToDenom{})
			if err := m.Erc20ToDenoms[len(m.Erc20ToDenoms)-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 UnbatchedTransfers", 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.UnbatchedTransfers = append(m.UnbatchedTransfers, &OutgoingTransferTx{})
			if err := m.UnbatchedTransfers[len(m.UnbatchedTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 11:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedEthereumHeight", wireType)
			}
			m.LastObservedEthereumHeight = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastObservedEthereumHeight |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastOutgoingBatchId", wireType)
			}
			m.LastOutgoingBatchId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastOutgoingBatchId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 13:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastOutgoingPoolId", wireType)
			}
			m.LastOutgoingPoolId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastOutgoingPoolId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 14:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedValset", 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.LastObservedValset.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")
)
// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: umee/peggy/v1/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

// Params represent the peggy genesis and store parameters.
//
// peggy_id: A random 32 byte value to prevent signature reuse, for example if
// the cosmos validators decided to use the same Ethereum keys for another chain
// also running Peggy we would not want it to be possible to play a deposit from
// chain A back on chain B's peggy. This value IS USED ON ETHEREUM so it must
// be set in your genesis.json before launch and not changed after deploying
// Peggy.
//
// contract_hash: The code hash of a known good version of the Peggy contract
// solidity code. This can be used to verify the correct version of the contract
// has been deployed. This is a reference value for governance action only it is
// never read by any Peggy code.
//
// bridge_ethereum_address: The address of the bridge contract on the Ethereum
// side. The orchestator uses this address in order to know what contract to
// relay transactions to.
//
// bridge_chain_id: The unique identifier of the Ethereum chain, this is a
// reference value only and is not actually used by any Peggy code.
//
// These reference values may be used by future Peggy client implementations
// to allow for saftey features or convenience features like the peggy address
// in your relayer. A relayer would require a configured peggy address if
// governance had not set the address on the chain it was relaying for.
//
// signed_valsets_window
// signed_batches_window
// signed_claims_window
//
// These values represent the time in blocks that a validator has to submit
// a signature for a batch or valset, or to submit a claim for a particular
// attestation nonce. In the case of attestations this clock starts when the
// attestation is created, but only allows for slashing once the event has passed.
//
// target_batch_timeout: This is the 'target' value for when batches time out,
// this is a target becuase Ethereum is a probabalistic chain and you can't say
// for sure what the block frequency is ahead of time.
//
// average_block_time
// average_ethereum_block_time
//
// These values are the average Cosmos block time and Ethereum block time
// repsectively and they are used to compute what the target batch timeout is.
// It is important that governance updates these in case of any major, prolonged
// change in the time it takes to produce a block.
//
// slash_fraction_valset
// slash_fraction_batch
// slash_fraction_claim
// slash_fraction_conflicting_claim
//
// The slashing fractions for the various peggy related slashing conditions. The
// first three refer to not submitting a particular message, the fourth for
// submitting a different claim for the same Ethereum event.
//
// unbond_slashing_valsets_window: The unbond slashing valsets window is used to
// determine how many blocks after starting to unbond a validator needs to
// continue signing blocks. The goal of this paramater is that when a validator
// leaves the set, if their leaving creates enough change in the validator set
// to justify an update they will sign a validator set update for the Ethereum
// bridge that does not include themselves. Allowing us to remove them from the
// Ethereum bridge and replace them with the new set gracefully.
//
// valset_reward: Valset rewards are the amount of tokens this chain issues to
// relayers of validator sets. These can be any ERC20 token in the bridge, but
// it's strongly advised that chains use only Cosmos originated tokens, which
// the bridge effectively mints on Ethereum. If you run out of the token you
// are using for validator set rewards valset updates will fail and the bridge
// will be vulnerable to highjacking. For these paramaters the zero values are
// special and indicate not to attempt any reward. This is the default for
// bootstrapping.
type Params struct {
	PeggyId                       string                                 `protobuf:"bytes,1,opt,name=peggy_id,json=peggyId,proto3" json:"peggy_id,omitempty"`
	ContractSourceHash            string                                 `protobuf:"bytes,2,opt,name=contract_source_hash,json=contractSourceHash,proto3" json:"contract_source_hash,omitempty"`
	BridgeEthereumAddress         string                                 `protobuf:"bytes,3,opt,name=bridge_ethereum_address,json=bridgeEthereumAddress,proto3" json:"bridge_ethereum_address,omitempty"`
	BridgeChainId                 uint64                                 `protobuf:"varint,4,opt,name=bridge_chain_id,json=bridgeChainId,proto3" json:"bridge_chain_id,omitempty"`
	SignedValsetsWindow           uint64                                 `protobuf:"varint,5,opt,name=signed_valsets_window,json=signedValsetsWindow,proto3" json:"signed_valsets_window,omitempty"`
	SignedBatchesWindow           uint64                                 `protobuf:"varint,6,opt,name=signed_batches_window,json=signedBatchesWindow,proto3" json:"signed_batches_window,omitempty"`
	TargetBatchTimeout            uint64                                 `protobuf:"varint,7,opt,name=target_batch_timeout,json=targetBatchTimeout,proto3" json:"target_batch_timeout,omitempty"`
	AverageBlockTime              uint64                                 `protobuf:"varint,8,opt,name=average_block_time,json=averageBlockTime,proto3" json:"average_block_time,omitempty"`
	AverageEthereumBlockTime      uint64                                 `protobuf:"varint,9,opt,name=average_ethereum_block_time,json=averageEthereumBlockTime,proto3" json:"average_ethereum_block_time,omitempty"`
	SlashFractionValset           github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=slash_fraction_valset,json=slashFractionValset,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_valset"`
	SlashFractionBatch            github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=slash_fraction_batch,json=slashFractionBatch,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_batch"`
	SlashFractionClaim            github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=slash_fraction_claim,json=slashFractionClaim,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_claim"`
	SlashFractionConflictingClaim github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=slash_fraction_conflicting_claim,json=slashFractionConflictingClaim,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_conflicting_claim"`
	UnbondSlashingValsetsWindow   uint64                                 `protobuf:"varint,14,opt,name=unbond_slashing_valsets_window,json=unbondSlashingValsetsWindow,proto3" json:"unbond_slashing_valsets_window,omitempty"`
	SlashFractionBadEthSignature  github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,15,opt,name=slash_fraction_bad_eth_signature,json=slashFractionBadEthSignature,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slash_fraction_bad_eth_signature"`
	BridgeContractStartHeight     uint64                                 `protobuf:"varint,16,opt,name=bridge_contract_start_height,json=bridgeContractStartHeight,proto3" json:"bridge_contract_start_height,omitempty"`
	ValsetReward                  types.Coin                             `protobuf:"bytes,17,opt,name=valset_reward,json=valsetReward,proto3" json:"valset_reward"`
}

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_3a3891bc0dfe5831, []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) GetPeggyId() string {
	if m != nil {
		return m.PeggyId
	}
	return ""
}

func (m *Params) GetContractSourceHash() string {
	if m != nil {
		return m.ContractSourceHash
	}
	return ""
}

func (m *Params) GetBridgeEthereumAddress() string {
	if m != nil {
		return m.BridgeEthereumAddress
	}
	return ""
}

func (m *Params) GetBridgeChainId() uint64 {
	if m != nil {
		return m.BridgeChainId
	}
	return 0
}

func (m *Params) GetSignedValsetsWindow() uint64 {
	if m != nil {
		return m.SignedValsetsWindow
	}
	return 0
}

func (m *Params) GetSignedBatchesWindow() uint64 {
	if m != nil {
		return m.SignedBatchesWindow
	}
	return 0
}

func (m *Params) GetTargetBatchTimeout() uint64 {
	if m != nil {
		return m.TargetBatchTimeout
	}
	return 0
}

func (m *Params) GetAverageBlockTime() uint64 {
	if m != nil {
		return m.AverageBlockTime
	}
	return 0
}

func (m *Params) GetAverageEthereumBlockTime() uint64 {
	if m != nil {
		return m.AverageEthereumBlockTime
	}
	return 0
}

func (m *Params) GetUnbondSlashingValsetsWindow() uint64 {
	if m != nil {
		return m.UnbondSlashingValsetsWindow
	}
	return 0
}

func (m *Params) GetBridgeContractStartHeight() uint64 {
	if m != nil {
		return m.BridgeContractStartHeight
	}
	return 0
}

func (m *Params) GetValsetReward() types.Coin {
	if m != nil {
		return m.ValsetReward
	}
	return types.Coin{}
}

// GenesisState struct
type GenesisState struct {
	Params                     *Params                        `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
	LastObservedNonce          uint64                         `protobuf:"varint,2,opt,name=last_observed_nonce,json=lastObservedNonce,proto3" json:"last_observed_nonce,omitempty"`
	Valsets                    []*Valset                      `protobuf:"bytes,3,rep,name=valsets,proto3" json:"valsets,omitempty"`
	ValsetConfirms             []*MsgValsetConfirm            `protobuf:"bytes,4,rep,name=valset_confirms,json=valsetConfirms,proto3" json:"valset_confirms,omitempty"`
	Batches                    []*OutgoingTxBatch             `protobuf:"bytes,5,rep,name=batches,proto3" json:"batches,omitempty"`
	BatchConfirms              []*MsgConfirmBatch             `protobuf:"bytes,6,rep,name=batch_confirms,json=batchConfirms,proto3" json:"batch_confirms,omitempty"`
	Attestations               []*Attestation                 `protobuf:"bytes,7,rep,name=attestations,proto3" json:"attestations,omitempty"`
	OrchestratorAddresses      []*MsgSetOrchestratorAddresses `protobuf:"bytes,8,rep,name=orchestrator_addresses,json=orchestratorAddresses,proto3" json:"orchestrator_addresses,omitempty"`
	Erc20ToDenoms              []*ERC20ToDenom                `protobuf:"bytes,9,rep,name=erc20_to_denoms,json=erc20ToDenoms,proto3" json:"erc20_to_denoms,omitempty"`
	UnbatchedTransfers         []*OutgoingTransferTx          `protobuf:"bytes,10,rep,name=unbatched_transfers,json=unbatchedTransfers,proto3" json:"unbatched_transfers,omitempty"`
	LastObservedEthereumHeight uint64                         `protobuf:"varint,11,opt,name=last_observed_ethereum_height,json=lastObservedEthereumHeight,proto3" json:"last_observed_ethereum_height,omitempty"`
	LastOutgoingBatchId        uint64                         `protobuf:"varint,12,opt,name=last_outgoing_batch_id,json=lastOutgoingBatchId,proto3" json:"last_outgoing_batch_id,omitempty"`
	LastOutgoingPoolId         uint64                         `protobuf:"varint,13,opt,name=last_outgoing_pool_id,json=lastOutgoingPoolId,proto3" json:"last_outgoing_pool_id,omitempty"`
	LastObservedValset         Valset                         `protobuf:"bytes,14,opt,name=last_observed_valset,json=lastObservedValset,proto3" json:"last_observed_valset"`
}

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_3a3891bc0dfe5831, []int{1}
}
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 nil
}

func (m *GenesisState) GetLastObservedNonce() uint64 {
	if m != nil {
		return m.LastObservedNonce
	}
	return 0
}

func (m *GenesisState) GetValsets() []*Valset {
	if m != nil {
		return m.Valsets
	}
	return nil
}

func (m *GenesisState) GetValsetConfirms() []*MsgValsetConfirm {
	if m != nil {
		return m.ValsetConfirms
	}
	return nil
}

func (m *GenesisState) GetBatches() []*OutgoingTxBatch {
	if m != nil {
		return m.Batches
	}
	return nil
}

func (m *GenesisState) GetBatchConfirms() []*MsgConfirmBatch {
	if m != nil {
		return m.BatchConfirms
	}
	return nil
}

func (m *GenesisState) GetAttestations() []*Attestation {
	if m != nil {
		return m.Attestations
	}
	return nil
}

func (m *GenesisState) GetOrchestratorAddresses() []*MsgSetOrchestratorAddresses {
	if m != nil {
		return m.OrchestratorAddresses
	}
	return nil
}

func (m *GenesisState) GetErc20ToDenoms() []*ERC20ToDenom {
	if m != nil {
		return m.Erc20ToDenoms
	}
	return nil
}

func (m *GenesisState) GetUnbatchedTransfers() []*OutgoingTransferTx {
	if m != nil {
		return m.UnbatchedTransfers
	}
	return nil
}

func (m *GenesisState) GetLastObservedEthereumHeight() uint64 {
	if m != nil {
		return m.LastObservedEthereumHeight
	}
	return 0
}

func (m *GenesisState) GetLastOutgoingBatchId() uint64 {
	if m != nil {
		return m.LastOutgoingBatchId
	}
	return 0
}

func (m *GenesisState) GetLastOutgoingPoolId() uint64 {
	if m != nil {
		return m.LastOutgoingPoolId
	}
	return 0
}

func (m *GenesisState) GetLastObservedValset() Valset {
	if m != nil {
		return m.LastObservedValset
	}
	return Valset{}
}

func init() {
	proto.RegisterType((*Params)(nil), "umeenetwork.umee.peggy.v1.Params")
	proto.RegisterType((*GenesisState)(nil), "umeenetwork.umee.peggy.v1.GenesisState")
}

func init() { proto.RegisterFile("umee/peggy/v1/genesis.proto", fileDescriptor_3a3891bc0dfe5831) }

var fileDescriptor_3a3891bc0dfe5831 = []byte{
	// 1057 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdd, 0x4e, 0x1b, 0x47,
	0x14, 0xc6, 0xc5, 0xe1, 0x67, 0xc0, 0x90, 0x0c, 0x3f, 0x1d, 0x20, 0x31, 0x6e, 0x2e, 0x28, 0x4a,
	0xcb, 0x1a, 0x88, 0x14, 0xa9, 0xad, 0xaa, 0x0a, 0x0c, 0x6d, 0xa8, 0x94, 0x92, 0xae, 0xad, 0x56,
	0xed, 0x45, 0xb7, 0xb3, 0xbb, 0xc3, 0xee, 0x0a, 0xef, 0x8e, 0x35, 0x33, 0xb6, 0xc9, 0x5d, 0x1f,
	0xa1, 0x77, 0x7d, 0x84, 0xbe, 0x4a, 0x2e, 0x73, 0x59, 0x55, 0x55, 0x54, 0xc1, 0x8b, 0x54, 0x73,
	0x66, 0xd6, 0xac, 0x5d, 0x6a, 0x2a, 0x94, 0x2b, 0xd8, 0xfd, 0xce, 0xf7, 0x7d, 0x67, 0xcf, 0x9c,
	0x73, 0xc6, 0x68, 0xa3, 0x9b, 0x32, 0x56, 0xef, 0xb0, 0x28, 0x7a, 0x55, 0xef, 0xed, 0xd5, 0x23,
	0x96, 0x31, 0x99, 0x48, 0xa7, 0x23, 0xb8, 0xe2, 0x78, 0x4d, 0x83, 0x19, 0x53, 0x7d, 0x2e, 0xce,
	0x1d, 0xfd, 0xbf, 0x03, 0x81, 0x4e, 0x6f, 0x6f, 0x7d, 0x39, 0xe2, 0x11, 0x87, 0xa8, 0xba, 0xfe,
	0xcf, 0x10, 0xd6, 0xd7, 0x86, 0xd5, 0xd4, 0xab, 0x0e, 0xb3, 0x5a, 0xeb, 0xab, 0x23, 0xd0, 0xc5,
	0xcd, 0x14, 0x9f, 0xaa, 0x20, 0xb6, 0xd0, 0xe6, 0x30, 0x44, 0x95, 0x62, 0x52, 0x51, 0x95, 0xf0,
	0xcc, 0x06, 0x54, 0x03, 0x2e, 0x53, 0x2e, 0xeb, 0x3e, 0x95, 0xac, 0xde, 0xdb, 0xf3, 0x99, 0xa2,
	0x7b, 0xf5, 0x80, 0x27, 0x16, 0x7f, 0xfc, 0xfb, 0x2c, 0x9a, 0x7a, 0x49, 0x05, 0x4d, 0x25, 0x5e,
	0x43, 0x33, 0x20, 0xe4, 0x25, 0x21, 0x29, 0xd5, 0x4a, 0xdb, 0xb3, 0xee, 0x34, 0x3c, 0x9f, 0x84,
	0x78, 0x17, 0x2d, 0x07, 0x3c, 0x53, 0x82, 0x06, 0xca, 0x93, 0xbc, 0x2b, 0x02, 0xe6, 0xc5, 0x54,
	0xc6, 0xe4, 0x3d, 0x08, 0xc3, 0x39, 0xd6, 0x04, 0xe8, 0x39, 0x95, 0x31, 0x7e, 0x86, 0xde, 0xf7,
	0x45, 0x12, 0x46, 0xcc, 0x63, 0x2a, 0x66, 0x82, 0x75, 0x53, 0x8f, 0x86, 0xa1, 0x60, 0x52, 0x92,
	0x49, 0x20, 0xad, 0x18, 0xf8, 0xd8, 0xa2, 0x07, 0x06, 0xc4, 0x5b, 0x68, 0xd1, 0xf2, 0x82, 0x98,
	0x26, 0x99, 0xce, 0xa5, 0x5c, 0x2b, 0x6d, 0x97, 0xdd, 0x8a, 0x79, 0xdd, 0xd0, 0x6f, 0x4f, 0x42,
	0xbc, 0x8f, 0x56, 0x64, 0x12, 0x65, 0x2c, 0xf4, 0x7a, 0xb4, 0x2d, 0x99, 0x92, 0x5e, 0x3f, 0xc9,
	0x42, 0xde, 0x27, 0xf7, 0x20, 0x7a, 0xc9, 0x80, 0xdf, 0x19, 0xec, 0x7b, 0x80, 0x0a, 0x1c, 0x28,
	0x21, 0x1b, 0x70, 0xa6, 0x8a, 0x9c, 0x43, 0x83, 0x59, 0xce, 0x2e, 0x5a, 0x56, 0x54, 0x44, 0x4c,
	0x19, 0x8e, 0xa7, 0x92, 0x94, 0xf1, 0xae, 0x22, 0xd3, 0x40, 0xc1, 0x06, 0x03, 0x4a, 0xcb, 0x20,
	0xf8, 0x63, 0x84, 0x69, 0x8f, 0x09, 0x1a, 0x31, 0xcf, 0x6f, 0xf3, 0xe0, 0x1c, 0x28, 0x64, 0x06,
	0xe2, 0xef, 0x5b, 0xe4, 0x50, 0x03, 0x9a, 0x80, 0x3f, 0x47, 0x1b, 0x79, 0xf4, 0xa0, 0x50, 0x05,
	0xda, 0x2c, 0xd0, 0x88, 0x0d, 0xc9, 0x8b, 0x75, 0x4d, 0xf7, 0xd1, 0x8a, 0x6c, 0x53, 0x19, 0x7b,
	0x67, 0xba, 0xfe, 0x09, 0xcf, 0x6c, 0x39, 0x08, 0xaa, 0x95, 0xb6, 0xe7, 0x0f, 0x9d, 0xd7, 0x6f,
	0x37, 0x27, 0xfe, 0x7c, 0xbb, 0xb9, 0x15, 0x25, 0x2a, 0xee, 0xfa, 0x4e, 0xc0, 0xd3, 0xba, 0x6d,
	0x08, 0xf3, 0x67, 0x47, 0x86, 0xe7, 0xb6, 0x07, 0x8f, 0x58, 0xe0, 0x2e, 0x81, 0xd8, 0x97, 0x56,
	0xcb, 0x54, 0x0f, 0xff, 0x8c, 0x96, 0x47, 0x3c, 0xa0, 0x14, 0x64, 0xee, 0x4e, 0x16, 0x78, 0xc8,
	0x02, 0x2a, 0x77, 0x83, 0x43, 0xd0, 0xa6, 0x49, 0x4a, 0xe6, 0xdf, 0x81, 0x43, 0x43, 0x2b, 0xe1,
	0x3e, 0xaa, 0x8d, 0x3a, 0xf0, 0xec, 0xac, 0x9d, 0x04, 0x2a, 0xc9, 0x22, 0xeb, 0x56, 0xb9, 0x93,
	0xdb, 0xa3, 0x61, 0xb7, 0x6b, 0x55, 0x63, 0xdc, 0x40, 0xd5, 0x6e, 0xe6, 0xf3, 0x2c, 0xf4, 0x20,
	0x4e, 0xbb, 0x8d, 0x34, 0xec, 0x02, 0x1c, 0xf1, 0x86, 0x89, 0x6a, 0xda, 0xa0, 0xe1, 0xc6, 0xed,
	0xfd, 0x2b, 0x7b, 0x9f, 0x86, 0xba, 0x5f, 0x3c, 0xdd, 0xb2, 0x54, 0x75, 0x05, 0x23, 0x8b, 0x77,
	0xca, 0xfe, 0xe1, 0xc8, 0x69, 0x84, 0xc7, 0x2a, 0x6e, 0xe6, 0x9a, 0xf8, 0x0b, 0xf4, 0x30, 0x1f,
	0xc6, 0xc1, 0xf4, 0x2b, 0x2a, 0x94, 0x17, 0xb3, 0x24, 0x8a, 0x15, 0xb9, 0x0f, 0xa9, 0xaf, 0xd9,
	0xc9, 0xcc, 0x97, 0x80, 0x8e, 0x78, 0x0e, 0x01, 0xf8, 0x08, 0x55, 0xcc, 0xd7, 0x7a, 0x82, 0xf5,
	0xa9, 0x08, 0xc9, 0x83, 0x5a, 0x69, 0x7b, 0x6e, 0x7f, 0xcd, 0x31, 0xc9, 0x38, 0x7a, 0x2b, 0x39,
	0x76, 0x2b, 0x39, 0x0d, 0x9e, 0x64, 0x87, 0x65, 0xfd, 0x01, 0xee, 0xbc, 0x61, 0xb9, 0x40, 0xfa,
	0xb4, 0xfc, 0xcb, 0x5f, 0xb5, 0x89, 0xc7, 0xbf, 0xcd, 0xa0, 0xf9, 0xaf, 0xcc, 0xee, 0x6d, 0x2a,
	0xaa, 0x18, 0xfe, 0x04, 0x4d, 0x75, 0x60, 0x73, 0xc1, 0xb6, 0x9a, 0xdb, 0xff, 0xc0, 0xf9, 0xcf,
	0x5d, 0xec, 0x98, 0x15, 0xe7, 0x5a, 0x02, 0x76, 0xd0, 0x52, 0x9b, 0x4a, 0xe5, 0x71, 0x5f, 0x32,
	0xd1, 0x63, 0xa1, 0x97, 0xf1, 0x2c, 0x60, 0xb0, 0xce, 0xca, 0xee, 0x03, 0x0d, 0x9d, 0x5a, 0xe4,
	0x1b, 0x0d, 0xe0, 0xcf, 0xd0, 0xb4, 0x3d, 0x35, 0x32, 0x59, 0x9b, 0xbc, 0xc5, 0xcb, 0x9c, 0x9d,
	0x9b, 0x33, 0x70, 0x0b, 0x2d, 0xda, 0x22, 0xe8, 0x9e, 0x4b, 0x44, 0x2a, 0x49, 0x19, 0x44, 0x3e,
	0x1a, 0x23, 0xf2, 0x42, 0xda, 0x1e, 0x68, 0x18, 0x8e, 0xbb, 0xd0, 0x2b, 0x3e, 0x4a, 0x7c, 0x84,
	0xa6, 0xed, 0x16, 0x23, 0xf7, 0x40, 0xed, 0xc9, 0x18, 0xb5, 0xd3, 0xae, 0x8a, 0x78, 0x92, 0x45,
	0xad, 0x0b, 0x18, 0x38, 0x37, 0xa7, 0xe2, 0x6f, 0xd1, 0x82, 0xd9, 0x6b, 0x83, 0xd4, 0xa6, 0x6e,
	0x15, 0x7b, 0x21, 0x23, 0x9b, 0x85, 0x11, 0xab, 0x80, 0xc2, 0x20, 0xb1, 0xaf, 0xd1, 0x7c, 0xe1,
	0x1a, 0x92, 0x64, 0x1a, 0x04, 0xb7, 0xc6, 0x08, 0x1e, 0x5c, 0x87, 0xbb, 0x43, 0x5c, 0x9c, 0xa2,
	0x55, 0x2e, 0x74, 0xa2, 0x4a, 0x50, 0xc5, 0x45, 0x7e, 0x85, 0x30, 0x49, 0x66, 0x40, 0xf5, 0xd9,
	0xf8, 0x34, 0x9b, 0x4c, 0x9d, 0x16, 0xe8, 0x07, 0x39, 0xdb, 0x5d, 0xe1, 0x37, 0xbd, 0xc6, 0xa7,
	0x68, 0x91, 0x89, 0x60, 0x7f, 0xd7, 0x53, 0xdc, 0x0b, 0x59, 0xc6, 0x53, 0x49, 0x66, 0xc1, 0xe7,
	0xc3, 0x31, 0x3e, 0xc7, 0x6e, 0x63, 0x7f, 0xb7, 0xc5, 0x8f, 0x74, 0xbc, 0x5b, 0x01, 0xbe, 0x7d,
	0x92, 0xf8, 0x27, 0xb4, 0xd4, 0xcd, 0x4c, 0xad, 0x43, 0x4f, 0x09, 0x9a, 0xc9, 0x33, 0x26, 0x24,
	0x41, 0x20, 0xba, 0xf3, 0x7f, 0x0e, 0xcc, 0x72, 0x5a, 0x17, 0x2e, 0x1e, 0x28, 0xe5, 0x2f, 0x25,
	0x3e, 0x40, 0x8f, 0x86, 0xfb, 0x78, 0x70, 0x87, 0xd8, 0x09, 0x9d, 0x83, 0x8e, 0x5e, 0x2f, 0x76,
	0x74, 0x7e, 0x89, 0xd8, 0x11, 0x7d, 0x8a, 0x56, 0x8d, 0x84, 0x75, 0xb4, 0xf7, 0x5c, 0x12, 0xc2,
	0xf6, 0x2d, 0xbb, 0x30, 0x28, 0x79, 0x3a, 0x70, 0xe0, 0x27, 0x21, 0xde, 0x43, 0x2b, 0xc3, 0xa4,
	0x0e, 0xe7, 0x6d, 0xcd, 0xa9, 0x98, 0x6b, 0xb1, 0xc8, 0x79, 0xc9, 0x79, 0xfb, 0x24, 0xc4, 0x3f,
	0xa0, 0xe5, 0xe1, 0x54, 0xed, 0x45, 0xb5, 0x70, 0xeb, 0xec, 0x9a, 0x39, 0xb0, 0x9b, 0x01, 0x17,
	0x3f, 0xc5, 0x22, 0x47, 0xaf, 0x2f, 0xab, 0xa5, 0x37, 0x97, 0xd5, 0xd2, 0xdf, 0x97, 0xd5, 0xd2,
	0xaf, 0x57, 0xd5, 0x89, 0x37, 0x57, 0xd5, 0x89, 0x3f, 0xae, 0xaa, 0x13, 0x3f, 0x3e, 0x29, 0xac,
	0x41, 0x2d, 0xba, 0x63, 0x1d, 0xe0, 0xa1, 0x7e, 0x61, 0x7f, 0x38, 0xc1, 0x3a, 0xf4, 0xa7, 0xe0,
	0x07, 0xd1, 0xd3, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0x53, 0x20, 0x3b, 0x91, 0xef, 0x09, 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
	{
		size, err := m.ValsetReward.MarshalToSizedBuffer(dAtA[:i])
		if err != nil {
			return 0, err
		}
		i -= size
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x1
	i--
	dAtA[i] = 0x8a
	if m.BridgeContractStartHeight != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.BridgeContractStartHeight))
		i--
		dAtA[i] = 0x1
		i--
		dAtA[i] = 0x80
	}
	{
		size := m.SlashFractionBadEthSignature.Size()
		i -= size
		if _, err := m.SlashFractionBadEthSignature.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x7a
	if m.UnbondSlashingValsetsWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.UnbondSlashingValsetsWindow))
		i--
		dAtA[i] = 0x70
	}
	{
		size := m.SlashFractionConflictingClaim.Size()
		i -= size
		if _, err := m.SlashFractionConflictingClaim.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x6a
	{
		size := m.SlashFractionClaim.Size()
		i -= size
		if _, err := m.SlashFractionClaim.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x62
	{
		size := m.SlashFractionBatch.Size()
		i -= size
		if _, err := m.SlashFractionBatch.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x5a
	{
		size := m.SlashFractionValset.Size()
		i -= size
		if _, err := m.SlashFractionValset.MarshalTo(dAtA[i:]); err != nil {
			return 0, err
		}
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x52
	if m.AverageEthereumBlockTime != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.AverageEthereumBlockTime))
		i--
		dAtA[i] = 0x48
	}
	if m.AverageBlockTime != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.AverageBlockTime))
		i--
		dAtA[i] = 0x40
	}
	if m.TargetBatchTimeout != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.TargetBatchTimeout))
		i--
		dAtA[i] = 0x38
	}
	if m.SignedBatchesWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.SignedBatchesWindow))
		i--
		dAtA[i] = 0x30
	}
	if m.SignedValsetsWindow != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.SignedValsetsWindow))
		i--
		dAtA[i] = 0x28
	}
	if m.BridgeChainId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.BridgeChainId))
		i--
		dAtA[i] = 0x20
	}
	if len(m.BridgeEthereumAddress) > 0 {
		i -= len(m.BridgeEthereumAddress)
		copy(dAtA[i:], m.BridgeEthereumAddress)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.BridgeEthereumAddress)))
		i--
		dAtA[i] = 0x1a
	}
	if len(m.ContractSourceHash) > 0 {
		i -= len(m.ContractSourceHash)
		copy(dAtA[i:], m.ContractSourceHash)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.ContractSourceHash)))
		i--
		dAtA[i] = 0x12
	}
	if len(m.PeggyId) > 0 {
		i -= len(m.PeggyId)
		copy(dAtA[i:], m.PeggyId)
		i = encodeVarintGenesis(dAtA, i, uint64(len(m.PeggyId)))
		i--
		dAtA[i] = 0xa
	}
	return len(dAtA) - i, nil
}

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.LastObservedValset.MarshalToSizedBuffer(dAtA[:i])
		if err != nil {
			return 0, err
		}
		i -= size
		i = encodeVarintGenesis(dAtA, i, uint64(size))
	}
	i--
	dAtA[i] = 0x72
	if m.LastOutgoingPoolId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastOutgoingPoolId))
		i--
		dAtA[i] = 0x68
	}
	if m.LastOutgoingBatchId != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastOutgoingBatchId))
		i--
		dAtA[i] = 0x60
	}
	if m.LastObservedEthereumHeight != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastObservedEthereumHeight))
		i--
		dAtA[i] = 0x58
	}
	if len(m.UnbatchedTransfers) > 0 {
		for iNdEx := len(m.UnbatchedTransfers) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.UnbatchedTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x52
		}
	}
	if len(m.Erc20ToDenoms) > 0 {
		for iNdEx := len(m.Erc20ToDenoms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Erc20ToDenoms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x4a
		}
	}
	if len(m.OrchestratorAddresses) > 0 {
		for iNdEx := len(m.OrchestratorAddresses) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.OrchestratorAddresses[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x42
		}
	}
	if len(m.Attestations) > 0 {
		for iNdEx := len(m.Attestations) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Attestations[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x3a
		}
	}
	if len(m.BatchConfirms) > 0 {
		for iNdEx := len(m.BatchConfirms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.BatchConfirms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x32
		}
	}
	if len(m.Batches) > 0 {
		for iNdEx := len(m.Batches) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Batches[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x2a
		}
	}
	if len(m.ValsetConfirms) > 0 {
		for iNdEx := len(m.ValsetConfirms) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.ValsetConfirms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x22
		}
	}
	if len(m.Valsets) > 0 {
		for iNdEx := len(m.Valsets) - 1; iNdEx >= 0; iNdEx-- {
			{
				size, err := m.Valsets[iNdEx].MarshalToSizedBuffer(dAtA[:i])
				if err != nil {
					return 0, err
				}
				i -= size
				i = encodeVarintGenesis(dAtA, i, uint64(size))
			}
			i--
			dAtA[i] = 0x1a
		}
	}
	if m.LastObservedNonce != 0 {
		i = encodeVarintGenesis(dAtA, i, uint64(m.LastObservedNonce))
		i--
		dAtA[i] = 0x10
	}
	if m.Params != nil {
		{
			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 *Params) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	l = len(m.PeggyId)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	l = len(m.ContractSourceHash)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	l = len(m.BridgeEthereumAddress)
	if l > 0 {
		n += 1 + l + sovGenesis(uint64(l))
	}
	if m.BridgeChainId != 0 {
		n += 1 + sovGenesis(uint64(m.BridgeChainId))
	}
	if m.SignedValsetsWindow != 0 {
		n += 1 + sovGenesis(uint64(m.SignedValsetsWindow))
	}
	if m.SignedBatchesWindow != 0 {
		n += 1 + sovGenesis(uint64(m.SignedBatchesWindow))
	}
	if m.TargetBatchTimeout != 0 {
		n += 1 + sovGenesis(uint64(m.TargetBatchTimeout))
	}
	if m.AverageBlockTime != 0 {
		n += 1 + sovGenesis(uint64(m.AverageBlockTime))
	}
	if m.AverageEthereumBlockTime != 0 {
		n += 1 + sovGenesis(uint64(m.AverageEthereumBlockTime))
	}
	l = m.SlashFractionValset.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionBatch.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionClaim.Size()
	n += 1 + l + sovGenesis(uint64(l))
	l = m.SlashFractionConflictingClaim.Size()
	n += 1 + l + sovGenesis(uint64(l))
	if m.UnbondSlashingValsetsWindow != 0 {
		n += 1 + sovGenesis(uint64(m.UnbondSlashingValsetsWindow))
	}
	l = m.SlashFractionBadEthSignature.Size()
	n += 1 + l + sovGenesis(uint64(l))
	if m.BridgeContractStartHeight != 0 {
		n += 2 + sovGenesis(uint64(m.BridgeContractStartHeight))
	}
	l = m.ValsetReward.Size()
	n += 2 + l + sovGenesis(uint64(l))
	return n
}

func (m *GenesisState) Size() (n int) {
	if m == nil {
		return 0
	}
	var l int
	_ = l
	if m.Params != nil {
		l = m.Params.Size()
		n += 1 + l + sovGenesis(uint64(l))
	}
	if m.LastObservedNonce != 0 {
		n += 1 + sovGenesis(uint64(m.LastObservedNonce))
	}
	if len(m.Valsets) > 0 {
		for _, e := range m.Valsets {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.ValsetConfirms) > 0 {
		for _, e := range m.ValsetConfirms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Batches) > 0 {
		for _, e := range m.Batches {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.BatchConfirms) > 0 {
		for _, e := range m.BatchConfirms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Attestations) > 0 {
		for _, e := range m.Attestations {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.OrchestratorAddresses) > 0 {
		for _, e := range m.OrchestratorAddresses {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.Erc20ToDenoms) > 0 {
		for _, e := range m.Erc20ToDenoms {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if len(m.UnbatchedTransfers) > 0 {
		for _, e := range m.UnbatchedTransfers {
			l = e.Size()
			n += 1 + l + sovGenesis(uint64(l))
		}
	}
	if m.LastObservedEthereumHeight != 0 {
		n += 1 + sovGenesis(uint64(m.LastObservedEthereumHeight))
	}
	if m.LastOutgoingBatchId != 0 {
		n += 1 + sovGenesis(uint64(m.LastOutgoingBatchId))
	}
	if m.LastOutgoingPoolId != 0 {
		n += 1 + sovGenesis(uint64(m.LastOutgoingPoolId))
	}
	l = m.LastObservedValset.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 *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 PeggyId", 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.PeggyId = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 2:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ContractSourceHash", 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.ContractSourceHash = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeEthereumAddress", 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.BridgeEthereumAddress = string(dAtA[iNdEx:postIndex])
			iNdEx = postIndex
		case 4:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeChainId", wireType)
			}
			m.BridgeChainId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.BridgeChainId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 5:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SignedValsetsWindow", wireType)
			}
			m.SignedValsetsWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SignedValsetsWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 6:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field SignedBatchesWindow", wireType)
			}
			m.SignedBatchesWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.SignedBatchesWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 7:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field TargetBatchTimeout", wireType)
			}
			m.TargetBatchTimeout = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.TargetBatchTimeout |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 8:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field AverageBlockTime", wireType)
			}
			m.AverageBlockTime = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.AverageBlockTime |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 9:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field AverageEthereumBlockTime", wireType)
			}
			m.AverageEthereumBlockTime = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.AverageEthereumBlockTime |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 10:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionValset", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionValset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 11:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionBatch", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionBatch.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 12:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionClaim", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionClaim.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 13:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionConflictingClaim", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionConflictingClaim.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 14:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field UnbondSlashingValsetsWindow", wireType)
			}
			m.UnbondSlashingValsetsWindow = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.UnbondSlashingValsetsWindow |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 15:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field SlashFractionBadEthSignature", wireType)
			}
			var byteLen int
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				byteLen |= int(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
			if byteLen < 0 {
				return ErrInvalidLengthGenesis
			}
			postIndex := iNdEx + byteLen
			if postIndex < 0 {
				return ErrInvalidLengthGenesis
			}
			if postIndex > l {
				return io.ErrUnexpectedEOF
			}
			if err := m.SlashFractionBadEthSignature.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 16:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field BridgeContractStartHeight", wireType)
			}
			m.BridgeContractStartHeight = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.BridgeContractStartHeight |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 17:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ValsetReward", 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.ValsetReward.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 *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 m.Params == nil {
				m.Params = &Params{}
			}
			if err := m.Params.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 2:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedNonce", wireType)
			}
			m.LastObservedNonce = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastObservedNonce |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 3:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Valsets", 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.Valsets = append(m.Valsets, &Valset{})
			if err := m.Valsets[len(m.Valsets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 4:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field ValsetConfirms", 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.ValsetConfirms = append(m.ValsetConfirms, &MsgValsetConfirm{})
			if err := m.ValsetConfirms[len(m.ValsetConfirms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 5:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Batches", 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.Batches = append(m.Batches, &OutgoingTxBatch{})
			if err := m.Batches[len(m.Batches)-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 BatchConfirms", 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.BatchConfirms = append(m.BatchConfirms, &MsgConfirmBatch{})
			if err := m.BatchConfirms[len(m.BatchConfirms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 7:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Attestations", 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.Attestations = append(m.Attestations, &Attestation{})
			if err := m.Attestations[len(m.Attestations)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 8:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field OrchestratorAddresses", 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.OrchestratorAddresses = append(m.OrchestratorAddresses, &MsgSetOrchestratorAddresses{})
			if err := m.OrchestratorAddresses[len(m.OrchestratorAddresses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 9:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field Erc20ToDenoms", 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.Erc20ToDenoms = append(m.Erc20ToDenoms, &ERC20ToDenom{})
			if err := m.Erc20ToDenoms[len(m.Erc20ToDenoms)-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 UnbatchedTransfers", 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.UnbatchedTransfers = append(m.UnbatchedTransfers, &OutgoingTransferTx{})
			if err := m.UnbatchedTransfers[len(m.UnbatchedTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
				return err
			}
			iNdEx = postIndex
		case 11:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedEthereumHeight", wireType)
			}
			m.LastObservedEthereumHeight = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastObservedEthereumHeight |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 12:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastOutgoingBatchId", wireType)
			}
			m.LastOutgoingBatchId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastOutgoingBatchId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 13:
			if wireType != 0 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastOutgoingPoolId", wireType)
			}
			m.LastOutgoingPoolId = 0
			for shift := uint(0); ; shift += 7 {
				if shift >= 64 {
					return ErrIntOverflowGenesis
				}
				if iNdEx >= l {
					return io.ErrUnexpectedEOF
				}
				b := dAtA[iNdEx]
				iNdEx++
				m.LastOutgoingPoolId |= uint64(b&0x7F) << shift
				if b < 0x80 {
					break
				}
			}
		case 14:
			if wireType != 2 {
				return fmt.Errorf("proto: wrong wireType = %d for field LastObservedValset", 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.LastObservedValset.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")
)
