From 3337c6114f5e8f78971edf6900ec4b3dd28d56e2 Mon Sep 17 00:00:00 2001 From: Geoff Stuart Date: Fri, 22 Nov 2024 04:53:28 -0500 Subject: [PATCH] bindings --- .../ERC20TokenStakingManager.go | 589 +++++++++++++++++- .../NativeTokenStakingManager.go | 589 +++++++++++++++++- .../PoAValidatorManager.go | 136 +++- 3 files changed, 1308 insertions(+), 6 deletions(-) diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 9fbc69364..363f00e93 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -37,6 +37,17 @@ type ConversionData struct { InitialValidators []InitialValidator } +// Delegator is an auto generated low-level Go binding around an user-defined struct. +type Delegator struct { + Status uint8 + Owner common.Address + ValidationID [32]byte + Weight uint64 + StartedAt uint64 + StartingNonce uint64 + EndingNonce uint64 +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -50,6 +61,14 @@ type PChainOwner struct { Addresses []common.Address } +// PoSValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type PoSValidatorInfo struct { + Owner common.Address + DelegationFeeBips uint16 + MinStakeDuration uint64 + UptimeSeconds uint64 +} + // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { BaseSettings ValidatorManagerSettings @@ -74,6 +93,14 @@ type Validator struct { EndedAt uint64 } +// ValidatorChurnPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorChurnPeriod struct { + StartedAt *big.Int + InitialWeight *big.Int + TotalWeight *big.Int + ChurnAmount uint64 +} + // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { SubnetID [32]byte @@ -103,8 +130,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615eda380380615eda83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615d8d8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061023f575f3560e01c806380dd672f11610135578063b771b3bc116100b4578063d5f20ff611610079578063d5f20ff614610516578063df93d8de14610536578063e4a63c4014610540578063fb8b11dd14610554578063fd7ac5e714610567575f80fd5b8063b771b3bc146104ae578063ba3a4b97146104d4578063bc5fbfec146104e7578063bee0a03f146104fb578063c974d1b61461050e575f80fd5b80639e1bc4ef116100fa5780639e1bc4ef1461044e5780639e478eea14610461578063a3a65e4814610474578063a9778a7a146102ee578063afb9809614610487575f80fd5b806380dd672f146103fa5780638280a25a1461040d5780638ef34c981461041557806393e24598146104285780639ae064471461043b575f80fd5b8063467ef06f116101c1578063620658561161018657806362065856146103a757806366435abf146103ba578063732214f8146103cd57806376f78621146103d45780637d8d2f77146103e7575f80fd5b8063467ef06f146103305780634bee0040146103435780635dd6a6cb1461036457806360305d621461037757806360ad778414610394575f80fd5b806325e1c7761161020757806325e1c776146102b05780632e2194d8146102c357806335455ded146102ee57806337b9be8f1461030a5780633a1cfff61461031d575f80fd5b80630118acc4146102435780630322ed9814610258578063151d30d11461026b5780631ec447241461028a57806320d91b7a1461029d575b5f80fd5b610256610251366004614cd1565b61057a565b005b610256610266366004614d0c565b61058b565b610273600a81565b60405160ff90911681526020015b60405180910390f35b610256610298366004614cd1565b61081b565b6102566102ab366004614d23565b610827565b6102566102be366004614d71565b610dac565b6102d66102d1366004614d0c565b610e20565b6040516001600160401b039091168152602001610281565b6102f761271081565b60405161ffff9091168152602001610281565b610256610318366004614da6565b610e74565b61025661032b366004614cd1565b610e87565b61025661033e366004614df4565b610e93565b610356610351366004614e32565b610f78565b604051908152602001610281565b610256610372366004614da6565b610fad565b61037f601481565b60405163ffffffff9091168152602001610281565b6102566103a2366004614d71565b610fb9565b6103566103b5366004614e99565b611286565b6102d66103c8366004614d0c565b6112a6565b6103565f81565b6102566103e2366004614cd1565b6112ba565b6102566103f5366004614da6565b6112c6565b610256610408366004614d71565b6112d2565b610273603081565b610256610423366004614eb4565b61150c565b610256610436366004614d0c565b6115ed565b610256610449366004614da6565b611681565b61035661045c366004614ee2565b61168d565b61025661046f366004614f02565b6116b9565b610256610482366004614df4565b611798565b6103567f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6104bc6005600160991b0181565b6040516001600160a01b039091168152602001610281565b6102566104e2366004614d0c565b61198d565b6103565f80516020615cf883398151915281565b610256610509366004614d0c565b611be6565b610273601481565b610529610524366004614d0c565b611d23565b6040516102819190614faa565b6102d66202a30081565b6103565f80516020615cd883398151915281565b610256610562366004614eb4565b611e72565b61035661057536600461502a565b611f39565b6105868383835f611f94565b505050565b5f8181525f80516020615d388339815191526020526040808220815160e0810190925280545f80516020615cf883398151915293929190829060ff1660058111156105d8576105d8614f35565b60058111156105e9576105e9614f35565b81526020016001820180546105fd90615095565b80601f016020809104026020016040519081016040528092919081815260200182805461062990615095565b80156106745780601f1061064b57610100808354040283529160200191610674565b820191905f5260205f20905b81548152906001019060200180831161065757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156106df576106df614f35565b1461071b575f8381526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610792573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107b991908101906151d6565b6040518263ffffffff1660e01b81526004016107d59190615207565b6020604051808303815f875af11580156107f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108159190615219565b50505050565b6108158383835f611fc0565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615cf88339815191529060ff161561087957604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e09190615219565b836020013514610909576040516372b0a7e760e11b815260208401356004820152602401610712565b3061091a6060850160408601615230565b6001600160a01b03161461095d576109386060840160408501615230565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610712565b5f61096b606085018561524b565b905090505f805b828163ffffffff161015610bd2575f61098e606088018861524b565b8363ffffffff168181106109a4576109a4615290565b90506020028101906109b691906152a4565b6109bf9061530f565b80516040519192505f9160088801916109d79161538a565b90815260200160405180910390205414610a0757805160405163a41f772f60e01b81526107129190600401615207565b5f6002885f013584604051602001610a3692919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a509161538a565b602060405180830381855afa158015610a6b573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610a8e9190615219565b90508086600801835f0151604051610aa6919061538a565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610ae690826153df565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610b6590856154ae565b8251604051919550610b769161538a565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610bcb906154c1565b9050610972565b50600483018190556001830154606490610bf690600160401b900460ff16836154e3565b1015610c1857604051635943317f60e01b815260048101829052602401610712565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c3c876122ed565b604001516040518263ffffffff1660e01b8152600401610c5c9190615207565b602060405180830381865af4158015610c77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9b9190615219565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610cd59190615625565b5f60405180830381865af4158015610cef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d1691908101906151d6565b90505f600282604051610d29919061538a565b602060405180830381855afa158015610d44573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d679190615219565b9050828114610d935760405163baaea89d60e01b81526004810182905260248101849052604401610712565b5050506009909201805460ff1916600117905550505050565b610db582612403565b610dd5576040516330efa98b60e01b815260048101839052602401610712565b5f610ddf83611d23565b5190506002816005811115610df657610df6614f35565b14610e16578060405163170cc93360e21b815260040161071291906150cd565b610815838361242c565b5f80610e2a6126cb565b60030154610e3890846156b9565b9050801580610e4d57506001600160401b0381115b15610e6e5760405163222d164360e21b815260048101849052602401610712565b92915050565b610e8084848484611fc0565b5050505050565b6108158383835f6126ef565b610e9b612911565b5f610ea46126cb565b90505f80610eb184612948565b91509150610ebe82612403565b610eca57505050610f5f565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f01575080610f1f565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f3457610f34614f35565b03610f4357610f438185612cfb565b610f5982610f548560400151611286565b612d25565b50505050505b610f7560015f80516020615d1883398151915255565b50565b5f610f81612911565b610f8d85858585612d5b565b9050610fa560015f80516020615d1883398151915255565b949350505050565b61081584848484612ec0565b5f610fc26126cb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115610ffb57610ffb614f35565b600381111561100c5761100c614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61108282611d23565b905060018351600381111561109957611099614f35565b146110ba578251604051633b0d540d60e21b815261071291906004016156d8565b6004815160058111156110cf576110cf614f35565b036110e5576110dd86612eec565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61110a896122ed565b604001516040518263ffffffff1660e01b815260040161112a9190615207565b606060405180830381865af4158015611145573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116991906156f2565b509150915081841461119657846040015160405163089938b360e11b815260040161071291815260200190565b806001600160401b031683606001516001600160401b031610806111cf5750806001600160401b03168560a001516001600160401b0316115b156111f857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61128f6126cb565b60030154610e6e906001600160401b0384166154e3565b5f6112b082611d23565b6080015192915050565b6105868383835f612ec0565b610e80848484846126ef565b6112da612911565b5f6112e36126cb565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561131c5761131c614f35565b600381111561132d5761132d614f35565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113a6576113a6614f35565b146113c7578051604051633b0d540d60e21b815261071291906004016156d8565b60046113d68260400151611d23565b5160058111156113e8576113e8614f35565b146114e7575f6113f7846122ed565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016114369190615207565b606060405180830381865af4158015611451573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061147591906156f2565b5091509150818460400151146114a15760405163089938b360e11b815260048101839052602401610712565b806001600160401b03168460c001516001600160401b031611156114e357604051632e19bc2d60e11b81526001600160401b0382166004820152602401610712565b5050505b6114f084612eec565b505061150860015f80516020615d1883398151915255565b5050565b5f6115156126cb565b90506001600160a01b0382166115495760405163caa903f960e01b81526001600160a01b0383166004820152602401610712565b5f8381526006820160205260409020546001600160a01b0316331461158f57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610712565b336001600160a01b038316036115be575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f6115f66126cb565b90505f61160283611d23565b519050600481600581111561161957611619614f35565b14611639578060405163170cc93360e21b815260040161071291906150cd565b5f8381526006830160205260409020546001600160a01b0316331461165e573361156a565b5f838152600683016020526040902054610586906001600160a01b031684612cfb565b61081584848484611f94565b5f611696612911565b6116a18333846130f9565b9050610e6e60015f80516020615d1883398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611702575080546001600160401b03808416911610155b156117205760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561174b848461333e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615cf88339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6117cb866122ed565b604001516040518263ffffffff1660e01b81526004016117eb9190615207565b6040805180830381865af4158015611805573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190615732565b915091508061184f57604051632d07135360e01b81528115156004820152602401610712565b5f8281526006840160205260409020805461186990615095565b90505f0361188d5760405163089938b360e11b815260048101839052602401610712565b60015f83815260078501602052604090205460ff1660058111156118b3576118b3614f35565b146118e6575f8281526007840160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b5f82815260068401602052604081206118fe91614c20565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6119966126cb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156119cf576119cf614f35565b60038111156119e0576119e0614f35565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611a5957611a59614f35565b14158015611a7a5750600381516003811115611a7757611a77614f35565b14155b15611a9b578051604051633b0d540d60e21b815261071291906004016156d8565b5f611aa98260400151611d23565b905080606001516001600160401b03165f03611adb576040516339b894f960e21b815260048101859052602401610712565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b4993906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611b63573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611b8a91908101906151d6565b6040518263ffffffff1660e01b8152600401611ba69190615207565b6020604051808303815f875af1158015611bc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e809190615219565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615cf88339815191529190611c2d90615095565b90505f03611c515760405163089938b360e11b815260048101839052602401610712565b60015f83815260078301602052604090205460ff166005811115611c7757611c77614f35565b14611caa575f8281526007820160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611ce39190600401615755565b6020604051808303815f875af1158015611cff573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105869190615219565b611d2b614c57565b5f8281525f80516020615d38833981519152602052604090819020815160e0810190925280545f80516020615cf8833981519152929190829060ff166005811115611d7857611d78614f35565b6005811115611d8957611d89614f35565b8152602001600182018054611d9d90615095565b80601f0160208091040260200160405190810160405280929190818152602001828054611dc990615095565b8015611e145780601f10611deb57610100808354040283529160200191611e14565b820191905f5260205f20905b815481529060010190602001808311611df757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ea45760405163caa903f960e01b81526001600160a01b0382166004820152602401610712565b5f611ead6126cb565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611edb573361156a565b336001600160a01b03831603611f0a575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615cf8833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611f7c90869086906157df565b90815260200160405180910390205491505092915050565b611fa084848484611fc0565b61081557604051631036cf9160e11b815260048101859052602401610712565b5f80611fca6126cb565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561200357612003614f35565b600381111561201457612014614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61208a82611d23565b90506002835160038111156120a1576120a1614f35565b146120c2578251604051633b0d540d60e21b815261071291906004016156d8565b60208301516001600160a01b0316331461215e575f8281526006850160205260409020546001600160a01b031633146120fb573361156a565b5f82815260068501602052604090205460a082015161212a91600160b01b90046001600160401b0316906157ee565b6001600160401b031642101561215e5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b60028151600581111561217357612173614f35565b036122955760028401546080840151612195916001600160401b0316906157ee565b6001600160401b03164210156121c95760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b87156121db576121d9828861242c565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161221491849161220f919061580e565b613358565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561225784888c61352f565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610fa59350505050565b6004815160058111156122aa576122aa614f35565b036122d1576122ba83878b61352f565b506122c489612eec565b6001945050505050610fa5565b805160405163170cc93360e21b815261071291906004016150cd565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612351573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612378919081019061582e565b915091508061239a57604051636b2f19e960e01b815260040160405180910390fd5b8151156123c0578151604051636ba589a560e01b81526004810191909152602401610712565b60208201516001600160a01b0316156123fc576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5092915050565b5f8061240d6126cb565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612477573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261249e919081019061582e565b91509150806124c057604051636b2f19e960e01b815260040160405180910390fd5b5f6124c96126cb565b60058101548451919250146124f7578251604051636ba589a560e01b81526004810191909152602401610712565b60208301516001600160a01b031615612533576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b60208301516001600160a01b03161561256f576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610712565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125ac9190615207565b6040805180830381865af41580156125c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ea91906158be565b915091508188146126115760405163089938b360e11b815260048101899052602401610712565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126a2575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126c0565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806126f96126cb565b90505f61270587613714565b905061271087612403565b61271f57600192505050610fa5565b5f8781526006830160205260409020546001600160a01b03163314612744573361156a565b5f87815260068301602052604090205460a082015161277391600160b01b90046001600160401b0316906157ee565b6001600160401b03168160c001516001600160401b031610156127ba5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610712565b5f86156127d2576127cb888761242c565b90506127f0565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f9061281590611286565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa15801561287e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128a29190615219565b90508084600a015f8b81526020019081526020015f205f8282546128c691906154ae565b90915550506001600160a01b03861615612903575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615d1883398151915280546001190161294257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612951614c57565b5f80516020615cf88339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612984886122ed565b604001516040518263ffffffff1660e01b81526004016129a49190615207565b6040805180830381865af41580156129be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e29190615732565b915091508015612a0957604051632d07135360e01b81528115156004820152602401610712565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a3a57612a3a614f35565b6005811115612a4b57612a4b614f35565b8152602001600182018054612a5f90615095565b80601f0160208091040260200160405190810160405280929190818152602001828054612a8b90615095565b8015612ad65780601f10612aad57610100808354040283529160200191612ad6565b820191905f5260205f20905b815481529060010190602001808311612ab957829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b4157612b41614f35565b14158015612b625750600181516005811115612b5f57612b5f614f35565b14155b15612b8357805160405163170cc93360e21b815261071291906004016150cd565b600381516005811115612b9857612b98614f35565b03612ba65760048152612bab565b600581525b836008018160200151604051612bc1919061538a565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612c0557612c05614f35565b021790555060208201516001820190612c1e90826153df565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612cc457612cc4614f35565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d046126cb565b5f838152600a820160205260408120805491905590915061081584826139f8565b5f80516020615cd883398151915254611508906001600160a01b03168383613a6e565b60015f80516020615d1883398151915255565b5f80612d656126cb565b600281015490915061ffff600160401b90910481169086161080612d8e575061271061ffff8616115b15612db257604051635f12e6c360e11b815261ffff86166004820152602401610712565b60028101546001600160401b039081169085161015612dee576040516202a06d60e11b81526001600160401b0385166004820152602401610712565b8054831080612e005750806001015483115b15612e215760405163222d164360e21b815260048101849052602401610712565b5f612e2b84613acd565b90505f612e3782610e20565b90505f612e448983613af0565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612ecc848484846126ef565b61081557604051635bff683f60e11b815260048101859052602401610712565b5f612ef56126cb565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f2e57612f2e614f35565b6003811115612f3f57612f3f614f35565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150612fdc7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b8260800151612feb91906157ee565b6001600160401b031642101561301f5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610712565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b03168061306f5750602082015161308d565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061309a838886614015565b915091506130b38560200151610f548760600151611286565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131036126cb565b90505f6131126102d185613acd565b90505f61311e87611d23565b905061312987612403565b613149576040516330efa98b60e01b815260048101889052602401610712565b60028151600581111561315e5761315e614f35565b1461317f57805160405163170cc93360e21b815261071291906004016150cd565b5f82826080015161319091906157ee565b905083600201600a9054906101000a90046001600160401b031682604001516131b991906158e1565b6001600160401b0316816001600160401b031611156131f657604051636d51fe0560e11b81526001600160401b0382166004820152602401610712565b5f806132028a84613358565b915091505f8a8360405160200161323092919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b6133466140c2565b61334f8261410d565b61150881614187565b5f8281525f80516020615d38833981519152602052604081206002015481905f80516020615cf883398151915290600160801b90046001600160401b03166133a085826141ef565b5f6133aa87614412565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613453573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261347a91908101906151d6565b6040518263ffffffff1660e01b81526004016134969190615207565b6020604051808303815f875af11580156134b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134d69190615219565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806135396126cb565b90505f6135498660400151611d23565b90505f60038251600581111561356157613561614f35565b148061357f575060048251600581111561357d5761357d614f35565b145b1561358f575060c08101516135cc565b6002825160058111156135a4576135a4614f35565b036135b05750426135cc565b815160405163170cc93360e21b815261071291906004016150cd565b86608001516001600160401b0316816001600160401b0316116135f4575f9350505050613337565b600483015460608801515f916001600160a01b031690634f22429f9061361990611286565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561369a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136be9190615219565b5f878152600886016020526040902081905590506001600160a01b038716156126c0575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61371c614c57565b5f8281525f80516020615d388339815191526020526040808220815160e0810190925280545f80516020615cf883398151915293929190829060ff16600581111561376957613769614f35565b600581111561377a5761377a614f35565b815260200160018201805461378e90615095565b80601f01602080910402602001604051908101604052809291908181526020018280546137ba90615095565b80156138055780601f106137dc57610100808354040283529160200191613805565b820191905f5260205f20905b8154815290600101906020018083116137e857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561387357613873614f35565b146138a6575f8481526007830160205260409081902054905163170cc93360e21b81526107129160ff16906004016150cd565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff191660018360058111156138ea576138ea614f35565b02179055506020820151600182019061390390826153df565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139a18582613358565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f5f80516020615cd883398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613a53575f80fd5b505af1158015613a65573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b0383811660248301526044820183905261058691859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614487565b5f610e6e825f80516020615cd8833981519152546001600160a01b0316906144e8565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b3457604051637fab81e560e01b815260040160405180910390fd5b5f80516020615cf883398151915242613b536060860160408701614e99565b6001600160401b0316111580613b8d5750613b716202a300426154ae565b613b816060860160408701614e99565b6001600160401b031610155b15613bc757613ba26060850160408601614e99565b604051635879da1360e11b81526001600160401b039091166004820152602401610712565b613bdc613bd7606086018661590c565b6144f4565b613bec613bd7608086018661590c565b6030613bfb6020860186615920565b905014613c2d57613c0f6020850185615920565b6040516326475b2f60e11b8152610712925060040190815260200190565b613c378480615920565b90505f03613c6457613c498480615920565b604051633e08a12560e11b8152600401610712929190615962565b5f60088201613c738680615920565b604051613c819291906157df565b90815260200160405180910390205414613cba57613c9f8480615920565b60405163a41f772f60e01b8152600401610712929190615962565b613cc4835f6141ef565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613d018a80615920565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d49908b018b615920565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613d9260608b0160408c01614e99565b6001600160401b03168152602001613dad60608b018b61590c565b613db690615975565b8152602001613dc860808b018b61590c565b613dd190615975565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613dff9190615aa2565b5f60405180830381865af4158015613e19573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e409190810190615b59565b5f82815260068601602052604090209193509150613e5e82826153df565b508160088401613e6e8880615920565b604051613e7c9291906157df565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613eb8908590600401615207565b6020604051808303815f875af1158015613ed4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ef89190615219565b5f8481526007860160205260409020805460ff191660011790559050613f1e8780615920565b5f858152600787016020526040902060010191613f3c919083615b9c565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613f9b8880615920565b604051613fa99291906157df565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190613fe79190614e99565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140206126cb565b5f868152600882016020526040812080549082905591925090819080156140b4575f8781526006850160205260409020546127109061406a90600160a01b900461ffff16836154e3565b61407491906156b9565b91508184600a015f8981526020019081526020015f205f82825461409891906154ae565b909155506140a890508282615c55565b92506140b489846139f8565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661410b57604051631afcd79f60e31b815260040160405180910390fd5b565b6141156140c2565b61411e8161465d565b614126614676565b610f756060820135608083013561414360c0850160a08601614e99565b61415360e0860160c08701615c68565b614164610100870160e08801615c81565b61010087013561417c61014089016101208a01615230565b886101400135614686565b61418f6140c2565b5f80516020615cd88339815191526001600160a01b0382166141cf57604051637330680360e01b81526001600160a01b0383166004820152602401610712565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615cf88339815191525f6001600160401b0380841690851611156142235761421c838561580e565b9050614230565b61422d848461580e565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061429257506001840154815161428e916001600160401b0316906154ae565b8210155b156142b8576001600160401b0383166060820152818152604081015160208201526142d7565b82816060018181516142ca91906157ee565b6001600160401b03169052505b60608101516142e79060646158e1565b602082015160018601546001600160401b0392909216916143129190600160401b900460ff166154e3565b101561434257606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610712565b856001600160401b03168160400181815161435d91906154ae565b9052506040810180516001600160401b038716919061437d908390615c55565b905250600184015460408201516064916143a291600160401b90910460ff16906154e3565b10156143c9578060400151604051635943317f60e01b815260040161071291815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615d388339815191526020526040812060020180545f80516020615cf8833981519152919060089061445c90600160401b90046001600160401b0316615ca1565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f61449b6001600160a01b0384168361486b565b905080515f141580156144bf5750808060200190518101906144bd9190615cbc565b155b1561058657604051635274afe760e01b81526001600160a01b0384166004820152602401610712565b5f613337833384614878565b6145016020820182614df4565b63ffffffff16158015614521575061451c602082018261524b565b151590505b15614568576145336020820182614df4565b614540602083018361524b565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610712565b614575602082018261524b565b90506145846020830183614df4565b63ffffffff16111561459d576145336020820182614df4565b60015b6145ad602083018361524b565b9050811015611508576145c3602083018361524b565b6145ce600184615c55565b8181106145dd576145dd615290565b90506020020160208101906145f29190615230565b6001600160a01b0316614608602084018461524b565b8381811061461857614618615290565b905060200201602081019061462d9190615230565b6001600160a01b0316101561465557604051630dbc8d5f60e31b815260040160405180910390fd5b6001016145a0565b6146656140c2565b61466d6149db565b610f75816149e3565b61467e6140c2565b61410b614acb565b61468e6140c2565b5f6146976126cb565b905061ffff861615806146af575061271061ffff8716115b156146d357604051635f12e6c360e11b815261ffff87166004820152602401610712565b878911156146f75760405163222d164360e21b8152600481018a9052602401610712565b60ff8516158061470a5750600a60ff8616115b1561472d5760405163170db35960e31b815260ff86166004820152602401610712565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614794576040516202a06d60e11b81526001600160401b0388166004820152602401610712565b835f036147b45760405163a733007160e01b815260040160405180910390fd5b816147d557604051632f6bd1db60e01b815260048101839052602401610712565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061333783835f614ad3565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156148be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148e29190615219565b90506148f96001600160a01b038616853086614b62565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa15801561493d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149619190615219565b90508181116149c75760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610712565b6149d18282615c55565b9695505050505050565b61410b6140c2565b6149eb6140c2565b80355f80516020615cf88339815191529081556014614a106060840160408501615c81565b60ff161180614a2f5750614a2a6060830160408401615c81565b60ff16155b15614a6357614a446060830160408401615c81565b604051634a59bbff60e11b815260ff9091166004820152602401610712565b614a736060830160408401615c81565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614aa46040830160208401614e99565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d486140c2565b606081471015614af85760405163cd78605960e01b8152306004820152602401610712565b5f80856001600160a01b03168486604051614b13919061538a565b5f6040518083038185875af1925050503d805f8114614b4d576040519150601f19603f3d011682016040523d82523d5f602084013e614b52565b606091505b50915091506149d1868383614b9b565b6040516001600160a01b0384811660248301528381166044830152606482018390526108159186918216906323b872dd90608401613a9b565b606082614bb057614bab82614bf7565b613337565b8151158015614bc757506001600160a01b0384163b155b15614bf057604051639996b31560e01b81526001600160a01b0385166004820152602401610712565b5080613337565b805115614c075780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614c2c90615095565b5f825580601f10614c3b575050565b601f0160209004905f5260205f2090810190610f759190614c94565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614ca8575f8155600101614c95565b5090565b8015158114610f75575f80fd5b803563ffffffff81168114614ccc575f80fd5b919050565b5f805f60608486031215614ce3575f80fd5b833592506020840135614cf581614cac565b9150614d0360408501614cb9565b90509250925092565b5f60208284031215614d1c575f80fd5b5035919050565b5f8060408385031215614d34575f80fd5b82356001600160401b03811115614d49575f80fd5b830160808186031215614d5a575f80fd5b9150614d6860208401614cb9565b90509250929050565b5f8060408385031215614d82575f80fd5b82359150614d6860208401614cb9565b6001600160a01b0381168114610f75575f80fd5b5f805f8060808587031215614db9575f80fd5b843593506020850135614dcb81614cac565b9250614dd960408601614cb9565b91506060850135614de981614d92565b939692955090935050565b5f60208284031215614e04575f80fd5b61333782614cb9565b803561ffff81168114614ccc575f80fd5b6001600160401b0381168114610f75575f80fd5b5f805f8060808587031215614e45575f80fd5b84356001600160401b03811115614e5a575f80fd5b850160a08188031215614e6b575f80fd5b9350614e7960208601614e0d565b92506040850135614e8981614e1e565b9396929550929360600135925050565b5f60208284031215614ea9575f80fd5b813561333781614e1e565b5f8060408385031215614ec5575f80fd5b823591506020830135614ed781614d92565b809150509250929050565b5f8060408385031215614ef3575f80fd5b50508035926020909101359150565b5f80828403610180811215614f15575f80fd5b61016080821215614f24575f80fd5b8493508301359050614ed781614d92565b634e487b7160e01b5f52602160045260245ffd5b60068110614f5957614f59614f35565b9052565b5f5b83811015614f77578181015183820152602001614f5f565b50505f910152565b5f8151808452614f96816020860160208601614f5d565b601f01601f19169290920160200192915050565b60208152614fbc602082018351614f49565b5f602083015160e06040840152614fd7610100840182614f7f565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561503b575f80fd5b82356001600160401b0380821115615051575f80fd5b818501915085601f830112615064575f80fd5b813581811115615072575f80fd5b866020828501011115615083575f80fd5b60209290920196919550909350505050565b600181811c908216806150a957607f821691505b6020821081036150c757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e6e8284614f49565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615111576151116150db565b60405290565b604080519081016001600160401b0381118282101715615111576151116150db565b604051601f8201601f191681016001600160401b0381118282101715615161576151616150db565b604052919050565b5f6001600160401b03821115615181576151816150db565b50601f01601f191660200190565b5f82601f83011261519e575f80fd5b81516151b16151ac82615169565b615139565b8181528460208386010111156151c5575f80fd5b610fa5826020830160208701614f5d565b5f602082840312156151e6575f80fd5b81516001600160401b038111156151fb575f80fd5b610fa58482850161518f565b602081525f6133376020830184614f7f565b5f60208284031215615229575f80fd5b5051919050565b5f60208284031215615240575f80fd5b813561333781614d92565b5f808335601e19843603018112615260575f80fd5b8301803591506001600160401b03821115615279575f80fd5b6020019150600581901b3603821315613528575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126152b8575f80fd5b9190910192915050565b5f82601f8301126152d1575f80fd5b81356152df6151ac82615169565b8181528460208386010111156152f3575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561531f575f80fd5b6153276150ef565b82356001600160401b038082111561533d575f80fd5b615349368387016152c2565b8352602085013591508082111561535e575f80fd5b5061536b368286016152c2565b602083015250604083013561537f81614e1e565b604082015292915050565b5f82516152b8818460208701614f5d565b601f82111561058657805f5260205f20601f840160051c810160208510156153c05750805b601f840160051c820191505b81811015610e80575f81556001016153cc565b81516001600160401b038111156153f8576153f86150db565b61540c816154068454615095565b8461539b565b602080601f83116001811461543f575f84156154285750858301515b5f19600386901b1c1916600185901b1785556110dd565b5f85815260208120601f198616915b8281101561546d5788860151825594840194600190910190840161544e565b508582101561548a57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e6e57610e6e61549a565b5f63ffffffff8083168181036154d9576154d961549a565b6001019392505050565b8082028115828204841417610e6e57610e6e61549a565b5f808335601e1984360301811261550f575f80fd5b83016020810192503590506001600160401b0381111561552d575f80fd5b803603821315613528575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561561857848303601f19018952813536889003605e1901811261559f575f80fd5b870160606155ad82806154fa565b8287526155bd838801828461553b565b925050506155cd868301836154fa565b868303888801526155df83828461553b565b9250505060408083013592506155f483614e1e565b6001600160401b03929092169490910193909352978301979083019060010161557a565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561564981614d92565b6001600160a01b031660608381019190915283013536849003601e19018112615670575f80fd5b83016020810190356001600160401b0381111561568b575f80fd5b8060051b360382131561569c575f80fd5b6080808501526156b060a085018284615563565b95945050505050565b5f826156d357634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106156ec576156ec614f35565b91905290565b5f805f60608486031215615704575f80fd5b83519250602084015161571681614e1e565b604085015190925061572781614e1e565b809150509250925092565b5f8060408385031215615743575f80fd5b825191506020830151614ed781614cac565b5f60208083525f845461576781615095565b806020870152604060018084165f811461578857600181146157a4576157d1565b60ff19851660408a0152604084151560051b8a010195506157d1565b895f5260205f205f5b858110156157c85781548b82018601529083019088016157ad565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156123fc576123fc61549a565b6001600160401b038281168282160390808211156123fc576123fc61549a565b5f806040838503121561583f575f80fd5b82516001600160401b0380821115615855575f80fd5b9084019060608287031215615868575f80fd5b6158706150ef565b82518152602083015161588281614d92565b6020820152604083015182811115615898575f80fd5b6158a48882860161518f565b6040830152508094505050506020830151614ed781614cac565b5f80604083850312156158cf575f80fd5b825191506020830151614ed781614e1e565b6001600160401b038181168382160280821691908281146159045761590461549a565b505092915050565b5f8235603e198336030181126152b8575f80fd5b5f808335601e19843603018112615935575f80fd5b8301803591506001600160401b0382111561594e575f80fd5b602001915036819003821315613528575f80fd5b602081525f610fa560208301848661553b565b5f60408236031215615985575f80fd5b61598d615117565b61599683614cb9565b81526020808401356001600160401b03808211156159b2575f80fd5b9085019036601f8301126159c4575f80fd5b8135818111156159d6576159d66150db565b8060051b91506159e7848301615139565b8181529183018401918481019036841115615a00575f80fd5b938501935b83851015615a2a5784359250615a1a83614d92565b8282529385019390850190615a05565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615a975784516001600160a01b03168252938301936001929092019190830190615a6e565b509695505050505050565b60208152815160208201525f602083015160e06040840152615ac8610100840182614f7f565b90506040840151601f1980858403016060860152615ae68383614f7f565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615b168383615a3c565b925060a08601519150808584030160c086015250615b348282615a3c565b91505060c0840151615b5160e08501826001600160401b03169052565b509392505050565b5f8060408385031215615b6a575f80fd5b8251915060208301516001600160401b03811115615b86575f80fd5b615b928582860161518f565b9150509250929050565b6001600160401b03831115615bb357615bb36150db565b615bc783615bc18354615095565b8361539b565b5f601f841160018114615bf8575f8515615be15750838201355b5f19600387901b1c1916600186901b178355610e80565b5f83815260208120601f198716915b82811015615c275786850135825560209485019460019092019101615c07565b5086821015615c43575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610e6e57610e6e61549a565b5f60208284031215615c78575f80fd5b61333782614e0d565b5f60208284031215615c91575f80fd5b813560ff81168114613337575f80fd5b5f6001600160401b038083168181036154d9576154d961549a565b5f60208284031215615ccc575f80fd5b815161333781614cac56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220800cb3412a237729de0e877c4834301f7b7f14021b2617bb275262ecf618d1ed64736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"InvalidTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ERC20_STAKING_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChurnPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startingNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endingNonce\",\"type\":\"uint64\"}],\"internalType\":\"structDelegator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegatorRewardRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumChurnPercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumStakeMultiplier\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumDelegationFeeBips\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumStakeDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getPoSValidatorInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"internalType\":\"structPoSValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getRedeemableDelegatorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getRedeemableValidatorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardCalculatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSubnetID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUptimeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidatorRewardRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightToValueFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"contractIERC20Mintable\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"delegationAmount\",\"type\":\"uint256\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161644f38038061644f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6163028061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061037d575f3560e01c80638cfd90e1116101d4578063b771b3bc11610109578063cb914efb116100a9578063e8682f7b11610079578063e8682f7b146107a9578063f5e53dd614610809578063fb8b11dd14610811578063fd7ac5e714610824575f80fd5b8063cb914efb14610758578063d5f20ff61461076b578063df93d8de1461078b578063e4a63c4014610795575f80fd5b8063bee0a03f116100e4578063bee0a03f1461072d578063c00a8aec14610740578063c42374a814610748578063c974d1b614610750575f80fd5b8063b771b3bc146106e5578063ba3a4b97146106f3578063bc5fbfec14610706575f80fd5b8063a3a65e4811610174578063a83a28931161014f578063a83a2893146106ae578063a9778a7a14610476578063afb98096146106b6578063b6605e84146106dd575f80fd5b8063a3a65e4814610644578063a546155814610657578063a8099af21461066a575f80fd5b806399e5a8d0116101af57806399e5a8d0146105eb5780639ae064471461060b5780639e1bc4ef1461061e5780639e478eea14610631575f80fd5b80638cfd90e1146105b25780638ef34c98146105c557806393e24598146105d8575f80fd5b80633a1cfff6116102b5578063620658561161025557806376f786211161022557806376f78621146105715780637d8d2f771461058457806380dd672f146105975780638280a25a146105aa575f80fd5b8063620658561461053157806366435abf146105445780636db4224f14610557578063732214f81461056a575f80fd5b806359ef84a91161029057806359ef84a9146104e65780635dd6a6cb146104ee57806360305d621461050157806360ad77841461051e575f80fd5b80633a1cfff6146104ad578063467ef06f146104c05780634bee0040146104d3575f80fd5b80631fcfda5d116103205780632e2194d8116102fb5780632e2194d81461046357806335455ded146104765780633765cf021461049257806337b9be8f1461049a575f80fd5b80631fcfda5d1461043557806320d91b7a1461043d57806325e1c77614610450575f80fd5b806309c1df661161035b57806309c1df66146103d257806310055f73146103f2578063151d30d1146104085780631ec4472414610422575f80fd5b80630118acc41461038157806302c588c4146103965780630322ed98146103bf575b5f80fd5b61039461038f366004615213565b610837565b005b6103a96103a436600461524e565b610848565b6040516103b6919061528d565b60405180910390f35b6103946103cd36600461524e565b610935565b6103da610bba565b6040516001600160401b0390911681526020016103b6565b6103fa610bd5565b6040519081526020016103b6565b610410600a81565b60405160ff90911681526020016103b6565b610394610430366004615213565b610be7565b6103da610bf3565b61039461044b3660046152fc565b610c0e565b61039461045e36600461534a565b611173565b6103da61047136600461524e565b6111e7565b61047f61271081565b60405161ffff90911681526020016103b6565b6103fa61123b565b6103946104a836600461537f565b61124a565b6103946104bb366004615213565b61125d565b6103946104ce3660046153cd565b611269565b6103fa6104e136600461540b565b61134e565b6103fa611383565b6103946104fc36600461537f565b61138c565b610509601481565b60405163ffffffff90911681526020016103b6565b61039461052c36600461534a565b611398565b6103fa61053f366004615472565b611665565b6103da61055236600461524e565b611685565b6103fa61056536600461524e565b611699565b6103fa5f81565b61039461057f366004615213565b6116b5565b61039461059236600461537f565b6116c1565b6103946105a536600461534a565b6116cd565b610410603081565b6103fa6105c036600461524e565b611907565b6103946105d336600461548d565b611923565b6103946105e636600461524e565b611a04565b6105f3611a98565b6040516001600160a01b0390911681526020016103b6565b61039461061936600461537f565b611ab3565b6103fa61062c3660046154bb565b611abf565b61039461063f3660046154db565b611aeb565b6103946106523660046153cd565b611bca565b6105f361066536600461524e565b611dbc565b610672611de1565b6040516103b691908151815260208083015190820152604080830151908201526060918201516001600160401b03169181019190915260800190565b61047f611e59565b6103fa7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b6103da611e76565b6105f36005600160991b0181565b61039461070136600461524e565b611e98565b6103fa7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b61039461073b36600461524e565b6120f1565b61041061220e565b6103fa61222a565b610410601481565b6105f361076636600461524e565b61223c565b61077e61077936600461524e565b612261565b6040516103b6919061556b565b6103da6202a30081565b6103fa5f8051602061628d83398151915281565b6107bc6107b736600461524e565b6123a3565b6040805182516001600160a01b0316815260208084015161ffff1690820152828201516001600160401b0390811692820192909252606092830151909116918101919091526080016103b6565b6103fa61242f565b61039461081f36600461548d565b612441565b6103fa6108323660046155eb565b612508565b6108438383835f612540565b505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261088861256c565b5f838152600791909101602052604090819020815160e081019092528054829060ff1660038111156108bc576108bc615265565b60038111156108cd576108cd615265565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015292915050565b5f61093e612590565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561097757610977615265565b600581111561098857610988615265565b815260200160018201805461099c90615656565b80601f01602080910402602001604051908101604052809291908181526020018280546109c890615656565b8015610a135780601f106109ea57610100808354040283529160200191610a13565b820191905f5260205f20905b8154815290600101906020018083116109f657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610a7e57610a7e615265565b14610aba575f8381526007830160205260409081902054905163170cc93360e21b8152610ab19160ff169060040161568e565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610b31573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b589190810190615797565b6040518263ffffffff1660e01b8152600401610b7491906157c8565b6020604051808303815f875af1158015610b90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb491906157da565b50505050565b5f610bc3612590565b600101546001600160401b0316919050565b5f610bde61256c565b60050154905090565b610bb48383835f6125b4565b5f610bfc61256c565b600201546001600160401b0316919050565b5f610c17612590565b600981015490915060ff1615610c4057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca791906157da565b836020013514610cd0576040516372b0a7e760e11b815260208401356004820152602401610ab1565b30610ce160608501604086016157f1565b6001600160a01b031614610d2457610cff60608401604085016157f1565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610ab1565b5f610d32606085018561580c565b905090505f805b828163ffffffff161015610f99575f610d55606088018861580c565b8363ffffffff16818110610d6b57610d6b615851565b9050602002810190610d7d9190615865565b610d86906158d0565b80516040519192505f916008880191610d9e9161594b565b90815260200160405180910390205414610dce57805160405163a41f772f60e01b8152610ab191906004016157c8565b5f6002885f013584604051602001610dfd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610e179161594b565b602060405180830381855afa158015610e32573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610e5591906157da565b90508086600801835f0151604051610e6d919061594b565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610ead90826159a0565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610f2c9085615a6f565b8251604051919550610f3d9161594b565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610f9290615a82565b9050610d39565b50600483018190556001830154606490610fbd90600160401b900460ff1683615aa4565b1015610fdf57604051635943317f60e01b815260048101829052602401610ab1565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884611003876128e1565b604001516040518263ffffffff1660e01b815260040161102391906157c8565b602060405180830381865af415801561103e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106291906157da565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b815260040161109c9190615be6565b5f60405180830381865af41580156110b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526110dd9190810190615797565b90505f6002826040516110f0919061594b565b602060405180830381855afa15801561110b573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061112e91906157da565b905082811461115a5760405163baaea89d60e01b81526004810182905260248101849052604401610ab1565b5050506009909201805460ff1916600117905550505050565b61117c826129f7565b61119c576040516330efa98b60e01b815260048101839052602401610ab1565b5f6111a683612261565b51905060028160058111156111bd576111bd615265565b146111dd578060405163170cc93360e21b8152600401610ab1919061568e565b610bb48383612a20565b5f806111f161256c565b600301546111ff9084615c7a565b905080158061121457506001600160401b0381115b156112355760405163222d164360e21b815260048101849052602401610ab1565b92915050565b5f61124461256c565b54919050565b611256848484846125b4565b5050505050565b610bb48383835f612cbf565b611271612ee1565b5f61127a61256c565b90505f8061128784612f18565b91509150611294826129f7565b6112a057505050611335565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806112d75750806112f5565b5f848152600b86016020526040902080546001600160a01b03191690555b60048351600581111561130a5761130a615265565b036113195761131981856132c8565b61132f8261132a8560400151611665565b6132f2565b50505050505b61134b60015f805160206162ad83398151915255565b50565b5f611357612ee1565b61136385858585613328565b905061137b60015f805160206162ad83398151915255565b949350505050565b5f611244612590565b610bb48484848461348d565b5f6113a161256c565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156113da576113da615265565b60038111156113eb576113eb615265565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61146182612261565b905060018351600381111561147857611478615265565b14611499578251604051633b0d540d60e21b8152610ab19190600401615c99565b6004815160058111156114ae576114ae615265565b036114c4576114bc866134b9565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f6114e9896128e1565b604001516040518263ffffffff1660e01b815260040161150991906157c8565b606060405180830381865af4158015611524573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115489190615ca7565b509150915081841461157557846040015160405163089938b360e11b8152600401610ab191815260200190565b806001600160401b031683606001516001600160401b031610806115ae5750806001600160401b03168560a001516001600160401b0316115b156115d757604051632e19bc2d60e11b81526001600160401b0382166004820152602401610ab1565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61166e61256c565b60030154611235906001600160401b038416615aa4565b5f61168f82612261565b6080015192915050565b5f6116a261256c565b5f928352600a0160205250604090205490565b6108438383835f61348d565b61125684848484612cbf565b6116d5612ee1565b5f6116de61256c565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561171757611717615265565b600381111561172857611728615265565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156117a1576117a1615265565b146117c2578051604051633b0d540d60e21b8152610ab19190600401615c99565b60046117d18260400151612261565b5160058111156117e3576117e3615265565b146118e2575f6117f2846128e1565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161183191906157c8565b606060405180830381865af415801561184c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118709190615ca7565b50915091508184604001511461189c5760405163089938b360e11b815260048101839052602401610ab1565b806001600160401b03168460c001516001600160401b031611156118de57604051632e19bc2d60e11b81526001600160401b0382166004820152602401610ab1565b5050505b6118eb846134b9565b505061190360015f805160206162ad83398151915255565b5050565b5f61191061256c565b5f92835260080160205250604090205490565b5f61192c61256c565b90506001600160a01b0382166119605760405163caa903f960e01b81526001600160a01b0383166004820152602401610ab1565b5f8381526006820160205260409020546001600160a01b031633146119a657335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610ab1565b336001600160a01b038316036119d5575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611a0d61256c565b90505f611a1983612261565b5190506004816005811115611a3057611a30615265565b14611a50578060405163170cc93360e21b8152600401610ab1919061568e565b5f8381526006830160205260409020546001600160a01b03163314611a755733611981565b5f838152600683016020526040902054610843906001600160a01b0316846132c8565b5f611aa161256c565b600401546001600160a01b0316919050565b610bb484848484612540565b5f611ac8612ee1565b611ad383338461369d565b905061123560015f805160206162ad83398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611b34575080546001600160401b03808416911610155b15611b525760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155611b7d84846138e2565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f611bd3612590565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611bfa866128e1565b604001516040518263ffffffff1660e01b8152600401611c1a91906157c8565b6040805180830381865af4158015611c34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c589190615ce7565b9150915080611c7e57604051632d07135360e01b81528115156004820152602401610ab1565b5f82815260068401602052604090208054611c9890615656565b90505f03611cbc5760405163089938b360e11b815260048101839052602401610ab1565b60015f83815260078501602052604090205460ff166005811115611ce257611ce2615265565b14611d15575f8281526007840160205260409081902054905163170cc93360e21b8152610ab19160ff169060040161568e565b5f8281526006840160205260408120611d2d91615162565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611dc561256c565b5f9283526009016020525060409020546001600160a01b031690565b611e1160405180608001604052805f81526020015f81526020015f81526020015f6001600160401b031681525090565b611e19612590565b6040805160808101825260028301548152600383015460208201526004830154918101919091526005909101546001600160401b03166060820152919050565b5f611e6261256c565b60020154600160401b900461ffff16919050565b5f611e7f61256c565b60020154600160501b90046001600160401b0316919050565b5f611ea161256c565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611eda57611eda615265565b6003811115611eeb57611eeb615265565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611f6457611f64615265565b14158015611f855750600381516003811115611f8257611f82615265565b14155b15611fa6578051604051633b0d540d60e21b8152610ab19190600401615c99565b5f611fb48260400151612261565b905080606001516001600160401b03165f03611fe6576040516339b894f960e21b815260048101859052602401610ab1565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f9361205493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af415801561206e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120959190810190615797565b6040518263ffffffff1660e01b81526004016120b191906157c8565b6020604051808303815f875af11580156120cd573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125691906157da565b5f6120fa612590565b5f838152600682016020526040902080549192509061211890615656565b90505f0361213c5760405163089938b360e11b815260048101839052602401610ab1565b60015f83815260078301602052604090205460ff16600581111561216257612162615265565b14612195575f8281526007820160205260409081902054905163170cc93360e21b8152610ab19160ff169060040161568e565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916121ce9190600401615d0a565b6020604051808303815f875af11580156121ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061084391906157da565b5f612217612590565b60010154600160401b900460ff16919050565b5f61223361256c565b60030154905090565b5f61224561256c565b5f928352600b016020525060409020546001600160a01b031690565b612269615199565b5f612272612590565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff1660058111156122a9576122a9615265565b60058111156122ba576122ba615265565b81526020016001820180546122ce90615656565b80601f01602080910402602001604051908101604052809291908181526020018280546122fa90615656565b80156123455780601f1061231c57610100808354040283529160200191612345565b820191905f5260205f20905b81548152906001019060200180831161232857829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b604080516080810182525f8082526020820181905291810182905260608101919091526123ce61256c565b5f9283526006016020908152604092839020835160808101855281546001600160a01b038116825261ffff600160a01b820416938201939093526001600160401b03600160b01b909304831694810194909452600101541660608301525090565b5f61243861256c565b60010154905090565b6001600160a01b0381166124735760405163caa903f960e01b81526001600160a01b0382166004820152602401610ab1565b5f61247c61256c565b5f8481526007820160205260409020549091506001600160a01b036101009091041633146124aa5733611981565b336001600160a01b038316036124d9575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f80612512612590565b9050806008018484604051612528929190615d94565b90815260200160405180910390205491505092915050565b61254c848484846125b4565b610bb457604051631036cf9160e11b815260048101859052602401610ab1565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b5f806125be61256c565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156125f7576125f7615265565b600381111561260857612608615265565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61267e82612261565b905060028351600381111561269557612695615265565b146126b6578251604051633b0d540d60e21b8152610ab19190600401615c99565b60208301516001600160a01b03163314612752575f8281526006850160205260409020546001600160a01b031633146126ef5733611981565b5f82815260068501602052604090205460a082015161271e91600160b01b90046001600160401b031690615da3565b6001600160401b03164210156127525760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610ab1565b60028151600581111561276757612767615265565b036128895760028401546080840151612789916001600160401b031690615da3565b6001600160401b03164210156127bd5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610ab1565b87156127cf576127cd8288612a20565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516128089184916128039190615dc3565b6138fc565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561284b84888c613ac6565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a31515945061137b9350505050565b60048151600581111561289e5761289e615265565b036128c5576128ae83878b613ac6565b506128b8896134b9565b600194505050505061137b565b805160405163170cc93360e21b8152610ab1919060040161568e565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612945573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261296c9190810190615de3565b915091508061298e57604051636b2f19e960e01b815260040160405180910390fd5b8151156129b4578151604051636ba589a560e01b81526004810191909152602401610ab1565b60208201516001600160a01b0316156129f0576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610ab1565b5092915050565b5f80612a0161256c565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612a6b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a929190810190615de3565b9150915080612ab457604051636b2f19e960e01b815260040160405180910390fd5b5f612abd61256c565b6005810154845191925014612aeb578251604051636ba589a560e01b81526004810191909152602401610ab1565b60208301516001600160a01b031615612b27576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610ab1565b60208301516001600160a01b031615612b63576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610ab1565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401612ba091906157c8565b6040805180830381865af4158015612bba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bde9190615e73565b91509150818814612c055760405163089938b360e11b815260048101899052602401610ab1565b5f8881526006840160205260409020600101546001600160401b039081169082161115612c96575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612cb4565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b5f80612cc961256c565b90505f612cd587613cab565b9050612ce0876129f7565b612cef5760019250505061137b565b5f8781526006830160205260409020546001600160a01b03163314612d145733611981565b5f87815260068301602052604090205460a0820151612d4391600160b01b90046001600160401b031690615da3565b6001600160401b03168160c001516001600160401b03161015612d8a5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610ab1565b5f8615612da257612d9b8887612a20565b9050612dc0565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612de590611665565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612e4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7291906157da565b90508084600a015f8b81526020019081526020015f205f828254612e969190615a6f565b90915550506001600160a01b03861615612ed3575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f805160206162ad833981519152805460011901612f1257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612f21615199565b5f612f2a612590565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612f51886128e1565b604001516040518263ffffffff1660e01b8152600401612f7191906157c8565b6040805180830381865af4158015612f8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612faf9190615ce7565b915091508015612fd657604051632d07135360e01b81528115156004820152602401610ab1565b5f828152600784016020526040808220815160e081019092528054829060ff16600581111561300757613007615265565b600581111561301857613018615265565b815260200160018201805461302c90615656565b80601f016020809104026020016040519081016040528092919081815260200182805461305890615656565b80156130a35780601f1061307a576101008083540402835291602001916130a3565b820191905f5260205f20905b81548152906001019060200180831161308657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561310e5761310e615265565b1415801561312f575060018151600581111561312c5761312c615265565b14155b1561315057805160405163170cc93360e21b8152610ab1919060040161568e565b60038151600581111561316557613165615265565b036131735760048152613178565b600581525b83600801816020015160405161318e919061594b565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156131d2576131d2615265565b0217905550602082015160018201906131eb90826159a0565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561329157613291615265565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f6132d161256c565b5f838152600a8201602052604081208054919055909150610bb48482613f84565b5f8051602061628d83398151915254611903906001600160a01b03168383613ffa565b60015f805160206162ad83398151915255565b5f8061333261256c565b600281015490915061ffff600160401b9091048116908616108061335b575061271061ffff8616115b1561337f57604051635f12e6c360e11b815261ffff86166004820152602401610ab1565b60028101546001600160401b0390811690851610156133bb576040516202a06d60e11b81526001600160401b0385166004820152602401610ab1565b80548310806133cd5750806001015483115b156133ee5760405163222d164360e21b815260048101849052602401610ab1565b5f6133f884614059565b90505f613404826111e7565b90505f613411898361407c565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b61349984848484612cbf565b610bb457604051635bff683f60e11b815260048101859052602401610ab1565b5f6134c261256c565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156134fb576134fb615265565b600381111561350c5761350c615265565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152810151909150613580610bba565b826080015161358f9190615da3565b6001600160401b03164210156135c35760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610ab1565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b03168061361357506020820151613631565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061363e838886614587565b91509150613657856020015161132a8760600151611665565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806136a761256c565b90505f6136b661047185614059565b90505f6136c287612261565b90506136cd876129f7565b6136ed576040516330efa98b60e01b815260048101889052602401610ab1565b60028151600581111561370257613702615265565b1461372357805160405163170cc93360e21b8152610ab1919060040161568e565b5f8282608001516137349190615da3565b905083600201600a9054906101000a90046001600160401b0316826040015161375d9190615e96565b6001600160401b0316816001600160401b0316111561379a57604051636d51fe0560e11b81526001600160401b0382166004820152602401610ab1565b5f806137a68a846138fc565b915091505f8a836040516020016137d492919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b6138ea614634565b6138f38261467f565b611903816146f9565b5f805f613907612590565b5f868152600782016020526040902060020154909150600160801b90046001600160401b03166139378582614761565b5f61394187614987565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156139ea573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613a119190810190615797565b6040518263ffffffff1660e01b8152600401613a2d91906157c8565b6020604051808303815f875af1158015613a49573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a6d91906157da565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f80613ad061256c565b90505f613ae08660400151612261565b90505f600382516005811115613af857613af8615265565b1480613b165750600482516005811115613b1457613b14615265565b145b15613b26575060c0810151613b63565b600282516005811115613b3b57613b3b615265565b03613b47575042613b63565b815160405163170cc93360e21b8152610ab1919060040161568e565b86608001516001600160401b0316816001600160401b031611613b8b575f93505050506138db565b600483015460608801515f916001600160a01b031690634f22429f90613bb090611665565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015613c31573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c5591906157da565b5f878152600886016020526040902081905590506001600160a01b03871615612cb4575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b613cb3615199565b5f613cbc612590565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115613cf557613cf5615265565b6005811115613d0657613d06615265565b8152602001600182018054613d1a90615656565b80601f0160208091040260200160405190810160405280929190818152602001828054613d4690615656565b8015613d915780601f10613d6857610100808354040283529160200191613d91565b820191905f5260205f20905b815481529060010190602001808311613d7457829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613dff57613dff615265565b14613e32575f8481526007830160205260409081902054905163170cc93360e21b8152610ab19160ff169060040161568e565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613e7657613e76615265565b021790555060208201516001820190613e8f90826159a0565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613f2d85826138fc565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f5f8051602061628d83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613fdf575f80fd5b505af1158015613ff1573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b0383811660248301526044820183905261084391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506149f0565b5f611235825f8051602061628d833981519152546001600160a01b031690614a51565b5f614085612590565b6009015460ff166140a957604051637fab81e560e01b815260040160405180910390fd5b5f6140b2612590565b9050426140c56060860160408701615472565b6001600160401b03161115806140ff57506140e36202a30042615a6f565b6140f36060860160408701615472565b6001600160401b031610155b15614139576141146060850160408601615472565b604051635879da1360e11b81526001600160401b039091166004820152602401610ab1565b61414e6141496060860186615ec1565b614a5d565b61415e6141496080860186615ec1565b603061416d6020860186615ed5565b90501461419f576141816020850185615ed5565b6040516326475b2f60e11b8152610ab1925060040190815260200190565b6141a98480615ed5565b90505f036141d6576141bb8480615ed5565b604051633e08a12560e11b8152600401610ab1929190615f17565b5f600882016141e58680615ed5565b6040516141f3929190615d94565b9081526020016040518091039020541461422c576142118480615ed5565b60405163a41f772f60e01b8152600401610ab1929190615f17565b614236835f614761565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016142738a80615ed5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906142bb908b018b615ed5565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161430460608b0160408c01615472565b6001600160401b0316815260200161431f60608b018b615ec1565b61432890615f2a565b815260200161433a60808b018b615ec1565b61434390615f2a565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016143719190616057565b5f60405180830381865af415801561438b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526143b2919081019061610e565b5f828152600686016020526040902091935091506143d082826159a0565b5081600884016143e08880615ed5565b6040516143ee929190615d94565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061442a9085906004016157c8565b6020604051808303815f875af1158015614446573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061446a91906157da565b5f8481526007860160205260409020805460ff1916600117905590506144908780615ed5565b5f8581526007870160205260409020600101916144ae919083616151565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061450d8880615ed5565b60405161451b929190615d94565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906145599190615472565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f61459261256c565b5f86815260088201602052604081208054908290559192509081908015614626575f878152600685016020526040902054612710906145dc90600160a01b900461ffff1683615aa4565b6145e69190615c7a565b91508184600a015f8981526020019081526020015f205f82825461460a9190615a6f565b9091555061461a9050828261620a565b92506146268984613f84565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661467d57604051631afcd79f60e31b815260040160405180910390fd5b565b614687614634565b61469081614bc6565b614698614bdf565b61134b606082013560808301356146b560c0850160a08601615472565b6146c560e0860160c0870161621d565b6146d6610100870160e08801616236565b6101008701356146ee61014089016101208a016157f1565b886101400135614bef565b614701614634565b5f8051602061628d8339815191526001600160a01b03821661474157604051637330680360e01b81526001600160a01b0383166004820152602401610ab1565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f61476a612590565b90505f826001600160401b0316846001600160401b03161115614798576147918385615dc3565b90506147a5565b6147a28484615dc3565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580614807575060018401548151614803916001600160401b031690615a6f565b8210155b1561482d576001600160401b03831660608201528181526040810151602082015261484c565b828160600181815161483f9190615da3565b6001600160401b03169052505b606081015161485c906064615e96565b602082015160018601546001600160401b0392909216916148879190600160401b900460ff16615aa4565b10156148b757606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610ab1565b856001600160401b0316816040018181516148d29190615a6f565b9052506040810180516001600160401b03871691906148f290839061620a565b9052506001840154604082015160649161491791600160401b90910460ff1690615aa4565b101561493e578060400151604051635943317f60e01b8152600401610ab191815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f80614991612590565b5f84815260078201602052604090206002018054919250906008906149c590600160401b90046001600160401b0316616256565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f614a046001600160a01b03841683614db1565b905080515f14158015614a28575080806020019051810190614a269190616271565b155b1561084357604051635274afe760e01b81526001600160a01b0384166004820152602401610ab1565b5f6138db833384614dbe565b614a6a60208201826153cd565b63ffffffff16158015614a8a5750614a85602082018261580c565b151590505b15614ad157614a9c60208201826153cd565b614aa9602083018361580c565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610ab1565b614ade602082018261580c565b9050614aed60208301836153cd565b63ffffffff161115614b0657614a9c60208201826153cd565b60015b614b16602083018361580c565b905081101561190357614b2c602083018361580c565b614b3760018461620a565b818110614b4657614b46615851565b9050602002016020810190614b5b91906157f1565b6001600160a01b0316614b71602084018461580c565b83818110614b8157614b81615851565b9050602002016020810190614b9691906157f1565b6001600160a01b03161015614bbe57604051630dbc8d5f60e31b815260040160405180910390fd5b600101614b09565b614bce614634565b614bd6614f21565b61134b81614f29565b614be7614634565b61467d61500d565b614bf7614634565b5f614c0061256c565b905061ffff86161580614c18575061271061ffff8716115b15614c3c57604051635f12e6c360e11b815261ffff87166004820152602401610ab1565b87891115614c605760405163222d164360e21b8152600481018a9052602401610ab1565b60ff85161580614c735750600a60ff8616115b15614c965760405163170db35960e31b815260ff86166004820152602401610ab1565b614c9e610bba565b6001600160401b0316876001600160401b03161015614cda576040516202a06d60e11b81526001600160401b0388166004820152602401610ab1565b835f03614cfa5760405163a733007160e01b815260040160405180910390fd5b81614d1b57604051632f6bd1db60e01b815260048101839052602401610ab1565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b60606138db83835f615015565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa158015614e04573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614e2891906157da565b9050614e3f6001600160a01b0386168530866150a4565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614e83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614ea791906157da565b9050818111614f0d5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610ab1565b614f17828261620a565b9695505050505050565b61467d614634565b614f31614634565b5f614f3a612590565b8235815590506014614f526060840160408501616236565b60ff161180614f715750614f6c6060830160408401616236565b60ff16155b15614fa557614f866060830160408401616236565b604051634a59bbff60e11b815260ff9091166004820152602401610ab1565b614fb56060830160408401616236565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614fe66040830160208401615472565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b613315614634565b60608147101561503a5760405163cd78605960e01b8152306004820152602401610ab1565b5f80856001600160a01b03168486604051615055919061594b565b5f6040518083038185875af1925050503d805f811461508f576040519150601f19603f3d011682016040523d82523d5f602084013e615094565b606091505b5091509150614f178683836150dd565b6040516001600160a01b038481166024830152838116604483015260648201839052610bb49186918216906323b872dd90608401614027565b6060826150f2576150ed82615139565b6138db565b815115801561510957506001600160a01b0384163b155b1561513257604051639996b31560e01b81526001600160a01b0385166004820152602401610ab1565b50806138db565b8051156151495780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461516e90615656565b5f825580601f1061517d575050565b601f0160209004905f5260205f209081019061134b91906151d6565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b808211156151ea575f81556001016151d7565b5090565b801515811461134b575f80fd5b803563ffffffff8116811461520e575f80fd5b919050565b5f805f60608486031215615225575f80fd5b833592506020840135615237816151ee565b9150615245604085016151fb565b90509250925092565b5f6020828403121561525e575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6004811061528957615289615265565b9052565b5f60e08201905061529f828451615279565b60018060a01b0360208401511660208301526040830151604083015260608301516001600160401b0380821660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b5f806040838503121561530d575f80fd5b82356001600160401b03811115615322575f80fd5b830160808186031215615333575f80fd5b9150615341602084016151fb565b90509250929050565b5f806040838503121561535b575f80fd5b82359150615341602084016151fb565b6001600160a01b038116811461134b575f80fd5b5f805f8060808587031215615392575f80fd5b8435935060208501356153a4816151ee565b92506153b2604086016151fb565b915060608501356153c28161536b565b939692955090935050565b5f602082840312156153dd575f80fd5b6138db826151fb565b803561ffff8116811461520e575f80fd5b6001600160401b038116811461134b575f80fd5b5f805f806080858703121561541e575f80fd5b84356001600160401b03811115615433575f80fd5b850160a08188031215615444575f80fd5b9350615452602086016153e6565b92506040850135615462816153f7565b9396929550929360600135925050565b5f60208284031215615482575f80fd5b81356138db816153f7565b5f806040838503121561549e575f80fd5b8235915060208301356154b08161536b565b809150509250929050565b5f80604083850312156154cc575f80fd5b50508035926020909101359150565b5f808284036101808112156154ee575f80fd5b610160808212156154fd575f80fd5b84935083013590506154b08161536b565b6006811061528957615289615265565b5f5b83811015615538578181015183820152602001615520565b50505f910152565b5f815180845261555781602086016020860161551e565b601f01601f19169290920160200192915050565b6020815261557d60208201835161550e565b5f602083015160e06040840152615598610100840182615540565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f80602083850312156155fc575f80fd5b82356001600160401b0380821115615612575f80fd5b818501915085601f830112615625575f80fd5b813581811115615633575f80fd5b866020828501011115615644575f80fd5b60209290920196919550909350505050565b600181811c9082168061566a57607f821691505b60208210810361568857634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101611235828461550e565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156156d2576156d261569c565b60405290565b604080519081016001600160401b03811182821017156156d2576156d261569c565b604051601f8201601f191681016001600160401b03811182821017156157225761572261569c565b604052919050565b5f6001600160401b038211156157425761574261569c565b50601f01601f191660200190565b5f82601f83011261575f575f80fd5b815161577261576d8261572a565b6156fa565b818152846020838601011115615786575f80fd5b61137b82602083016020870161551e565b5f602082840312156157a7575f80fd5b81516001600160401b038111156157bc575f80fd5b61137b84828501615750565b602081525f6138db6020830184615540565b5f602082840312156157ea575f80fd5b5051919050565b5f60208284031215615801575f80fd5b81356138db8161536b565b5f808335601e19843603018112615821575f80fd5b8301803591506001600160401b0382111561583a575f80fd5b6020019150600581901b3603821315613abf575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615879575f80fd5b9190910192915050565b5f82601f830112615892575f80fd5b81356158a061576d8261572a565b8181528460208386010111156158b4575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156158e0575f80fd5b6158e86156b0565b82356001600160401b03808211156158fe575f80fd5b61590a36838701615883565b8352602085013591508082111561591f575f80fd5b5061592c36828601615883565b6020830152506040830135615940816153f7565b604082015292915050565b5f825161587981846020870161551e565b601f82111561084357805f5260205f20601f840160051c810160208510156159815750805b601f840160051c820191505b81811015611256575f815560010161598d565b81516001600160401b038111156159b9576159b961569c565b6159cd816159c78454615656565b8461595c565b602080601f831160018114615a00575f84156159e95750858301515b5f19600386901b1c1916600185901b1785556114bc565b5f85815260208120601f198616915b82811015615a2e57888601518255948401946001909101908401615a0f565b5085821015615a4b57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561123557611235615a5b565b5f63ffffffff808316818103615a9a57615a9a615a5b565b6001019392505050565b808202811582820484141761123557611235615a5b565b5f808335601e19843603018112615ad0575f80fd5b83016020810192503590506001600160401b03811115615aee575f80fd5b803603821315613abf575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015615bd957848303601f19018952813536889003605e19018112615b60575f80fd5b87016060615b6e8280615abb565b828752615b7e8388018284615afc565b92505050615b8e86830183615abb565b86830388880152615ba0838284615afc565b925050506040808301359250615bb5836153f7565b6001600160401b039290921694909101939093529783019790830190600101615b3b565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135615c0a8161536b565b6001600160a01b031660608381019190915283013536849003601e19018112615c31575f80fd5b83016020810190356001600160401b03811115615c4c575f80fd5b8060051b3603821315615c5d575f80fd5b608080850152615c7160a085018284615b24565b95945050505050565b5f82615c9457634e487b7160e01b5f52601260045260245ffd5b500490565b602081016112358284615279565b5f805f60608486031215615cb9575f80fd5b835192506020840151615ccb816153f7565b6040850151909250615cdc816153f7565b809150509250925092565b5f8060408385031215615cf8575f80fd5b8251915060208301516154b0816151ee565b5f60208083525f8454615d1c81615656565b806020870152604060018084165f8114615d3d5760018114615d5957615d86565b60ff19851660408a0152604084151560051b8a01019550615d86565b895f5260205f205f5b85811015615d7d5781548b8201860152908301908801615d62565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156129f0576129f0615a5b565b6001600160401b038281168282160390808211156129f0576129f0615a5b565b5f8060408385031215615df4575f80fd5b82516001600160401b0380821115615e0a575f80fd5b9084019060608287031215615e1d575f80fd5b615e256156b0565b825181526020830151615e378161536b565b6020820152604083015182811115615e4d575f80fd5b615e5988828601615750565b60408301525080945050505060208301516154b0816151ee565b5f8060408385031215615e84575f80fd5b8251915060208301516154b0816153f7565b6001600160401b03818116838216028082169190828114615eb957615eb9615a5b565b505092915050565b5f8235603e19833603018112615879575f80fd5b5f808335601e19843603018112615eea575f80fd5b8301803591506001600160401b03821115615f03575f80fd5b602001915036819003821315613abf575f80fd5b602081525f61137b602083018486615afc565b5f60408236031215615f3a575f80fd5b615f426156d8565b615f4b836151fb565b81526020808401356001600160401b0380821115615f67575f80fd5b9085019036601f830112615f79575f80fd5b813581811115615f8b57615f8b61569c565b8060051b9150615f9c8483016156fa565b8181529183018401918481019036841115615fb5575f80fd5b938501935b83851015615fdf5784359250615fcf8361536b565b8282529385019390850190615fba565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561604c5784516001600160a01b03168252938301936001929092019190830190616023565b509695505050505050565b60208152815160208201525f602083015160e0604084015261607d610100840182615540565b90506040840151601f198085840301606086015261609b8383615540565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526160cb8383615ff1565b925060a08601519150808584030160c0860152506160e98282615ff1565b91505060c084015161610660e08501826001600160401b03169052565b509392505050565b5f806040838503121561611f575f80fd5b8251915060208301516001600160401b0381111561613b575f80fd5b61614785828601615750565b9150509250929050565b6001600160401b038311156161685761616861569c565b61617c836161768354615656565b8361595c565b5f601f8411600181146161ad575f85156161965750838201355b5f19600387901b1c1916600186901b178355611256565b5f83815260208120601f198716915b828110156161dc57868501358255602094850194600190920191016161bc565b50868210156161f8575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8181038181111561123557611235615a5b565b5f6020828403121561622d575f80fd5b6138db826153e6565b5f60208284031215616246575f80fd5b813560ff811681146138db575f80fd5b5f6001600160401b03808316818103615a9a57615a9a615a5b565b5f60208284031215616281575f80fd5b81516138db816151ee56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220463a70da5fac44cee6be80de9917f627c7d7be3d914dbebec0645f9720822aa164736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -649,6 +676,471 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) WARPMESS return _ERC20TokenStakingManager.Contract.WARPMESSENGER(&_ERC20TokenStakingManager.CallOpts) } +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getChurnPeriodSeconds") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetChurnPeriodSeconds(&_ERC20TokenStakingManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetChurnPeriodSeconds(&_ERC20TokenStakingManager.CallOpts) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetDelegator(opts *bind.CallOpts, delegationID [32]byte) (Delegator, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getDelegator", delegationID) + + if err != nil { + return *new(Delegator), err + } + + out0 := *abi.ConvertType(out[0], new(Delegator)).(*Delegator) + + return out0, err + +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _ERC20TokenStakingManager.Contract.GetDelegator(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _ERC20TokenStakingManager.Contract.GetDelegator(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetDelegatorRewardRecipient(opts *bind.CallOpts, delegationID [32]byte) (common.Address, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getDelegatorRewardRecipient", delegationID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetDelegatorRewardRecipient(delegationID [32]byte) (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetDelegatorRewardRecipient(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetDelegatorRewardRecipient(delegationID [32]byte) (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetDelegatorRewardRecipient(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMaximumChurnPercentage(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMaximumChurnPercentage") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMaximumChurnPercentage() (uint8, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumChurnPercentage(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMaximumChurnPercentage() (uint8, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumChurnPercentage(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMaximumStakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMaximumStakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMaximumStakeAmount() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumStakeAmount(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMaximumStakeAmount() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumStakeAmount(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMaximumStakeMultiplier(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMaximumStakeMultiplier") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMaximumStakeMultiplier() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumStakeMultiplier(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMaximumStakeMultiplier() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetMaximumStakeMultiplier(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMinimumDelegationFeeBips(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMinimumDelegationFeeBips") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMinimumDelegationFeeBips() (uint16, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumDelegationFeeBips(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMinimumDelegationFeeBips() (uint16, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumDelegationFeeBips(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMinimumStakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMinimumStakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMinimumStakeAmount() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumStakeAmount(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMinimumStakeAmount() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumStakeAmount(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetMinimumStakeDuration(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getMinimumStakeDuration") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetMinimumStakeDuration() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumStakeDuration(&_ERC20TokenStakingManager.CallOpts) +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetMinimumStakeDuration() (uint64, error) { + return _ERC20TokenStakingManager.Contract.GetMinimumStakeDuration(&_ERC20TokenStakingManager.CallOpts) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetPoSValidatorInfo(opts *bind.CallOpts, validationID [32]byte) (PoSValidatorInfo, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getPoSValidatorInfo", validationID) + + if err != nil { + return *new(PoSValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(PoSValidatorInfo)).(*PoSValidatorInfo) + + return out0, err + +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _ERC20TokenStakingManager.Contract.GetPoSValidatorInfo(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _ERC20TokenStakingManager.Contract.GetPoSValidatorInfo(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetRedeemableDelegatorRewards(opts *bind.CallOpts, delegationID [32]byte) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getRedeemableDelegatorRewards", delegationID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetRedeemableDelegatorRewards(delegationID [32]byte) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetRedeemableDelegatorRewards(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetRedeemableDelegatorRewards(delegationID [32]byte) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetRedeemableDelegatorRewards(&_ERC20TokenStakingManager.CallOpts, delegationID) +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetRedeemableValidatorRewards(opts *bind.CallOpts, validationID [32]byte) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getRedeemableValidatorRewards", validationID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetRedeemableValidatorRewards(validationID [32]byte) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetRedeemableValidatorRewards(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetRedeemableValidatorRewards(validationID [32]byte) (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetRedeemableValidatorRewards(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetRewardCalculatorAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getRewardCalculatorAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetRewardCalculatorAddress() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetRewardCalculatorAddress(&_ERC20TokenStakingManager.CallOpts) +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetRewardCalculatorAddress() (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetRewardCalculatorAddress(&_ERC20TokenStakingManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetSubnetID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getSubnetID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetSubnetID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.GetSubnetID(&_ERC20TokenStakingManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetSubnetID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.GetSubnetID(&_ERC20TokenStakingManager.CallOpts) +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetUptimeBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getUptimeBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetUptimeBlockchainID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.GetUptimeBlockchainID(&_ERC20TokenStakingManager.CallOpts) +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetUptimeBlockchainID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.GetUptimeBlockchainID(&_ERC20TokenStakingManager.CallOpts) +} + // GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // // Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) @@ -680,6 +1172,68 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValid return _ERC20TokenStakingManager.Contract.GetValidator(&_ERC20TokenStakingManager.CallOpts, validationID) } +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidatorChurnPeriod(opts *bind.CallOpts) (ValidatorChurnPeriod, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidatorChurnPeriod") + + if err != nil { + return *new(ValidatorChurnPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorChurnPeriod)).(*ValidatorChurnPeriod) + + return out0, err + +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _ERC20TokenStakingManager.Contract.GetValidatorChurnPeriod(&_ERC20TokenStakingManager.CallOpts) +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _ERC20TokenStakingManager.Contract.GetValidatorChurnPeriod(&_ERC20TokenStakingManager.CallOpts) +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetValidatorRewardRecipient(opts *bind.CallOpts, validationID [32]byte) (common.Address, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getValidatorRewardRecipient", validationID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetValidatorRewardRecipient(validationID [32]byte) (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetValidatorRewardRecipient(&_ERC20TokenStakingManager.CallOpts, validationID) +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetValidatorRewardRecipient(validationID [32]byte) (common.Address, error) { + return _ERC20TokenStakingManager.Contract.GetValidatorRewardRecipient(&_ERC20TokenStakingManager.CallOpts, validationID) +} + // GetWeight is a free data retrieval call binding the contract method 0x66435abf. // // Solidity: function getWeight(bytes32 validationID) view returns(uint64) @@ -711,6 +1265,37 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeigh return _ERC20TokenStakingManager.Contract.GetWeight(&_ERC20TokenStakingManager.CallOpts, validationID) } +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) GetWeightToValueFactor(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "getWeightToValueFactor") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) GetWeightToValueFactor() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetWeightToValueFactor(&_ERC20TokenStakingManager.CallOpts) +} + +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) GetWeightToValueFactor() (*big.Int, error) { + return _ERC20TokenStakingManager.Contract.GetWeightToValueFactor(&_ERC20TokenStakingManager.CallOpts) +} + // RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // // Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index aa58a243f..1f321d7e7 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -37,6 +37,17 @@ type ConversionData struct { InitialValidators []InitialValidator } +// Delegator is an auto generated low-level Go binding around an user-defined struct. +type Delegator struct { + Status uint8 + Owner common.Address + ValidationID [32]byte + Weight uint64 + StartedAt uint64 + StartingNonce uint64 + EndingNonce uint64 +} + // InitialValidator is an auto generated low-level Go binding around an user-defined struct. type InitialValidator struct { NodeID []byte @@ -50,6 +61,14 @@ type PChainOwner struct { Addresses []common.Address } +// PoSValidatorInfo is an auto generated low-level Go binding around an user-defined struct. +type PoSValidatorInfo struct { + Owner common.Address + DelegationFeeBips uint16 + MinStakeDuration uint64 + UptimeSeconds uint64 +} + // PoSValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type PoSValidatorManagerSettings struct { BaseSettings ValidatorManagerSettings @@ -74,6 +93,14 @@ type Validator struct { EndedAt uint64 } +// ValidatorChurnPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorChurnPeriod struct { + StartedAt *big.Int + InitialWeight *big.Int + TotalWeight *big.Int + ChurnAmount uint64 +} + // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { SubnetID [32]byte @@ -103,8 +130,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615c39380380615c3983398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615aec8061014d5f395ff3fe608060405260043610610233575f3560e01c80637d8d2f7711610129578063b771b3bc116100a8578063c974d1b61161006d578063c974d1b614610690578063d5f20ff6146106a4578063df93d8de146106d0578063fb8b11dd146106e6578063fd7ac5e714610705575f80fd5b8063b771b3bc14610605578063ba3a4b971461061f578063bc5fbfec1461063e578063bee0a03f1461065e578063c599e24f1461067d575f80fd5b80639ae06447116100ee5780639ae0644714610581578063a3a65e48146105a0578063a9778a7a14610387578063af2f5feb146105bf578063afb98096146105d2575f80fd5b80637d8d2f77146104f157806380dd672f146105105780638280a25a1461052f5780638ef34c981461054357806393e2459814610562575f80fd5b806337b9be8f116101b557806360ad77841161017a57806360ad778414610454578063620658561461047357806366435abf146104a0578063732214f8146104bf57806376f78621146104d2575f80fd5b806337b9be8f146103af5780633a1cfff6146103ce578063467ef06f146103ed5780635dd6a6cb1461040c57806360305d621461042b575f80fd5b806320d91b7a116101fb57806320d91b7a146102e057806325e1c776146102ff5780632e2194d81461031e578063329c3e121461035557806335455ded14610387575f80fd5b80630118acc4146102375780630322ed98146102585780630ba512d114610277578063151d30d1146102965780631ec44724146102c1575b5f80fd5b348015610242575f80fd5b50610256610251366004614abe565b610724565b005b348015610263575f80fd5b50610256610272366004614af9565b610735565b348015610282575f80fd5b50610256610291366004614b10565b6109c5565b3480156102a1575f80fd5b506102aa600a81565b60405160ff90911681526020015b60405180910390f35b3480156102cc575f80fd5b506102566102db366004614abe565b610aa2565b3480156102eb575f80fd5b506102566102fa366004614b27565b610aae565b34801561030a575f80fd5b50610256610319366004614b75565b611033565b348015610329575f80fd5b5061033d610338366004614af9565b6110a7565b6040516001600160401b0390911681526020016102b8565b348015610360575f80fd5b5061036f6001600160991b0181565b6040516001600160a01b0390911681526020016102b8565b348015610392575f80fd5b5061039c61271081565b60405161ffff90911681526020016102b8565b3480156103ba575f80fd5b506102566103c9366004614baa565b6110fb565b3480156103d9575f80fd5b506102566103e8366004614abe565b61110e565b3480156103f8575f80fd5b50610256610407366004614bf8565b61111a565b348015610417575f80fd5b50610256610426366004614baa565b6111ff565b348015610436575f80fd5b5061043f601481565b60405163ffffffff90911681526020016102b8565b34801561045f575f80fd5b5061025661046e366004614b75565b61120b565b34801561047e575f80fd5b5061049261048d366004614c25565b6114d8565b6040519081526020016102b8565b3480156104ab575f80fd5b5061033d6104ba366004614af9565b6114f8565b3480156104ca575f80fd5b506104925f81565b3480156104dd575f80fd5b506102566104ec366004614abe565b61150c565b3480156104fc575f80fd5b5061025661050b366004614baa565b611518565b34801561051b575f80fd5b5061025661052a366004614b75565b611524565b34801561053a575f80fd5b506102aa603081565b34801561054e575f80fd5b5061025661055d366004614c40565b61175e565b34801561056d575f80fd5b5061025661057c366004614af9565b61183f565b34801561058c575f80fd5b5061025661059b366004614baa565b6118d3565b3480156105ab575f80fd5b506102566105ba366004614bf8565b6118df565b6104926105cd366004614c7f565b611ad4565b3480156105dd575f80fd5b506104927f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610610575f80fd5b5061036f6005600160991b0181565b34801561062a575f80fd5b50610256610639366004614af9565b611b08565b348015610649575f80fd5b506104925f80516020615a5783398151915281565b348015610669575f80fd5b50610256610678366004614af9565b611d61565b61049261068b366004614af9565b611e9e565b34801561069b575f80fd5b506102aa601481565b3480156106af575f80fd5b506106c36106be366004614af9565b611ecf565b6040516102b89190614d55565b3480156106db575f80fd5b5061033d6202a30081565b3480156106f1575f80fd5b50610256610700366004614c40565b61201e565b348015610710575f80fd5b5061049261071f366004614dd5565b6120e5565b6107308383835f612140565b505050565b5f8181525f80516020615a978339815191526020526040808220815160e0810190925280545f80516020615a5783398151915293929190829060ff16600581111561078257610782614ce0565b600581111561079357610793614ce0565b81526020016001820180546107a790614e40565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390614e40565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561088957610889614ce0565b146108c5575f8381526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561093c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109639190810190614f7b565b6040518263ffffffff1660e01b815260040161097f9190614fac565b6020604051808303815f875af115801561099b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190614fbe565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a0e575080546001600160401b03808416911610155b15610a2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a568361216c565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6109bf8383835f61217d565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615a578339815191529060ff1615610b0057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190614fbe565b836020013514610b90576040516372b0a7e760e11b8152602084013560048201526024016108bc565b30610ba16060850160408601614fd5565b6001600160a01b031614610be457610bbf6060840160408501614fd5565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016108bc565b5f610bf26060850185614ff0565b905090505f805b828163ffffffff161015610e59575f610c156060880188614ff0565b8363ffffffff16818110610c2b57610c2b615035565b9050602002810190610c3d9190615049565b610c46906150b4565b80516040519192505f916008880191610c5e9161512f565b90815260200160405180910390205414610c8e57805160405163a41f772f60e01b81526108bc9190600401614fac565b5f6002885f013584604051602001610cbd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cd79161512f565b602060405180830381855afa158015610cf2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d159190614fbe565b90508086600801835f0151604051610d2d919061512f565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610d6d9082615184565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610dec9085615253565b8251604051919550610dfd9161512f565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610e5290615266565b9050610bf9565b50600483018190556001830154606490610e7d90600160401b900460ff1683615288565b1015610e9f57604051635943317f60e01b8152600481018290526024016108bc565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610ec3876124b2565b604001516040518263ffffffff1660e01b8152600401610ee39190614fac565b602060405180830381865af4158015610efe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f229190614fbe565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610f5c91906153ca565b5f60405180830381865af4158015610f76573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610f9d9190810190614f7b565b90505f600282604051610fb0919061512f565b602060405180830381855afa158015610fcb573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610fee9190614fbe565b905082811461101a5760405163baaea89d60e01b815260048101829052602481018490526044016108bc565b5050506009909201805460ff1916600117905550505050565b61103c826125c8565b61105c576040516330efa98b60e01b8152600481018390526024016108bc565b5f61106683611ecf565b519050600281600581111561107d5761107d614ce0565b1461109d578060405163170cc93360e21b81526004016108bc9190614e72565b6109bf83836125f1565b5f806110b1612890565b600301546110bf908461545e565b90508015806110d457506001600160401b0381115b156110f55760405163222d164360e21b8152600481018490526024016108bc565b92915050565b6111078484848461217d565b5050505050565b6109bf8383835f6128b4565b611122612ad6565b5f61112b612890565b90505f8061113884612b0d565b91509150611145826125c8565b611151575050506111e6565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806111885750806111a6565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156111bb576111bb614ce0565b036111ca576111ca8185612ec0565b6111e0826111db85604001516114d8565b612eea565b50505050505b6111fc60015f80516020615a7783398151915255565b50565b6109bf84848484612f10565b5f611214612890565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561124d5761124d614ce0565b600381111561125e5761125e614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6112d482611ecf565b90506001835160038111156112eb576112eb614ce0565b1461130c578251604051633b0d540d60e21b81526108bc919060040161547d565b60048151600581111561132157611321614ce0565b036113375761132f86612f3c565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61135c896124b2565b604001516040518263ffffffff1660e01b815260040161137c9190614fac565b606060405180830381865af4158015611397573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bb9190615497565b50915091508184146113e857846040015160405163089938b360e11b81526004016108bc91815260200190565b806001600160401b031683606001516001600160401b031610806114215750806001600160401b03168560a001516001600160401b0316115b1561144a57604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6114e1612890565b600301546110f5906001600160401b038416615288565b5f61150282611ecf565b6080015192915050565b6107308383835f612f10565b611107848484846128b4565b61152c612ad6565b5f611535612890565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561156e5761156e614ce0565b600381111561157f5761157f614ce0565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156115f8576115f8614ce0565b14611619578051604051633b0d540d60e21b81526108bc919060040161547d565b60046116288260400151611ecf565b51600581111561163a5761163a614ce0565b14611739575f611649846124b2565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116889190614fac565b606060405180830381865af41580156116a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116c79190615497565b5091509150818460400151146116f35760405163089938b360e11b8152600481018390526024016108bc565b806001600160401b03168460c001516001600160401b0316111561173557604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5050505b61174284612f3c565b505061175a60015f80516020615a7783398151915255565b5050565b5f611767612890565b90506001600160a01b03821661179b5760405163caa903f960e01b81526001600160a01b03831660048201526024016108bc565b5f8381526006820160205260409020546001600160a01b031633146117e157335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016108bc565b336001600160a01b03831603611810575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611848612890565b90505f61185483611ecf565b519050600481600581111561186b5761186b614ce0565b1461188b578060405163170cc93360e21b81526004016108bc9190614e72565b5f8381526006830160205260409020546001600160a01b031633146118b057336117bc565b5f838152600683016020526040902054610730906001600160a01b031684612ec0565b6109bf84848484612140565b5f80516020615a578339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611912866124b2565b604001516040518263ffffffff1660e01b81526004016119329190614fac565b6040805180830381865af415801561194c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061197091906154cc565b915091508061199657604051632d07135360e01b815281151560048201526024016108bc565b5f828152600684016020526040902080546119b090614e40565b90505f036119d45760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078501602052604090205460ff1660058111156119fa576119fa614ce0565b14611a2d575f8281526007840160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b5f8281526006840160205260408120611a4591614a12565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611add612ad6565b611ae984848434613149565b9050611b0160015f80516020615a7783398151915255565b9392505050565b5f611b11612890565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b4a57611b4a614ce0565b6003811115611b5b57611b5b614ce0565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611bd457611bd4614ce0565b14158015611bf55750600381516003811115611bf257611bf2614ce0565b14155b15611c16578051604051633b0d540d60e21b81526108bc919060040161547d565b5f611c248260400151611ecf565b905080606001516001600160401b03165f03611c56576040516339b894f960e21b8152600481018590526024016108bc565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611cc493906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611cde573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d059190810190614f7b565b6040518263ffffffff1660e01b8152600401611d219190614fac565b6020604051808303815f875af1158015611d3d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111079190614fbe565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615a578339815191529190611da890614e40565b90505f03611dcc5760405163089938b360e11b8152600481018390526024016108bc565b60015f83815260078301602052604090205460ff166005811115611df257611df2614ce0565b14611e25575f8281526007820160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611e5e91906004016154ef565b6020604051808303815f875af1158015611e7a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107309190614fbe565b5f611ea7612ad6565b611eb28233346132a3565b9050611eca60015f80516020615a7783398151915255565b919050565b611ed7614a49565b5f8281525f80516020615a97833981519152602052604090819020815160e0810190925280545f80516020615a57833981519152929190829060ff166005811115611f2457611f24614ce0565b6005811115611f3557611f35614ce0565b8152602001600182018054611f4990614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054611f7590614e40565b8015611fc05780601f10611f9757610100808354040283529160200191611fc0565b820191905f5260205f20905b815481529060010190602001808311611fa357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b0381166120505760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f612059612890565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461208757336117bc565b336001600160a01b038316036120b6575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615a57833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08906121289086908690615579565b90815260200160405180910390205491505092915050565b61214c8484848461217d565b6109bf57604051631036cf9160e11b8152600481018590526024016108bc565b6121746134e3565b6111fc8161352e565b5f80612187612890565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121c0576121c0614ce0565b60038111156121d1576121d1614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61224782611ecf565b905060028351600381111561225e5761225e614ce0565b1461227f578251604051633b0d540d60e21b81526108bc919060040161547d565b60208301516001600160a01b0316331461231b575f8281526006850160205260409020546001600160a01b031633146122b857336117bc565b5f82815260068501602052604090205460a08201516122e791600160b01b90046001600160401b031690615588565b6001600160401b031642101561231b5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b60028151600581111561233057612330614ce0565b036124525760028401546080840151612352916001600160401b031690615588565b6001600160401b03164210156123865760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b87156123985761239682886125f1565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123d19184916123cc91906155a8565b6135a8565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561241484888c61377f565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506124aa9350505050565b60048151600581111561246757612467614ce0565b0361248e5761247783878b61377f565b5061248189612f3c565b60019450505050506124aa565b805160405163170cc93360e21b81526108bc9190600401614e72565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612516573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261253d91908101906155c8565b915091508061255f57604051636b2f19e960e01b815260040160405180910390fd5b815115612585578151604051636ba589a560e01b815260048101919091526024016108bc565b60208201516001600160a01b0316156125c1576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5092915050565b5f806125d2612890565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561263c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261266391908101906155c8565b915091508061268557604051636b2f19e960e01b815260040160405180910390fd5b5f61268e612890565b60058101548451919250146126bc578251604051636ba589a560e01b815260048101919091526024016108bc565b60208301516001600160a01b0316156126f8576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b60208301516001600160a01b031615612734576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016127719190614fac565b6040805180830381865af415801561278b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127af9190615658565b915091508188146127d65760405163089938b360e11b8152600481018990526024016108bc565b5f8881526006840160205260409020600101546001600160401b039081169082161115612867575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612885565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128be612890565b90505f6128ca87613964565b90506128d5876125c8565b6128e4576001925050506124aa565b5f8781526006830160205260409020546001600160a01b0316331461290957336117bc565b5f87815260068301602052604090205460a082015161293891600160b01b90046001600160401b031690615588565b6001600160401b03168160c001516001600160401b0316101561297f5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016108bc565b5f86156129975761299088876125f1565b90506129b5565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906129da906114d8565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a679190614fbe565b90508084600a015f8b81526020019081526020015f205f828254612a8b9190615253565b90915550506001600160a01b03861615612ac8575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615a77833981519152805460011901612b0757604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b16614a49565b5f80516020615a578339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b49886124b2565b604001516040518263ffffffff1660e01b8152600401612b699190614fac565b6040805180830381865af4158015612b83573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ba791906154cc565b915091508015612bce57604051632d07135360e01b815281151560048201526024016108bc565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612bff57612bff614ce0565b6005811115612c1057612c10614ce0565b8152602001600182018054612c2490614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054612c5090614e40565b8015612c9b5780601f10612c7257610100808354040283529160200191612c9b565b820191905f5260205f20905b815481529060010190602001808311612c7e57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d0657612d06614ce0565b14158015612d275750600181516005811115612d2457612d24614ce0565b14155b15612d4857805160405163170cc93360e21b81526108bc9190600401614e72565b600381516005811115612d5d57612d5d614ce0565b03612d6b5760048152612d70565b600581525b836008018160200151604051612d86919061512f565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612dca57612dca614ce0565b021790555060208201516001820190612de39082615184565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612e8957612e89614ce0565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612ec9612890565b5f838152600a82016020526040812080549190559091506109bf8482613c48565b61175a6001600160a01b03831682613ca6565b60015f80516020615a7783398151915255565b612f1c848484846128b4565b6109bf57604051635bff683f60e11b8152600481018590526024016108bc565b5f612f45612890565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f7e57612f7e614ce0565b6003811115612f8f57612f8f614ce0565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061302c7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161303b9190615588565b6001600160401b031642101561306f5760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130bf575060208201516130dd565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130ea838886613d39565b9150915061310385602001516111db87606001516114d8565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f80613153612890565b600281015490915061ffff600160401b9091048116908616108061317c575061271061ffff8616115b156131a057604051635f12e6c360e11b815261ffff861660048201526024016108bc565b60028101546001600160401b0390811690851610156131dc576040516202a06d60e11b81526001600160401b03851660048201526024016108bc565b80548310806131ee5750806001015483115b1561320f5760405163222d164360e21b8152600481018490526024016108bc565b825f61321a826110a7565b90505f6132278983613de6565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806132ad612890565b90505f6132b9846110a7565b90505f6132c587611ecf565b90506132d0876125c8565b6132f0576040516330efa98b60e01b8152600481018890526024016108bc565b60028151600581111561330557613305614ce0565b1461332657805160405163170cc93360e21b81526108bc9190600401614e72565b5f8282608001516133379190615588565b905083600201600a9054906101000a90046001600160401b03168260400151613360919061567b565b6001600160401b0316816001600160401b0316111561339d57604051636d51fe0560e11b81526001600160401b03821660048201526024016108bc565b5f806133a98a846135a8565b915091505f8a836040516020016133d792919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661352c57604051631afcd79f60e31b815260040160405180910390fd5b565b6135366134e3565b61353f8161430b565b613547614324565b6111fc6060820135608083013561356460c0850160a08601614c25565b61357460e0860160c087016156a6565b613585610100870160e088016156bf565b61010087013561359d61014089016101208a01614fd5565b886101400135614334565b5f8281525f80516020615a97833981519152602052604081206002015481905f80516020615a5783398151915290600160801b90046001600160401b03166135f08582614519565b5f6135fa8761473c565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156136a3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136ca9190810190614f7b565b6040518263ffffffff1660e01b81526004016136e69190614fac565b6020604051808303815f875af1158015613702573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137269190614fbe565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f80613789612890565b90505f6137998660400151611ecf565b90505f6003825160058111156137b1576137b1614ce0565b14806137cf57506004825160058111156137cd576137cd614ce0565b145b156137df575060c081015161381c565b6002825160058111156137f4576137f4614ce0565b0361380057504261381c565b815160405163170cc93360e21b81526108bc9190600401614e72565b86608001516001600160401b0316816001600160401b031611613844575f9350505050611b01565b600483015460608801515f916001600160a01b031690634f22429f90613869906114d8565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156138ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061390e9190614fbe565b5f878152600886016020526040902081905590506001600160a01b03871615612885575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61396c614a49565b5f8281525f80516020615a978339815191526020526040808220815160e0810190925280545f80516020615a5783398151915293929190829060ff1660058111156139b9576139b9614ce0565b60058111156139ca576139ca614ce0565b81526020016001820180546139de90614e40565b80601f0160208091040260200160405190810160405280929190818152602001828054613a0a90614e40565b8015613a555780601f10613a2c57610100808354040283529160200191613a55565b820191905f5260205f20905b815481529060010190602001808311613a3857829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613ac357613ac3614ce0565b14613af6575f8481526007830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614e72565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613b3a57613b3a614ce0565b021790555060208201516001820190613b539082615184565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613bf185826135a8565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613c94575f80fd5b505af115801561132f573d5f803e3d5ffd5b80471015613cc95760405163cd78605960e01b81523060048201526024016108bc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d12576040519150601f19603f3d011682016040523d82523d5f602084013e613d17565b606091505b505090508061073057604051630a12f52160e11b815260040160405180910390fd5b5f805f613d44612890565b5f86815260088201602052604081208054908290559192509081908015613dd8575f87815260068501602052604090205461271090613d8e90600160a01b900461ffff1683615288565b613d98919061545e565b91508184600a015f8981526020019081526020015f205f828254613dbc9190615253565b90915550613dcc905082826156df565b9250613dd88984613c48565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613e2a57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615a5783398151915242613e496060860160408701614c25565b6001600160401b0316111580613e835750613e676202a30042615253565b613e776060860160408701614c25565b6001600160401b031610155b15613ebd57613e986060850160408601614c25565b604051635879da1360e11b81526001600160401b0390911660048201526024016108bc565b613ed2613ecd60608601866156f2565b6147b1565b613ee2613ecd60808601866156f2565b6030613ef16020860186615706565b905014613f2357613f056020850185615706565b6040516326475b2f60e11b81526108bc925060040190815260200190565b613f2d8480615706565b90505f03613f5a57613f3f8480615706565b604051633e08a12560e11b81526004016108bc929190615748565b5f60088201613f698680615706565b604051613f77929190615579565b90815260200160405180910390205414613fb057613f958480615706565b60405163a41f772f60e01b81526004016108bc929190615748565b613fba835f614519565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613ff78a80615706565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060209081019061403f908b018b615706565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161408860608b0160408c01614c25565b6001600160401b031681526020016140a360608b018b6156f2565b6140ac9061575b565b81526020016140be60808b018b6156f2565b6140c79061575b565b8152602001886001600160401b03168152506040518263ffffffff1660e01b81526004016140f59190615888565b5f60405180830381865af415801561410f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052614136919081019061593f565b5f828152600686016020526040902091935091506141548282615184565b5081600884016141648880615706565b604051614172929190615579565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906141ae908590600401614fac565b6020604051808303815f875af11580156141ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ee9190614fbe565b5f8481526007860160205260409020805460ff1916600117905590506142148780615706565b5f858152600787016020526040902060010191614232919083615982565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806142918880615706565b60405161429f929190615579565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b60400160208101906142dd9190614c25565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b6143136134e3565b61431b61491a565b6111fc81614922565b61432c6134e3565b61352c614a0a565b61433c6134e3565b5f614345612890565b905061ffff8616158061435d575061271061ffff8716115b1561438157604051635f12e6c360e11b815261ffff871660048201526024016108bc565b878911156143a55760405163222d164360e21b8152600481018a90526024016108bc565b60ff851615806143b85750600a60ff8616115b156143db5760405163170db35960e31b815260ff861660048201526024016108bc565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b03161015614442576040516202a06d60e11b81526001600160401b03881660048201526024016108bc565b835f036144625760405163a733007160e01b815260040160405180910390fd5b8161448357604051632f6bd1db60e01b8152600481018390526024016108bc565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f80516020615a578339815191525f6001600160401b03808416908516111561454d5761454683856155a8565b905061455a565b61455784846155a8565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806145bc5750600184015481516145b8916001600160401b031690615253565b8210155b156145e2576001600160401b038316606082015281815260408101516020820152614601565b82816060018181516145f49190615588565b6001600160401b03169052505b606081015161461190606461567b565b602082015160018601546001600160401b03929092169161463c9190600160401b900460ff16615288565b101561466c57606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016108bc565b856001600160401b0316816040018181516146879190615253565b9052506040810180516001600160401b03871691906146a79083906156df565b905250600184015460408201516064916146cc91600160401b90910460ff1690615288565b10156146f3578060400151604051635943317f60e01b81526004016108bc91815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615a978339815191526020526040812060020180545f80516020615a57833981519152919060089061478690600160401b90046001600160401b0316615a3b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6147be6020820182614bf8565b63ffffffff161580156147de57506147d96020820182614ff0565b151590505b15614825576147f06020820182614bf8565b6147fd6020830183614ff0565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016108bc565b6148326020820182614ff0565b90506148416020830183614bf8565b63ffffffff16111561485a576147f06020820182614bf8565b60015b61486a6020830183614ff0565b905081101561175a576148806020830183614ff0565b61488b6001846156df565b81811061489a5761489a615035565b90506020020160208101906148af9190614fd5565b6001600160a01b03166148c56020840184614ff0565b838181106148d5576148d5615035565b90506020020160208101906148ea9190614fd5565b6001600160a01b0316101561491257604051630dbc8d5f60e31b815260040160405180910390fd5b60010161485d565b61352c6134e3565b61492a6134e3565b80355f80516020615a57833981519152908155601461494f60608401604085016156bf565b60ff16118061496e575061496960608301604084016156bf565b60ff16155b156149a25761498360608301604084016156bf565b604051634a59bbff60e11b815260ff90911660048201526024016108bc565b6149b260608301604084016156bf565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556149e36040830160208401614c25565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612efd6134e3565b508054614a1e90614e40565b5f825580601f10614a2d575050565b601f0160209004905f5260205f20908101906111fc9190614a86565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614a9a575f8155600101614a87565b5090565b80151581146111fc575f80fd5b803563ffffffff81168114611eca575f80fd5b5f805f60608486031215614ad0575f80fd5b833592506020840135614ae281614a9e565b9150614af060408501614aab565b90509250925092565b5f60208284031215614b09575f80fd5b5035919050565b5f6101608284031215614b21575f80fd5b50919050565b5f8060408385031215614b38575f80fd5b82356001600160401b03811115614b4d575f80fd5b830160808186031215614b5e575f80fd5b9150614b6c60208401614aab565b90509250929050565b5f8060408385031215614b86575f80fd5b82359150614b6c60208401614aab565b6001600160a01b03811681146111fc575f80fd5b5f805f8060808587031215614bbd575f80fd5b843593506020850135614bcf81614a9e565b9250614bdd60408601614aab565b91506060850135614bed81614b96565b939692955090935050565b5f60208284031215614c08575f80fd5b611b0182614aab565b6001600160401b03811681146111fc575f80fd5b5f60208284031215614c35575f80fd5b8135611b0181614c11565b5f8060408385031215614c51575f80fd5b823591506020830135614c6381614b96565b809150509250929050565b803561ffff81168114611eca575f80fd5b5f805f60608486031215614c91575f80fd5b83356001600160401b03811115614ca6575f80fd5b840160a08187031215614cb7575f80fd5b9250614cc560208501614c6e565b91506040840135614cd581614c11565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60068110614d0457614d04614ce0565b9052565b5f5b83811015614d22578181015183820152602001614d0a565b50505f910152565b5f8151808452614d41816020860160208601614d08565b601f01601f19169290920160200192915050565b60208152614d67602082018351614cf4565b5f602083015160e06040840152614d82610100840182614d2a565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614de6575f80fd5b82356001600160401b0380821115614dfc575f80fd5b818501915085601f830112614e0f575f80fd5b813581811115614e1d575f80fd5b866020828501011115614e2e575f80fd5b60209290920196919550909350505050565b600181811c90821680614e5457607f821691505b602082108103614b2157634e487b7160e01b5f52602260045260245ffd5b602081016110f58284614cf4565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614eb657614eb6614e80565b60405290565b604080519081016001600160401b0381118282101715614eb657614eb6614e80565b604051601f8201601f191681016001600160401b0381118282101715614f0657614f06614e80565b604052919050565b5f6001600160401b03821115614f2657614f26614e80565b50601f01601f191660200190565b5f82601f830112614f43575f80fd5b8151614f56614f5182614f0e565b614ede565b818152846020838601011115614f6a575f80fd5b6124aa826020830160208701614d08565b5f60208284031215614f8b575f80fd5b81516001600160401b03811115614fa0575f80fd5b6124aa84828501614f34565b602081525f611b016020830184614d2a565b5f60208284031215614fce575f80fd5b5051919050565b5f60208284031215614fe5575f80fd5b8135611b0181614b96565b5f808335601e19843603018112615005575f80fd5b8301803591506001600160401b0382111561501e575f80fd5b6020019150600581901b3603821315613778575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261505d575f80fd5b9190910192915050565b5f82601f830112615076575f80fd5b8135615084614f5182614f0e565b818152846020838601011115615098575f80fd5b816020850160208301375f918101602001919091529392505050565b5f606082360312156150c4575f80fd5b6150cc614e94565b82356001600160401b03808211156150e2575f80fd5b6150ee36838701615067565b83526020850135915080821115615103575f80fd5b5061511036828601615067565b602083015250604083013561512481614c11565b604082015292915050565b5f825161505d818460208701614d08565b601f82111561073057805f5260205f20601f840160051c810160208510156151655750805b601f840160051c820191505b81811015611107575f8155600101615171565b81516001600160401b0381111561519d5761519d614e80565b6151b1816151ab8454614e40565b84615140565b602080601f8311600181146151e4575f84156151cd5750858301515b5f19600386901b1c1916600185901b17855561132f565b5f85815260208120601f198616915b82811015615212578886015182559484019460019091019084016151f3565b508582101561522f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b808201808211156110f5576110f561523f565b5f63ffffffff80831681810361527e5761527e61523f565b6001019392505050565b80820281158282048414176110f5576110f561523f565b5f808335601e198436030181126152b4575f80fd5b83016020810192503590506001600160401b038111156152d2575f80fd5b803603821315613778575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156153bd57848303601f19018952813536889003605e19018112615344575f80fd5b87016060615352828061529f565b82875261536283880182846152e0565b925050506153728683018361529f565b868303888801526153848382846152e0565b92505050604080830135925061539983614c11565b6001600160401b03929092169490910193909352978301979083019060010161531f565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356153ee81614b96565b6001600160a01b031660608381019190915283013536849003601e19018112615415575f80fd5b83016020810190356001600160401b03811115615430575f80fd5b8060051b3603821315615441575f80fd5b60808085015261545560a085018284615308565b95945050505050565b5f8261547857634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061549157615491614ce0565b91905290565b5f805f606084860312156154a9575f80fd5b8351925060208401516154bb81614c11565b6040850151909250614cd581614c11565b5f80604083850312156154dd575f80fd5b825191506020830151614c6381614a9e565b5f60208083525f845461550181614e40565b806020870152604060018084165f8114615522576001811461553e5761556b565b60ff19851660408a0152604084151560051b8a0101955061556b565b895f5260205f205f5b858110156155625781548b8201860152908301908801615547565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038181168382160190808211156125c1576125c161523f565b6001600160401b038281168282160390808211156125c1576125c161523f565b5f80604083850312156155d9575f80fd5b82516001600160401b03808211156155ef575f80fd5b9084019060608287031215615602575f80fd5b61560a614e94565b82518152602083015161561c81614b96565b6020820152604083015182811115615632575f80fd5b61563e88828601614f34565b6040830152508094505050506020830151614c6381614a9e565b5f8060408385031215615669575f80fd5b825191506020830151614c6381614c11565b6001600160401b0381811683821602808216919082811461569e5761569e61523f565b505092915050565b5f602082840312156156b6575f80fd5b611b0182614c6e565b5f602082840312156156cf575f80fd5b813560ff81168114611b01575f80fd5b818103818111156110f5576110f561523f565b5f8235603e1983360301811261505d575f80fd5b5f808335601e1984360301811261571b575f80fd5b8301803591506001600160401b03821115615734575f80fd5b602001915036819003821315613778575f80fd5b602081525f6124aa6020830184866152e0565b5f6040823603121561576b575f80fd5b615773614ebc565b61577c83614aab565b81526020808401356001600160401b0380821115615798575f80fd5b9085019036601f8301126157aa575f80fd5b8135818111156157bc576157bc614e80565b8060051b91506157cd848301614ede565b81815291830184019184810190368411156157e6575f80fd5b938501935b83851015615810578435925061580083614b96565b82825293850193908501906157eb565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b8083101561587d5784516001600160a01b03168252938301936001929092019190830190615854565b509695505050505050565b60208152815160208201525f602083015160e060408401526158ae610100840182614d2a565b90506040840151601f19808584030160608601526158cc8383614d2a565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526158fc8383615822565b925060a08601519150808584030160c08601525061591a8282615822565b91505060c084015161593760e08501826001600160401b03169052565b509392505050565b5f8060408385031215615950575f80fd5b8251915060208301516001600160401b0381111561596c575f80fd5b61597885828601614f34565b9150509250929050565b6001600160401b0383111561599957615999614e80565b6159ad836159a78354614e40565b83615140565b5f601f8411600181146159de575f85156159c75750838201355b5f19600387901b1c1916600186901b178355611107565b5f83815260208120601f198716915b82811015615a0d57868501358255602094850194600190920191016159ed565b5086821015615a29575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b0380831681810361527e5761527e61523f56fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220aea3e80a8c2ef0ad57a183e9049d8a5cf4e875ec07802435f4599519687fcb1e64736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddressInsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"}],\"name\":\"InvalidDelegationFee\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidDelegationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidDelegatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"InvalidMinStakeDuration\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"InvalidRewardRecipient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"stakeAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidStakeAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"}],\"name\":\"InvalidStakeMultiplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidUptimeBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newValidatorWeight\",\"type\":\"uint64\"}],\"name\":\"MaxWeightExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"endTime\",\"type\":\"uint64\"}],\"name\":\"MinStakeDurationNotPassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"UnauthorizedOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorIneligibleForRewards\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorNotPoS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroWeightToValueFactor\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"rewards\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fees\",\"type\":\"uint256\"}],\"name\":\"DelegationEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"delegatorAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"delegatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"}],\"name\":\"DelegatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"DelegatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"UptimeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BIPS_CONVERSION_FACTOR\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_MINTER\",\"outputs\":[{\"internalType\":\"contractINativeMinter\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POS_VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"changeValidatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"claimDelegationFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeDelegatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChurnPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumDelegatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startingNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endingNonce\",\"type\":\"uint64\"}],\"internalType\":\"structDelegator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getDelegatorRewardRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumChurnPercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumStakeMultiplier\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumDelegationFeeBips\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinimumStakeDuration\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getPoSValidatorInfo\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"uptimeSeconds\",\"type\":\"uint64\"}],\"internalType\":\"structPoSValidatorInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"getRedeemableDelegatorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getRedeemableValidatorRewards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRewardCalculatorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSubnetID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUptimeBlockchainID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidatorRewardRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWeightToValueFactor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"baseSettings\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"minimumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maximumStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"minimumStakeDuration\",\"type\":\"uint64\"},{\"internalType\":\"uint16\",\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"weightToValueFactor\",\"type\":\"uint256\"},{\"internalType\":\"contractIRewardCalculator\",\"name\":\"rewardCalculator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"uptimeBlockchainID\",\"type\":\"bytes32\"}],\"internalType\":\"structPoSValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeDelegatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"rewardRecipient\",\"type\":\"address\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"includeUptimeProof\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint16\",\"name\":\"delegationFeeBips\",\"type\":\"uint16\"},{\"internalType\":\"uint64\",\"name\":\"minStakeDuration\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"}],\"name\":\"resendUpdateDelegation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"submitUptimeProof\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"valueToWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"weightToValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161628638038061628683398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6161398061014d5f395ff3fe608060405260043610610371575f3560e01c80638280a25a116101c8578063b771b3bc116100fd578063c974d1b61161009d578063e8682f7b1161006d578063e8682f7b146109fb578063f5e53dd614610a67578063fb8b11dd14610a7b578063fd7ac5e714610a9a575f80fd5b8063c974d1b614610986578063cb914efb1461099a578063d5f20ff6146109b9578063df93d8de146109e5575f80fd5b8063bee0a03f116100d8578063bee0a03f1461092c578063c00a8aec1461094b578063c42374a81461095f578063c599e24f14610973575f80fd5b8063b771b3bc146108c0578063ba3a4b97146108da578063bc5fbfec146108f9575f80fd5b8063a546155811610168578063a9778a7a11610143578063a9778a7a1461053f578063af2f5feb14610866578063afb9809614610879578063b6605e84146108ac575f80fd5b8063a5461558146107e3578063a8099af214610802578063a83a289314610852575f80fd5b806393e24598116101a357806393e245981461077257806399e5a8d0146107915780639ae06447146107a5578063a3a65e48146107c4575f80fd5b80638280a25a146107205780638cfd90e1146107345780638ef34c9814610753575f80fd5b80633765cf02116102a957806360ad778411610249578063732214f811610219578063732214f8146106b057806376f78621146106c35780637d8d2f77146106e257806380dd672f14610701575f80fd5b806360ad778414610634578063620658561461065357806366435abf146106725780636db4224f14610691575f80fd5b8063467ef06f11610284578063467ef06f146105b957806359ef84a9146105d85780635dd6a6cb146105ec57806360305d621461060b575f80fd5b80633765cf021461056757806337b9be8f1461057b5780633a1cfff61461059a575f80fd5b80631ec447241161031457806325e1c776116102ef57806325e1c776146104cf5780632e2194d8146104ee578063329c3e121461050d57806335455ded1461053f575f80fd5b80631ec447241461047d5780631fcfda5d1461049c57806320d91b7a146104b0575f80fd5b806309c1df661161034f57806309c1df66146103ea5780630ba512d11461041657806310055f7314610435578063151d30d114610457575f80fd5b80630118acc41461037557806302c588c4146103965780630322ed98146103cb575b5f80fd5b348015610380575f80fd5b5061039461038f3660046150d8565b610ab9565b005b3480156103a1575f80fd5b506103b56103b0366004615113565b610aca565b6040516103c29190615152565b60405180910390f35b3480156103d6575f80fd5b506103946103e5366004615113565b610bb7565b3480156103f5575f80fd5b506103fe610e3c565b6040516001600160401b0390911681526020016103c2565b348015610421575f80fd5b506103946104303660046151c1565b610e57565b348015610440575f80fd5b50610449610f34565b6040519081526020016103c2565b348015610462575f80fd5b5061046b600a81565b60405160ff90911681526020016103c2565b348015610488575f80fd5b506103946104973660046150d8565b610f46565b3480156104a7575f80fd5b506103fe610f52565b3480156104bb575f80fd5b506103946104ca3660046151d8565b610f6d565b3480156104da575f80fd5b506103946104e9366004615226565b6114d2565b3480156104f9575f80fd5b506103fe610508366004615113565b611546565b348015610518575f80fd5b506105276001600160991b0181565b6040516001600160a01b0390911681526020016103c2565b34801561054a575f80fd5b5061055461271081565b60405161ffff90911681526020016103c2565b348015610572575f80fd5b5061044961159a565b348015610586575f80fd5b5061039461059536600461525b565b6115a9565b3480156105a5575f80fd5b506103946105b43660046150d8565b6115bc565b3480156105c4575f80fd5b506103946105d33660046152a9565b6115c8565b3480156105e3575f80fd5b506104496116ad565b3480156105f7575f80fd5b5061039461060636600461525b565b6116b6565b348015610616575f80fd5b5061061f601481565b60405163ffffffff90911681526020016103c2565b34801561063f575f80fd5b5061039461064e366004615226565b6116c2565b34801561065e575f80fd5b5061044961066d3660046152d6565b61198f565b34801561067d575f80fd5b506103fe61068c366004615113565b6119af565b34801561069c575f80fd5b506104496106ab366004615113565b6119c3565b3480156106bb575f80fd5b506104495f81565b3480156106ce575f80fd5b506103946106dd3660046150d8565b6119df565b3480156106ed575f80fd5b506103946106fc36600461525b565b6119eb565b34801561070c575f80fd5b5061039461071b366004615226565b6119f7565b34801561072b575f80fd5b5061046b603081565b34801561073f575f80fd5b5061044961074e366004615113565b611c31565b34801561075e575f80fd5b5061039461076d3660046152f1565b611c4d565b34801561077d575f80fd5b5061039461078c366004615113565b611d2e565b34801561079c575f80fd5b50610527611dc2565b3480156107b0575f80fd5b506103946107bf36600461525b565b611ddd565b3480156107cf575f80fd5b506103946107de3660046152a9565b611de9565b3480156107ee575f80fd5b506105276107fd366004615113565b611fdb565b34801561080d575f80fd5b50610816612000565b6040516103c291908151815260208083015190820152604080830151908201526060918201516001600160401b03169181019190915260800190565b34801561085d575f80fd5b50610554612078565b610449610874366004615330565b612095565b348015610884575f80fd5b506104497f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b3480156108b7575f80fd5b506103fe6120c9565b3480156108cb575f80fd5b506105276005600160991b0181565b3480156108e5575f80fd5b506103946108f4366004615113565b6120eb565b348015610904575f80fd5b506104497fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b348015610937575f80fd5b50610394610946366004615113565b612344565b348015610956575f80fd5b5061046b612461565b34801561096a575f80fd5b5061044961247d565b610449610981366004615113565b61248f565b348015610991575f80fd5b5061046b601481565b3480156109a5575f80fd5b506105276109b4366004615113565b6124c0565b3480156109c4575f80fd5b506109d86109d3366004615113565b6124e5565b6040516103c291906153ee565b3480156109f0575f80fd5b506103fe6202a30081565b348015610a06575f80fd5b50610a1a610a15366004615113565b612627565b6040805182516001600160a01b0316815260208084015161ffff1690820152828201516001600160401b0390811692820192909252606092830151909116918101919091526080016103c2565b348015610a72575f80fd5b506104496126b3565b348015610a86575f80fd5b50610394610a953660046152f1565b6126c5565b348015610aa5575f80fd5b50610449610ab436600461546e565b61278c565b610ac58383835f6127c4565b505050565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610b0a6127f0565b5f838152600791909101602052604090819020815160e081019092528054829060ff166003811115610b3e57610b3e61512a565b6003811115610b4f57610b4f61512a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015292915050565b5f610bc0612814565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166005811115610bf957610bf961512a565b6005811115610c0a57610c0a61512a565b8152602001600182018054610c1e906154d9565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4a906154d9565b8015610c955780601f10610c6c57610100808354040283529160200191610c95565b820191905f5260205f20905b815481529060010190602001808311610c7857829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115610d0057610d0061512a565b14610d3c575f8381526007830160205260409081902054905163170cc93360e21b8152610d339160ff169060040161550b565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610db3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610dda9190810190615614565b6040518263ffffffff1660e01b8152600401610df69190615645565b6020604051808303815f875af1158015610e12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e369190615657565b50505050565b5f610e45612814565b600101546001600160401b0316919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610ea0575080546001600160401b03808416911610155b15610ebe5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610ee883612838565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610f3d6127f0565b60050154905090565b610e368383835f612849565b5f610f5b6127f0565b600201546001600160401b0316919050565b5f610f76612814565b600981015490915060ff1615610f9f57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110069190615657565b83602001351461102f576040516372b0a7e760e11b815260208401356004820152602401610d33565b30611040606085016040860161566e565b6001600160a01b0316146110835761105e606084016040850161566e565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610d33565b5f6110916060850185615689565b905090505f805b828163ffffffff1610156112f8575f6110b46060880188615689565b8363ffffffff168181106110ca576110ca6156ce565b90506020028101906110dc91906156e2565b6110e59061574d565b80516040519192505f9160088801916110fd916157c8565b9081526020016040518091039020541461112d57805160405163a41f772f60e01b8152610d339190600401615645565b5f6002885f01358460405160200161115c92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052611176916157c8565b602060405180830381855afa158015611191573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906111b49190615657565b90508086600801835f01516040516111cc91906157c8565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff19166002178155825160019091019061120c908261581d565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff1916905561128b90856158ec565b825160405191955061129c916157c8565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806112f1906158ff565b9050611098565b5060048301819055600183015460649061131c90600160401b900460ff1683615921565b101561133e57604051635943317f60e01b815260048101829052602401610d33565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d84788461136287612b7e565b604001516040518263ffffffff1660e01b81526004016113829190615645565b602060405180830381865af415801561139d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c19190615657565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b81526004016113fb9190615a63565b5f60405180830381865af4158015611415573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261143c9190810190615614565b90505f60028260405161144f91906157c8565b602060405180830381855afa15801561146a573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061148d9190615657565b90508281146114b95760405163baaea89d60e01b81526004810182905260248101849052604401610d33565b5050506009909201805460ff1916600117905550505050565b6114db82612c94565b6114fb576040516330efa98b60e01b815260048101839052602401610d33565b5f611505836124e5565b519050600281600581111561151c5761151c61512a565b1461153c578060405163170cc93360e21b8152600401610d33919061550b565b610e368383612cbd565b5f806115506127f0565b6003015461155e9084615af7565b905080158061157357506001600160401b0381115b156115945760405163222d164360e21b815260048101849052602401610d33565b92915050565b5f6115a36127f0565b54919050565b6115b584848484612849565b5050505050565b610e368383835f612f5c565b6115d061317e565b5f6115d96127f0565b90505f806115e6846131b5565b915091506115f382612c94565b6115ff57505050611694565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680611636575080611654565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156116695761166961512a565b03611678576116788185613565565b61168e82611689856040015161198f565b61358f565b50505050505b6116aa60015f805160206160e483398151915255565b50565b5f6115a3612814565b610e36848484846135b5565b5f6116cb6127f0565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156117045761170461512a565b60038111156117155761171561512a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61178b826124e5565b90506001835160038111156117a2576117a261512a565b146117c3578251604051633b0d540d60e21b8152610d339190600401615b16565b6004815160058111156117d8576117d861512a565b036117ee576117e6866135e1565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61181389612b7e565b604001516040518263ffffffff1660e01b81526004016118339190615645565b606060405180830381865af415801561184e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118729190615b24565b509150915081841461189f57846040015160405163089938b360e11b8152600401610d3391815260200190565b806001600160401b031683606001516001600160401b031610806118d85750806001600160401b03168560a001516001600160401b0316115b1561190157604051632e19bc2d60e11b81526001600160401b0382166004820152602401610d33565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6119986127f0565b60030154611594906001600160401b038416615921565b5f6119b9826124e5565b6080015192915050565b5f6119cc6127f0565b5f928352600a0160205250604090205490565b610ac58383835f6135b5565b6115b584848484612f5c565b6119ff61317e565b5f611a086127f0565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a4157611a4161512a565b6003811115611a5257611a5261512a565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101529050600381516003811115611acb57611acb61512a565b14611aec578051604051633b0d540d60e21b8152610d339190600401615b16565b6004611afb82604001516124e5565b516005811115611b0d57611b0d61512a565b14611c0c575f611b1c84612b7e565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b8152600401611b5b9190615645565b606060405180830381865af4158015611b76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9a9190615b24565b509150915081846040015114611bc65760405163089938b360e11b815260048101839052602401610d33565b806001600160401b03168460c001516001600160401b03161115611c0857604051632e19bc2d60e11b81526001600160401b0382166004820152602401610d33565b5050505b611c15846135e1565b5050611c2d60015f805160206160e483398151915255565b5050565b5f611c3a6127f0565b5f92835260080160205250604090205490565b5f611c566127f0565b90506001600160a01b038216611c8a5760405163caa903f960e01b81526001600160a01b0383166004820152602401610d33565b5f8381526006820160205260409020546001600160a01b03163314611cd057335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610d33565b336001600160a01b03831603611cff575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f611d376127f0565b90505f611d43836124e5565b5190506004816005811115611d5a57611d5a61512a565b14611d7a578060405163170cc93360e21b8152600401610d33919061550b565b5f8381526006830160205260409020546001600160a01b03163314611d9f5733611cab565b5f838152600683016020526040902054610ac5906001600160a01b031684613565565b5f611dcb6127f0565b600401546001600160a01b0316919050565b610e36848484846127c4565b5f611df2612814565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611e1986612b7e565b604001516040518263ffffffff1660e01b8152600401611e399190615645565b6040805180830381865af4158015611e53573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e779190615b59565b9150915080611e9d57604051632d07135360e01b81528115156004820152602401610d33565b5f82815260068401602052604090208054611eb7906154d9565b90505f03611edb5760405163089938b360e11b815260048101839052602401610d33565b60015f83815260078501602052604090205460ff166005811115611f0157611f0161512a565b14611f34575f8281526007840160205260409081902054905163170cc93360e21b8152610d339160ff169060040161550b565b5f8281526006840160205260408120611f4c9161502c565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f611fe46127f0565b5f9283526009016020525060409020546001600160a01b031690565b61203060405180608001604052805f81526020015f81526020015f81526020015f6001600160401b031681525090565b612038612814565b6040805160808101825260028301548152600383015460208201526004830154918101919091526005909101546001600160401b03166060820152919050565b5f6120816127f0565b60020154600160401b900461ffff16919050565b5f61209e61317e565b6120aa848484346137c5565b90506120c260015f805160206160e483398151915255565b9392505050565b5f6120d26127f0565b60020154600160501b90046001600160401b0316919050565b5f6120f46127f0565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561212d5761212d61512a565b600381111561213e5761213e61512a565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152909150815160038111156121b7576121b761512a565b141580156121d857506003815160038111156121d5576121d561512a565b14155b156121f9578051604051633b0d540d60e21b8152610d339190600401615b16565b5f61220782604001516124e5565b905080606001516001600160401b03165f03612239576040516339b894f960e21b815260048101859052602401610d33565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f936122a793906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af41580156122c1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122e89190810190615614565b6040518263ffffffff1660e01b81526004016123049190615645565b6020604051808303815f875af1158015612320573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b59190615657565b5f61234d612814565b5f838152600682016020526040902080549192509061236b906154d9565b90505f0361238f5760405163089938b360e11b815260048101839052602401610d33565b60015f83815260078301602052604090205460ff1660058111156123b5576123b561512a565b146123e8575f8281526007820160205260409081902054905163170cc93360e21b8152610d339160ff169060040161550b565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916124219190600401615b7c565b6020604051808303815f875af115801561243d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac59190615657565b5f61246a612814565b60010154600160401b900460ff16919050565b5f6124866127f0565b60030154905090565b5f61249861317e565b6124a382333461391f565b90506124bb60015f805160206160e483398151915255565b919050565b5f6124c96127f0565b5f928352600b016020525060409020546001600160a01b031690565b6124ed615063565b5f6124f6612814565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff16600581111561252d5761252d61512a565b600581111561253e5761253e61512a565b8152602001600182018054612552906154d9565b80601f016020809104026020016040519081016040528092919081815260200182805461257e906154d9565b80156125c95780601f106125a0576101008083540402835291602001916125c9565b820191905f5260205f20905b8154815290600101906020018083116125ac57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b604080516080810182525f8082526020820181905291810182905260608101919091526126526127f0565b5f9283526006016020908152604092839020835160808101855281546001600160a01b038116825261ffff600160a01b820416938201939093526001600160401b03600160b01b909304831694810194909452600101541660608301525090565b5f6126bc6127f0565b60010154905090565b6001600160a01b0381166126f75760405163caa903f960e01b81526001600160a01b0382166004820152602401610d33565b5f6127006127f0565b5f8481526007820160205260409020549091506001600160a01b0361010090910416331461272e5733611cab565b336001600160a01b0383160361275d575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f80612796612814565b90508060080184846040516127ac929190615c06565b90815260200160405180910390205491505092915050565b6127d084848484612849565b610e3657604051631036cf9160e11b815260048101859052602401610d33565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b612840613b5f565b6116aa81613baa565b5f806128536127f0565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561288c5761288c61512a565b600381111561289d5761289d61512a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f612913826124e5565b905060028351600381111561292a5761292a61512a565b1461294b578251604051633b0d540d60e21b8152610d339190600401615b16565b60208301516001600160a01b031633146129e7575f8281526006850160205260409020546001600160a01b031633146129845733611cab565b5f82815260068501602052604090205460a08201516129b391600160b01b90046001600160401b031690615c15565b6001600160401b03164210156129e75760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610d33565b6002815160058111156129fc576129fc61512a565b03612b1e5760028401546080840151612a1e916001600160401b031690615c15565b6001600160401b0316421015612a525760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610d33565b8715612a6457612a628288612cbd565b505b5f8981526007850160205260409020805460ff1916600317905560608301516080820151612a9d918491612a989190615c35565b613c24565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b0390931692909217909155612ae084888c613dee565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450612b769350505050565b600481516005811115612b3357612b3361512a565b03612b5a57612b4383878b613dee565b50612b4d896135e1565b6001945050505050612b76565b805160405163170cc93360e21b8152610d33919060040161550b565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612be2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612c099190810190615c55565b9150915080612c2b57604051636b2f19e960e01b815260040160405180910390fd5b815115612c51578151604051636ba589a560e01b81526004810191909152602401610d33565b60208201516001600160a01b031615612c8d576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610d33565b5092915050565b5f80612c9e6127f0565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612d08573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612d2f9190810190615c55565b9150915080612d5157604051636b2f19e960e01b815260040160405180910390fd5b5f612d5a6127f0565b6005810154845191925014612d88578251604051636ba589a560e01b81526004810191909152602401610d33565b60208301516001600160a01b031615612dc4576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610d33565b60208301516001600160a01b031615612e00576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610d33565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b8152600401612e3d9190615645565b6040805180830381865af4158015612e57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e7b9190615ce5565b91509150818814612ea25760405163089938b360e11b815260048101899052602401610d33565b5f8881526006840160205260409020600101546001600160401b039081169082161115612f33575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612f51565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b5f80612f666127f0565b90505f612f7287613fd3565b9050612f7d87612c94565b612f8c57600192505050612b76565b5f8781526006830160205260409020546001600160a01b03163314612fb15733611cab565b5f87815260068301602052604090205460a0820151612fe091600160b01b90046001600160401b031690615c15565b6001600160401b03168160c001516001600160401b031610156130275760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610d33565b5f861561303f576130388887612cbd565b905061305d565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f906130829061198f565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156130eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061310f9190615657565b90508084600a015f8b81526020019081526020015f205f82825461313391906158ec565b90915550506001600160a01b03861615613170575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f805160206160e48339815191528054600119016131af57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6131be615063565b5f6131c7612814565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6131ee88612b7e565b604001516040518263ffffffff1660e01b815260040161320e9190615645565b6040805180830381865af4158015613228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061324c9190615b59565b91509150801561327357604051632d07135360e01b81528115156004820152602401610d33565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156132a4576132a461512a565b60058111156132b5576132b561512a565b81526020016001820180546132c9906154d9565b80601f01602080910402602001604051908101604052809291908181526020018280546132f5906154d9565b80156133405780601f1061331757610100808354040283529160200191613340565b820191905f5260205f20905b81548152906001019060200180831161332357829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156133ab576133ab61512a565b141580156133cc57506001815160058111156133c9576133c961512a565b14155b156133ed57805160405163170cc93360e21b8152610d33919060040161550b565b6003815160058111156134025761340261512a565b036134105760048152613415565b600581525b83600801816020015160405161342b91906157c8565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561346f5761346f61512a565b021790555060208201516001820190613488908261581d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561352e5761352e61512a565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f61356e6127f0565b5f838152600a8201602052604081208054919055909150610e3684826142ac565b611c2d6001600160a01b0383168261430a565b60015f805160206160e483398151915255565b6135c184848484612f5c565b610e3657604051635bff683f60e11b815260048101859052602401610d33565b5f6135ea6127f0565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156136235761362361512a565b60038111156136345761363461512a565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506136a8610e3c565b82608001516136b79190615c15565b6001600160401b03164210156136eb5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610d33565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b03168061373b57506020820151613759565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061376683888661439d565b9150915061377f8560200151611689876060015161198f565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806137cf6127f0565b600281015490915061ffff600160401b909104811690861610806137f8575061271061ffff8616115b1561381c57604051635f12e6c360e11b815261ffff86166004820152602401610d33565b60028101546001600160401b039081169085161015613858576040516202a06d60e11b81526001600160401b0385166004820152602401610d33565b805483108061386a5750806001015483115b1561388b5760405163222d164360e21b815260048101849052602401610d33565b825f61389682611546565b90505f6138a3898361444a565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806139296127f0565b90505f61393584611546565b90505f613941876124e5565b905061394c87612c94565b61396c576040516330efa98b60e01b815260048101889052602401610d33565b6002815160058111156139815761398161512a565b146139a257805160405163170cc93360e21b8152610d33919060040161550b565b5f8282608001516139b39190615c15565b905083600201600a9054906101000a90046001600160401b031682604001516139dc9190615d08565b6001600160401b0316816001600160401b03161115613a1957604051636d51fe0560e11b81526001600160401b0382166004820152602401610d33565b5f80613a258a84613c24565b915091505f8a83604051602001613a5392919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16613ba857604051631afcd79f60e31b815260040160405180910390fd5b565b613bb2613b5f565b613bbb81614955565b613bc361496e565b6116aa60608201356080830135613be060c0850160a086016152d6565b613bf060e0860160c08701615d33565b613c01610100870160e08801615d4c565b610100870135613c1961014089016101208a0161566e565b88610140013561497e565b5f805f613c2f612814565b5f868152600782016020526040902060020154909150600160801b90046001600160401b0316613c5f8582614b40565b5f613c6987614d66565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613d12573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613d399190810190615614565b6040518263ffffffff1660e01b8152600401613d559190615645565b6020604051808303815f875af1158015613d71573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d959190615657565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f80613df86127f0565b90505f613e0886604001516124e5565b90505f600382516005811115613e2057613e2061512a565b1480613e3e5750600482516005811115613e3c57613e3c61512a565b145b15613e4e575060c0810151613e8b565b600282516005811115613e6357613e6361512a565b03613e6f575042613e8b565b815160405163170cc93360e21b8152610d33919060040161550b565b86608001516001600160401b0316816001600160401b031611613eb3575f93505050506120c2565b600483015460608801515f916001600160a01b031690634f22429f90613ed89061198f565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa158015613f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f7d9190615657565b5f878152600886016020526040902081905590506001600160a01b03871615612f51575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b613fdb615063565b5f613fe4612814565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561401d5761401d61512a565b600581111561402e5761402e61512a565b8152602001600182018054614042906154d9565b80601f016020809104026020016040519081016040528092919081815260200182805461406e906154d9565b80156140b95780601f10614090576101008083540402835291602001916140b9565b820191905f5260205f20905b81548152906001019060200180831161409c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156141275761412761512a565b1461415a575f8481526007830160205260409081902054905163170cc93360e21b8152610d339160ff169060040161550b565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561419e5761419e61512a565b0217905550602082015160018201906141b7908261581d565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6142558582613c24565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b1580156142f8575f80fd5b505af11580156117e6573d5f803e3d5ffd5b8047101561432d5760405163cd78605960e01b8152306004820152602401610d33565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614376576040519150601f19603f3d011682016040523d82523d5f602084013e61437b565b606091505b5050905080610ac557604051630a12f52160e11b815260040160405180910390fd5b5f805f6143a86127f0565b5f8681526008820160205260408120805490829055919250908190801561443c575f878152600685016020526040902054612710906143f290600160a01b900461ffff1683615921565b6143fc9190615af7565b91508184600a015f8981526020019081526020015f205f82825461442091906158ec565b9091555061443090508282615d6c565b925061443c89846142ac565b509097909650945050505050565b5f614453612814565b6009015460ff1661447757604051637fab81e560e01b815260040160405180910390fd5b5f614480612814565b90504261449360608601604087016152d6565b6001600160401b03161115806144cd57506144b16202a300426158ec565b6144c160608601604087016152d6565b6001600160401b031610155b15614507576144e260608501604086016152d6565b604051635879da1360e11b81526001600160401b039091166004820152602401610d33565b61451c6145176060860186615d7f565b614dcf565b61452c6145176080860186615d7f565b603061453b6020860186615d93565b90501461456d5761454f6020850185615d93565b6040516326475b2f60e11b8152610d33925060040190815260200190565b6145778480615d93565b90505f036145a4576145898480615d93565b604051633e08a12560e11b8152600401610d33929190615dd5565b5f600882016145b38680615d93565b6040516145c1929190615c06565b908152602001604051809103902054146145fa576145df8480615d93565b60405163a41f772f60e01b8152600401610d33929190615dd5565b614604835f614b40565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016146418a80615d93565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190614689908b018b615d93565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020016146d260608b0160408c016152d6565b6001600160401b031681526020016146ed60608b018b615d7f565b6146f690615de8565b815260200161470860808b018b615d7f565b61471190615de8565b8152602001886001600160401b03168152506040518263ffffffff1660e01b815260040161473f9190615f15565b5f60405180830381865af4158015614759573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526147809190810190615fcc565b5f8281526006860160205260409020919350915061479e828261581d565b5081600884016147ae8880615d93565b6040516147bc929190615c06565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906147f8908590600401615645565b6020604051808303815f875af1158015614814573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906148389190615657565b5f8481526007860160205260409020805460ff19166001179055905061485e8780615d93565b5f85815260078701602052604090206001019161487c91908361600f565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff19169055806148db8880615d93565b6040516148e9929190615c06565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061492791906152d6565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61495d613b5f565b614965614f38565b6116aa81614f40565b614976613b5f565b613ba8615024565b614986613b5f565b5f61498f6127f0565b905061ffff861615806149a7575061271061ffff8716115b156149cb57604051635f12e6c360e11b815261ffff87166004820152602401610d33565b878911156149ef5760405163222d164360e21b8152600481018a9052602401610d33565b60ff85161580614a025750600a60ff8616115b15614a255760405163170db35960e31b815260ff86166004820152602401610d33565b614a2d610e3c565b6001600160401b0316876001600160401b03161015614a69576040516202a06d60e11b81526001600160401b0388166004820152602401610d33565b835f03614a895760405163a733007160e01b815260040160405180910390fd5b81614aaa57604051632f6bd1db60e01b815260048101839052602401610d33565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f614b49612814565b90505f826001600160401b0316846001600160401b03161115614b7757614b708385615c35565b9050614b84565b614b818484615c35565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580614be6575060018401548151614be2916001600160401b0316906158ec565b8210155b15614c0c576001600160401b038316606082015281815260408101516020820152614c2b565b8281606001818151614c1e9190615c15565b6001600160401b03169052505b6060810151614c3b906064615d08565b602082015160018601546001600160401b039290921691614c669190600160401b900460ff16615921565b1015614c9657606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610d33565b856001600160401b031681604001818151614cb191906158ec565b9052506040810180516001600160401b0387169190614cd1908390615d6c565b90525060018401546040820151606491614cf691600160401b90910460ff1690615921565b1015614d1d578060400151604051635943317f60e01b8152600401610d3391815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f80614d70612814565b5f8481526007820160205260409020600201805491925090600890614da490600160401b90046001600160401b03166160c8565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b614ddc60208201826152a9565b63ffffffff16158015614dfc5750614df76020820182615689565b151590505b15614e4357614e0e60208201826152a9565b614e1b6020830183615689565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610d33565b614e506020820182615689565b9050614e5f60208301836152a9565b63ffffffff161115614e7857614e0e60208201826152a9565b60015b614e886020830183615689565b9050811015611c2d57614e9e6020830183615689565b614ea9600184615d6c565b818110614eb857614eb86156ce565b9050602002016020810190614ecd919061566e565b6001600160a01b0316614ee36020840184615689565b83818110614ef357614ef36156ce565b9050602002016020810190614f08919061566e565b6001600160a01b03161015614f3057604051630dbc8d5f60e31b815260040160405180910390fd5b600101614e7b565b613ba8613b5f565b614f48613b5f565b5f614f51612814565b8235815590506014614f696060840160408501615d4c565b60ff161180614f885750614f836060830160408401615d4c565b60ff16155b15614fbc57614f9d6060830160408401615d4c565b604051634a59bbff60e11b815260ff9091166004820152602401610d33565b614fcc6060830160408401615d4c565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614ffd60408301602084016152d6565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6135a2613b5f565b508054615038906154d9565b5f825580601f10615047575050565b601f0160209004905f5260205f20908101906116aa91906150a0565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b808211156150b4575f81556001016150a1565b5090565b80151581146116aa575f80fd5b803563ffffffff811681146124bb575f80fd5b5f805f606084860312156150ea575f80fd5b8335925060208401356150fc816150b8565b915061510a604085016150c5565b90509250925092565b5f60208284031215615123575f80fd5b5035919050565b634e487b7160e01b5f52602160045260245ffd5b6004811061514e5761514e61512a565b9052565b5f60e08201905061516482845161513e565b60018060a01b0360208401511660208301526040830151604083015260608301516001600160401b0380821660608501528060808601511660808501528060a08601511660a08501528060c08601511660c0850152505092915050565b5f61016082840312156151d2575f80fd5b50919050565b5f80604083850312156151e9575f80fd5b82356001600160401b038111156151fe575f80fd5b83016080818603121561520f575f80fd5b915061521d602084016150c5565b90509250929050565b5f8060408385031215615237575f80fd5b8235915061521d602084016150c5565b6001600160a01b03811681146116aa575f80fd5b5f805f806080858703121561526e575f80fd5b843593506020850135615280816150b8565b925061528e604086016150c5565b9150606085013561529e81615247565b939692955090935050565b5f602082840312156152b9575f80fd5b6120c2826150c5565b6001600160401b03811681146116aa575f80fd5b5f602082840312156152e6575f80fd5b81356120c2816152c2565b5f8060408385031215615302575f80fd5b82359150602083013561531481615247565b809150509250929050565b803561ffff811681146124bb575f80fd5b5f805f60608486031215615342575f80fd5b83356001600160401b03811115615357575f80fd5b840160a08187031215615368575f80fd5b92506153766020850161531f565b91506040840135615386816152c2565b809150509250925092565b6006811061514e5761514e61512a565b5f5b838110156153bb5781810151838201526020016153a3565b50505f910152565b5f81518084526153da8160208601602086016153a1565b601f01601f19169290920160200192915050565b60208152615400602082018351615391565b5f602083015160e0604084015261541b6101008401826153c3565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561547f575f80fd5b82356001600160401b0380821115615495575f80fd5b818501915085601f8301126154a8575f80fd5b8135818111156154b6575f80fd5b8660208285010111156154c7575f80fd5b60209290920196919550909350505050565b600181811c908216806154ed57607f821691505b6020821081036151d257634e487b7160e01b5f52602260045260245ffd5b602081016115948284615391565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561554f5761554f615519565b60405290565b604080519081016001600160401b038111828210171561554f5761554f615519565b604051601f8201601f191681016001600160401b038111828210171561559f5761559f615519565b604052919050565b5f6001600160401b038211156155bf576155bf615519565b50601f01601f191660200190565b5f82601f8301126155dc575f80fd5b81516155ef6155ea826155a7565b615577565b818152846020838601011115615603575f80fd5b612b768260208301602087016153a1565b5f60208284031215615624575f80fd5b81516001600160401b03811115615639575f80fd5b612b76848285016155cd565b602081525f6120c260208301846153c3565b5f60208284031215615667575f80fd5b5051919050565b5f6020828403121561567e575f80fd5b81356120c281615247565b5f808335601e1984360301811261569e575f80fd5b8301803591506001600160401b038211156156b7575f80fd5b6020019150600581901b3603821315613de7575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126156f6575f80fd5b9190910192915050565b5f82601f83011261570f575f80fd5b813561571d6155ea826155a7565b818152846020838601011115615731575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561575d575f80fd5b61576561552d565b82356001600160401b038082111561577b575f80fd5b61578736838701615700565b8352602085013591508082111561579c575f80fd5b506157a936828601615700565b60208301525060408301356157bd816152c2565b604082015292915050565b5f82516156f68184602087016153a1565b601f821115610ac557805f5260205f20601f840160051c810160208510156157fe5750805b601f840160051c820191505b818110156115b5575f815560010161580a565b81516001600160401b0381111561583657615836615519565b61584a8161584484546154d9565b846157d9565b602080601f83116001811461587d575f84156158665750858301515b5f19600386901b1c1916600185901b1785556117e6565b5f85815260208120601f198616915b828110156158ab5788860151825594840194600190910190840161588c565b50858210156158c857878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611594576115946158d8565b5f63ffffffff808316818103615917576159176158d8565b6001019392505050565b8082028115828204841417611594576115946158d8565b5f808335601e1984360301811261594d575f80fd5b83016020810192503590506001600160401b0381111561596b575f80fd5b803603821315613de7575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015615a5657848303601f19018952813536889003605e190181126159dd575f80fd5b870160606159eb8280615938565b8287526159fb8388018284615979565b92505050615a0b86830183615938565b86830388880152615a1d838284615979565b925050506040808301359250615a32836152c2565b6001600160401b0392909216949091019390935297830197908301906001016159b8565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135615a8781615247565b6001600160a01b031660608381019190915283013536849003601e19018112615aae575f80fd5b83016020810190356001600160401b03811115615ac9575f80fd5b8060051b3603821315615ada575f80fd5b608080850152615aee60a0850182846159a1565b95945050505050565b5f82615b1157634e487b7160e01b5f52601260045260245ffd5b500490565b60208101611594828461513e565b5f805f60608486031215615b36575f80fd5b835192506020840151615b48816152c2565b6040850151909250615386816152c2565b5f8060408385031215615b6a575f80fd5b825191506020830151615314816150b8565b5f60208083525f8454615b8e816154d9565b806020870152604060018084165f8114615baf5760018114615bcb57615bf8565b60ff19851660408a0152604084151560051b8a01019550615bf8565b895f5260205f205f5b85811015615bef5781548b8201860152908301908801615bd4565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115612c8d57612c8d6158d8565b6001600160401b03828116828216039080821115612c8d57612c8d6158d8565b5f8060408385031215615c66575f80fd5b82516001600160401b0380821115615c7c575f80fd5b9084019060608287031215615c8f575f80fd5b615c9761552d565b825181526020830151615ca981615247565b6020820152604083015182811115615cbf575f80fd5b615ccb888286016155cd565b6040830152508094505050506020830151615314816150b8565b5f8060408385031215615cf6575f80fd5b825191506020830151615314816152c2565b6001600160401b03818116838216028082169190828114615d2b57615d2b6158d8565b505092915050565b5f60208284031215615d43575f80fd5b6120c28261531f565b5f60208284031215615d5c575f80fd5b813560ff811681146120c2575f80fd5b81810381811115611594576115946158d8565b5f8235603e198336030181126156f6575f80fd5b5f808335601e19843603018112615da8575f80fd5b8301803591506001600160401b03821115615dc1575f80fd5b602001915036819003821315613de7575f80fd5b602081525f612b76602083018486615979565b5f60408236031215615df8575f80fd5b615e00615555565b615e09836150c5565b81526020808401356001600160401b0380821115615e25575f80fd5b9085019036601f830112615e37575f80fd5b813581811115615e4957615e49615519565b8060051b9150615e5a848301615577565b8181529183018401918481019036841115615e73575f80fd5b938501935b83851015615e9d5784359250615e8d83615247565b8282529385019390850190615e78565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615f0a5784516001600160a01b03168252938301936001929092019190830190615ee1565b509695505050505050565b60208152815160208201525f602083015160e06040840152615f3b6101008401826153c3565b90506040840151601f1980858403016060860152615f5983836153c3565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615f898383615eaf565b925060a08601519150808584030160c086015250615fa78282615eaf565b91505060c0840151615fc460e08501826001600160401b03169052565b509392505050565b5f8060408385031215615fdd575f80fd5b8251915060208301516001600160401b03811115615ff9575f80fd5b616005858286016155cd565b9150509250929050565b6001600160401b0383111561602657616026615519565b61603a8361603483546154d9565b836157d9565b5f601f84116001811461606b575f85156160545750838201355b5f19600387901b1c1916600186901b1783556115b5565b5f83815260208120601f198716915b8281101561609a578685013582556020948501946001909201910161607a565b50868210156160b6575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b03808316818103615917576159176158d856fe9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122097ff3fcb58d22bdb56336e84dd031c787c523f287ed8fd3a5386e2989189205664736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -649,6 +676,471 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) WARPME return _NativeTokenStakingManager.Contract.WARPMESSENGER(&_NativeTokenStakingManager.CallOpts) } +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getChurnPeriodSeconds") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetChurnPeriodSeconds(&_NativeTokenStakingManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetChurnPeriodSeconds(&_NativeTokenStakingManager.CallOpts) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetDelegator(opts *bind.CallOpts, delegationID [32]byte) (Delegator, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getDelegator", delegationID) + + if err != nil { + return *new(Delegator), err + } + + out0 := *abi.ConvertType(out[0], new(Delegator)).(*Delegator) + + return out0, err + +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _NativeTokenStakingManager.Contract.GetDelegator(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetDelegator is a free data retrieval call binding the contract method 0x02c588c4. +// +// Solidity: function getDelegator(bytes32 delegationID) view returns((uint8,address,bytes32,uint64,uint64,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetDelegator(delegationID [32]byte) (Delegator, error) { + return _NativeTokenStakingManager.Contract.GetDelegator(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetDelegatorRewardRecipient(opts *bind.CallOpts, delegationID [32]byte) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getDelegatorRewardRecipient", delegationID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetDelegatorRewardRecipient(delegationID [32]byte) (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetDelegatorRewardRecipient(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetDelegatorRewardRecipient is a free data retrieval call binding the contract method 0xa5461558. +// +// Solidity: function getDelegatorRewardRecipient(bytes32 delegationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetDelegatorRewardRecipient(delegationID [32]byte) (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetDelegatorRewardRecipient(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMaximumChurnPercentage(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMaximumChurnPercentage") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMaximumChurnPercentage() (uint8, error) { + return _NativeTokenStakingManager.Contract.GetMaximumChurnPercentage(&_NativeTokenStakingManager.CallOpts) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMaximumChurnPercentage() (uint8, error) { + return _NativeTokenStakingManager.Contract.GetMaximumChurnPercentage(&_NativeTokenStakingManager.CallOpts) +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMaximumStakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMaximumStakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMaximumStakeAmount() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetMaximumStakeAmount(&_NativeTokenStakingManager.CallOpts) +} + +// GetMaximumStakeAmount is a free data retrieval call binding the contract method 0xf5e53dd6. +// +// Solidity: function getMaximumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMaximumStakeAmount() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetMaximumStakeAmount(&_NativeTokenStakingManager.CallOpts) +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMaximumStakeMultiplier(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMaximumStakeMultiplier") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMaximumStakeMultiplier() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetMaximumStakeMultiplier(&_NativeTokenStakingManager.CallOpts) +} + +// GetMaximumStakeMultiplier is a free data retrieval call binding the contract method 0xb6605e84. +// +// Solidity: function getMaximumStakeMultiplier() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMaximumStakeMultiplier() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetMaximumStakeMultiplier(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMinimumDelegationFeeBips(opts *bind.CallOpts) (uint16, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMinimumDelegationFeeBips") + + if err != nil { + return *new(uint16), err + } + + out0 := *abi.ConvertType(out[0], new(uint16)).(*uint16) + + return out0, err + +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMinimumDelegationFeeBips() (uint16, error) { + return _NativeTokenStakingManager.Contract.GetMinimumDelegationFeeBips(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumDelegationFeeBips is a free data retrieval call binding the contract method 0xa83a2893. +// +// Solidity: function getMinimumDelegationFeeBips() view returns(uint16) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMinimumDelegationFeeBips() (uint16, error) { + return _NativeTokenStakingManager.Contract.GetMinimumDelegationFeeBips(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMinimumStakeAmount(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMinimumStakeAmount") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMinimumStakeAmount() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetMinimumStakeAmount(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumStakeAmount is a free data retrieval call binding the contract method 0x3765cf02. +// +// Solidity: function getMinimumStakeAmount() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMinimumStakeAmount() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetMinimumStakeAmount(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetMinimumStakeDuration(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getMinimumStakeDuration") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetMinimumStakeDuration() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetMinimumStakeDuration(&_NativeTokenStakingManager.CallOpts) +} + +// GetMinimumStakeDuration is a free data retrieval call binding the contract method 0x1fcfda5d. +// +// Solidity: function getMinimumStakeDuration() view returns(uint64) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetMinimumStakeDuration() (uint64, error) { + return _NativeTokenStakingManager.Contract.GetMinimumStakeDuration(&_NativeTokenStakingManager.CallOpts) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetPoSValidatorInfo(opts *bind.CallOpts, validationID [32]byte) (PoSValidatorInfo, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getPoSValidatorInfo", validationID) + + if err != nil { + return *new(PoSValidatorInfo), err + } + + out0 := *abi.ConvertType(out[0], new(PoSValidatorInfo)).(*PoSValidatorInfo) + + return out0, err + +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _NativeTokenStakingManager.Contract.GetPoSValidatorInfo(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetPoSValidatorInfo is a free data retrieval call binding the contract method 0xe8682f7b. +// +// Solidity: function getPoSValidatorInfo(bytes32 validationID) view returns((address,uint16,uint64,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetPoSValidatorInfo(validationID [32]byte) (PoSValidatorInfo, error) { + return _NativeTokenStakingManager.Contract.GetPoSValidatorInfo(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetRedeemableDelegatorRewards(opts *bind.CallOpts, delegationID [32]byte) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getRedeemableDelegatorRewards", delegationID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetRedeemableDelegatorRewards(delegationID [32]byte) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetRedeemableDelegatorRewards(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetRedeemableDelegatorRewards is a free data retrieval call binding the contract method 0x8cfd90e1. +// +// Solidity: function getRedeemableDelegatorRewards(bytes32 delegationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetRedeemableDelegatorRewards(delegationID [32]byte) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetRedeemableDelegatorRewards(&_NativeTokenStakingManager.CallOpts, delegationID) +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetRedeemableValidatorRewards(opts *bind.CallOpts, validationID [32]byte) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getRedeemableValidatorRewards", validationID) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetRedeemableValidatorRewards(validationID [32]byte) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetRedeemableValidatorRewards(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetRedeemableValidatorRewards is a free data retrieval call binding the contract method 0x6db4224f. +// +// Solidity: function getRedeemableValidatorRewards(bytes32 validationID) view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetRedeemableValidatorRewards(validationID [32]byte) (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetRedeemableValidatorRewards(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetRewardCalculatorAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getRewardCalculatorAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetRewardCalculatorAddress() (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetRewardCalculatorAddress(&_NativeTokenStakingManager.CallOpts) +} + +// GetRewardCalculatorAddress is a free data retrieval call binding the contract method 0x99e5a8d0. +// +// Solidity: function getRewardCalculatorAddress() view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetRewardCalculatorAddress() (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetRewardCalculatorAddress(&_NativeTokenStakingManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetSubnetID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getSubnetID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetSubnetID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.GetSubnetID(&_NativeTokenStakingManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetSubnetID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.GetSubnetID(&_NativeTokenStakingManager.CallOpts) +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetUptimeBlockchainID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getUptimeBlockchainID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetUptimeBlockchainID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.GetUptimeBlockchainID(&_NativeTokenStakingManager.CallOpts) +} + +// GetUptimeBlockchainID is a free data retrieval call binding the contract method 0x10055f73. +// +// Solidity: function getUptimeBlockchainID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetUptimeBlockchainID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.GetUptimeBlockchainID(&_NativeTokenStakingManager.CallOpts) +} + // GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // // Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) @@ -680,6 +1172,68 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetVal return _NativeTokenStakingManager.Contract.GetValidator(&_NativeTokenStakingManager.CallOpts, validationID) } +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidatorChurnPeriod(opts *bind.CallOpts) (ValidatorChurnPeriod, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidatorChurnPeriod") + + if err != nil { + return *new(ValidatorChurnPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorChurnPeriod)).(*ValidatorChurnPeriod) + + return out0, err + +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _NativeTokenStakingManager.Contract.GetValidatorChurnPeriod(&_NativeTokenStakingManager.CallOpts) +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _NativeTokenStakingManager.Contract.GetValidatorChurnPeriod(&_NativeTokenStakingManager.CallOpts) +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetValidatorRewardRecipient(opts *bind.CallOpts, validationID [32]byte) (common.Address, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getValidatorRewardRecipient", validationID) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetValidatorRewardRecipient(validationID [32]byte) (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetValidatorRewardRecipient(&_NativeTokenStakingManager.CallOpts, validationID) +} + +// GetValidatorRewardRecipient is a free data retrieval call binding the contract method 0xcb914efb. +// +// Solidity: function getValidatorRewardRecipient(bytes32 validationID) view returns(address) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetValidatorRewardRecipient(validationID [32]byte) (common.Address, error) { + return _NativeTokenStakingManager.Contract.GetValidatorRewardRecipient(&_NativeTokenStakingManager.CallOpts, validationID) +} + // GetWeight is a free data retrieval call binding the contract method 0x66435abf. // // Solidity: function getWeight(bytes32 validationID) view returns(uint64) @@ -711,6 +1265,37 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWei return _NativeTokenStakingManager.Contract.GetWeight(&_NativeTokenStakingManager.CallOpts, validationID) } +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) GetWeightToValueFactor(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "getWeightToValueFactor") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) GetWeightToValueFactor() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetWeightToValueFactor(&_NativeTokenStakingManager.CallOpts) +} + +// GetWeightToValueFactor is a free data retrieval call binding the contract method 0xc42374a8. +// +// Solidity: function getWeightToValueFactor() view returns(uint256) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) GetWeightToValueFactor() (*big.Int, error) { + return _NativeTokenStakingManager.Contract.GetWeightToValueFactor(&_NativeTokenStakingManager.CallOpts) +} + // RegisteredValidators is a free data retrieval call binding the contract method 0xfd7ac5e7. // // Solidity: function registeredValidators(bytes nodeID) view returns(bytes32) diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index b9b2dc05e..1cc8befdb 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -61,6 +61,14 @@ type Validator struct { EndedAt uint64 } +// ValidatorChurnPeriod is an auto generated low-level Go binding around an user-defined struct. +type ValidatorChurnPeriod struct { + StartedAt *big.Int + InitialWeight *big.Int + TotalWeight *big.Int + ChurnAmount uint64 +} + // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { SubnetID [32]byte @@ -90,8 +98,8 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161374f38038061374f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136028061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461273a565b610312565b005b610149610159366004612769565b6105a2565b61014961016c3660046127b7565b610b27565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461273a565b610b35565b6040516001600160401b03909116815260200161018a565b610149610b49565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461273a565b610b5c565b6101cd61025a3660046127e6565b610b71565b61014961026d3660046127b7565b610b8d565b6102216005600160991b0181565b6101cd5f8051602061358d83398151915281565b6101496102a236600461273a565b610d82565b6101e3601481565b6101496102bd36600461283f565b610ebf565b6102d56102d036600461273a565b610fcd565b60405161018a91906128fc565b6101a66202a30081565b6101496102fa36600461297c565b61111c565b6101cd61030d36600461299e565b611159565b5f8181525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561035f5761035f61287b565b60058111156103705761037061287b565b815260200160018201805461038490612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612a09565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104665761046661287b565b146104a2575f8381526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612b52565b6040518263ffffffff1660e01b815260040161055c9190612b83565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612b95565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061358d8339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612b95565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b30610695606085016040860161297c565b6001600160a01b0316146106d8576106b3606084016040850161297c565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612bac565b905090505f805b828163ffffffff16101561094d575f6107096060880188612bac565b8363ffffffff1681811061071f5761071f612bf1565b90506020028101906107319190612c05565b61073a90612c70565b80516040519192505f91600888019161075291612ce9565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612b83565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612ce9565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612b95565b90508086600801835f01516040516108219190612ce9565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff1916600217815582516001909101906108619082612d45565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff191690556108e09085612e18565b82516040519195506108f191612ce9565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a350508061094690612e2b565b90506106ed565b5060048301819055600183015460649061097190600160401b900460ff1683612e4d565b101561099357604051635943317f60e01b815260048101829052602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846109b7876111b4565b604001516040518263ffffffff1660e01b81526004016109d79190612b83565b602060405180830381865af41580156109f2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a169190612b95565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610a509190612f87565b5f60405180830381865af4158015610a6a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610a919190810190612b52565b90505f600282604051610aa49190612ce9565b602060405180830381855afa158015610abf573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ae29190612b95565b9050828114610b0e5760405163baaea89d60e01b81526004810182905260248101849052604401610499565b5050506009909201805460ff1916600117905550505050565b610b30816112ca565b505050565b5f610b3f82610fcd565b6080015192915050565b610b5161167d565b610b5a5f6116d8565b565b610b6461167d565b610b6d81611748565b5050565b5f610b7a61167d565b610b848383611a2c565b90505b92915050565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bc0866111b4565b604001516040518263ffffffff1660e01b8152600401610be09190612b83565b6040805180830381865af4158015610bfa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c1e919061302a565b9150915080610c4457604051632d07135360e01b81528115156004820152602401610499565b5f82815260068401602052604090208054610c5e90612a09565b90505f03610c825760405163089938b360e11b815260048101839052602401610499565b60015f83815260078501602052604090205460ff166005811115610ca857610ca861287b565b14610cdb575f8281526007840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f8281526006840160205260408120610cf3916126ae565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f8051602061358d8339815191529190610dc990612a09565b90505f03610ded5760405163089938b360e11b815260048101839052602401610499565b60015f83815260078301602052604090205460ff166005811115610e1357610e1361287b565b14610e46575f8281526007820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610e7f919060040161304b565b6020604051808303815f875af1158015610e9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190612b95565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f035750825b90505f826001600160401b03166001148015610f1e5750303b155b905081158015610f2c575080155b15610f4a5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610f7457845460ff60401b1916600160401b1785555b610f7e8787611f51565b8315610fc457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610fd56126e5565b5f8281525f805160206135ad833981519152602052604090819020815160e0810190925280545f8051602061358d833981519152929190829060ff1660058111156110225761102261287b565b60058111156110335761103361287b565b815260200160018201805461104790612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461107390612a09565b80156110be5780601f10611095576101008083540402835291602001916110be565b820191905f5260205f20905b8154815290600101906020018083116110a157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b61112461167d565b6001600160a01b03811661114d57604051631e4fbdf760e01b81525f6004820152602401610499565b611156816116d8565b50565b6040515f905f8051602061358d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb089061119c90869086906130d5565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611218573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261123f91908101906130e4565b915091508061126157604051636b2f19e960e01b815260040160405180910390fd5b815115611287578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b0316156112c3576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f6112d36126e5565b5f8051602061358d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611306886111b4565b604001516040518263ffffffff1660e01b81526004016113269190612b83565b6040805180830381865af4158015611340573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611364919061302a565b91509150801561138b57604051632d07135360e01b81528115156004820152602401610499565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156113bc576113bc61287b565b60058111156113cd576113cd61287b565b81526020016001820180546113e190612a09565b80601f016020809104026020016040519081016040528092919081815260200182805461140d90612a09565b80156114585780601f1061142f57610100808354040283529160200191611458565b820191905f5260205f20905b81548152906001019060200180831161143b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156114c3576114c361287b565b141580156114e457506001815160058111156114e1576114e161287b565b14155b1561150557805160405163170cc93360e21b81526104999190600401612a41565b60038151600581111561151a5761151a61287b565b03611528576004815261152d565b600581525b8360080181602001516040516115439190612ce9565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff191660018360058111156115875761158761287b565b0217905550602082015160018201906115a09082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116465761164661287b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336116af7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b5a5760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6117506126e5565b5f8281525f805160206135ad8339815191526020526040808220815160e0810190925280545f8051602061358d83398151915293929190829060ff16600581111561179d5761179d61287b565b60058111156117ae576117ae61287b565b81526020016001820180546117c290612a09565b80601f01602080910402602001604051908101604052809291908181526020018280546117ee90612a09565b80156118395780601f1061181057610100808354040283529160200191611839565b820191905f5260205f20905b81548152906001019060200180831161181c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156118a7576118a761287b565b146118da575f8481526007830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612a41565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561191e5761191e61287b565b0217905550602082015160018201906119379082612d45565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6119d58582611f6b565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611a7057604051637fab81e560e01b815260040160405180910390fd5b5f8051602061358d83398151915242611a8f6060860160408701613171565b6001600160401b0316111580611ac95750611aad6202a30042612e18565b611abd6060860160408701613171565b6001600160401b031610155b15611b0357611ade6060850160408601613171565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b611b18611b13606086018661318a565b612142565b611b28611b13608086018661318a565b6030611b37602086018661319e565b905014611b6957611b4b602085018561319e565b6040516326475b2f60e11b8152610499925060040190815260200190565b611b73848061319e565b90505f03611ba057611b85848061319e565b604051633e08a12560e11b81526004016104999291906131e0565b5f60088201611baf868061319e565b604051611bbd9291906130d5565b90815260200160405180910390205414611bf657611bdb848061319e565b60405163a41f772f60e01b81526004016104999291906131e0565b611c00835f6122ab565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611c3d8a8061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611c85908b018b61319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611cce60608b0160408c01613171565b6001600160401b03168152602001611ce960608b018b61318a565b611cf2906131f3565b8152602001611d0460808b018b61318a565b611d0d906131f3565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611d3b9190613320565b5f60405180830381865af4158015611d55573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d7c91908101906133d7565b5f82815260068601602052604090209193509150611d9a8282612d45565b508160088401611daa888061319e565b604051611db89291906130d5565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611df4908590600401612b83565b6020604051808303815f875af1158015611e10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e349190612b95565b5f8481526007860160205260409020805460ff191660011790559050611e5a878061319e565b5f858152600787016020526040902060010191611e7891908361341a565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611ed7888061319e565b604051611ee59291906130d5565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190611f239190613171565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611f596124ce565b611f6282612517565b610b6d81612530565b5f8281525f805160206135ad833981519152602052604081206002015481905f8051602061358d83398151915290600160801b90046001600160401b0316611fb385826122ab565b5f611fbd87612541565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015612066573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261208d9190810190612b52565b6040518263ffffffff1660e01b81526004016120a99190612b83565b6020604051808303815f875af11580156120c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120e99190612b95565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b61214f60208201826127b7565b63ffffffff1615801561216f575061216a6020820182612bac565b151590505b156121b65761218160208201826127b7565b61218e6020830183612bac565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b6121c36020820182612bac565b90506121d260208301836127b7565b63ffffffff1611156121eb5761218160208201826127b7565b60015b6121fb6020830183612bac565b9050811015610b6d576122116020830183612bac565b61221c6001846134d3565b81811061222b5761222b612bf1565b9050602002016020810190612240919061297c565b6001600160a01b03166122566020840184612bac565b8381811061226657612266612bf1565b905060200201602081019061227b919061297c565b6001600160a01b031610156122a357604051630dbc8d5f60e31b815260040160405180910390fd5b6001016121ee565b5f8051602061358d8339815191525f6001600160401b0380841690851611156122df576122d883856134e6565b90506122ec565b6122e984846134e6565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061234e57506001840154815161234a916001600160401b031690612e18565b8210155b15612374576001600160401b038316606082015281815260408101516020820152612393565b82816060018181516123869190613506565b6001600160401b03169052505b60608101516123a3906064613526565b602082015160018601546001600160401b0392909216916123ce9190600160401b900460ff16612e4d565b10156123fe57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b856001600160401b0316816040018181516124199190612e18565b9052506040810180516001600160401b03871691906124399083906134d3565b9052506001840154604082015160649161245e91600160401b90910460ff1690612e4d565b1015612485578060400151604051635943317f60e01b815260040161049991815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5a57604051631afcd79f60e31b815260040160405180910390fd5b61251f6124ce565b6125276125b6565b611156816125be565b6125386124ce565b611156816126a6565b5f8181525f805160206135ad8339815191526020526040812060020180545f8051602061358d833981519152919060089061258b90600160401b90046001600160401b0316613551565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610b5a6124ce565b6125c66124ce565b80355f8051602061358d83398151915290815560146125eb606084016040850161356c565b60ff16118061260a5750612605606083016040840161356c565b60ff16155b1561263e5761261f606083016040840161356c565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61264e606083016040840161356c565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561267f6040830160208401613171565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6111246124ce565b5080546126ba90612a09565b5f825580601f106126c9575050565b601f0160209004905f5260205f20908101906111569190612722565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612736575f8155600101612723565b5090565b5f6020828403121561274a575f80fd5b5035919050565b803563ffffffff81168114612764575f80fd5b919050565b5f806040838503121561277a575f80fd5b82356001600160401b0381111561278f575f80fd5b8301608081860312156127a0575f80fd5b91506127ae60208401612751565b90509250929050565b5f602082840312156127c7575f80fd5b610b8482612751565b80356001600160401b0381168114612764575f80fd5b5f80604083850312156127f7575f80fd5b82356001600160401b0381111561280c575f80fd5b830160a0818603121561281d575f80fd5b91506127ae602084016127d0565b6001600160a01b0381168114611156575f80fd5b5f808284036080811215612851575f80fd5b606081121561285e575f80fd5b5082915060608301356128708161282b565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b600681106128ab57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b838110156128c95781810151838201526020016128b1565b50505f910152565b5f81518084526128e88160208601602086016128af565b601f01601f19169290920160200192915050565b6020815261290e60208201835161288f565b5f602083015160e060408401526129296101008401826128d1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f6020828403121561298c575f80fd5b81356129978161282b565b9392505050565b5f80602083850312156129af575f80fd5b82356001600160401b03808211156129c5575f80fd5b818501915085601f8301126129d8575f80fd5b8135818111156129e6575f80fd5b8660208285010111156129f7575f80fd5b60209290920196919550909350505050565b600181811c90821680612a1d57607f821691505b602082108103612a3b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610b87828461288f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612a8557612a85612a4f565b60405290565b604080519081016001600160401b0381118282101715612a8557612a85612a4f565b604051601f8201601f191681016001600160401b0381118282101715612ad557612ad5612a4f565b604052919050565b5f6001600160401b03821115612af557612af5612a4f565b50601f01601f191660200190565b5f82601f830112612b12575f80fd5b8151612b25612b2082612add565b612aad565b818152846020838601011115612b39575f80fd5b612b4a8260208301602087016128af565b949350505050565b5f60208284031215612b62575f80fd5b81516001600160401b03811115612b77575f80fd5b612b4a84828501612b03565b602081525f610b8460208301846128d1565b5f60208284031215612ba5575f80fd5b5051919050565b5f808335601e19843603018112612bc1575f80fd5b8301803591506001600160401b03821115612bda575f80fd5b6020019150600581901b360382131561213b575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612c19575f80fd5b9190910192915050565b5f82601f830112612c32575f80fd5b8135612c40612b2082612add565b818152846020838601011115612c54575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612c80575f80fd5b612c88612a63565b82356001600160401b0380821115612c9e575f80fd5b612caa36838701612c23565b83526020850135915080821115612cbf575f80fd5b50612ccc36828601612c23565b602083015250612cde604084016127d0565b604082015292915050565b5f8251612c198184602087016128af565b601f821115610b3057805f5260205f20601f840160051c81016020851015612d1f5750805b601f840160051c820191505b81811015612d3e575f8155600101612d2b565b5050505050565b81516001600160401b03811115612d5e57612d5e612a4f565b612d7281612d6c8454612a09565b84612cfa565b602080601f831160018114612da5575f8415612d8e5750858301515b5f19600386901b1c1916600185901b178555612dfc565b5f85815260208120601f198616915b82811015612dd357888601518255948401946001909101908401612db4565b5085821015612df057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b8757610b87612e04565b5f63ffffffff808316818103612e4357612e43612e04565b6001019392505050565b8082028115828204841417610b8757610b87612e04565b5f808335601e19843603018112612e79575f80fd5b83016020810192503590506001600160401b03811115612e97575f80fd5b80360382131561213b575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b87811015612f7a57848303601f19018952813536889003605e19018112612f09575f80fd5b87016060612f178280612e64565b828752612f278388018284612ea5565b92505050612f3786830183612e64565b86830388880152612f49838284612ea5565b9250505060406001600160401b03612f628285016127d0565b16950194909452509783019790830190600101612ee4565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135612fab8161282b565b6001600160a01b031660608381019190915283013536849003601e19018112612fd2575f80fd5b83016020810190356001600160401b03811115612fed575f80fd5b8060051b3603821315612ffe575f80fd5b60808085015261301260a085018284612ecd565b95945050505050565b80518015158114612764575f80fd5b5f806040838503121561303b575f80fd5b825191506127ae6020840161301b565b5f60208083525f845461305d81612a09565b806020870152604060018084165f811461307e576001811461309a576130c7565b60ff19851660408a0152604084151560051b8a010195506130c7565b895f5260205f205f5b858110156130be5781548b82018601529083019088016130a3565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156130f5575f80fd5b82516001600160401b038082111561310b575f80fd5b908401906060828703121561311e575f80fd5b613126612a63565b8251815260208301516131388161282b565b602082015260408301518281111561314e575f80fd5b61315a88828601612b03565b60408301525093506127ae9150506020840161301b565b5f60208284031215613181575f80fd5b610b84826127d0565b5f8235603e19833603018112612c19575f80fd5b5f808335601e198436030181126131b3575f80fd5b8301803591506001600160401b038211156131cc575f80fd5b60200191503681900382131561213b575f80fd5b602081525f612b4a602083018486612ea5565b5f60408236031215613203575f80fd5b61320b612a8b565b61321483612751565b81526020808401356001600160401b0380821115613230575f80fd5b9085019036601f830112613242575f80fd5b81358181111561325457613254612a4f565b8060051b9150613265848301612aad565b818152918301840191848101903684111561327e575f80fd5b938501935b838510156132a857843592506132988361282b565b8282529385019390850190613283565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156133155784516001600160a01b031682529383019360019290920191908301906132ec565b509695505050505050565b60208152815160208201525f602083015160e060408401526133466101008401826128d1565b90506040840151601f198085840301606086015261336483836128d1565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261339483836132ba565b925060a08601519150808584030160c0860152506133b282826132ba565b91505060c08401516133cf60e08501826001600160401b03169052565b509392505050565b5f80604083850312156133e8575f80fd5b8251915060208301516001600160401b03811115613404575f80fd5b61341085828601612b03565b9150509250929050565b6001600160401b0383111561343157613431612a4f565b6134458361343f8354612a09565b83612cfa565b5f601f841160018114613476575f851561345f5750838201355b5f19600387901b1c1916600186901b178355612d3e565b5f83815260208120601f198716915b828110156134a55786850135825560209485019460019092019101613485565b50868210156134c1575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610b8757610b87612e04565b6001600160401b038281168282160390808211156112c3576112c3612e04565b6001600160401b038181168382160190808211156112c3576112c3612e04565b6001600160401b0381811683821602808216919082811461354957613549612e04565b505092915050565b5f6001600160401b03808316818103612e4357612e43612e04565b5f6020828403121561357c575f80fd5b813560ff81168114612997575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220eb579bb3f779586161cb1344088aa201289de9155f5865a0fa9eea86bd6b1ed464736f6c63430008190033", + ABI: "[{\"inputs\":[{\"internalType\":\"enumICMInitializable\",\"name\":\"init\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidBLSKeyLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encodedConversionID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"expectedConversionID\",\"type\":\"bytes32\"}],\"name\":\"InvalidConversionID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitializationStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"name\":\"InvalidMaximumChurnPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"InvalidNodeID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"addressesLength\",\"type\":\"uint256\"}],\"name\":\"InvalidPChainOwnerThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"InvalidRegistrationExpiry\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InvalidTotalWeight\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidationID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"}],\"name\":\"InvalidValidatorManagerAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"blockchainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidValidatorManagerBlockchainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidValidatorStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidWarpMessage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"senderAddress\",\"type\":\"address\"}],\"name\":\"InvalidWarpOriginSenderAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"sourceChainID\",\"type\":\"bytes32\"}],\"name\":\"InvalidWarpSourceChainID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"name\":\"MaxChurnRateExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"NodeAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PChainOwnerAddressesNotSorted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"validRegistration\",\"type\":\"bool\"}],\"name\":\"UnexpectedRegistrationStatus\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"}],\"name\":\"InitialValidatorCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"}],\"name\":\"ValidationPeriodCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ValidationPeriodEnded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"ValidationPeriodRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"weight\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"}],\"name\":\"ValidatorRemovalInitialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"validatorWeight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"ADDRESS_LENGTH\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VALIDATOR_MANAGER_STORAGE_LOCATION\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WARP_MESSENGER\",\"outputs\":[{\"internalType\":\"contractIWarpMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"completeValidatorRegistration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getChurnPeriodSeconds\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaximumChurnPercentage\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSubnetID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getValidator\",\"outputs\":[{\"components\":[{\"internalType\":\"enumValidatorStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"startingWeight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"messageNonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"startedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"endedAt\",\"type\":\"uint64\"}],\"internalType\":\"structValidator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getValidatorChurnPeriod\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"startedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalWeight\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"churnAmount\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorChurnPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"getWeight\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\"},{\"internalType\":\"uint8\",\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\"}],\"internalType\":\"structValidatorManagerSettings\",\"name\":\"settings\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"initializeEndValidation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"registrationExpiry\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"remainingBalanceOwner\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"threshold\",\"type\":\"uint32\"},{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"internalType\":\"structPChainOwner\",\"name\":\"disableOwner\",\"type\":\"tuple\"}],\"internalType\":\"structValidatorRegistrationInput\",\"name\":\"registrationInput\",\"type\":\"tuple\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"initializeValidatorRegistration\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"validatorManagerAddress\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"blsPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structInitialValidator[]\",\"name\":\"initialValidators\",\"type\":\"tuple[]\"}],\"internalType\":\"structConversionData\",\"name\":\"conversionData\",\"type\":\"tuple\"},{\"internalType\":\"uint32\",\"name\":\"messageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"}],\"name\":\"registeredValidators\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendEndValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"}],\"name\":\"resendRegisterValidatorMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561000f575f80fd5b506040516137db3803806137db83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b61368e8061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061016d575f3560e01c80639ba96b86116100d9578063c00a8aec11610093578063d5f20ff61161006e578063d5f20ff61461036c578063df93d8de1461038c578063f2fde38b14610396578063fd7ac5e7146103a9575f80fd5b8063c00a8aec14610349578063c974d1b614610351578063d588c18f14610359575f80fd5b80639ba96b8614610297578063a3a65e48146102aa578063a8099af2146102bd578063b771b3bc14610301578063bc5fbfec1461030f578063bee0a03f14610336575f80fd5b806366435abf1161012a57806366435abf14610204578063715018a614610217578063732214f81461021f5780638280a25a146102265780638da5cb5b1461024057806397fb70d414610284575f80fd5b80630322ed981461017157806309c1df661461018657806320d91b7a146101ab578063467ef06f146101be57806359ef84a9146101d157806360305d62146101e7575b5f80fd5b61018461017f366004612806565b6103bc565b005b61018e610641565b6040516001600160401b0390911681526020015b60405180910390f35b6101846101b9366004612835565b61065c565b6101846101cc366004612883565b610bc1565b6101d9610bcf565b6040519081526020016101a2565b6101ef601481565b60405163ffffffff90911681526020016101a2565b61018e610212366004612806565b610bde565b610184610bf2565b6101d95f81565b61022e603081565b60405160ff90911681526020016101a2565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b0390911681526020016101a2565b610184610292366004612806565b610c05565b6101d96102a53660046128b2565b610c1a565b6101846102b8366004612883565b610c36565b6102c5610e28565b6040516101a291908151815260208083015190820152604080830151908201526060918201516001600160401b03169181019190915260800190565b61026c6005600160991b0181565b6101d97fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0081565b610184610344366004612806565b610ea0565b61022e610fbd565b61022e601481565b61018461036736600461290b565b610fd9565b61037f61037a366004612806565b6110e7565b6040516101a291906129c8565b61018e6202a30081565b6101846103a4366004612a48565b611229565b6101d96103b7366004612a6a565b611266565b5f6103c561129e565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660058111156103fe576103fe612947565b600581111561040f5761040f612947565b815260200160018201805461042390612ad5565b80601f016020809104026020016040519081016040528092919081815260200182805461044f90612ad5565b801561049a5780601f106104715761010080835404028352916020019161049a565b820191905f5260205f20905b81548152906001019060200180831161047d57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561050557610505612947565b14610541575f8381526007830160205260409081902054905163170cc93360e21b81526105389160ff1690600401612b0d565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156105b8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105df9190810190612c1e565b6040518263ffffffff1660e01b81526004016105fb9190612c4f565b6020604051808303815f875af1158015610617573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061063b9190612c61565b50505050565b5f61064a61129e565b600101546001600160401b0316919050565b5f61066561129e565b600981015490915060ff161561068e57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106f59190612c61565b83602001351461071e576040516372b0a7e760e11b815260208401356004820152602401610538565b3061072f6060850160408601612a48565b6001600160a01b0316146107725761074d6060840160408501612a48565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610538565b5f6107806060850185612c78565b905090505f805b828163ffffffff1610156109e7575f6107a36060880188612c78565b8363ffffffff168181106107b9576107b9612cbd565b90506020028101906107cb9190612cd1565b6107d490612d3c565b80516040519192505f9160088801916107ec91612db5565b9081526020016040518091039020541461081c57805160405163a41f772f60e01b81526105389190600401612c4f565b5f6002885f01358460405160200161084b92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f198184030181529082905261086591612db5565b602060405180830381855afa158015610880573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108a39190612c61565b90508086600801835f01516040516108bb9190612db5565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff1916600217815582516001909101906108fb9082612e11565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff1916905561097a9085612ee4565b825160405191955061098b91612db5565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a35050806109e090612ef7565b9050610787565b50600483018190556001830154606490610a0b90600160401b900460ff1683612f19565b1015610a2d57604051635943317f60e01b815260048101829052602401610538565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610a51876112c2565b604001516040518263ffffffff1660e01b8152600401610a719190612c4f565b602060405180830381865af4158015610a8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ab09190612c61565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610aea9190613053565b5f60405180830381865af4158015610b04573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b2b9190810190612c1e565b90505f600282604051610b3e9190612db5565b602060405180830381855afa158015610b59573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b7c9190612c61565b9050828114610ba85760405163baaea89d60e01b81526004810182905260248101849052604401610538565b5050506009909201805460ff1916600117905550505050565b610bca816113d8565b505050565b5f610bd861129e565b54919050565b5f610be8826110e7565b6080015192915050565b610bfa611788565b610c035f6117e3565b565b610c0d611788565b610c1681611853565b5050565b5f610c23611788565b610c2d8383611b2c565b90505b92915050565b5f610c3f61129e565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610c66866112c2565b604001516040518263ffffffff1660e01b8152600401610c869190612c4f565b6040805180830381865af4158015610ca0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc491906130f6565b9150915080610cea57604051632d07135360e01b81528115156004820152602401610538565b5f82815260068401602052604090208054610d0490612ad5565b90505f03610d285760405163089938b360e11b815260048101839052602401610538565b60015f83815260078501602052604090205460ff166005811115610d4e57610d4e612947565b14610d81575f8281526007840160205260409081902054905163170cc93360e21b81526105389160ff1690600401612b0d565b5f8281526006840160205260408120610d999161277a565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b610e5860405180608001604052805f81526020015f81526020015f81526020015f6001600160401b031681525090565b610e6061129e565b6040805160808101825260028301548152600383015460208201526004830154918101919091526005909101546001600160401b03166060820152919050565b5f610ea961129e565b5f8381526006820160205260409020805491925090610ec790612ad5565b90505f03610eeb5760405163089938b360e11b815260048101839052602401610538565b60015f83815260078301602052604090205460ff166005811115610f1157610f11612947565b14610f44575f8281526007820160205260409081902054905163170cc93360e21b81526105389160ff1690600401612b0d565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610f7d9190600401613117565b6020604051808303815f875af1158015610f99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bca9190612c61565b5f610fc661129e565b60010154600160401b900460ff16919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561101d5750825b90505f826001600160401b031660011480156110385750303b155b905081158015611046575080155b156110645760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561108e57845460ff60401b1916600160401b1785555b6110988787612037565b83156110de57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6110ef6127b1565b5f6110f861129e565b5f84815260078201602052604090819020815160e0810190925280549293509091829060ff16600581111561112f5761112f612947565b600581111561114057611140612947565b815260200160018201805461115490612ad5565b80601f016020809104026020016040519081016040528092919081815260200182805461118090612ad5565b80156111cb5780601f106111a2576101008083540402835291602001916111cb565b820191905f5260205f20905b8154815290600101906020018083116111ae57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b611231611788565b6001600160a01b03811661125a57604051631e4fbdf760e01b81525f6004820152602401610538565b611263816117e3565b50565b5f8061127061129e565b90508060080184846040516112869291906131a1565b90815260200160405180910390205491505092915050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0090565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611326573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261134d91908101906131b0565b915091508061136f57604051636b2f19e960e01b815260040160405180910390fd5b815115611395578151604051636ba589a560e01b81526004810191909152602401610538565b60208201516001600160a01b0316156113d1576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610538565b5092915050565b5f6113e16127b1565b5f6113ea61129e565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f611411886112c2565b604001516040518263ffffffff1660e01b81526004016114319190612c4f565b6040805180830381865af415801561144b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061146f91906130f6565b91509150801561149657604051632d07135360e01b81528115156004820152602401610538565b5f828152600784016020526040808220815160e081019092528054829060ff1660058111156114c7576114c7612947565b60058111156114d8576114d8612947565b81526020016001820180546114ec90612ad5565b80601f016020809104026020016040519081016040528092919081815260200182805461151890612ad5565b80156115635780601f1061153a57610100808354040283529160200191611563565b820191905f5260205f20905b81548152906001019060200180831161154657829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156115ce576115ce612947565b141580156115ef57506001815160058111156115ec576115ec612947565b14155b1561161057805160405163170cc93360e21b81526105389190600401612b0d565b60038151600581111561162557611625612947565b036116335760048152611638565b600581525b83600801816020015160405161164e9190612db5565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff1916600183600581111561169257611692612947565b0217905550602082015160018201906116ab9082612e11565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558051600581111561175157611751612947565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336117ba7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c035760405163118cdaa760e01b8152336004820152602401610538565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61185b6127b1565b5f61186461129e565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600581111561189d5761189d612947565b60058111156118ae576118ae612947565b81526020016001820180546118c290612ad5565b80601f01602080910402602001604051908101604052809291908181526020018280546118ee90612ad5565b80156119395780601f1061191057610100808354040283529160200191611939565b820191905f5260205f20905b81548152906001019060200180831161191c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156119a7576119a7612947565b146119da575f8481526007830160205260409081902054905163170cc93360e21b81526105389160ff1690600401612b0d565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115611a1e57611a1e612947565b021790555060208201516001820190611a379082612e11565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611ad58582612051565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f611b3561129e565b6009015460ff16611b5957604051637fab81e560e01b815260040160405180910390fd5b5f611b6261129e565b905042611b75606086016040870161323d565b6001600160401b0316111580611baf5750611b936202a30042612ee4565b611ba3606086016040870161323d565b6001600160401b031610155b15611be957611bc4606085016040860161323d565b604051635879da1360e11b81526001600160401b039091166004820152602401610538565b611bfe611bf96060860186613256565b61221b565b611c0e611bf96080860186613256565b6030611c1d602086018661326a565b905014611c4f57611c31602085018561326a565b6040516326475b2f60e11b8152610538925060040190815260200190565b611c59848061326a565b90505f03611c8657611c6b848061326a565b604051633e08a12560e11b81526004016105389291906132ac565b5f60088201611c95868061326a565b604051611ca39291906131a1565b90815260200160405180910390205414611cdc57611cc1848061326a565b60405163a41f772f60e01b81526004016105389291906132ac565b611ce6835f612384565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611d238a8061326a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d6b908b018b61326a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611db460608b0160408c0161323d565b6001600160401b03168152602001611dcf60608b018b613256565b611dd8906132bf565b8152602001611dea60808b018b613256565b611df3906132bf565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611e2191906133ec565b5f60405180830381865af4158015611e3b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e6291908101906134a3565b5f82815260068601602052604090209193509150611e808282612e11565b508160088401611e90888061326a565b604051611e9e9291906131a1565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611eda908590600401612c4f565b6020604051808303815f875af1158015611ef6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1a9190612c61565b5f8481526007860160205260409020805460ff191660011790559050611f40878061326a565b5f858152600787016020526040902060010191611f5e9190836134e6565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611fbd888061326a565b604051611fcb9291906131a1565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b6040016020810190612009919061323d565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b61203f6125aa565b612048826125f3565b610c168161260c565b5f805f61205c61129e565b5f868152600782016020526040902060020154909150600160801b90046001600160401b031661208c8582612384565b5f6120968761261d565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561213f573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121669190810190612c1e565b6040518263ffffffff1660e01b81526004016121829190612c4f565b6020604051808303815f875af115801561219e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121c29190612c61565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6122286020820182612883565b63ffffffff1615801561224857506122436020820182612c78565b151590505b1561228f5761225a6020820182612883565b6122676020830183612c78565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610538565b61229c6020820182612c78565b90506122ab6020830183612883565b63ffffffff1611156122c45761225a6020820182612883565b60015b6122d46020830183612c78565b9050811015610c16576122ea6020830183612c78565b6122f560018461359f565b81811061230457612304612cbd565b90506020020160208101906123199190612a48565b6001600160a01b031661232f6020840184612c78565b8381811061233f5761233f612cbd565b90506020020160208101906123549190612a48565b6001600160a01b0316101561237c57604051630dbc8d5f60e31b815260040160405180910390fd5b6001016122c7565b5f61238d61129e565b90505f826001600160401b0316846001600160401b031611156123bb576123b483856135b2565b90506123c8565b6123c584846135b2565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b031660608201524291158061242a575060018401548151612426916001600160401b031690612ee4565b8210155b15612450576001600160401b03831660608201528181526040810151602082015261246f565b828160600181815161246291906135d2565b6001600160401b03169052505b606081015161247f9060646135f2565b602082015160018601546001600160401b0392909216916124aa9190600160401b900460ff16612f19565b10156124da57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610538565b856001600160401b0316816040018181516124f59190612ee4565b9052506040810180516001600160401b038716919061251590839061359f565b9052506001840154604082015160649161253a91600160401b90910460ff1690612f19565b1015612561578060400151604051635943317f60e01b815260040161053891815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610c0357604051631afcd79f60e31b815260040160405180910390fd5b6125fb6125aa565b612603612686565b6112638161268e565b6126146125aa565b61126381612772565b5f8061262761129e565b5f848152600782016020526040902060020180549192509060089061265b90600160401b90046001600160401b031661361d565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610c036125aa565b6126966125aa565b5f61269f61129e565b82358155905060146126b76060840160408501613638565b60ff1611806126d657506126d16060830160408401613638565b60ff16155b1561270a576126eb6060830160408401613638565b604051634a59bbff60e11b815260ff9091166004820152602401610538565b61271a6060830160408401613638565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561274b604083016020840161323d565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b6112316125aa565b50805461278690612ad5565b5f825580601f10612795575050565b601f0160209004905f5260205f209081019061126391906127ee565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612802575f81556001016127ef565b5090565b5f60208284031215612816575f80fd5b5035919050565b803563ffffffff81168114612830575f80fd5b919050565b5f8060408385031215612846575f80fd5b82356001600160401b0381111561285b575f80fd5b83016080818603121561286c575f80fd5b915061287a6020840161281d565b90509250929050565b5f60208284031215612893575f80fd5b610c2d8261281d565b80356001600160401b0381168114612830575f80fd5b5f80604083850312156128c3575f80fd5b82356001600160401b038111156128d8575f80fd5b830160a081860312156128e9575f80fd5b915061287a6020840161289c565b6001600160a01b0381168114611263575f80fd5b5f80828403608081121561291d575f80fd5b606081121561292a575f80fd5b50829150606083013561293c816128f7565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b6006811061297757634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b8381101561299557818101518382015260200161297d565b50505f910152565b5f81518084526129b481602086016020860161297b565b601f01601f19169290920160200192915050565b602081526129da60208201835161295b565b5f602083015160e060408401526129f561010084018261299d565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612a58575f80fd5b8135612a63816128f7565b9392505050565b5f8060208385031215612a7b575f80fd5b82356001600160401b0380821115612a91575f80fd5b818501915085601f830112612aa4575f80fd5b813581811115612ab2575f80fd5b866020828501011115612ac3575f80fd5b60209290920196919550909350505050565b600181811c90821680612ae957607f821691505b602082108103612b0757634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610c30828461295b565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612b5157612b51612b1b565b60405290565b604080519081016001600160401b0381118282101715612b5157612b51612b1b565b604051601f8201601f191681016001600160401b0381118282101715612ba157612ba1612b1b565b604052919050565b5f6001600160401b03821115612bc157612bc1612b1b565b50601f01601f191660200190565b5f82601f830112612bde575f80fd5b8151612bf1612bec82612ba9565b612b79565b818152846020838601011115612c05575f80fd5b612c1682602083016020870161297b565b949350505050565b5f60208284031215612c2e575f80fd5b81516001600160401b03811115612c43575f80fd5b612c1684828501612bcf565b602081525f610c2d602083018461299d565b5f60208284031215612c71575f80fd5b5051919050565b5f808335601e19843603018112612c8d575f80fd5b8301803591506001600160401b03821115612ca6575f80fd5b6020019150600581901b3603821315612214575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612ce5575f80fd5b9190910192915050565b5f82601f830112612cfe575f80fd5b8135612d0c612bec82612ba9565b818152846020838601011115612d20575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612d4c575f80fd5b612d54612b2f565b82356001600160401b0380821115612d6a575f80fd5b612d7636838701612cef565b83526020850135915080821115612d8b575f80fd5b50612d9836828601612cef565b602083015250612daa6040840161289c565b604082015292915050565b5f8251612ce581846020870161297b565b601f821115610bca57805f5260205f20601f840160051c81016020851015612deb5750805b601f840160051c820191505b81811015612e0a575f8155600101612df7565b5050505050565b81516001600160401b03811115612e2a57612e2a612b1b565b612e3e81612e388454612ad5565b84612dc6565b602080601f831160018114612e71575f8415612e5a5750858301515b5f19600386901b1c1916600185901b178555612ec8565b5f85815260208120601f198616915b82811015612e9f57888601518255948401946001909101908401612e80565b5085821015612ebc57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c3057610c30612ed0565b5f63ffffffff808316818103612f0f57612f0f612ed0565b6001019392505050565b8082028115828204841417610c3057610c30612ed0565b5f808335601e19843603018112612f45575f80fd5b83016020810192503590506001600160401b03811115612f63575f80fd5b803603821315612214575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561304657848303601f19018952813536889003605e19018112612fd5575f80fd5b87016060612fe38280612f30565b828752612ff38388018284612f71565b9250505061300386830183612f30565b86830388880152613015838284612f71565b9250505060406001600160401b0361302e82850161289c565b16950194909452509783019790830190600101612fb0565b5090979650505050505050565b6020815281356020820152602082013560408201525f6040830135613077816128f7565b6001600160a01b031660608381019190915283013536849003601e1901811261309e575f80fd5b83016020810190356001600160401b038111156130b9575f80fd5b8060051b36038213156130ca575f80fd5b6080808501526130de60a085018284612f99565b95945050505050565b80518015158114612830575f80fd5b5f8060408385031215613107575f80fd5b8251915061287a602084016130e7565b5f60208083525f845461312981612ad5565b806020870152604060018084165f811461314a576001811461316657613193565b60ff19851660408a0152604084151560051b8a01019550613193565b895f5260205f205f5b8581101561318a5781548b820186015290830190880161316f565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156131c1575f80fd5b82516001600160401b03808211156131d7575f80fd5b90840190606082870312156131ea575f80fd5b6131f2612b2f565b825181526020830151613204816128f7565b602082015260408301518281111561321a575f80fd5b61322688828601612bcf565b604083015250935061287a915050602084016130e7565b5f6020828403121561324d575f80fd5b610c2d8261289c565b5f8235603e19833603018112612ce5575f80fd5b5f808335601e1984360301811261327f575f80fd5b8301803591506001600160401b03821115613298575f80fd5b602001915036819003821315612214575f80fd5b602081525f612c16602083018486612f71565b5f604082360312156132cf575f80fd5b6132d7612b57565b6132e08361281d565b81526020808401356001600160401b03808211156132fc575f80fd5b9085019036601f83011261330e575f80fd5b81358181111561332057613320612b1b565b8060051b9150613331848301612b79565b818152918301840191848101903684111561334a575f80fd5b938501935b838510156133745784359250613364836128f7565b828252938501939085019061334f565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156133e15784516001600160a01b031682529383019360019290920191908301906133b8565b509695505050505050565b60208152815160208201525f602083015160e0604084015261341261010084018261299d565b90506040840151601f1980858403016060860152613430838361299d565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526134608383613386565b925060a08601519150808584030160c08601525061347e8282613386565b91505060c084015161349b60e08501826001600160401b03169052565b509392505050565b5f80604083850312156134b4575f80fd5b8251915060208301516001600160401b038111156134d0575f80fd5b6134dc85828601612bcf565b9150509250929050565b6001600160401b038311156134fd576134fd612b1b565b6135118361350b8354612ad5565b83612dc6565b5f601f841160018114613542575f851561352b5750838201355b5f19600387901b1c1916600186901b178355612e0a565b5f83815260208120601f198716915b828110156135715786850135825560209485019460019092019101613551565b508682101561358d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610c3057610c30612ed0565b6001600160401b038281168282160390808211156113d1576113d1612ed0565b6001600160401b038181168382160190808211156113d1576113d1612ed0565b6001600160401b0381811683821602808216919082811461361557613615612ed0565b505092915050565b5f6001600160401b03808316818103612f0f57612f0f612ed0565b5f60208284031215613648575f80fd5b813560ff81168114612a63575f80fdfea2646970667358221220624c336778525e416f39cb023c30a56a7e62ea01ccbec4feb99fd318576f37cd64736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -481,6 +489,99 @@ func (_PoAValidatorManager *PoAValidatorManagerCallerSession) WARPMESSENGER() (c return _PoAValidatorManager.Contract.WARPMESSENGER(&_PoAValidatorManager.CallOpts) } +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetChurnPeriodSeconds(opts *bind.CallOpts) (uint64, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getChurnPeriodSeconds") + + if err != nil { + return *new(uint64), err + } + + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) + + return out0, err + +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetChurnPeriodSeconds() (uint64, error) { + return _PoAValidatorManager.Contract.GetChurnPeriodSeconds(&_PoAValidatorManager.CallOpts) +} + +// GetChurnPeriodSeconds is a free data retrieval call binding the contract method 0x09c1df66. +// +// Solidity: function getChurnPeriodSeconds() view returns(uint64) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetChurnPeriodSeconds() (uint64, error) { + return _PoAValidatorManager.Contract.GetChurnPeriodSeconds(&_PoAValidatorManager.CallOpts) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetMaximumChurnPercentage(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getMaximumChurnPercentage") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetMaximumChurnPercentage() (uint8, error) { + return _PoAValidatorManager.Contract.GetMaximumChurnPercentage(&_PoAValidatorManager.CallOpts) +} + +// GetMaximumChurnPercentage is a free data retrieval call binding the contract method 0xc00a8aec. +// +// Solidity: function getMaximumChurnPercentage() view returns(uint8) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetMaximumChurnPercentage() (uint8, error) { + return _PoAValidatorManager.Contract.GetMaximumChurnPercentage(&_PoAValidatorManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetSubnetID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getSubnetID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetSubnetID() ([32]byte, error) { + return _PoAValidatorManager.Contract.GetSubnetID(&_PoAValidatorManager.CallOpts) +} + +// GetSubnetID is a free data retrieval call binding the contract method 0x59ef84a9. +// +// Solidity: function getSubnetID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetSubnetID() ([32]byte, error) { + return _PoAValidatorManager.Contract.GetSubnetID(&_PoAValidatorManager.CallOpts) +} + // GetValidator is a free data retrieval call binding the contract method 0xd5f20ff6. // // Solidity: function getValidator(bytes32 validationID) view returns((uint8,bytes,uint64,uint64,uint64,uint64,uint64)) @@ -512,6 +613,37 @@ func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidator(valid return _PoAValidatorManager.Contract.GetValidator(&_PoAValidatorManager.CallOpts, validationID) } +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCaller) GetValidatorChurnPeriod(opts *bind.CallOpts) (ValidatorChurnPeriod, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "getValidatorChurnPeriod") + + if err != nil { + return *new(ValidatorChurnPeriod), err + } + + out0 := *abi.ConvertType(out[0], new(ValidatorChurnPeriod)).(*ValidatorChurnPeriod) + + return out0, err + +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _PoAValidatorManager.Contract.GetValidatorChurnPeriod(&_PoAValidatorManager.CallOpts) +} + +// GetValidatorChurnPeriod is a free data retrieval call binding the contract method 0xa8099af2. +// +// Solidity: function getValidatorChurnPeriod() view returns((uint256,uint256,uint256,uint64)) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) GetValidatorChurnPeriod() (ValidatorChurnPeriod, error) { + return _PoAValidatorManager.Contract.GetValidatorChurnPeriod(&_PoAValidatorManager.CallOpts) +} + // GetWeight is a free data retrieval call binding the contract method 0x66435abf. // // Solidity: function getWeight(bytes32 validationID) view returns(uint64)