diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index b6ee62a1c..5feff8582 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -103,8 +103,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\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x608060405234801561000f575f80fd5b50604051615efe380380615efe83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615db18061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637d8d2f7711610140578063afb98096116100bf578063c974d1b611610084578063c974d1b614610532578063d5f20ff61461053a578063df93d8de1461055a578063e4a63c4014610564578063fb8b11dd14610578578063fd7ac5e71461058b575f80fd5b8063afb98096146104c3578063b771b3bc146104ea578063ba3a4b97146104f8578063bc5fbfec1461050b578063bee0a03f1461051f575f80fd5b80639ae06447116101055780639ae06447146104775780639e1bc4ef1461048a5780639e478eea1461049d578063a3a65e48146104b0578063a9778a7a146102f9575f80fd5b80637d8d2f771461042357806380dd672f146104365780638280a25a146104495780638ef34c981461045157806393e2459814610464575f80fd5b8063467ef06f116101cc578063620658561161019157806362065856146103b257806366435abf146103c5578063732214f8146103d857806376f78621146103df578063785e9e86146103f2575f80fd5b8063467ef06f1461033b5780634bee00401461034e5780635dd6a6cb1461036f57806360305d621461038257806360ad77841461039f575f80fd5b806325e1c7761161021257806325e1c776146102bb5780632e2194d8146102ce57806335455ded146102f957806337b9be8f146103155780633a1cfff614610328575f80fd5b80630118acc41461024e5780630322ed9814610263578063151d30d1146102765780631ec447241461029557806320d91b7a146102a8575b5f80fd5b61026161025c366004614cf5565b61059e565b005b610261610271366004614d30565b6105af565b61027e600a81565b60405160ff90911681526020015b60405180910390f35b6102616102a3366004614cf5565b61083f565b6102616102b6366004614d47565b61084b565b6102616102c9366004614d95565b610dd0565b6102e16102dc366004614d30565b610e44565b6040516001600160401b03909116815260200161028c565b61030261271081565b60405161ffff909116815260200161028c565b610261610323366004614dca565b610e98565b610261610336366004614cf5565b610eab565b610261610349366004614e18565b610eb7565b61036161035c366004614e56565b610f9c565b60405190815260200161028c565b61026161037d366004614dca565b610fd1565b61038a601481565b60405163ffffffff909116815260200161028c565b6102616103ad366004614d95565b610fdd565b6103616103c0366004614ebd565b6112aa565b6102e16103d3366004614d30565b6112ca565b6103615f81565b6102616103ed366004614cf5565b6112de565b5f80516020615cfc833981519152546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b610261610431366004614dca565b6112ea565b610261610444366004614d95565b6112f6565b61027e603081565b61026161045f366004614ed8565b611530565b610261610472366004614d30565b611611565b610261610485366004614dca565b6116a5565b610361610498366004614f06565b6116b1565b6102616104ab366004614f26565b6116dd565b6102616104be366004614e18565b6117bc565b6103617f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b61040b6005600160991b0181565b610261610506366004614d30565b6119b1565b6103615f80516020615d1c83398151915281565b61026161052d366004614d30565b611c0a565b61027e601481565b61054d610548366004614d30565b611d47565b60405161028c9190614fce565b6102e16202a30081565b6103615f80516020615cfc83398151915281565b610261610586366004614ed8565b611e96565b61036161059936600461504e565b611f5d565b6105aa8383835f611fb8565b505050565b5f8181525f80516020615d5c8339815191526020526040808220815160e0810190925280545f80516020615d1c83398151915293929190829060ff1660058111156105fc576105fc614f59565b600581111561060d5761060d614f59565b8152602001600182018054610621906150b9565b80601f016020809104026020016040519081016040528092919081815260200182805461064d906150b9565b80156106985780601f1061066f57610100808354040283529160200191610698565b820191905f5260205f20905b81548152906001019060200180831161067b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561070357610703614f59565b1461073f575f8381526007830160205260409081902054905163170cc93360e21b81526107369160ff16906004016150f1565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156107b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107dd91908101906151fa565b6040518263ffffffff1660e01b81526004016107f9919061522b565b6020604051808303815f875af1158015610815573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610839919061523d565b50505050565b6108398383835f611fe4565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615d1c8339815191529060ff161561089d57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610904919061523d565b83602001351461092d576040516372b0a7e760e11b815260208401356004820152602401610736565b3061093e6060850160408601615254565b6001600160a01b0316146109815761095c6060840160408501615254565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610736565b5f61098f606085018561526f565b905090505f805b828163ffffffff161015610bf6575f6109b2606088018861526f565b8363ffffffff168181106109c8576109c86152b4565b90506020028101906109da91906152c8565b6109e390615333565b80516040519192505f9160088801916109fb916153ae565b90815260200160405180910390205414610a2b57805160405163a41f772f60e01b8152610736919060040161522b565b5f6002885f013584604051602001610a5a92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a74916153ae565b602060405180830381855afa158015610a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ab2919061523d565b90508086600801835f0151604051610aca91906153ae565b90815260408051918290036020908101909220929092555f8381526007890190915220805460ff191660021781558251600190910190610b0a9082615403565b50604080830180515f84815260078a01602052929092206002810180549251426001600160401b03908116600160c01b026001600160c01b03928216600160801b81026001600160c01b03199097169290971691909117949094171692909217909155600301805467ffffffffffffffff19169055610b8990856154d2565b8251604051919550610b9a916153ae565b60408051918290038220908401516001600160401b031682529082907f9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf9060200160405180910390a3505080610bef906154e5565b9050610996565b50600483018190556001830154606490610c1a90600160401b900460ff1683615507565b1015610c3c57604051635943317f60e01b815260048101829052602401610736565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c6087612311565b604001516040518263ffffffff1660e01b8152600401610c80919061522b565b602060405180830381865af4158015610c9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbf919061523d565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610cf99190615649565b5f60405180830381865af4158015610d13573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d3a91908101906151fa565b90505f600282604051610d4d91906153ae565b602060405180830381855afa158015610d68573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d8b919061523d565b9050828114610db75760405163baaea89d60e01b81526004810182905260248101849052604401610736565b5050506009909201805460ff1916600117905550505050565b610dd982612427565b610df9576040516330efa98b60e01b815260048101839052602401610736565b5f610e0383611d47565b5190506002816005811115610e1a57610e1a614f59565b14610e3a578060405163170cc93360e21b815260040161073691906150f1565b6108398383612450565b5f80610e4e6126ef565b60030154610e5c90846156dd565b9050801580610e7157506001600160401b0381115b15610e925760405163222d164360e21b815260048101849052602401610736565b92915050565b610ea484848484611fe4565b5050505050565b6108398383835f612713565b610ebf612935565b5f610ec86126ef565b90505f80610ed58461296c565b91509150610ee282612427565b610eee57505050610f83565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f25575080610f43565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f5857610f58614f59565b03610f6757610f678185612d1f565b610f7d82610f7885604001516112aa565b612d49565b50505050505b610f9960015f80516020615d3c83398151915255565b50565b5f610fa5612935565b610fb185858585612d7f565b9050610fc960015f80516020615d3c83398151915255565b949350505050565b61083984848484612ee4565b5f610fe66126ef565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561101f5761101f614f59565b600381111561103057611030614f59565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6110a682611d47565b90506001835160038111156110bd576110bd614f59565b146110de578251604051633b0d540d60e21b815261073691906004016156fc565b6004815160058111156110f3576110f3614f59565b036111095761110186612f10565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61112e89612311565b604001516040518263ffffffff1660e01b815260040161114e919061522b565b606060405180830381865af4158015611169573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118d9190615716565b50915091508184146111ba57846040015160405163089938b360e11b815260040161073691815260200190565b806001600160401b031683606001516001600160401b031610806111f35750806001600160401b03168560a001516001600160401b0316115b1561121c57604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b81026fffffffffffffffff00000000000000001990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6112b36126ef565b60030154610e92906001600160401b038416615507565b5f6112d482611d47565b6080015192915050565b6105aa8383835f612ee4565b610ea484848484612713565b6112fe612935565b5f6113076126ef565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561134057611340614f59565b600381111561135157611351614f59565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113ca576113ca614f59565b146113eb578051604051633b0d540d60e21b815261073691906004016156fc565b60046113fa8260400151611d47565b51600581111561140c5761140c614f59565b1461150b575f61141b84612311565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161145a919061522b565b606060405180830381865af4158015611475573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114999190615716565b5091509150818460400151146114c55760405163089938b360e11b815260048101839052602401610736565b806001600160401b03168460c001516001600160401b0316111561150757604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5050505b61151484612f10565b505061152c60015f80516020615d3c83398151915255565b5050565b5f6115396126ef565b90506001600160a01b03821661156d5760405163caa903f960e01b81526001600160a01b0383166004820152602401610736565b5f8381526006820160205260409020546001600160a01b031633146115b357335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610736565b336001600160a01b038316036115e2575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f61161a6126ef565b90505f61162683611d47565b519050600481600581111561163d5761163d614f59565b1461165d578060405163170cc93360e21b815260040161073691906150f1565b5f8381526006830160205260409020546001600160a01b03163314611682573361158e565b5f8381526006830160205260409020546105aa906001600160a01b031684612d1f565b61083984848484611fb8565b5f6116ba612935565b6116c583338461311d565b9050610e9260015f80516020615d3c83398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611726575080546001600160401b03808416911610155b156117445760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561176f8484613362565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615d1c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6117ef86612311565b604001516040518263ffffffff1660e01b815260040161180f919061522b565b6040805180830381865af4158015611829573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184d9190615756565b915091508061187357604051632d07135360e01b81528115156004820152602401610736565b5f8281526006840160205260409020805461188d906150b9565b90505f036118b15760405163089938b360e11b815260048101839052602401610736565b60015f83815260078501602052604090205460ff1660058111156118d7576118d7614f59565b1461190a575f8281526007840160205260409081902054905163170cc93360e21b81526107369160ff16906004016150f1565b5f828152600684016020526040812061192291614c44565b5f828152600784016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a250505050565b5f6119ba6126ef565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156119f3576119f3614f59565b6003811115611a0457611a04614f59565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611a7d57611a7d614f59565b14158015611a9e5750600381516003811115611a9b57611a9b614f59565b14155b15611abf578051604051633b0d540d60e21b815261073691906004016156fc565b5f611acd8260400151611d47565b905080606001516001600160401b03165f03611aff576040516339b894f960e21b815260048101859052602401610736565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b6d93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611b87573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bae91908101906151fa565b6040518263ffffffff1660e01b8152600401611bca919061522b565b6020604051808303815f875af1158015611be6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ea4919061523d565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040902080545f80516020615d1c8339815191529190611c51906150b9565b90505f03611c755760405163089938b360e11b815260048101839052602401610736565b60015f83815260078301602052604090205460ff166005811115611c9b57611c9b614f59565b14611cce575f8281526007820160205260409081902054905163170cc93360e21b81526107369160ff16906004016150f1565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611d079190600401615779565b6020604051808303815f875af1158015611d23573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa919061523d565b611d4f614c7b565b5f8281525f80516020615d5c833981519152602052604090819020815160e0810190925280545f80516020615d1c833981519152929190829060ff166005811115611d9c57611d9c614f59565b6005811115611dad57611dad614f59565b8152602001600182018054611dc1906150b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611ded906150b9565b8015611e385780601f10611e0f57610100808354040283529160200191611e38565b820191905f5260205f20905b815481529060010190602001808311611e1b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ec85760405163caa903f960e01b81526001600160a01b0382166004820152602401610736565b5f611ed16126ef565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611eff573361158e565b336001600160a01b03831603611f2e575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615d1c833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0890611fa09086908690615803565b90815260200160405180910390205491505092915050565b611fc484848484611fe4565b61083957604051631036cf9160e11b815260048101859052602401610736565b5f80611fee6126ef565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561202757612027614f59565b600381111561203857612038614f59565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6120ae82611d47565b90506002835160038111156120c5576120c5614f59565b146120e6578251604051633b0d540d60e21b815261073691906004016156fc565b60208301516001600160a01b03163314612182575f8281526006850160205260409020546001600160a01b0316331461211f573361158e565b5f82815260068501602052604090205460a082015161214e91600160b01b90046001600160401b031690615812565b6001600160401b03164210156121825760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b60028151600581111561219757612197614f59565b036122b957600284015460808401516121b9916001600160401b031690615812565b6001600160401b03164210156121ed5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b87156121ff576121fd8288612450565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516122389184916122339190615832565b61337c565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561227b84888c613553565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610fc99350505050565b6004815160058111156122ce576122ce614f59565b036122f5576122de83878b613553565b506122e889612f10565b6001945050505050610fc9565b805160405163170cc93360e21b815261073691906004016150f1565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612375573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261239c9190810190615852565b91509150806123be57604051636b2f19e960e01b815260040160405180910390fd5b8151156123e4578151604051636ba589a560e01b81526004810191909152602401610736565b60208201516001600160a01b031615612420576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5092915050565b5f806124316126ef565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561249b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124c29190810190615852565b91509150806124e457604051636b2f19e960e01b815260040160405180910390fd5b5f6124ed6126ef565b600581015484519192501461251b578251604051636ba589a560e01b81526004810191909152602401610736565b60208301516001600160a01b031615612557576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b60208301516001600160a01b031615612593576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125d0919061522b565b6040805180830381865af41580156125ea573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260e91906158e2565b915091508188146126355760405163089938b360e11b815260048101899052602401610736565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126c6575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26126e4565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f8061271d6126ef565b90505f61272987613738565b905061273487612427565b61274357600192505050610fc9565b5f8781526006830160205260409020546001600160a01b03163314612768573361158e565b5f87815260068301602052604090205460a082015161279791600160b01b90046001600160401b031690615812565b6001600160401b03168160c001516001600160401b031610156127de5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610736565b5f86156127f6576127ef8887612450565b9050612814565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612839906112aa565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156128a2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128c6919061523d565b90508084600a015f8b81526020019081526020015f205f8282546128ea91906154d2565b90915550506001600160a01b03861615612927575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615d3c83398151915280546001190161296657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612975614c7b565b5f80516020615d1c8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6129a888612311565b604001516040518263ffffffff1660e01b81526004016129c8919061522b565b6040805180830381865af41580156129e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a069190615756565b915091508015612a2d57604051632d07135360e01b81528115156004820152602401610736565b5f828152600784016020526040808220815160e081019092528054829060ff166005811115612a5e57612a5e614f59565b6005811115612a6f57612a6f614f59565b8152602001600182018054612a83906150b9565b80601f0160208091040260200160405190810160405280929190818152602001828054612aaf906150b9565b8015612afa5780601f10612ad157610100808354040283529160200191612afa565b820191905f5260205f20905b815481529060010190602001808311612add57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b6557612b65614f59565b14158015612b865750600181516005811115612b8357612b83614f59565b14155b15612ba757805160405163170cc93360e21b815261073691906004016150f1565b600381516005811115612bbc57612bbc614f59565b03612bca5760048152612bcf565b600581525b836008018160200151604051612be591906153ae565b90815260408051602092819003830190205f908190558581526007870190925290208151815483929190829060ff19166001836005811115612c2957612c29614f59565b021790555060208201516001820190612c429082615403565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612ce857612ce8614f59565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d286126ef565b5f838152600a82016020526040812080549190559091506108398482613a1c565b5f80516020615cfc8339815191525461152c906001600160a01b03168383613a92565b60015f80516020615d3c83398151915255565b5f80612d896126ef565b600281015490915061ffff600160401b90910481169086161080612db2575061271061ffff8616115b15612dd657604051635f12e6c360e11b815261ffff86166004820152602401610736565b60028101546001600160401b039081169085161015612e12576040516202a06d60e11b81526001600160401b0385166004820152602401610736565b8054831080612e245750806001015483115b15612e455760405163222d164360e21b815260048101849052602401610736565b5f612e4f84613af1565b90505f612e5b82610e44565b90505f612e688983613b14565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612ef084848484612713565b61083957604051635bff683f60e11b815260048101859052602401610736565b5f612f196126ef565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f5257612f52614f59565b6003811115612f6357612f63614f59565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506130007fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161300f9190615812565b6001600160401b03164210156130435760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b031680613093575060208201516130b1565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130be838886614039565b915091506130d78560200151610f7887606001516112aa565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131276126ef565b90505f6131366102dc85613af1565b90505f61314287611d47565b905061314d87612427565b61316d576040516330efa98b60e01b815260048101889052602401610736565b60028151600581111561318257613182614f59565b146131a357805160405163170cc93360e21b815261073691906004016150f1565b5f8282608001516131b49190615812565b905083600201600a9054906101000a90046001600160401b031682604001516131dd9190615905565b6001600160401b0316816001600160401b0316111561321a57604051636d51fe0560e11b81526001600160401b0382166004820152602401610736565b5f806132268a8461337c565b915091505f8a8360405160200161325492919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b61336a6140e6565b61337382614131565b61152c816141ab565b5f8281525f80516020615d5c833981519152602052604081206002015481905f80516020615d1c83398151915290600160801b90046001600160401b03166133c48582614213565b5f6133ce87614436565b5f888152600785016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015613477573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261349e91908101906151fa565b6040518263ffffffff1660e01b81526004016134ba919061522b565b6020604051808303815f875af11580156134d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134fa919061523d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061355d6126ef565b90505f61356d8660400151611d47565b90505f60038251600581111561358557613585614f59565b14806135a357506004825160058111156135a1576135a1614f59565b145b156135b3575060c08101516135f0565b6002825160058111156135c8576135c8614f59565b036135d45750426135f0565b815160405163170cc93360e21b815261073691906004016150f1565b86608001516001600160401b0316816001600160401b031611613618575f935050505061335b565b600483015460608801515f916001600160a01b031690634f22429f9061363d906112aa565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156136be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136e2919061523d565b5f878152600886016020526040902081905590506001600160a01b038716156126e4575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b613740614c7b565b5f8281525f80516020615d5c8339815191526020526040808220815160e0810190925280545f80516020615d1c83398151915293929190829060ff16600581111561378d5761378d614f59565b600581111561379e5761379e614f59565b81526020016001820180546137b2906150b9565b80601f01602080910402602001604051908101604052809291908181526020018280546137de906150b9565b80156138295780601f1061380057610100808354040283529160200191613829565b820191905f5260205f20905b81548152906001019060200180831161380c57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a0909101529091508151600581111561389757613897614f59565b146138ca575f8481526007830160205260409081902054905163170cc93360e21b81526107369160ff16906004016150f1565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561390e5761390e614f59565b0217905550602082015160018201906139279082615403565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139c5858261337c565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f5f80516020615cfc83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613a77575f80fd5b505af1158015613a89573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b038381166024830152604482018390526105aa91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506144ab565b5f610e92825f80516020615cfc833981519152546001600160a01b03169061450c565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16613b5857604051637fab81e560e01b815260040160405180910390fd5b5f80516020615d1c83398151915242613b776060860160408701614ebd565b6001600160401b0316111580613bb15750613b956202a300426154d2565b613ba56060860160408701614ebd565b6001600160401b031610155b15613beb57613bc66060850160408601614ebd565b604051635879da1360e11b81526001600160401b039091166004820152602401610736565b613c00613bfb6060860186615930565b614518565b613c10613bfb6080860186615930565b6030613c1f6020860186615944565b905014613c5157613c336020850185615944565b6040516326475b2f60e11b8152610736925060040190815260200190565b613c5b8480615944565b90505f03613c8857613c6d8480615944565b604051633e08a12560e11b8152600401610736929190615986565b5f60088201613c978680615944565b604051613ca5929190615803565b90815260200160405180910390205414613cde57613cc38480615944565b60405163a41f772f60e01b8152600401610736929190615986565b613ce8835f614213565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613d258a80615944565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613d6d908b018b615944565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613db660608b0160408c01614ebd565b6001600160401b03168152602001613dd160608b018b615930565b613dda90615999565b8152602001613dec60808b018b615930565b613df590615999565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613e239190615ac6565b5f60405180830381865af4158015613e3d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613e649190810190615b7d565b5f82815260068601602052604090209193509150613e828282615403565b508160088401613e928880615944565b604051613ea0929190615803565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613edc90859060040161522b565b6020604051808303815f875af1158015613ef8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f1c919061523d565b5f8481526007860160205260409020805460ff191660011790559050613f428780615944565b5f858152600787016020526040902060010191613f60919083615bc0565b505f83815260078501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580613fbf8880615944565b604051613fcd929190615803565b6040518091039020847fb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430898b604001602081019061400b9190614ebd565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140446126ef565b5f868152600882016020526040812080549082905591925090819080156140d8575f8781526006850160205260409020546127109061408e90600160a01b900461ffff1683615507565b61409891906156dd565b91508184600a015f8981526020019081526020015f205f8282546140bc91906154d2565b909155506140cc90508282615c79565b92506140d88984613a1c565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661412f57604051631afcd79f60e31b815260040160405180910390fd5b565b6141396140e6565b61414281614681565b61414a61469a565b610f996060820135608083013561416760c0850160a08601614ebd565b61417760e0860160c08701615c8c565b614188610100870160e08801615ca5565b6101008701356141a061014089016101208a01615254565b8861014001356146aa565b6141b36140e6565b5f80516020615cfc8339815191526001600160a01b0382166141f357604051637330680360e01b81526001600160a01b0383166004820152602401610736565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615d1c8339815191525f6001600160401b038084169085161115614247576142408385615832565b9050614254565b6142518484615832565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806142b65750600184015481516142b2916001600160401b0316906154d2565b8210155b156142dc576001600160401b0383166060820152818152604081015160208201526142fb565b82816060018181516142ee9190615812565b6001600160401b03169052505b606081015161430b906064615905565b602082015160018601546001600160401b0392909216916143369190600160401b900460ff16615507565b101561436657606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610736565b856001600160401b03168160400181815161438191906154d2565b9052506040810180516001600160401b03871691906143a1908390615c79565b905250600184015460408201516064916143c691600160401b90910460ff1690615507565b10156143ed578060400151604051635943317f60e01b815260040161073691815260200190565b805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615d5c8339815191526020526040812060020180545f80516020615d1c833981519152919060089061448090600160401b90046001600160401b0316615cc5565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6144bf6001600160a01b0384168361488f565b905080515f141580156144e35750808060200190518101906144e19190615ce0565b155b156105aa57604051635274afe760e01b81526001600160a01b0384166004820152602401610736565b5f61335b83338461489c565b6145256020820182614e18565b63ffffffff161580156145455750614540602082018261526f565b151590505b1561458c576145576020820182614e18565b614564602083018361526f565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610736565b614599602082018261526f565b90506145a86020830183614e18565b63ffffffff1611156145c1576145576020820182614e18565b60015b6145d1602083018361526f565b905081101561152c576145e7602083018361526f565b6145f2600184615c79565b818110614601576146016152b4565b90506020020160208101906146169190615254565b6001600160a01b031661462c602084018461526f565b8381811061463c5761463c6152b4565b90506020020160208101906146519190615254565b6001600160a01b0316101561467957604051630dbc8d5f60e31b815260040160405180910390fd5b6001016145c4565b6146896140e6565b6146916149ff565b610f9981614a07565b6146a26140e6565b61412f614aef565b6146b26140e6565b5f6146bb6126ef565b905061ffff861615806146d3575061271061ffff8716115b156146f757604051635f12e6c360e11b815261ffff87166004820152602401610736565b8789111561471b5760405163222d164360e21b8152600481018a9052602401610736565b60ff8516158061472e5750600a60ff8616115b156147515760405163170db35960e31b815260ff86166004820152602401610736565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b031610156147b8576040516202a06d60e11b81526001600160401b0388166004820152602401610736565b835f036147d85760405163a733007160e01b815260040160405180910390fd5b816147f957604051632f6bd1db60e01b815260048101839052602401610736565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061335b83835f614af7565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156148e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614906919061523d565b905061491d6001600160a01b038616853086614b86565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614961573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614985919061523d565b90508181116149eb5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610736565b6149f58282615c79565b9695505050505050565b61412f6140e6565b614a0f6140e6565b80355f80516020615d1c8339815191529081556014614a346060840160408501615ca5565b60ff161180614a535750614a4e6060830160408401615ca5565b60ff16155b15614a8757614a686060830160408401615ca5565b604051634a59bbff60e11b815260ff9091166004820152602401610736565b614a976060830160408401615ca5565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614ac86040830160208401614ebd565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d6c6140e6565b606081471015614b1c5760405163cd78605960e01b8152306004820152602401610736565b5f80856001600160a01b03168486604051614b3791906153ae565b5f6040518083038185875af1925050503d805f8114614b71576040519150601f19603f3d011682016040523d82523d5f602084013e614b76565b606091505b50915091506149f5868383614bbf565b6040516001600160a01b0384811660248301528381166044830152606482018390526108399186918216906323b872dd90608401613abf565b606082614bd457614bcf82614c1b565b61335b565b8151158015614beb57506001600160a01b0384163b155b15614c1457604051639996b31560e01b81526001600160a01b0385166004820152602401610736565b508061335b565b805115614c2b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614c50906150b9565b5f825580601f10614c5f575050565b601f0160209004905f5260205f2090810190610f999190614cb8565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614ccc575f8155600101614cb9565b5090565b8015158114610f99575f80fd5b803563ffffffff81168114614cf0575f80fd5b919050565b5f805f60608486031215614d07575f80fd5b833592506020840135614d1981614cd0565b9150614d2760408501614cdd565b90509250925092565b5f60208284031215614d40575f80fd5b5035919050565b5f8060408385031215614d58575f80fd5b82356001600160401b03811115614d6d575f80fd5b830160808186031215614d7e575f80fd5b9150614d8c60208401614cdd565b90509250929050565b5f8060408385031215614da6575f80fd5b82359150614d8c60208401614cdd565b6001600160a01b0381168114610f99575f80fd5b5f805f8060808587031215614ddd575f80fd5b843593506020850135614def81614cd0565b9250614dfd60408601614cdd565b91506060850135614e0d81614db6565b939692955090935050565b5f60208284031215614e28575f80fd5b61335b82614cdd565b803561ffff81168114614cf0575f80fd5b6001600160401b0381168114610f99575f80fd5b5f805f8060808587031215614e69575f80fd5b84356001600160401b03811115614e7e575f80fd5b850160a08188031215614e8f575f80fd5b9350614e9d60208601614e31565b92506040850135614ead81614e42565b9396929550929360600135925050565b5f60208284031215614ecd575f80fd5b813561335b81614e42565b5f8060408385031215614ee9575f80fd5b823591506020830135614efb81614db6565b809150509250929050565b5f8060408385031215614f17575f80fd5b50508035926020909101359150565b5f80828403610180811215614f39575f80fd5b61016080821215614f48575f80fd5b8493508301359050614efb81614db6565b634e487b7160e01b5f52602160045260245ffd5b60068110614f7d57614f7d614f59565b9052565b5f5b83811015614f9b578181015183820152602001614f83565b50505f910152565b5f8151808452614fba816020860160208601614f81565b601f01601f19169290920160200192915050565b60208152614fe0602082018351614f6d565b5f602083015160e06040840152614ffb610100840182614fa3565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f806020838503121561505f575f80fd5b82356001600160401b0380821115615075575f80fd5b818501915085601f830112615088575f80fd5b813581811115615096575f80fd5b8660208285010111156150a7575f80fd5b60209290920196919550909350505050565b600181811c908216806150cd57607f821691505b6020821081036150eb57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610e928284614f6d565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715615135576151356150ff565b60405290565b604080519081016001600160401b0381118282101715615135576151356150ff565b604051601f8201601f191681016001600160401b0381118282101715615185576151856150ff565b604052919050565b5f6001600160401b038211156151a5576151a56150ff565b50601f01601f191660200190565b5f82601f8301126151c2575f80fd5b81516151d56151d08261518d565b61515d565b8181528460208386010111156151e9575f80fd5b610fc9826020830160208701614f81565b5f6020828403121561520a575f80fd5b81516001600160401b0381111561521f575f80fd5b610fc9848285016151b3565b602081525f61335b6020830184614fa3565b5f6020828403121561524d575f80fd5b5051919050565b5f60208284031215615264575f80fd5b813561335b81614db6565b5f808335601e19843603018112615284575f80fd5b8301803591506001600160401b0382111561529d575f80fd5b6020019150600581901b360382131561354c575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126152dc575f80fd5b9190910192915050565b5f82601f8301126152f5575f80fd5b81356153036151d08261518d565b818152846020838601011115615317575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615343575f80fd5b61534b615113565b82356001600160401b0380821115615361575f80fd5b61536d368387016152e6565b83526020850135915080821115615382575f80fd5b5061538f368286016152e6565b60208301525060408301356153a381614e42565b604082015292915050565b5f82516152dc818460208701614f81565b601f8211156105aa57805f5260205f20601f840160051c810160208510156153e45750805b601f840160051c820191505b81811015610ea4575f81556001016153f0565b81516001600160401b0381111561541c5761541c6150ff565b6154308161542a84546150b9565b846153bf565b602080601f831160018114615463575f841561544c5750858301515b5f19600386901b1c1916600185901b178555611101565b5f85815260208120601f198616915b8281101561549157888601518255948401946001909101908401615472565b50858210156154ae57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610e9257610e926154be565b5f63ffffffff8083168181036154fd576154fd6154be565b6001019392505050565b8082028115828204841417610e9257610e926154be565b5f808335601e19843603018112615533575f80fd5b83016020810192503590506001600160401b03811115615551575f80fd5b80360382131561354c575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561563c57848303601f19018952813536889003605e190181126155c3575f80fd5b870160606155d1828061551e565b8287526155e1838801828461555f565b925050506155f18683018361551e565b8683038888015261560383828461555f565b92505050604080830135925061561883614e42565b6001600160401b03929092169490910193909352978301979083019060010161559e565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561566d81614db6565b6001600160a01b031660608381019190915283013536849003601e19018112615694575f80fd5b83016020810190356001600160401b038111156156af575f80fd5b8060051b36038213156156c0575f80fd5b6080808501526156d460a085018284615587565b95945050505050565b5f826156f757634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061571057615710614f59565b91905290565b5f805f60608486031215615728575f80fd5b83519250602084015161573a81614e42565b604085015190925061574b81614e42565b809150509250925092565b5f8060408385031215615767575f80fd5b825191506020830151614efb81614cd0565b5f60208083525f845461578b816150b9565b806020870152604060018084165f81146157ac57600181146157c8576157f5565b60ff19851660408a0152604084151560051b8a010195506157f5565b895f5260205f205f5b858110156157ec5781548b82018601529083019088016157d1565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b03818116838216019080821115612420576124206154be565b6001600160401b03828116828216039080821115612420576124206154be565b5f8060408385031215615863575f80fd5b82516001600160401b0380821115615879575f80fd5b908401906060828703121561588c575f80fd5b615894615113565b8251815260208301516158a681614db6565b60208201526040830151828111156158bc575f80fd5b6158c8888286016151b3565b6040830152508094505050506020830151614efb81614cd0565b5f80604083850312156158f3575f80fd5b825191506020830151614efb81614e42565b6001600160401b03818116838216028082169190828114615928576159286154be565b505092915050565b5f8235603e198336030181126152dc575f80fd5b5f808335601e19843603018112615959575f80fd5b8301803591506001600160401b03821115615972575f80fd5b60200191503681900382131561354c575f80fd5b602081525f610fc960208301848661555f565b5f604082360312156159a9575f80fd5b6159b161513b565b6159ba83614cdd565b81526020808401356001600160401b03808211156159d6575f80fd5b9085019036601f8301126159e8575f80fd5b8135818111156159fa576159fa6150ff565b8060051b9150615a0b84830161515d565b8181529183018401918481019036841115615a24575f80fd5b938501935b83851015615a4e5784359250615a3e83614db6565b8282529385019390850190615a29565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615abb5784516001600160a01b03168252938301936001929092019190830190615a92565b509695505050505050565b60208152815160208201525f602083015160e06040840152615aec610100840182614fa3565b90506040840151601f1980858403016060860152615b0a8383614fa3565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615b3a8383615a60565b925060a08601519150808584030160c086015250615b588282615a60565b91505060c0840151615b7560e08501826001600160401b03169052565b509392505050565b5f8060408385031215615b8e575f80fd5b8251915060208301516001600160401b03811115615baa575f80fd5b615bb6858286016151b3565b9150509250929050565b6001600160401b03831115615bd757615bd76150ff565b615beb83615be583546150b9565b836153bf565b5f601f841160018114615c1c575f8515615c055750838201355b5f19600387901b1c1916600186901b178355610ea4565b5f83815260208120601f198716915b82811015615c4b5786850135825560209485019460019092019101615c2b565b5086821015615c67575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610e9257610e926154be565b5f60208284031215615c9c575f80fd5b61335b82614e31565b5f60208284031215615cb5575f80fd5b813560ff8116811461335b575f80fd5b5f6001600160401b038083168181036154fd576154fd6154be565b5f60208284031215615cf0575f80fd5b815161335b81614cd056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a2646970667358221220a9aa77136d13fafe455f5cb81a6602ecd6184258cd58e17ce6821544d1ae610d64736f6c63430008190033", + 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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"weight\",\"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\":[],\"name\":\"erc20\",\"outputs\":[{\"internalType\":\"contractIERC20Mintable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"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: "0x608060405234801561000f575f80fd5b50604051615fc4380380615fc483398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615e778061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061024a575f3560e01c80637d8d2f7711610140578063afb98096116100bf578063c974d1b611610084578063c974d1b614610532578063d5f20ff61461053a578063df93d8de1461055a578063e4a63c4014610564578063fb8b11dd14610578578063fd7ac5e71461058b575f80fd5b8063afb98096146104c3578063b771b3bc146104ea578063ba3a4b97146104f8578063bc5fbfec1461050b578063bee0a03f1461051f575f80fd5b80639ae06447116101055780639ae06447146104775780639e1bc4ef1461048a5780639e478eea1461049d578063a3a65e48146104b0578063a9778a7a146102f9575f80fd5b80637d8d2f771461042357806380dd672f146104365780638280a25a146104495780638ef34c981461045157806393e2459814610464575f80fd5b8063467ef06f116101cc578063620658561161019157806362065856146103b257806366435abf146103c5578063732214f8146103d857806376f78621146103df578063785e9e86146103f2575f80fd5b8063467ef06f1461033b5780634bee00401461034e5780635dd6a6cb1461036f57806360305d621461038257806360ad77841461039f575f80fd5b806325e1c7761161021257806325e1c776146102bb5780632e2194d8146102ce57806335455ded146102f957806337b9be8f146103155780633a1cfff614610328575f80fd5b80630118acc41461024e5780630322ed9814610263578063151d30d1146102765780631ec447241461029557806320d91b7a146102a8575b5f80fd5b61026161025c366004614dbb565b61059e565b005b610261610271366004614df6565b6105af565b61027e600a81565b60405160ff90911681526020015b60405180910390f35b6102616102a3366004614dbb565b61083f565b6102616102b6366004614e0d565b61084b565b6102616102c9366004614e5b565b610e01565b6102e16102dc366004614df6565b610e75565b6040516001600160401b03909116815260200161028c565b61030261271081565b60405161ffff909116815260200161028c565b610261610323366004614e90565b610ec9565b610261610336366004614dbb565b610edc565b610261610349366004614ede565b610ee8565b61036161035c366004614f1c565b610fcd565b60405190815260200161028c565b61026161037d366004614e90565b611002565b61038a601481565b60405163ffffffff909116815260200161028c565b6102616103ad366004614e5b565b61100e565b6103616103c0366004614f83565b6112d6565b6102e16103d3366004614df6565b6112f6565b6103615f81565b6102616103ed366004614dbb565b61130a565b5f80516020615dc2833981519152546001600160a01b03165b6040516001600160a01b03909116815260200161028c565b610261610431366004614e90565b611316565b610261610444366004614e5b565b611322565b61027e603081565b61026161045f366004614f9e565b61155c565b610261610472366004614df6565b61163d565b610261610485366004614e90565b6116d1565b610361610498366004614fcc565b6116dd565b6102616104ab366004614fec565b611709565b6102616104be366004614ede565b6117e8565b6103617f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b61040b6005600160991b0181565b610261610506366004614df6565b6119de565b6103615f80516020615de283398151915281565b61026161052d366004614df6565b611c37565b61027e601481565b61054d610548366004614df6565b611d73565b60405161028c9190615094565b6102e16202a30081565b6103615f80516020615dc283398151915281565b610261610586366004614f9e565b611ec2565b610361610599366004615114565b611f89565b6105aa8383835f611fe4565b505050565b5f8181525f80516020615e028339815191526020526040808220815160e0810190925280545f80516020615de283398151915293929190829060ff1660058111156105fc576105fc61501f565b600581111561060d5761060d61501f565b81526020016001820180546106219061517f565b80601f016020809104026020016040519081016040528092919081815260200182805461064d9061517f565b80156106985780601f1061066f57610100808354040283529160200191610698565b820191905f5260205f20905b81548152906001019060200180831161067b57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156107035761070361501f565b1461073f575f8381526005830160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156107b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526107dd91908101906152c0565b6040518263ffffffff1660e01b81526004016107f991906152f1565b6020604051808303815f875af1158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190615303565b50505050565b6108398383835f612010565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020615de28339815191529060ff161561089d57604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109049190615303565b83602001351461092d576040516372b0a7e760e11b815260208401356004820152602401610736565b3061093e606085016040860161531a565b6001600160a01b0316146109815761095c606084016040850161531a565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610736565b5f61098f6060850185615335565b905090505f805b828163ffffffff161015610bf7575f6109b26060880188615335565b8363ffffffff168181106109c8576109c861537a565b90506020028101906109da919061538e565b6109e3906153f9565b80516040519192505f9160068801916109fb91615474565b90815260200160405180910390205414610a2b57805160405163a41f772f60e01b815261073691906004016152f1565b5f6002885f013584604051602001610a5a92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610a7491615474565b602060405180830381855afa158015610a8f573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610ab29190615303565b90508086600601835f0151604051610aca9190615474565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610b0a90826154c9565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610b8a9085615598565b8251604051919550610b9b91615474565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610bf0906155b8565b9050610996565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610c3a910460ff16836155da565b6001600160401b03161015610c6d57604051633e1a785160e01b81526001600160401b0382166004820152602401610736565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610c918761233d565b604001516040518263ffffffff1660e01b8152600401610cb191906152f1565b602060405180830381865af4158015610ccc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cf09190615303565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610d2a9190615730565b5f60405180830381865af4158015610d44573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610d6b91908101906152c0565b90505f600282604051610d7e9190615474565b602060405180830381855afa158015610d99573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610dbc9190615303565b9050828114610de85760405163baaea89d60e01b81526004810182905260248101849052604401610736565b5050506007909201805460ff1916600117905550505050565b610e0a82612453565b610e2a576040516330efa98b60e01b815260048101839052602401610736565b5f610e3483611d73565b5190506002816005811115610e4b57610e4b61501f565b14610e6b578060405163170cc93360e21b815260040161073691906151b7565b610839838361247c565b5f80610e7f61271b565b60030154610e8d90846157c4565b9050801580610ea257506001600160401b0381115b15610ec35760405163222d164360e21b815260048101849052602401610736565b92915050565b610ed584848484612010565b5050505050565b6108398383835f61273f565b610ef0612961565b5f610ef961271b565b90505f80610f0684612998565b91509150610f1382612453565b610f1f57505050610fb4565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b03918216911680610f56575080610f74565b5f848152600b86016020526040902080546001600160a01b03191690555b600483516005811115610f8957610f8961501f565b03610f9857610f988185612d50565b610fae82610fa985604001516112d6565b612d7a565b50505050505b610fca60015f80516020615e2283398151915255565b50565b5f610fd6612961565b610fe285858585612db0565b9050610ffa60015f80516020615e2283398151915255565b949350505050565b61083984848484612f15565b5f61101761271b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156110505761105061501f565b60038111156110615761106161501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6110d782611d73565b90506001835160038111156110ee576110ee61501f565b1461110f578251604051633b0d540d60e21b815261073691906004016157e3565b6004815160058111156111245761112461501f565b0361113a5761113286612f41565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61115f8961233d565b604001516040518263ffffffff1660e01b815260040161117f91906152f1565b606060405180830381865af415801561119a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111be91906157fd565b50915091508184146111eb57846040015160405163089938b360e11b815260040161073691815260200190565b806001600160401b031683606001516001600160401b031610806112245750806001600160401b03168560a001516001600160401b0316115b1561124d57604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f6112df61271b565b60030154610ec3906001600160401b03841661583d565b5f61130082611d73565b6080015192915050565b6105aa8383835f612f15565b610ed58484848461273f565b61132a612961565b5f61133361271b565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561136c5761136c61501f565b600381111561137d5761137d61501f565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290506003815160038111156113f6576113f661501f565b14611417578051604051633b0d540d60e21b815261073691906004016157e3565b60046114268260400151611d73565b5160058111156114385761143861501f565b14611537575f6114478461233d565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b815260040161148691906152f1565b606060405180830381865af41580156114a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114c591906157fd565b5091509150818460400151146114f15760405163089938b360e11b815260048101839052602401610736565b806001600160401b03168460c001516001600160401b0316111561153357604051632e19bc2d60e11b81526001600160401b0382166004820152602401610736565b5050505b61154084612f41565b505061155860015f80516020615e2283398151915255565b5050565b5f61156561271b565b90506001600160a01b0382166115995760405163caa903f960e01b81526001600160a01b0383166004820152602401610736565b5f8381526006820160205260409020546001600160a01b031633146115df57335b604051636e2ccd7560e11b81526001600160a01b039091166004820152602401610736565b336001600160a01b0383160361160e575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f61164661271b565b90505f61165283611d73565b51905060048160058111156116695761166961501f565b14611689578060405163170cc93360e21b815260040161073691906151b7565b5f8381526006830160205260409020546001600160a01b031633146116ae57336115ba565b5f8381526006830160205260409020546105aa906001600160a01b031684612d50565b61083984848484611fe4565b5f6116e6612961565b6116f183338461314e565b9050610ec360015f80516020615e2283398151915255565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611752575080546001600160401b03808416911610155b156117705760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b17815561179b8484613393565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615de28339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61181b8661233d565b604001516040518263ffffffff1660e01b815260040161183b91906152f1565b6040805180830381865af4158015611855573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118799190615854565b915091508061189f57604051632d07135360e01b81528115156004820152602401610736565b5f828152600484016020526040902080546118b99061517f565b90505f036118dd5760405163089938b360e11b815260048101839052602401610736565b60015f838152600580860160205260409091205460ff16908111156119045761190461501f565b14611937575f8281526005840160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b5f828152600484016020526040812061194f91614d0a565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f6119e761271b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611a2057611a2061501f565b6003811115611a3157611a3161501f565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611aaa57611aaa61501f565b14158015611acb5750600381516003811115611ac857611ac861501f565b14155b15611aec578051604051633b0d540d60e21b815261073691906004016157e3565b5f611afa8260400151611d73565b905080606001516001600160401b03165f03611b2c576040516339b894f960e21b815260048101859052602401610736565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611b9a93906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611bb4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611bdb91908101906152c0565b6040518263ffffffff1660e01b8152600401611bf791906152f1565b6020604051808303815f875af1158015611c13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed59190615303565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020615de28339815191529190611c7e9061517f565b90505f03611ca25760405163089938b360e11b815260048101839052602401610736565b60015f838152600580840160205260409091205460ff1690811115611cc957611cc961501f565b14611cfc575f8281526005820160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92611d339201615877565b6020604051808303815f875af1158015611d4f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105aa9190615303565b611d7b614d41565b5f8281525f80516020615e02833981519152602052604090819020815160e0810190925280545f80516020615de2833981519152929190829060ff166005811115611dc857611dc861501f565b6005811115611dd957611dd961501f565b8152602001600182018054611ded9061517f565b80601f0160208091040260200160405190810160405280929190818152602001828054611e199061517f565b8015611e645780601f10611e3b57610100808354040283529160200191611e64565b820191905f5260205f20905b815481529060010190602001808311611e4757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b038116611ef45760405163caa903f960e01b81526001600160a01b0382166004820152602401610736565b5f611efd61271b565b5f8481526007820160205260409020549091506001600160a01b03610100909104163314611f2b57336115ba565b336001600160a01b03831603611f5a575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615de2833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0690611fcc9086908690615901565b90815260200160405180910390205491505092915050565b611ff084848484612010565b61083957604051631036cf9160e11b815260048101859052602401610736565b5f8061201a61271b565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156120535761205361501f565b60038111156120645761206461501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f6120da82611d73565b90506002835160038111156120f1576120f161501f565b14612112578251604051633b0d540d60e21b815261073691906004016157e3565b60208301516001600160a01b031633146121ae575f8281526006850160205260409020546001600160a01b0316331461214b57336115ba565b5f82815260068501602052604090205460a082015161217a91600160b01b90046001600160401b031690615598565b6001600160401b03164210156121ae5760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b6002815160058111156121c3576121c361501f565b036122e557600284015460808401516121e5916001600160401b031690615598565b6001600160401b03164210156122195760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b871561222b57612229828861247c565b505b5f8981526007850160205260409020805460ff191660031790556060830151608082015161226491849161225f9190615910565b6133ad565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b03909316929092179091556122a784888c613584565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a315159450610ffa9350505050565b6004815160058111156122fa576122fa61501f565b036123215761230a83878b613584565b5061231489612f41565b6001945050505050610ffa565b805160405163170cc93360e21b815261073691906004016151b7565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa1580156123a1573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526123c89190810190615930565b91509150806123ea57604051636b2f19e960e01b815260040160405180910390fd5b815115612410578151604051636ba589a560e01b81526004810191909152602401610736565b60208201516001600160a01b03161561244c576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5092915050565b5f8061245d61271b565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156124c7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526124ee9190810190615930565b915091508061251057604051636b2f19e960e01b815260040160405180910390fd5b5f61251961271b565b6005810154845191925014612547578251604051636ba589a560e01b81526004810191909152602401610736565b60208301516001600160a01b031615612583576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b60208301516001600160a01b0316156125bf576020830151604051624de75d60e31b81526001600160a01b039091166004820152602401610736565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b81526004016125fc91906152f1565b6040805180830381865af4158015612616573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061263a91906159c0565b915091508188146126615760405163089938b360e11b815260048101899052602401610736565b5f8881526006840160205260409020600101546001600160401b0390811690821611156126f2575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a2612710565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f8061274961271b565b90505f61275587613769565b905061276087612453565b61276f57600192505050610ffa565b5f8781526006830160205260409020546001600160a01b0316331461279457336115ba565b5f87815260068301602052604090205460a08201516127c391600160b01b90046001600160401b031690615598565b6001600160401b03168160c001516001600160401b0316101561280a5760c081015160405163fb6ce63f60e01b81526001600160401b039091166004820152602401610736565b5f86156128225761281b888761247c565b9050612840565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612865906112d6565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa1580156128ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128f29190615303565b90508084600a015f8b81526020019081526020015f205f82825461291691906159e3565b90915550506001600160a01b03861615612953575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615e2283398151915280546001190161299257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f6129a1614d41565b5f80516020615de28339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f6129d48861233d565b604001516040518263ffffffff1660e01b81526004016129f491906152f1565b6040805180830381865af4158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190615854565b915091508015612a5957604051632d07135360e01b81528115156004820152602401610736565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612a9057612a9061501f565b6005811115612aa157612aa161501f565b8152602001600182018054612ab59061517f565b80601f0160208091040260200160405190810160405280929190818152602001828054612ae19061517f565b8015612b2c5780601f10612b0357610100808354040283529160200191612b2c565b820191905f5260205f20905b815481529060010190602001808311612b0f57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612b9757612b9761501f565b14158015612bb85750600181516005811115612bb557612bb561501f565b14155b15612bd957805160405163170cc93360e21b815261073691906004016151b7565b600381516005811115612bee57612bee61501f565b03612bfc5760048152612c01565b600581525b836006018160200151604051612c179190615474565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612c5a57612c5a61501f565b021790555060208201516001820190612c7390826154c9565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612d1957612d1961501f565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612d5961271b565b5f838152600a82016020526040812080549190559091506108398482613a4e565b5f80516020615dc283398151915254611558906001600160a01b03168383613ac4565b60015f80516020615e2283398151915255565b5f80612dba61271b565b600281015490915061ffff600160401b90910481169086161080612de3575061271061ffff8616115b15612e0757604051635f12e6c360e11b815261ffff86166004820152602401610736565b60028101546001600160401b039081169085161015612e43576040516202a06d60e11b81526001600160401b0385166004820152602401610736565b8054831080612e555750806001015483115b15612e765760405163222d164360e21b815260048101849052602401610736565b5f612e8084613b23565b90505f612e8c82610e75565b90505f612e998983613b46565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b612f218484848461273f565b61083957604051635bff683f60e11b815260048101859052602401610736565b5f612f4a61271b565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612f8357612f8361501f565b6003811115612f9457612f9461501f565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091506130317fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b82608001516130409190615598565b6001600160401b03164210156130745760405163fb6ce63f60e01b81526001600160401b0342166004820152602401610736565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130c4575060208201516130e2565b5f858152600985016020526040902080546001600160a01b03191690555b5f806130ef8388866140b8565b915091506131088560200151610fa987606001516112d6565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f8061315861271b565b90505f6131676102dc85613b23565b90505f61317387611d73565b905061317e87612453565b61319e576040516330efa98b60e01b815260048101889052602401610736565b6002815160058111156131b3576131b361501f565b146131d457805160405163170cc93360e21b815261073691906004016151b7565b5f8282608001516131e59190615598565b905083600201600a9054906101000a90046001600160401b0316826040015161320e91906155da565b6001600160401b0316816001600160401b0316111561324b57604051636d51fe0560e11b81526001600160401b0382166004820152602401610736565b5f806132578a846133ad565b915091505f8a8360405160200161328592919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a496505050505050505b9392505050565b61339b614165565b6133a4826141b0565b6115588161422a565b5f8281525f80516020615e02833981519152602052604081206002015481905f80516020615de283398151915290600160801b90046001600160401b03166133f58582614292565b5f6133ff876144fc565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156134a8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526134cf91908101906152c0565b6040518263ffffffff1660e01b81526004016134eb91906152f1565b6020604051808303815f875af1158015613507573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352b9190615303565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f8061358e61271b565b90505f61359e8660400151611d73565b90505f6003825160058111156135b6576135b661501f565b14806135d457506004825160058111156135d2576135d261501f565b145b156135e4575060c0810151613621565b6002825160058111156135f9576135f961501f565b03613605575042613621565b815160405163170cc93360e21b815261073691906004016151b7565b86608001516001600160401b0316816001600160401b031611613649575f935050505061338c565b600483015460608801515f916001600160a01b031690634f22429f9061366e906112d6565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa1580156136ef573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137139190615303565b5f878152600886016020526040902081905590506001600160a01b03871615612710575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b613771614d41565b5f8281525f80516020615e028339815191526020526040808220815160e0810190925280545f80516020615de283398151915293929190829060ff1660058111156137be576137be61501f565b60058111156137cf576137cf61501f565b81526020016001820180546137e39061517f565b80601f016020809104026020016040519081016040528092919081815260200182805461380f9061517f565b801561385a5780601f106138315761010080835404028352916020019161385a565b820191905f5260205f20905b81548152906001019060200180831161383d57829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156138c8576138c861501f565b146138fb575f8481526005830160205260409081902054905163170cc93360e21b81526107369160ff16906004016151b7565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff19169060019084908111156139405761394061501f565b02179055506020820151600182019061395990826154c9565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6139f785826133ad565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b5f5f80516020615dc283398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015613aa9575f80fd5b505af1158015613abb573d5f803e3d5ffd5b50505050505050565b6040516001600160a01b038381166024830152604482018390526105aa91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614571565b5f610ec3825f80516020615dc2833981519152546001600160a01b0316906145d2565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613b8a57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615de283398151915242613ba96060860160408701614f83565b6001600160401b0316111580613be35750613bc76202a300426159e3565b613bd76060860160408701614f83565b6001600160401b031610155b15613c1d57613bf86060850160408601614f83565b604051635879da1360e11b81526001600160401b039091166004820152602401610736565b60038101546001600160401b0390613c4090600160401b900482168583166159e3565b1115613c6a57604051633e1a785160e01b81526001600160401b0384166004820152602401610736565b613c7f613c7a60608601866159f6565b6145de565b613c8f613c7a60808601866159f6565b6030613c9e6020860186615a0a565b905014613cd057613cb26020850185615a0a565b6040516326475b2f60e11b8152610736925060040190815260200190565b613cda8480615a0a565b90505f03613d0757613cec8480615a0a565b604051633e08a12560e11b8152600401610736929190615a4c565b5f60068201613d168680615a0a565b604051613d24929190615901565b90815260200160405180910390205414613d5d57613d428480615a0a565b60405163a41f772f60e01b8152600401610736929190615a4c565b613d67835f614292565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101613da48a80615a0a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190613dec908b018b615a0a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001613e3560608b0160408c01614f83565b6001600160401b03168152602001613e5060608b018b6159f6565b613e5990615a5f565b8152602001613e6b60808b018b6159f6565b613e7490615a5f565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401613ea29190615b8c565b5f60405180830381865af4158015613ebc573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052613ee39190810190615c43565b5f82815260048601602052604090209193509150613f0182826154c9565b508160068401613f118880615a0a565b604051613f1f929190615901565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90613f5b9085906004016152f1565b6020604051808303815f875af1158015613f77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f9b9190615303565b5f8481526005860160205260409020805460ff191660011790559050613fc18780615a0a565b5f858152600587016020526040902060010191613fdf919083615c86565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061403e8880615a0a565b60405161404c929190615901565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061408a9190614f83565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b5f805f6140c361271b565b5f86815260088201602052604081208054908290559192509081908015614157575f8781526006850160205260409020546127109061410d90600160a01b900461ffff168361583d565b61411791906157c4565b91508184600a015f8981526020019081526020015f205f82825461413b91906159e3565b9091555061414b90508282615d3f565b92506141578984613a4e565b509097909650945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166141ae57604051631afcd79f60e31b815260040160405180910390fd5b565b6141b8614165565b6141c181614747565b6141c9614760565b610fca606082013560808301356141e660c0850160a08601614f83565b6141f660e0860160c08701615d52565b614207610100870160e08801615d6b565b61010087013561421f61014089016101208a0161531a565b886101400135614770565b614232614165565b5f80516020615dc28339815191526001600160a01b03821661427257604051637330680360e01b81526001600160a01b0383166004820152602401610736565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f80516020615de28339815191525f6001600160401b0380841690851611156142c6576142bf8385615910565b90506142d3565b6142d08484615910565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b900490921660608201524291158061434057506001840154815161433c916001600160401b0316906159e3565b8210155b15614368576001600160401b0380841660608301528282526040820151166020820152614387565b828160600181815161437a9190615598565b6001600160401b03169052505b60608101516143979060646155da565b602082015160018601546001600160401b0392909216916143c29190600160401b900460ff166155da565b6001600160401b031610156143fb57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610736565b858160400181815161440d9190615598565b6001600160401b031690525060408101805186919061442d908390615910565b6001600160401b03169052506001840154604082015160649161445b91600160401b90910460ff16906155da565b6001600160401b03161015614494576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610736565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020615e028339815191526020526040812060020180545f80516020615de2833981519152919060089061454690600160401b90046001600160401b0316615d8b565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b5f6145856001600160a01b03841683614955565b905080515f141580156145a95750808060200190518101906145a79190615da6565b155b156105aa57604051635274afe760e01b81526001600160a01b0384166004820152602401610736565b5f61338c833384614962565b6145eb6020820182614ede565b63ffffffff1615801561460b57506146066020820182615335565b151590505b156146525761461d6020820182614ede565b61462a6020830183615335565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610736565b61465f6020820182615335565b905061466e6020830183614ede565b63ffffffff1611156146875761461d6020820182614ede565b60015b6146976020830183615335565b9050811015611558576146ad6020830183615335565b6146b8600184615d3f565b8181106146c7576146c761537a565b90506020020160208101906146dc919061531a565b6001600160a01b03166146f26020840184615335565b838181106147025761470261537a565b9050602002016020810190614717919061531a565b6001600160a01b0316101561473f57604051630dbc8d5f60e31b815260040160405180910390fd5b60010161468a565b61474f614165565b614757614ac5565b610fca81614acd565b614768614165565b6141ae614bb5565b614778614165565b5f61478161271b565b905061ffff86161580614799575061271061ffff8716115b156147bd57604051635f12e6c360e11b815261ffff87166004820152602401610736565b878911156147e15760405163222d164360e21b8152600481018a9052602401610736565b60ff851615806147f45750600a60ff8616115b156148175760405163170db35960e31b815260ff86166004820152602401610736565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b0316101561487e576040516202a06d60e11b81526001600160401b0388166004820152602401610736565b835f0361489e5760405163a733007160e01b815260040160405180910390fd5b816148bf57604051632f6bd1db60e01b815260048101839052602401610736565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b606061338c83835f614bbd565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156149a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906149cc9190615303565b90506149e36001600160a01b038616853086614c4c565b6040516370a0823160e01b81523060048201525f906001600160a01b038716906370a0823190602401602060405180830381865afa158015614a27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a4b9190615303565b9050818111614ab15760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610736565b614abb8282615d3f565b9695505050505050565b6141ae614165565b614ad5614165565b80355f80516020615de28339815191529081556014614afa6060840160408501615d6b565b60ff161180614b195750614b146060830160408401615d6b565b60ff16155b15614b4d57614b2e6060830160408401615d6b565b604051634a59bbff60e11b815260ff9091166004820152602401610736565b614b5d6060830160408401615d6b565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614b8e6040830160208401614f83565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612d9d614165565b606081471015614be25760405163cd78605960e01b8152306004820152602401610736565b5f80856001600160a01b03168486604051614bfd9190615474565b5f6040518083038185875af1925050503d805f8114614c37576040519150601f19603f3d011682016040523d82523d5f602084013e614c3c565b606091505b5091509150614abb868383614c85565b6040516001600160a01b0384811660248301528381166044830152606482018390526108399186918216906323b872dd90608401613af1565b606082614c9a57614c9582614ce1565b61338c565b8151158015614cb157506001600160a01b0384163b155b15614cda57604051639996b31560e01b81526001600160a01b0385166004820152602401610736565b508061338c565b805115614cf15780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054614d169061517f565b5f825580601f10614d25575050565b601f0160209004905f5260205f2090810190610fca9190614d7e565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614d92575f8155600101614d7f565b5090565b8015158114610fca575f80fd5b803563ffffffff81168114614db6575f80fd5b919050565b5f805f60608486031215614dcd575f80fd5b833592506020840135614ddf81614d96565b9150614ded60408501614da3565b90509250925092565b5f60208284031215614e06575f80fd5b5035919050565b5f8060408385031215614e1e575f80fd5b82356001600160401b03811115614e33575f80fd5b830160808186031215614e44575f80fd5b9150614e5260208401614da3565b90509250929050565b5f8060408385031215614e6c575f80fd5b82359150614e5260208401614da3565b6001600160a01b0381168114610fca575f80fd5b5f805f8060808587031215614ea3575f80fd5b843593506020850135614eb581614d96565b9250614ec360408601614da3565b91506060850135614ed381614e7c565b939692955090935050565b5f60208284031215614eee575f80fd5b61338c82614da3565b803561ffff81168114614db6575f80fd5b6001600160401b0381168114610fca575f80fd5b5f805f8060808587031215614f2f575f80fd5b84356001600160401b03811115614f44575f80fd5b850160a08188031215614f55575f80fd5b9350614f6360208601614ef7565b92506040850135614f7381614f08565b9396929550929360600135925050565b5f60208284031215614f93575f80fd5b813561338c81614f08565b5f8060408385031215614faf575f80fd5b823591506020830135614fc181614e7c565b809150509250929050565b5f8060408385031215614fdd575f80fd5b50508035926020909101359150565b5f80828403610180811215614fff575f80fd5b6101608082121561500e575f80fd5b8493508301359050614fc181614e7c565b634e487b7160e01b5f52602160045260245ffd5b600681106150435761504361501f565b9052565b5f5b83811015615061578181015183820152602001615049565b50505f910152565b5f8151808452615080816020860160208601615047565b601f01601f19169290920160200192915050565b602081526150a6602082018351615033565b5f602083015160e060408401526150c1610100840182615069565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215615125575f80fd5b82356001600160401b038082111561513b575f80fd5b818501915085601f83011261514e575f80fd5b81358181111561515c575f80fd5b86602082850101111561516d575f80fd5b60209290920196919550909350505050565b600181811c9082168061519357607f821691505b6020821081036151b157634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610ec38284615033565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156151fb576151fb6151c5565b60405290565b604080519081016001600160401b03811182821017156151fb576151fb6151c5565b604051601f8201601f191681016001600160401b038111828210171561524b5761524b6151c5565b604052919050565b5f6001600160401b0382111561526b5761526b6151c5565b50601f01601f191660200190565b5f82601f830112615288575f80fd5b815161529b61529682615253565b615223565b8181528460208386010111156152af575f80fd5b610ffa826020830160208701615047565b5f602082840312156152d0575f80fd5b81516001600160401b038111156152e5575f80fd5b610ffa84828501615279565b602081525f61338c6020830184615069565b5f60208284031215615313575f80fd5b5051919050565b5f6020828403121561532a575f80fd5b813561338c81614e7c565b5f808335601e1984360301811261534a575f80fd5b8301803591506001600160401b03821115615363575f80fd5b6020019150600581901b360382131561357d575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126153a2575f80fd5b9190910192915050565b5f82601f8301126153bb575f80fd5b81356153c961529682615253565b8181528460208386010111156153dd575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215615409575f80fd5b6154116151d9565b82356001600160401b0380821115615427575f80fd5b615433368387016153ac565b83526020850135915080821115615448575f80fd5b50615455368286016153ac565b602083015250604083013561546981614f08565b604082015292915050565b5f82516153a2818460208701615047565b601f8211156105aa57805f5260205f20601f840160051c810160208510156154aa5750805b601f840160051c820191505b81811015610ed5575f81556001016154b6565b81516001600160401b038111156154e2576154e26151c5565b6154f6816154f0845461517f565b84615485565b602080601f831160018114615529575f84156155125750858301515b5f19600386901b1c1916600185901b178555611132565b5f85815260208120601f198616915b8281101561555757888601518255948401946001909101908401615538565b508582101561557457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908082111561244c5761244c615584565b5f63ffffffff8083168181036155d0576155d0615584565b6001019392505050565b6001600160401b038181168382160280821691908281146155fd576155fd615584565b505092915050565b5f808335601e1984360301811261561a575f80fd5b83016020810192503590506001600160401b03811115615638575f80fd5b80360382131561357d575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561572357848303601f19018952813536889003605e190181126156aa575f80fd5b870160606156b88280615605565b8287526156c88388018284615646565b925050506156d886830183615605565b868303888801526156ea838284615646565b9250505060408083013592506156ff83614f08565b6001600160401b039290921694909101939093529783019790830190600101615685565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561575481614e7c565b6001600160a01b031660608381019190915283013536849003601e1901811261577b575f80fd5b83016020810190356001600160401b03811115615796575f80fd5b8060051b36038213156157a7575f80fd5b6080808501526157bb60a08501828461566e565b95945050505050565b5f826157de57634e487b7160e01b5f52601260045260245ffd5b500490565b60208101600483106157f7576157f761501f565b91905290565b5f805f6060848603121561580f575f80fd5b83519250602084015161582181614f08565b604085015190925061583281614f08565b809150509250925092565b8082028115828204841417610ec357610ec3615584565b5f8060408385031215615865575f80fd5b825191506020830151614fc181614d96565b5f60208083525f84546158898161517f565b806020870152604060018084165f81146158aa57600181146158c6576158f3565b60ff19851660408a0152604084151560051b8a010195506158f3565b895f5260205f205f5b858110156158ea5781548b82018601529083019088016158cf565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b0382811682821603908082111561244c5761244c615584565b5f8060408385031215615941575f80fd5b82516001600160401b0380821115615957575f80fd5b908401906060828703121561596a575f80fd5b6159726151d9565b82518152602083015161598481614e7c565b602082015260408301518281111561599a575f80fd5b6159a688828601615279565b6040830152508094505050506020830151614fc181614d96565b5f80604083850312156159d1575f80fd5b825191506020830151614fc181614f08565b80820180821115610ec357610ec3615584565b5f8235603e198336030181126153a2575f80fd5b5f808335601e19843603018112615a1f575f80fd5b8301803591506001600160401b03821115615a38575f80fd5b60200191503681900382131561357d575f80fd5b602081525f610ffa602083018486615646565b5f60408236031215615a6f575f80fd5b615a77615201565b615a8083614da3565b81526020808401356001600160401b0380821115615a9c575f80fd5b9085019036601f830112615aae575f80fd5b813581811115615ac057615ac06151c5565b8060051b9150615ad1848301615223565b8181529183018401918481019036841115615aea575f80fd5b938501935b83851015615b145784359250615b0483614e7c565b8282529385019390850190615aef565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015615b815784516001600160a01b03168252938301936001929092019190830190615b58565b509695505050505050565b60208152815160208201525f602083015160e06040840152615bb2610100840182615069565b90506040840151601f1980858403016060860152615bd08383615069565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152615c008383615b26565b925060a08601519150808584030160c086015250615c1e8282615b26565b91505060c0840151615c3b60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615c54575f80fd5b8251915060208301516001600160401b03811115615c70575f80fd5b615c7c85828601615279565b9150509250929050565b6001600160401b03831115615c9d57615c9d6151c5565b615cb183615cab835461517f565b83615485565b5f601f841160018114615ce2575f8515615ccb5750838201355b5f19600387901b1c1916600186901b178355610ed5565b5f83815260208120601f198716915b82811015615d115786850135825560209485019460019092019101615cf1565b5086821015615d2d575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610ec357610ec3615584565b5f60208284031215615d62575f80fd5b61338c82614ef7565b5f60208284031215615d7b575f80fd5b813560ff8116811461338c575f80fd5b5f6001600160401b038083168181036155d0576155d0615584565b5f60208284031215615db6575f80fd5b815161338c81614d9656fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a264697066735822122026c2eadba6547bb2f7267c122bc78f893cbc1371e1143d68c5b5bb8b2dc7c54d64736f6c63430008190033", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -2017,13 +2017,13 @@ func (it *ERC20TokenStakingManagerInitialValidatorCreatedIterator) Close() error type ERC20TokenStakingManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash - Weight *big.Int + Weight uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*ERC20TokenStakingManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} @@ -2042,9 +2042,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterInitial return &ERC20TokenStakingManagerInitialValidatorCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2088,9 +2088,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchInitialV }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*ERC20TokenStakingManagerInitialValidatorCreated, error) { event := new(ERC20TokenStakingManagerInitialValidatorCreated) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { @@ -2451,14 +2451,14 @@ type ERC20TokenStakingManagerValidationPeriodCreated struct { ValidationID [32]byte NodeID common.Hash RegisterValidationMessageID [32]byte - Weight *big.Int + Weight uint64 RegistrationExpiry uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} @@ -2481,9 +2481,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidat return &ERC20TokenStakingManagerValidationPeriodCreatedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2531,9 +2531,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*ERC20TokenStakingManagerValidationPeriodCreated, error) { event := new(ERC20TokenStakingManagerValidationPeriodCreated) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { @@ -2766,14 +2766,14 @@ func (it *ERC20TokenStakingManagerValidationPeriodRegisteredIterator) Close() er // ERC20TokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the ERC20TokenStakingManager contract. type ERC20TokenStakingManagerValidationPeriodRegistered struct { ValidationID [32]byte - Weight *big.Int + Weight uint64 Timestamp *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*ERC20TokenStakingManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} @@ -2788,9 +2788,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidat return &ERC20TokenStakingManagerValidationPeriodRegisteredIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2830,9 +2830,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidati }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*ERC20TokenStakingManagerValidationPeriodRegistered, error) { event := new(ERC20TokenStakingManagerValidationPeriodRegistered) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { @@ -2913,14 +2913,14 @@ func (it *ERC20TokenStakingManagerValidatorRemovalInitializedIterator) Close() e type ERC20TokenStakingManagerValidatorRemovalInitialized struct { ValidationID [32]byte SetWeightMessageID [32]byte - Weight *big.Int + Weight uint64 EndTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*ERC20TokenStakingManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} @@ -2939,9 +2939,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidat return &ERC20TokenStakingManagerValidatorRemovalInitializedIterator{contract: _ERC20TokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2985,9 +2985,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*ERC20TokenStakingManagerValidatorRemovalInitialized, error) { event := new(ERC20TokenStakingManagerValidatorRemovalInitialized) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { @@ -3068,14 +3068,14 @@ func (it *ERC20TokenStakingManagerValidatorWeightUpdateIterator) Close() error { type ERC20TokenStakingManagerValidatorWeightUpdate struct { ValidationID [32]byte Nonce uint64 - ValidatorWeight uint64 + Weight uint64 SetWeightMessageID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} @@ -3096,7 +3096,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterValidat // WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} @@ -3142,7 +3142,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchValidato // ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*ERC20TokenStakingManagerValidatorWeightUpdate, error) { event := new(ERC20TokenStakingManagerValidatorWeightUpdate) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { @@ -3155,7 +3155,7 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseValidato // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"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\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c0b30a7d1574f37fe27736317f68c07745760d3ce113e1505eb78f7757b3827064736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index aa58a243f..902d5b281 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -103,8 +103,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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"weight\",\"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: "0x608060405234801561000f575f80fd5b50604051615cff380380615cff83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615bb28061014d5f395ff3fe608060405260043610610233575f3560e01c80637d8d2f7711610129578063b771b3bc116100a8578063c974d1b61161006d578063c974d1b614610690578063d5f20ff6146106a4578063df93d8de146106d0578063fb8b11dd146106e6578063fd7ac5e714610705575f80fd5b8063b771b3bc14610605578063ba3a4b971461061f578063bc5fbfec1461063e578063bee0a03f1461065e578063c599e24f1461067d575f80fd5b80639ae06447116100ee5780639ae0644714610581578063a3a65e48146105a0578063a9778a7a14610387578063af2f5feb146105bf578063afb98096146105d2575f80fd5b80637d8d2f77146104f157806380dd672f146105105780638280a25a1461052f5780638ef34c981461054357806393e2459814610562575f80fd5b806337b9be8f116101b557806360ad77841161017a57806360ad778414610454578063620658561461047357806366435abf146104a0578063732214f8146104bf57806376f78621146104d2575f80fd5b806337b9be8f146103af5780633a1cfff6146103ce578063467ef06f146103ed5780635dd6a6cb1461040c57806360305d621461042b575f80fd5b806320d91b7a116101fb57806320d91b7a146102e057806325e1c776146102ff5780632e2194d81461031e578063329c3e121461035557806335455ded14610387575f80fd5b80630118acc4146102375780630322ed98146102585780630ba512d114610277578063151d30d1146102965780631ec44724146102c1575b5f80fd5b348015610242575f80fd5b50610256610251366004614b84565b610724565b005b348015610263575f80fd5b50610256610272366004614bbf565b610735565b348015610282575f80fd5b50610256610291366004614bd6565b6109c5565b3480156102a1575f80fd5b506102aa600a81565b60405160ff90911681526020015b60405180910390f35b3480156102cc575f80fd5b506102566102db366004614b84565b610aa2565b3480156102eb575f80fd5b506102566102fa366004614bed565b610aae565b34801561030a575f80fd5b50610256610319366004614c3b565b611064565b348015610329575f80fd5b5061033d610338366004614bbf565b6110d8565b6040516001600160401b0390911681526020016102b8565b348015610360575f80fd5b5061036f6001600160991b0181565b6040516001600160a01b0390911681526020016102b8565b348015610392575f80fd5b5061039c61271081565b60405161ffff90911681526020016102b8565b3480156103ba575f80fd5b506102566103c9366004614c70565b61112c565b3480156103d9575f80fd5b506102566103e8366004614b84565b61113f565b3480156103f8575f80fd5b50610256610407366004614cbe565b61114b565b348015610417575f80fd5b50610256610426366004614c70565b611230565b348015610436575f80fd5b5061043f601481565b60405163ffffffff90911681526020016102b8565b34801561045f575f80fd5b5061025661046e366004614c3b565b61123c565b34801561047e575f80fd5b5061049261048d366004614ceb565b611504565b6040519081526020016102b8565b3480156104ab575f80fd5b5061033d6104ba366004614bbf565b611524565b3480156104ca575f80fd5b506104925f81565b3480156104dd575f80fd5b506102566104ec366004614b84565b611538565b3480156104fc575f80fd5b5061025661050b366004614c70565b611544565b34801561051b575f80fd5b5061025661052a366004614c3b565b611550565b34801561053a575f80fd5b506102aa603081565b34801561054e575f80fd5b5061025661055d366004614d06565b61178a565b34801561056d575f80fd5b5061025661057c366004614bbf565b61186b565b34801561058c575f80fd5b5061025661059b366004614c70565b6118ff565b3480156105ab575f80fd5b506102566105ba366004614cbe565b61190b565b6104926105cd366004614d45565b611b01565b3480156105dd575f80fd5b506104927f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0081565b348015610610575f80fd5b5061036f6005600160991b0181565b34801561062a575f80fd5b50610256610639366004614bbf565b611b35565b348015610649575f80fd5b506104925f80516020615b1d83398151915281565b348015610669575f80fd5b50610256610678366004614bbf565b611d8e565b61049261068b366004614bbf565b611eca565b34801561069b575f80fd5b506102aa601481565b3480156106af575f80fd5b506106c36106be366004614bbf565b611efb565b6040516102b89190614e1b565b3480156106db575f80fd5b5061033d6202a30081565b3480156106f1575f80fd5b50610256610700366004614d06565b61204a565b348015610710575f80fd5b5061049261071f366004614e9b565b612111565b6107308383835f61216c565b505050565b5f8181525f80516020615b3d8339815191526020526040808220815160e0810190925280545f80516020615b1d83398151915293929190829060ff16600581111561078257610782614da6565b600581111561079357610793614da6565b81526020016001820180546107a790614f06565b80601f01602080910402602001604051908101604052809291908181526020018280546107d390614f06565b801561081e5780601f106107f55761010080835404028352916020019161081e565b820191905f5260205f20905b81548152906001019060200180831161080157829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a0909101529091508151600581111561088957610889614da6565b146108c5575f8381526005830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af415801561093c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526109639190810190615041565b6040518263ffffffff1660e01b815260040161097f9190615072565b6020604051808303815f875af115801561099b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109bf9190615084565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610a0e575080546001600160401b03808416911610155b15610a2c5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610a5683612198565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b6109bf8383835f6121a9565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f80516020615b1d8339815191529060ff1615610b0057604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b43573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b679190615084565b836020013514610b90576040516372b0a7e760e11b8152602084013560048201526024016108bc565b30610ba1606085016040860161509b565b6001600160a01b031614610be457610bbf606084016040850161509b565b604051632f88120d60e21b81526001600160a01b0390911660048201526024016108bc565b5f610bf260608501856150b6565b905090505f805b828163ffffffff161015610e5a575f610c1560608801886150b6565b8363ffffffff16818110610c2b57610c2b6150fb565b9050602002810190610c3d919061510f565b610c469061517a565b80516040519192505f916006880191610c5e916151f5565b90815260200160405180910390205414610c8e57805160405163a41f772f60e01b81526108bc9190600401615072565b5f6002885f013584604051602001610cbd92919091825260e01b6001600160e01b031916602082015260240190565b60408051601f1981840301815290829052610cd7916151f5565b602060405180830381855afa158015610cf2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610d159190615084565b90508086600601835f0151604051610d2d91906151f5565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff191660021781558251600190910190610d6d908261524a565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff19169055610ded9085615319565b8251604051919550610dfe916151f5565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a3505080610e5390615339565b9050610bf9565b5060038301805467ffffffffffffffff60401b1916600160401b6001600160401b0384168102919091179091556001840154606491610e9d910460ff168361535b565b6001600160401b03161015610ed057604051633e1a785160e01b81526001600160401b03821660048201526024016108bc565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d847884610ef4876124de565b604001516040518263ffffffff1660e01b8152600401610f149190615072565b602060405180830381865af4158015610f2f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f539190615084565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610f8d91906154b1565b5f60405180830381865af4158015610fa7573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fce9190810190615041565b90505f600282604051610fe191906151f5565b602060405180830381855afa158015610ffc573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061101f9190615084565b905082811461104b5760405163baaea89d60e01b815260048101829052602481018490526044016108bc565b5050506007909201805460ff1916600117905550505050565b61106d826125f4565b61108d576040516330efa98b60e01b8152600481018390526024016108bc565b5f61109783611efb565b51905060028160058111156110ae576110ae614da6565b146110ce578060405163170cc93360e21b81526004016108bc9190614f38565b6109bf838361261d565b5f806110e26128bc565b600301546110f09084615545565b905080158061110557506001600160401b0381115b156111265760405163222d164360e21b8152600481018490526024016108bc565b92915050565b611138848484846121a9565b5050505050565b6109bf8383835f6128e0565b611153612b02565b5f61115c6128bc565b90505f8061116984612b39565b91509150611176826125f4565b61118257505050611217565b5f828152600684016020908152604080832054600b8701909252909120546001600160a01b039182169116806111b95750806111d7565b5f848152600b86016020526040902080546001600160a01b03191690555b6004835160058111156111ec576111ec614da6565b036111fb576111fb8185612ef1565b6112118261120c8560400151611504565b612f1b565b50505050505b61122d60015f80516020615b5d83398151915255565b50565b6109bf84848484612f41565b5f6112456128bc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561127e5761127e614da6565b600381111561128f5761128f614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61130582611efb565b905060018351600381111561131c5761131c614da6565b1461133d578251604051633b0d540d60e21b81526108bc9190600401615564565b60048151600581111561135257611352614da6565b036113685761136086612f6d565b505050505050565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f61138d896124de565b604001516040518263ffffffff1660e01b81526004016113ad9190615072565b606060405180830381865af41580156113c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ec919061557e565b509150915081841461141957846040015160405163089938b360e11b81526004016108bc91815260200190565b806001600160401b031683606001516001600160401b031610806114525750806001600160401b03168560a001516001600160401b0316115b1561147b57604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5f888152600787016020908152604091829020805460ff1916600290811782550180546001600160401b034216600160401b810267ffffffffffffffff60401b1990921691909117909155915191825285918a917f047059b465069b8b751836b41f9f1d83daff583d2238cc7fbb461437ec23a4f6910160405180910390a35050505050505050565b5f61150d6128bc565b60030154611126906001600160401b0384166155b3565b5f61152e82611efb565b6080015192915050565b6107308383835f612f41565b611138848484846128e0565b611558612b02565b5f6115616128bc565b5f848152600782016020526040808220815160e0810190925280549394509192909190829060ff16600381111561159a5761159a614da6565b60038111156115ab576115ab614da6565b8152815461010090046001600160a01b03166020820152600182015460408201526002909101546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c090910152905060038151600381111561162457611624614da6565b14611645578051604051633b0d540d60e21b81526108bc9190600401615564565b60046116548260400151611efb565b51600581111561166657611666614da6565b14611765575f611675846124de565b90505f8073__$fd0c147b4031eef6079b0498cbafa865f0$__6350782b0f84604001516040518263ffffffff1660e01b81526004016116b49190615072565b606060405180830381865af41580156116cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f3919061557e565b50915091508184604001511461171f5760405163089938b360e11b8152600481018390526024016108bc565b806001600160401b03168460c001516001600160401b0316111561176157604051632e19bc2d60e11b81526001600160401b03821660048201526024016108bc565b5050505b61176e84612f6d565b505061178660015f80516020615b5d83398151915255565b5050565b5f6117936128bc565b90506001600160a01b0382166117c75760405163caa903f960e01b81526001600160a01b03831660048201526024016108bc565b5f8381526006820160205260409020546001600160a01b0316331461180d57335b604051636e2ccd7560e11b81526001600160a01b0390911660048201526024016108bc565b336001600160a01b0383160361183c575f928352600b01602052506040902080546001600160a01b0319169055565b5f838152600b82016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b5f6118746128bc565b90505f61188083611efb565b519050600481600581111561189757611897614da6565b146118b7578060405163170cc93360e21b81526004016108bc9190614f38565b5f8381526006830160205260409020546001600160a01b031633146118dc57336117e8565b5f838152600683016020526040902054610730906001600160a01b031684612ef1565b6109bf8484848461216c565b5f80516020615b1d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61193e866124de565b604001516040518263ffffffff1660e01b815260040161195e9190615072565b6040805180830381865af4158015611978573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061199c91906155ca565b91509150806119c257604051632d07135360e01b815281151560048201526024016108bc565b5f828152600484016020526040902080546119dc90614f06565b90505f03611a005760405163089938b360e11b8152600481018390526024016108bc565b60015f838152600580860160205260409091205460ff1690811115611a2757611a27614da6565b14611a5a575f8281526005840160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b5f8281526004840160205260408120611a7291614ad8565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f611b0a612b02565b611b168484843461317a565b9050611b2e60015f80516020615b5d83398151915255565b9392505050565b5f611b3e6128bc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115611b7757611b77614da6565b6003811115611b8857611b88614da6565b8152815461010090046001600160a01b0316602082015260018083015460408301526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015290915081516003811115611c0157611c01614da6565b14158015611c225750600381516003811115611c1f57611c1f614da6565b14155b15611c43578051604051633b0d540d60e21b81526108bc9190600401615564565b5f611c518260400151611efb565b905080606001516001600160401b03165f03611c83576040516339b894f960e21b8152600481018590526024016108bc565b60408083015160608301516080840151925163854a893f60e01b81526005600160991b019363ee5b48eb9373__$fd0c147b4031eef6079b0498cbafa865f0$__9363854a893f93611cf193906004019283526001600160401b03918216602084015216604082015260600190565b5f60405180830381865af4158015611d0b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611d329190810190615041565b6040518263ffffffff1660e01b8152600401611d4e9190615072565b6020604051808303815f875af1158015611d6a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111389190615084565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f80516020615b1d8339815191529190611dd590614f06565b90505f03611df95760405163089938b360e11b8152600481018390526024016108bc565b60015f838152600580840160205260409091205460ff1690811115611e2057611e20614da6565b14611e53575f8281526005820160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92611e8a92016155ed565b6020604051808303815f875af1158015611ea6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107309190615084565b5f611ed3612b02565b611ede8233346132d4565b9050611ef660015f80516020615b5d83398151915255565b919050565b611f03614b0f565b5f8281525f80516020615b3d833981519152602052604090819020815160e0810190925280545f80516020615b1d833981519152929190829060ff166005811115611f5057611f50614da6565b6005811115611f6157611f61614da6565b8152602001600182018054611f7590614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054611fa190614f06565b8015611fec5780601f10611fc357610100808354040283529160200191611fec565b820191905f5260205f20905b815481529060010190602001808311611fcf57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b6001600160a01b03811661207c5760405163caa903f960e01b81526001600160a01b03821660048201526024016108bc565b5f6120856128bc565b5f8481526007820160205260409020549091506001600160a01b036101009091041633146120b357336117e8565b336001600160a01b038316036120e2575f928352600901602052506040902080546001600160a01b0319169055565b5f838152600982016020526040902080546001600160a01b0384166001600160a01b0319909116179055505050565b6040515f905f80516020615b1d833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906121549086908690615677565b90815260200160405180910390205491505092915050565b612178848484846121a9565b6109bf57604051631036cf9160e11b8152600481018590526024016108bc565b6121a0613514565b61122d8161355f565b5f806121b36128bc565b5f878152600782016020526040808220815160e0810190925280549394509192909190829060ff1660038111156121ec576121ec614da6565b60038111156121fd576121fd614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0909101528101519091505f61227382611efb565b905060028351600381111561228a5761228a614da6565b146122ab578251604051633b0d540d60e21b81526108bc9190600401615564565b60208301516001600160a01b03163314612347575f8281526006850160205260409020546001600160a01b031633146122e457336117e8565b5f82815260068501602052604090205460a082015161231391600160b01b90046001600160401b031690615319565b6001600160401b03164210156123475760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b60028151600581111561235c5761235c614da6565b0361247e576002840154608084015161237e916001600160401b031690615319565b6001600160401b03164210156123b25760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b87156123c4576123c2828861261d565b505b5f8981526007850160205260409020805460ff19166003179055606083015160808201516123fd9184916123f89190615686565b6135d9565b505f8a8152600786016020526040812060020180546001600160401b03909316600160c01b026001600160c01b039093169290921790915561244084888c6137b0565b9050828a7f366d336c0ab380dc799f095a6f82a26326585c52909cc698b09ba4540709ed5760405160405180910390a3151594506124d69350505050565b60048151600581111561249357612493614da6565b036124ba576124a383878b6137b0565b506124ad89612f6d565b60019450505050506124d6565b805160405163170cc93360e21b81526108bc9190600401614f38565b949350505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612542573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261256991908101906156a6565b915091508061258b57604051636b2f19e960e01b815260040160405180910390fd5b8151156125b1578151604051636ba589a560e01b815260048101919091526024016108bc565b60208201516001600160a01b0316156125ed576020820151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5092915050565b5f806125fe6128bc565b5f938452600601602052505060409020546001600160a01b0316151590565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612668573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261268f91908101906156a6565b91509150806126b157604051636b2f19e960e01b815260040160405180910390fd5b5f6126ba6128bc565b60058101548451919250146126e8578251604051636ba589a560e01b815260048101919091526024016108bc565b60208301516001600160a01b031615612724576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b60208301516001600160a01b031615612760576020830151604051624de75d60e31b81526001600160a01b0390911660048201526024016108bc565b5f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63088c246386604001516040518263ffffffff1660e01b815260040161279d9190615072565b6040805180830381865af41580156127b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127db9190615736565b915091508188146128025760405163089938b360e11b8152600481018990526024016108bc565b5f8881526006840160205260409020600101546001600160401b039081169082161115612893575f888152600684016020908152604091829020600101805467ffffffffffffffff19166001600160401b038516908117909155915191825289917fec44148e8ff271f2d0bacef1142154abacb0abb3a29eb3eb50e2ca97e86d0435910160405180910390a26128b1565b505f8781526006830160205260409020600101546001600160401b03165b979650505050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0090565b5f806128ea6128bc565b90505f6128f687613995565b9050612901876125f4565b612910576001925050506124d6565b5f8781526006830160205260409020546001600160a01b0316331461293557336117e8565b5f87815260068301602052604090205460a082015161296491600160b01b90046001600160401b031690615319565b6001600160401b03168160c001516001600160401b031610156129ab5760c081015160405163fb6ce63f60e01b81526001600160401b0390911660048201526024016108bc565b5f86156129c3576129bc888761261d565b90506129e1565b505f8781526006830160205260409020600101546001600160401b03165b600483015460408301515f916001600160a01b031690634f22429f90612a0690611504565b60a086015160c087015160405160e085901b6001600160e01b031916815260048101939093526001600160401b03918216602484018190526044840152811660648301528516608482015260a401602060405180830381865afa158015612a6f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a939190615084565b90508084600a015f8b81526020019081526020015f205f828254612ab79190615759565b90915550506001600160a01b03861615612af4575f898152600b85016020526040902080546001600160a01b0319166001600160a01b0388161790555b151598975050505050505050565b5f80516020615b5d833981519152805460011901612b3357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f612b42614b0f565b5f80516020615b1d8339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f612b75886124de565b604001516040518263ffffffff1660e01b8152600401612b959190615072565b6040805180830381865af4158015612baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bd391906155ca565b915091508015612bfa57604051632d07135360e01b815281151560048201526024016108bc565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff90911690811115612c3157612c31614da6565b6005811115612c4257612c42614da6565b8152602001600182018054612c5690614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054612c8290614f06565b8015612ccd5780601f10612ca457610100808354040283529160200191612ccd565b820191905f5260205f20905b815481529060010190602001808311612cb057829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a09091015290915081516005811115612d3857612d38614da6565b14158015612d595750600181516005811115612d5657612d56614da6565b14155b15612d7a57805160405163170cc93360e21b81526108bc9190600401614f38565b600381516005811115612d8f57612d8f614da6565b03612d9d5760048152612da2565b600581525b836006018160200151604051612db891906151f5565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff1916906001908490811115612dfb57612dfb614da6565b021790555060208201516001820190612e14908261524a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905580516005811115612eba57612eba614da6565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b5f612efa6128bc565b5f838152600a82016020526040812080549190559091506109bf8482613c7a565b6117866001600160a01b03831682613cd8565b60015f80516020615b5d83398151915255565b612f4d848484846128e0565b6109bf57604051635bff683f60e11b8152600481018590526024016108bc565b5f612f766128bc565b5f838152600782016020526040808220815160e0810190925280549394509192909190829060ff166003811115612faf57612faf614da6565b6003811115612fc057612fc0614da6565b8152815461010090046001600160a01b0316602082015260018201546040808301919091526002909201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c09091015281015190915061305d7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b031690565b826080015161306c9190615319565b6001600160401b03164210156130a05760405163fb6ce63f60e01b81526001600160401b03421660048201526024016108bc565b5f848152600784016020908152604080832080546001600160a81b031916815560018101849055600201839055600986019091529020546001600160a01b0316806130f05750602082015161310e565b5f858152600985016020526040902080546001600160a01b03191690555b5f8061311b838886613d6b565b91509150613134856020015161120c8760600151611504565b6040805183815260208101839052859189917f8ececf510070c320d9a55323ffabe350e294ae505fc0c509dc5736da6f5cc993910160405180910390a350505050505050565b5f806131846128bc565b600281015490915061ffff600160401b909104811690861610806131ad575061271061ffff8616115b156131d157604051635f12e6c360e11b815261ffff861660048201526024016108bc565b60028101546001600160401b03908116908516101561320d576040516202a06d60e11b81526001600160401b03851660048201526024016108bc565b805483108061321f5750806001015483115b156132405760405163222d164360e21b8152600481018490526024016108bc565b825f61324b826110d8565b90505f6132588983613e18565b5f818152600695909501602052604090942080546001600160b01b0319163317600160a01b61ffff9a909a16999099029890981767ffffffffffffffff60b01b1916600160b01b6001600160401b03989098169790970296909617875550506001909401805467ffffffffffffffff1916905550919392505050565b5f806132de6128bc565b90505f6132ea846110d8565b90505f6132f687611efb565b9050613301876125f4565b613321576040516330efa98b60e01b8152600481018890526024016108bc565b60028151600581111561333657613336614da6565b1461335757805160405163170cc93360e21b81526108bc9190600401614f38565b5f8282608001516133689190615319565b905083600201600a9054906101000a90046001600160401b03168260400151613391919061535b565b6001600160401b0316816001600160401b031611156133ce57604051636d51fe0560e11b81526001600160401b03821660048201526024016108bc565b5f806133da8a846135d9565b915091505f8a8360405160200161340892919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815291815281516020928301205f81815260078b019093529120805491925060019160ff1916828002179055505f8181526007880160209081526040918290208054610100600160a81b0319166101006001600160a01b038f16908102919091178255600182018f9055600290910180546001600160401b038b81166001600160c01b03199092168217600160801b8a8316908102919091176001600160c01b031690935585519283528916938201939093529283019190915260608201849052908c9083907fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a2234269060800160405180910390a49a9950505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661355d57604051631afcd79f60e31b815260040160405180910390fd5b565b613567613514565b6135708161438a565b6135786143a3565b61122d6060820135608083013561359560c0850160a08601614ceb565b6135a560e0860160c0870161576c565b6135b6610100870160e08801615785565b6101008701356135ce61014089016101208a0161509b565b8861014001356143b3565b5f8281525f80516020615b3d833981519152602052604081206002015481905f80516020615b1d83398151915290600160801b90046001600160401b03166136218582614598565b5f61362b87614802565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156136d4573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526136fb9190810190615041565b6040518263ffffffff1660e01b81526004016137179190615072565b6020604051808303815f875af1158015613733573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137579190615084565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b5f806137ba6128bc565b90505f6137ca8660400151611efb565b90505f6003825160058111156137e2576137e2614da6565b148061380057506004825160058111156137fe576137fe614da6565b145b15613810575060c081015161384d565b60028251600581111561382557613825614da6565b0361383157504261384d565b815160405163170cc93360e21b81526108bc9190600401614f38565b86608001516001600160401b0316816001600160401b031611613875575f9350505050611b2e565b600483015460608801515f916001600160a01b031690634f22429f9061389a90611504565b60a086015160808c01516040808e01515f90815260068b0160205281902060010154905160e086901b6001600160e01b031916815260048101949094526001600160401b0392831660248501529082166044840152818716606484015216608482015260a401602060405180830381865afa15801561391b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061393f9190615084565b5f878152600886016020526040902081905590506001600160a01b038716156128b1575f868152600985016020526040902080546001600160a01b0319166001600160a01b038916179055979650505050505050565b61399d614b0f565b5f8281525f80516020615b3d8339815191526020526040808220815160e0810190925280545f80516020615b1d83398151915293929190829060ff1660058111156139ea576139ea614da6565b60058111156139fb576139fb614da6565b8152602001600182018054613a0f90614f06565b80601f0160208091040260200160405190810160405280929190818152602001828054613a3b90614f06565b8015613a865780601f10613a5d57610100808354040283529160200191613a86565b820191905f5260205f20905b815481529060010190602001808311613a6957829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a09091015290915081516005811115613af457613af4614da6565b14613b27575f8481526005830160205260409081902054905163170cc93360e21b81526108bc9160ff1690600401614f38565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff1916906001908490811115613b6c57613b6c614da6565b021790555060208201516001820190613b85908261524a565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f613c2385826135d9565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015613cc6575f80fd5b505af1158015611360573d5f803e3d5ffd5b80471015613cfb5760405163cd78605960e01b81523060048201526024016108bc565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114613d44576040519150601f19603f3d011682016040523d82523d5f602084013e613d49565b606091505b505090508061073057604051630a12f52160e11b815260040160405180910390fd5b5f805f613d766128bc565b5f86815260088201602052604081208054908290559192509081908015613e0a575f87815260068501602052604090205461271090613dc090600160a01b900461ffff16836155b3565b613dca9190615545565b91508184600a015f8981526020019081526020015f205f828254613dee9190615759565b90915550613dfe905082826157a5565b9250613e0a8984613c7a565b509097909650945050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16613e5c57604051637fab81e560e01b815260040160405180910390fd5b5f80516020615b1d83398151915242613e7b6060860160408701614ceb565b6001600160401b0316111580613eb55750613e996202a30042615759565b613ea96060860160408701614ceb565b6001600160401b031610155b15613eef57613eca6060850160408601614ceb565b604051635879da1360e11b81526001600160401b0390911660048201526024016108bc565b60038101546001600160401b0390613f1290600160401b90048216858316615759565b1115613f3c57604051633e1a785160e01b81526001600160401b03841660048201526024016108bc565b613f51613f4c60608601866157b8565b614877565b613f61613f4c60808601866157b8565b6030613f7060208601866157cc565b905014613fa257613f8460208501856157cc565b6040516326475b2f60e11b81526108bc925060040190815260200190565b613fac84806157cc565b90505f03613fd957613fbe84806157cc565b604051633e08a12560e11b81526004016108bc92919061580e565b5f60068201613fe886806157cc565b604051613ff6929190615677565b9081526020016040518091039020541461402f5761401484806157cc565b60405163a41f772f60e01b81526004016108bc92919061580e565b614039835f614598565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce5190602081016140768a806157cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050908252506020908101906140be908b018b6157cc565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509082525060200161410760608b0160408c01614ceb565b6001600160401b0316815260200161412260608b018b6157b8565b61412b90615821565b815260200161413d60808b018b6157b8565b61414690615821565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401614174919061594e565b5f60405180830381865af415801561418e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526141b59190810190615a05565b5f828152600486016020526040902091935091506141d3828261524a565b5081600684016141e388806157cc565b6040516141f1929190615677565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061422d908590600401615072565b6020604051808303815f875af1158015614249573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061426d9190615084565b5f8481526005860160205260409020805460ff19166001179055905061429387806157cc565b5f8581526005870160205260409020600101916142b1919083615a48565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff191690558061431088806157cc565b60405161431e929190615677565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b604001602081019061435c9190614ceb565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614392613514565b61439a6149e0565b61122d816149e8565b6143ab613514565b61355d614ad0565b6143bb613514565b5f6143c46128bc565b905061ffff861615806143dc575061271061ffff8716115b1561440057604051635f12e6c360e11b815261ffff871660048201526024016108bc565b878911156144245760405163222d164360e21b8152600481018a90526024016108bc565b60ff851615806144375750600a60ff8616115b1561445a5760405163170db35960e31b815260ff861660048201526024016108bc565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01546001600160401b03166001600160401b0316876001600160401b031610156144c1576040516202a06d60e11b81526001600160401b03881660048201526024016108bc565b835f036144e15760405163a733007160e01b815260040160405180910390fd5b8161450257604051632f6bd1db60e01b8152600481018390526024016108bc565b97885560018801969096556002870180546001600160401b039690961669ffffffffffffffffffff1990961695909517600160401b61ffff95909516949094029390931767ffffffffffffffff60501b191660ff92909216600160501b029190911790925560038401919091556004830180546001600160a01b0319166001600160a01b03909216919091179055600590910155565b5f80516020615b1d8339815191525f6001600160401b0380841690851611156145cc576145c58385615686565b90506145d9565b6145d68484615686565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b9004909216606082015242911580614646575060018401548151614642916001600160401b031690615759565b8210155b1561466e576001600160401b038084166060830152828252604082015116602082015261468d565b82816060018181516146809190615319565b6001600160401b03169052505b606081015161469d90606461535b565b602082015160018601546001600160401b0392909216916146c89190600160401b900460ff1661535b565b6001600160401b0316101561470157606081015160405163dfae880160e01b81526001600160401b0390911660048201526024016108bc565b85816040018181516147139190615319565b6001600160401b0316905250604081018051869190614733908390615686565b6001600160401b03169052506001840154604082015160649161476191600160401b90910460ff169061535b565b6001600160401b0316101561479a576040808201519051633e1a785160e01b81526001600160401b0390911660048201526024016108bc565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b5f8181525f80516020615b3d8339815191526020526040812060020180545f80516020615b1d833981519152919060089061484c90600160401b90046001600160401b0316615b01565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b6148846020820182614cbe565b63ffffffff161580156148a4575061489f60208201826150b6565b151590505b156148eb576148b66020820182614cbe565b6148c360208301836150b6565b60405163c08a0f1d60e01b815263ffffffff90931660048401526024830152506044016108bc565b6148f860208201826150b6565b90506149076020830183614cbe565b63ffffffff161115614920576148b66020820182614cbe565b60015b61493060208301836150b6565b90508110156117865761494660208301836150b6565b6149516001846157a5565b818110614960576149606150fb565b9050602002016020810190614975919061509b565b6001600160a01b031661498b60208401846150b6565b8381811061499b5761499b6150fb565b90506020020160208101906149b0919061509b565b6001600160a01b031610156149d857604051630dbc8d5f60e31b815260040160405180910390fd5b600101614923565b61355d613514565b6149f0613514565b80355f80516020615b1d8339815191529081556014614a156060840160408501615785565b60ff161180614a345750614a2f6060830160408401615785565b60ff16155b15614a6857614a496060830160408401615785565b604051634a59bbff60e11b815260ff90911660048201526024016108bc565b614a786060830160408401615785565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614aa96040830160208401614ceb565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612f2e613514565b508054614ae490614f06565b5f825580601f10614af3575050565b601f0160209004905f5260205f209081019061122d9190614b4c565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115614b60575f8155600101614b4d565b5090565b801515811461122d575f80fd5b803563ffffffff81168114611ef6575f80fd5b5f805f60608486031215614b96575f80fd5b833592506020840135614ba881614b64565b9150614bb660408501614b71565b90509250925092565b5f60208284031215614bcf575f80fd5b5035919050565b5f6101608284031215614be7575f80fd5b50919050565b5f8060408385031215614bfe575f80fd5b82356001600160401b03811115614c13575f80fd5b830160808186031215614c24575f80fd5b9150614c3260208401614b71565b90509250929050565b5f8060408385031215614c4c575f80fd5b82359150614c3260208401614b71565b6001600160a01b038116811461122d575f80fd5b5f805f8060808587031215614c83575f80fd5b843593506020850135614c9581614b64565b9250614ca360408601614b71565b91506060850135614cb381614c5c565b939692955090935050565b5f60208284031215614cce575f80fd5b611b2e82614b71565b6001600160401b038116811461122d575f80fd5b5f60208284031215614cfb575f80fd5b8135611b2e81614cd7565b5f8060408385031215614d17575f80fd5b823591506020830135614d2981614c5c565b809150509250929050565b803561ffff81168114611ef6575f80fd5b5f805f60608486031215614d57575f80fd5b83356001600160401b03811115614d6c575f80fd5b840160a08187031215614d7d575f80fd5b9250614d8b60208501614d34565b91506040840135614d9b81614cd7565b809150509250925092565b634e487b7160e01b5f52602160045260245ffd5b60068110614dca57614dca614da6565b9052565b5f5b83811015614de8578181015183820152602001614dd0565b50505f910152565b5f8151808452614e07816020860160208601614dce565b601f01601f19169290920160200192915050565b60208152614e2d602082018351614dba565b5f602083015160e06040840152614e48610100840182614df0565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f8060208385031215614eac575f80fd5b82356001600160401b0380821115614ec2575f80fd5b818501915085601f830112614ed5575f80fd5b813581811115614ee3575f80fd5b866020828501011115614ef4575f80fd5b60209290920196919550909350505050565b600181811c90821680614f1a57607f821691505b602082108103614be757634e487b7160e01b5f52602260045260245ffd5b602081016111268284614dba565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715614f7c57614f7c614f46565b60405290565b604080519081016001600160401b0381118282101715614f7c57614f7c614f46565b604051601f8201601f191681016001600160401b0381118282101715614fcc57614fcc614f46565b604052919050565b5f6001600160401b03821115614fec57614fec614f46565b50601f01601f191660200190565b5f82601f830112615009575f80fd5b815161501c61501782614fd4565b614fa4565b818152846020838601011115615030575f80fd5b6124d6826020830160208701614dce565b5f60208284031215615051575f80fd5b81516001600160401b03811115615066575f80fd5b6124d684828501614ffa565b602081525f611b2e6020830184614df0565b5f60208284031215615094575f80fd5b5051919050565b5f602082840312156150ab575f80fd5b8135611b2e81614c5c565b5f808335601e198436030181126150cb575f80fd5b8301803591506001600160401b038211156150e4575f80fd5b6020019150600581901b36038213156137a9575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615123575f80fd5b9190910192915050565b5f82601f83011261513c575f80fd5b813561514a61501782614fd4565b81815284602083860101111561515e575f80fd5b816020850160208301375f918101602001919091529392505050565b5f6060823603121561518a575f80fd5b615192614f5a565b82356001600160401b03808211156151a8575f80fd5b6151b43683870161512d565b835260208501359150808211156151c9575f80fd5b506151d63682860161512d565b60208301525060408301356151ea81614cd7565b604082015292915050565b5f8251615123818460208701614dce565b601f82111561073057805f5260205f20601f840160051c8101602085101561522b5750805b601f840160051c820191505b81811015611138575f8155600101615237565b81516001600160401b0381111561526357615263614f46565b615277816152718454614f06565b84615206565b602080601f8311600181146152aa575f84156152935750858301515b5f19600386901b1c1916600185901b178555611360565b5f85815260208120601f198616915b828110156152d8578886015182559484019460019091019084016152b9565b50858210156152f557878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156125ed576125ed615305565b5f63ffffffff80831681810361535157615351615305565b6001019392505050565b6001600160401b0381811683821602808216919082811461537e5761537e615305565b505092915050565b5f808335601e1984360301811261539b575f80fd5b83016020810192503590506001600160401b038111156153b9575f80fd5b8036038213156137a9575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b878110156154a457848303601f19018952813536889003605e1901811261542b575f80fd5b870160606154398280615386565b82875261544983880182846153c7565b9250505061545986830183615386565b8683038888015261546b8382846153c7565b92505050604080830135925061548083614cd7565b6001600160401b039290921694909101939093529783019790830190600101615406565b5090979650505050505050565b6020815281356020820152602082013560408201525f60408301356154d581614c5c565b6001600160a01b031660608381019190915283013536849003601e190181126154fc575f80fd5b83016020810190356001600160401b03811115615517575f80fd5b8060051b3603821315615528575f80fd5b60808085015261553c60a0850182846153ef565b95945050505050565b5f8261555f57634e487b7160e01b5f52601260045260245ffd5b500490565b602081016004831061557857615578614da6565b91905290565b5f805f60608486031215615590575f80fd5b8351925060208401516155a281614cd7565b6040850151909250614d9b81614cd7565b808202811582820484141761112657611126615305565b5f80604083850312156155db575f80fd5b825191506020830151614d2981614b64565b5f60208083525f84546155ff81614f06565b806020870152604060018084165f8114615620576001811461563c57615669565b60ff19851660408a0152604084151560051b8a01019550615669565b895f5260205f205f5b858110156156605781548b8201860152908301908801615645565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b6001600160401b038281168282160390808211156125ed576125ed615305565b5f80604083850312156156b7575f80fd5b82516001600160401b03808211156156cd575f80fd5b90840190606082870312156156e0575f80fd5b6156e8614f5a565b8251815260208301516156fa81614c5c565b6020820152604083015182811115615710575f80fd5b61571c88828601614ffa565b6040830152508094505050506020830151614d2981614b64565b5f8060408385031215615747575f80fd5b825191506020830151614d2981614cd7565b8082018082111561112657611126615305565b5f6020828403121561577c575f80fd5b611b2e82614d34565b5f60208284031215615795575f80fd5b813560ff81168114611b2e575f80fd5b8181038181111561112657611126615305565b5f8235603e19833603018112615123575f80fd5b5f808335601e198436030181126157e1575f80fd5b8301803591506001600160401b038211156157fa575f80fd5b6020019150368190038213156137a9575f80fd5b602081525f6124d66020830184866153c7565b5f60408236031215615831575f80fd5b615839614f82565b61584283614b71565b81526020808401356001600160401b038082111561585e575f80fd5b9085019036601f830112615870575f80fd5b81358181111561588257615882614f46565b8060051b9150615893848301614fa4565b81815291830184019184810190368411156158ac575f80fd5b938501935b838510156158d657843592506158c683614c5c565b82825293850193908501906158b1565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156159435784516001600160a01b0316825293830193600192909201919083019061591a565b509695505050505050565b60208152815160208201525f602083015160e06040840152615974610100840182614df0565b90506040840151601f19808584030160608601526159928383614df0565b92506001600160401b03606087015116608086015260808601519150808584030160a08601526159c283836158e8565b925060a08601519150808584030160c0860152506159e082826158e8565b91505060c08401516159fd60e08501826001600160401b03169052565b509392505050565b5f8060408385031215615a16575f80fd5b8251915060208301516001600160401b03811115615a32575f80fd5b615a3e85828601614ffa565b9150509250929050565b6001600160401b03831115615a5f57615a5f614f46565b615a7383615a6d8354614f06565b83615206565b5f601f841160018114615aa4575f8515615a8d5750838201355b5f19600387901b1c1916600186901b178355611138565b5f83815260208120601f198716915b82811015615ad35786850135825560209485019460019092019101615ab3565b5086821015615aef575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f6001600160401b038083168181036153515761535161530556fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb059b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220518758d0a039f6c47e1f96e3b4d2fa09cf0bd8e79d8bdddfd29c212664c10d2864736f6c63430008190033", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -1986,13 +1986,13 @@ func (it *NativeTokenStakingManagerInitialValidatorCreatedIterator) Close() erro type NativeTokenStakingManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash - Weight *big.Int + Weight uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*NativeTokenStakingManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} @@ -2011,9 +2011,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterIniti return &NativeTokenStakingManagerInitialValidatorCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2057,9 +2057,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchInitia }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*NativeTokenStakingManagerInitialValidatorCreated, error) { event := new(NativeTokenStakingManagerInitialValidatorCreated) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { @@ -2420,14 +2420,14 @@ type NativeTokenStakingManagerValidationPeriodCreated struct { ValidationID [32]byte NodeID common.Hash RegisterValidationMessageID [32]byte - Weight *big.Int + Weight uint64 RegistrationExpiry uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*NativeTokenStakingManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} @@ -2450,9 +2450,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValid return &NativeTokenStakingManagerValidationPeriodCreatedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2500,9 +2500,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*NativeTokenStakingManagerValidationPeriodCreated, error) { event := new(NativeTokenStakingManagerValidationPeriodCreated) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { @@ -2735,14 +2735,14 @@ func (it *NativeTokenStakingManagerValidationPeriodRegisteredIterator) Close() e // NativeTokenStakingManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the NativeTokenStakingManager contract. type NativeTokenStakingManagerValidationPeriodRegistered struct { ValidationID [32]byte - Weight *big.Int + Weight uint64 Timestamp *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*NativeTokenStakingManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} @@ -2757,9 +2757,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValid return &NativeTokenStakingManagerValidationPeriodRegisteredIterator{contract: _NativeTokenStakingManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2799,9 +2799,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*NativeTokenStakingManagerValidationPeriodRegistered, error) { event := new(NativeTokenStakingManagerValidationPeriodRegistered) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { @@ -2882,14 +2882,14 @@ func (it *NativeTokenStakingManagerValidatorRemovalInitializedIterator) Close() type NativeTokenStakingManagerValidatorRemovalInitialized struct { ValidationID [32]byte SetWeightMessageID [32]byte - Weight *big.Int + Weight uint64 EndTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*NativeTokenStakingManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} @@ -2908,9 +2908,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValid return &NativeTokenStakingManagerValidatorRemovalInitializedIterator{contract: _NativeTokenStakingManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2954,9 +2954,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*NativeTokenStakingManagerValidatorRemovalInitialized, error) { event := new(NativeTokenStakingManagerValidatorRemovalInitialized) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { @@ -3037,14 +3037,14 @@ func (it *NativeTokenStakingManagerValidatorWeightUpdateIterator) Close() error type NativeTokenStakingManagerValidatorWeightUpdate struct { ValidationID [32]byte Nonce uint64 - ValidatorWeight uint64 + Weight uint64 SetWeightMessageID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} @@ -3065,7 +3065,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterValid // WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} @@ -3111,7 +3111,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchValida // ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*NativeTokenStakingManagerValidatorWeightUpdate, error) { event := new(NativeTokenStakingManagerValidatorWeightUpdate) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { @@ -3124,7 +3124,7 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseValida // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"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\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c0b30a7d1574f37fe27736317f68c07745760d3ce113e1505eb78f7757b3827064736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index b9b2dc05e..06dddf2b3 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -90,8 +90,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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"weight\",\"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: "0x608060405234801561000f575f80fd5b5060405161380838038061380883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6136bb8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c80639ba96b86116100b4578063c974d1b611610079578063c974d1b6146102a7578063d588c18f146102af578063d5f20ff6146102c2578063df93d8de146102e2578063f2fde38b146102ec578063fd7ac5e7146102ff575f80fd5b80639ba96b861461024c578063a3a65e481461025f578063b771b3bc14610272578063bc5fbfec14610280578063bee0a03f14610294575f80fd5b8063715018a6116100fa578063715018a6146101be578063732214f8146101c65780638280a25a146101db5780638da5cb5b146101f557806397fb70d414610239575f80fd5b80630322ed981461013657806320d91b7a1461014b578063467ef06f1461015e57806360305d621461017157806366435abf14610193575b5f80fd5b61014961014436600461280a565b610312565b005b610149610159366004612839565b6105a2565b61014961016c366004612887565b610b5d565b610179601481565b60405163ffffffff90911681526020015b60405180910390f35b6101a66101a136600461280a565b610b6b565b6040516001600160401b03909116815260200161018a565b610149610b7f565b6101cd5f81565b60405190815260200161018a565b6101e3603081565b60405160ff909116815260200161018a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161018a565b61014961024736600461280a565b610b92565b6101cd61025a3660046128b6565b610ba7565b61014961026d366004612887565b610bc3565b6102216005600160991b0181565b6101cd5f8051602061364683398151915281565b6101496102a236600461280a565b610db9565b6101e3601481565b6101496102bd36600461290f565b610ef5565b6102d56102d036600461280a565b611003565b60405161018a91906129cc565b6101a66202a30081565b6101496102fa366004612a4c565b611152565b6101cd61030d366004612a6e565b61118f565b5f8181525f805160206136668339815191526020526040808220815160e0810190925280545f8051602061364683398151915293929190829060ff16600581111561035f5761035f61294b565b60058111156103705761037061294b565b815260200160018201805461038490612ad9565b80601f01602080910402602001604051908101604052809291908181526020018280546103b090612ad9565b80156103fb5780601f106103d2576101008083540402835291602001916103fb565b820191905f5260205f20905b8154815290600101906020018083116103de57829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156104665761046661294b565b146104a2575f8381526005830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b60405180910390fd5b606081015160405163854a893f60e01b8152600481018590526001600160401b0390911660248201525f60448201526005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af4158015610519573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526105409190810190612c22565b6040518263ffffffff1660e01b815260040161055c9190612c53565b6020604051808303815f875af1158015610578573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059c9190612c65565b50505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f805160206136468339815191529060ff16156105f457604051637fab81e560e01b815260040160405180910390fd5b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610637573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061065b9190612c65565b836020013514610684576040516372b0a7e760e11b815260208401356004820152602401610499565b306106956060850160408601612a4c565b6001600160a01b0316146106d8576106b36060840160408501612a4c565b604051632f88120d60e21b81526001600160a01b039091166004820152602401610499565b5f6106e66060850185612c7c565b905090505f805b828163ffffffff16101561094e575f6107096060880188612c7c565b8363ffffffff1681811061071f5761071f612cc1565b90506020028101906107319190612cd5565b61073a90612d40565b80516040519192505f91600688019161075291612db9565b9081526020016040518091039020541461078257805160405163a41f772f60e01b81526104999190600401612c53565b5f6002885f0135846040516020016107b192919091825260e01b6001600160e01b031916602082015260240190565b60408051601f19818403018152908290526107cb91612db9565b602060405180830381855afa1580156107e6573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108099190612c65565b90508086600601835f01516040516108219190612db9565b90815260408051918290036020908101909220929092555f8381526005890190915220805460ff1916600217815582516001909101906108619082612e15565b50604082810180515f84815260058a016020529290922060028101805492516001600160401b039485166001600160c01b031990941693909317600160801b85851602176001600160c01b0316600160c01b429590951694909402939093179092556003909101805467ffffffffffffffff191690556108e19085612ee8565b82516040519195506108f291612db9565b60408051918290038220908401516001600160401b031682529082907ffe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c9060200160405180910390a350508061094790612f08565b90506106ed565b506003830180546fffffffffffffffff00000000000000001916600160401b6001600160401b0384168102919091179091556001840154606491610996910460ff1683612f2a565b6001600160401b031610156109c957604051633e1a785160e01b81526001600160401b0382166004820152602401610499565b5f73__$fd0c147b4031eef6079b0498cbafa865f0$__634d8478846109ed876111ea565b604001516040518263ffffffff1660e01b8152600401610a0d9190612c53565b602060405180830381865af4158015610a28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4c9190612c65565b90505f73__$fd0c147b4031eef6079b0498cbafa865f0$__6387418b8e886040518263ffffffff1660e01b8152600401610a869190613078565b5f60405180830381865af4158015610aa0573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610ac79190810190612c22565b90505f600282604051610ada9190612db9565b602060405180830381855afa158015610af5573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b189190612c65565b9050828114610b445760405163baaea89d60e01b81526004810182905260248101849052604401610499565b5050506007909201805460ff1916600117905550505050565b610b6681611300565b505050565b5f610b7582611003565b6080015192915050565b610b876116b8565b610b905f611713565b565b610b9a6116b8565b610ba381611783565b5050565b5f610bb06116b8565b610bba8383611a68565b90505b92915050565b5f805160206136468339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f610bf6866111ea565b604001516040518263ffffffff1660e01b8152600401610c169190612c53565b6040805180830381865af4158015610c30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c54919061311b565b9150915080610c7a57604051632d07135360e01b81528115156004820152602401610499565b5f82815260048401602052604090208054610c9490612ad9565b90505f03610cb85760405163089938b360e11b815260048101839052602401610499565b60015f838152600580860160205260409091205460ff1690811115610cdf57610cdf61294b565b14610d12575f8281526005840160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b5f8281526004840160205260408120610d2a9161277e565b5f828152600584016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160c01b026001600160c01b0390931692909217928390558451600160801b9093041682529181019190915283917f8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b910160405180910390a250505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb046020526040902080545f805160206136468339815191529190610e0090612ad9565b90505f03610e245760405163089938b360e11b815260048101839052602401610499565b60015f838152600580840160205260409091205460ff1690811115610e4b57610e4b61294b565b14610e7e575f8281526005820160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b5f8281526004808301602052604091829020915163ee5b48eb60e01b81526005600160991b019263ee5b48eb92610eb5920161313c565b6020604051808303815f875af1158015610ed1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b669190612c65565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610f395750825b90505f826001600160401b03166001148015610f545750303b155b905081158015610f62575080155b15610f805760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610faa57845460ff60401b1916600160401b1785555b610fb48787611fda565b8315610ffa57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61100b6127b5565b5f8281525f80516020613666833981519152602052604090819020815160e0810190925280545f80516020613646833981519152929190829060ff1660058111156110585761105861294b565b60058111156110695761106961294b565b815260200160018201805461107d90612ad9565b80601f01602080910402602001604051908101604052809291908181526020018280546110a990612ad9565b80156110f45780601f106110cb576101008083540402835291602001916110f4565b820191905f5260205f20905b8154815290600101906020018083116110d757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b9091048116608083015260039092015490911660a0909101529392505050565b61115a6116b8565b6001600160a01b03811661118357604051631e4fbdf760e01b81525f6004820152602401610499565b61118c81611713565b50565b6040515f905f80516020613646833981519152907fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb06906111d290869086906131c6565b90815260200160405180910390205491505092915050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561124e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261127591908101906131d5565b915091508061129757604051636b2f19e960e01b815260040160405180910390fd5b8151156112bd578151604051636ba589a560e01b81526004810191909152602401610499565b60208201516001600160a01b0316156112f9576020820151604051624de75d60e31b81526001600160a01b039091166004820152602401610499565b5092915050565b5f6113096127b5565b5f805160206136468339815191525f8073__$fd0c147b4031eef6079b0498cbafa865f0$__63021de88f61133c886111ea565b604001516040518263ffffffff1660e01b815260040161135c9190612c53565b6040805180830381865af4158015611376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061139a919061311b565b9150915080156113c157604051632d07135360e01b81528115156004820152602401610499565b5f82815260058085016020526040808320815160e08101909252805491929091839160ff909116908111156113f8576113f861294b565b60058111156114095761140961294b565b815260200160018201805461141d90612ad9565b80601f016020809104026020016040519081016040528092919081815260200182805461144990612ad9565b80156114945780601f1061146b57610100808354040283529160200191611494565b820191905f5260205f20905b81548152906001019060200180831161147757829003601f168201915b505050918352505060028201546001600160401b038082166020840152600160401b820481166040840152600160801b820481166060840152600160c01b909104811660808301526003928301541660a090910152909150815160058111156114ff576114ff61294b565b14158015611520575060018151600581111561151d5761151d61294b565b14155b1561154157805160405163170cc93360e21b81526104999190600401612b11565b6003815160058111156115565761155661294b565b036115645760048152611569565b600581525b83600601816020015160405161157f9190612db9565b90815260408051602092819003830190205f90819055858152600587810190935220825181548493839160ff19169060019084908111156115c2576115c261294b565b0217905550602082015160018201906115db9082612e15565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff191691909216179055805160058111156116815761168161294b565b60405184907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a39196919550909350505050565b336116ea7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b905760405163118cdaa760e01b8152336004820152602401610499565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b61178b6127b5565b5f8281525f805160206136668339815191526020526040808220815160e0810190925280545f8051602061364683398151915293929190829060ff1660058111156117d8576117d861294b565b60058111156117e9576117e961294b565b81526020016001820180546117fd90612ad9565b80601f016020809104026020016040519081016040528092919081815260200182805461182990612ad9565b80156118745780601f1061184b57610100808354040283529160200191611874565b820191905f5260205f20905b81548152906001019060200180831161185757829003601f168201915b50505091835250506002828101546001600160401b038082166020850152600160401b820481166040850152600160801b820481166060850152600160c01b9091048116608084015260039093015490921660a090910152909150815160058111156118e2576118e261294b565b14611915575f8481526005830160205260409081902054905163170cc93360e21b81526104999160ff1690600401612b11565b60038152426001600160401b031660c08201525f84815260058381016020526040909120825181548493839160ff191690600190849081111561195a5761195a61294b565b0217905550602082015160018201906119739082612e15565b5060408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f611a118582611ff4565b6080840151604080516001600160401b03909216825242602083015291935083925087917ffbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42910160405180910390a3509392505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07545f9060ff16611aac57604051637fab81e560e01b815260040160405180910390fd5b5f8051602061364683398151915242611acb6060860160408701613262565b6001600160401b0316111580611b055750611ae96202a3004261327b565b611af96060860160408701613262565b6001600160401b031610155b15611b3f57611b1a6060850160408601613262565b604051635879da1360e11b81526001600160401b039091166004820152602401610499565b60038101546001600160401b0390611b6290600160401b9004821685831661327b565b1115611b8c57604051633e1a785160e01b81526001600160401b0384166004820152602401610499565b611ba1611b9c606086018661328e565b6121cb565b611bb1611b9c608086018661328e565b6030611bc060208601866132a2565b905014611bf257611bd460208501856132a2565b6040516326475b2f60e11b8152610499925060040190815260200190565b611bfc84806132a2565b90505f03611c2957611c0e84806132a2565b604051633e08a12560e11b81526004016104999291906132e4565b5f60068201611c3886806132a2565b604051611c469291906131c6565b90815260200160405180910390205414611c7f57611c6484806132a2565b60405163a41f772f60e01b81526004016104999291906132e4565b611c89835f612334565b6040805160e08101909152815481525f90819073__$fd0c147b4031eef6079b0498cbafa865f0$__9063eb97ce519060208101611cc68a806132a2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602090810190611d0e908b018b6132a2565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250602001611d5760608b0160408c01613262565b6001600160401b03168152602001611d7260608b018b61328e565b611d7b906132f7565b8152602001611d8d60808b018b61328e565b611d96906132f7565b8152602001886001600160401b03168152506040518263ffffffff1660e01b8152600401611dc49190613424565b5f60405180830381865af4158015611dde573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611e0591908101906134db565b5f82815260048601602052604090209193509150611e238282612e15565b508160068401611e3388806132a2565b604051611e419291906131c6565b9081526040519081900360200181209190915563ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611e7d908590600401612c53565b6020604051808303815f875af1158015611e99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ebd9190612c65565b5f8481526005860160205260409020805460ff191660011790559050611ee387806132a2565b5f858152600587016020526040902060010191611f0191908361351e565b505f83815260058501602052604090206002810180546001600160c01b0319166001600160401b038916908117600160801b91909102176001600160c01b03169055600301805467ffffffffffffffff1916905580611f6088806132a2565b604051611f6e9291906131c6565b6040518091039020847fd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49898b6040016020810190611fac9190613262565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611fe261259e565b611feb826125e7565b610ba381612600565b5f8281525f80516020613666833981519152602052604081206002015481905f8051602061364683398151915290600160801b90046001600160401b031661203c8582612334565b5f61204687612611565b5f888152600585016020526040808220600201805467ffffffffffffffff60801b1916600160801b6001600160401b038c811691820292909217909255915163854a893f60e01b8152600481018c905291841660248301526044820152919250906005600160991b019063ee5b48eb9073__$fd0c147b4031eef6079b0498cbafa865f0$__9063854a893f906064015f60405180830381865af41580156120ef573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121169190810190612c22565b6040518263ffffffff1660e01b81526004016121329190612c53565b6020604051808303815f875af115801561214e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121729190612c65565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b6121d86020820182612887565b63ffffffff161580156121f857506121f36020820182612c7c565b151590505b1561223f5761220a6020820182612887565b6122176020830183612c7c565b60405163c08a0f1d60e01b815263ffffffff9093166004840152602483015250604401610499565b61224c6020820182612c7c565b905061225b6020830183612887565b63ffffffff1611156122745761220a6020820182612887565b60015b6122846020830183612c7c565b9050811015610ba35761229a6020830183612c7c565b6122a56001846135d7565b8181106122b4576122b4612cc1565b90506020020160208101906122c99190612a4c565b6001600160a01b03166122df6020840184612c7c565b838181106122ef576122ef612cc1565b90506020020160208101906123049190612a4c565b6001600160a01b0316101561232c57604051630dbc8d5f60e31b815260040160405180910390fd5b600101612277565b5f805160206136468339815191525f6001600160401b0380841690851611156123685761236183856135ea565b9050612375565b61237284846135ea565b90505b60408051608081018252600284015480825260038501546001600160401b038082166020850152600160401b8204811694840194909452600160801b90049092166060820152429115806123e25750600184015481516123de916001600160401b03169061327b565b8210155b1561240a576001600160401b0380841660608301528282526040820151166020820152612429565b828160600181815161241c9190612ee8565b6001600160401b03169052505b6060810151612439906064612f2a565b602082015160018601546001600160401b0392909216916124649190600160401b900460ff16612f2a565b6001600160401b0316101561249d57606081015160405163dfae880160e01b81526001600160401b039091166004820152602401610499565b85816040018181516124af9190612ee8565b6001600160401b03169052506040810180518691906124cf9083906135ea565b6001600160401b0316905250600184015460408201516064916124fd91600160401b90910460ff1690612f2a565b6001600160401b03161015612536576040808201519051633e1a785160e01b81526001600160401b039091166004820152602401610499565b8051600285015560208101516003909401805460408301516060909301516001600160401b03908116600160801b0267ffffffffffffffff60801b19948216600160401b026001600160801b0319909316919097161717919091169390931790925550505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b9057604051631afcd79f60e31b815260040160405180910390fd5b6125ef61259e565b6125f7612686565b61118c8161268e565b61260861259e565b61118c81612776565b5f8181525f805160206136668339815191526020526040812060020180545f80516020613646833981519152919060089061265b90600160401b90046001600160401b031661360a565b91906101000a8154816001600160401b0302191690836001600160401b031602179055915050919050565b610b9061259e565b61269661259e565b80355f8051602061364683398151915290815560146126bb6060840160408501613625565b60ff1611806126da57506126d56060830160408401613625565b60ff16155b1561270e576126ef6060830160408401613625565b604051634a59bbff60e11b815260ff9091166004820152602401610499565b61271e6060830160408401613625565b60018201805460ff92909216600160401b0260ff60401b1990921691909117905561274f6040830160208401613262565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61115a61259e565b50805461278a90612ad9565b5f825580601f10612799575050565b601f0160209004905f5260205f209081019061118c91906127f2565b6040805160e08101909152805f81526060602082018190525f604083018190529082018190526080820181905260a0820181905260c09091015290565b5b80821115612806575f81556001016127f3565b5090565b5f6020828403121561281a575f80fd5b5035919050565b803563ffffffff81168114612834575f80fd5b919050565b5f806040838503121561284a575f80fd5b82356001600160401b0381111561285f575f80fd5b830160808186031215612870575f80fd5b915061287e60208401612821565b90509250929050565b5f60208284031215612897575f80fd5b610bba82612821565b80356001600160401b0381168114612834575f80fd5b5f80604083850312156128c7575f80fd5b82356001600160401b038111156128dc575f80fd5b830160a081860312156128ed575f80fd5b915061287e602084016128a0565b6001600160a01b038116811461118c575f80fd5b5f808284036080811215612921575f80fd5b606081121561292e575f80fd5b508291506060830135612940816128fb565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b6006811061297b57634e487b7160e01b5f52602160045260245ffd5b9052565b5f5b83811015612999578181015183820152602001612981565b50505f910152565b5f81518084526129b881602086016020860161297f565b601f01601f19169290920160200192915050565b602081526129de60208201835161295f565b5f602083015160e060408401526129f96101008401826129a1565b905060408401516001600160401b0380821660608601528060608701511660808601528060808701511660a08601528060a08701511660c08601528060c08701511660e086015250508091505092915050565b5f60208284031215612a5c575f80fd5b8135612a67816128fb565b9392505050565b5f8060208385031215612a7f575f80fd5b82356001600160401b0380821115612a95575f80fd5b818501915085601f830112612aa8575f80fd5b813581811115612ab6575f80fd5b866020828501011115612ac7575f80fd5b60209290920196919550909350505050565b600181811c90821680612aed57607f821691505b602082108103612b0b57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208101610bbd828461295f565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b0381118282101715612b5557612b55612b1f565b60405290565b604080519081016001600160401b0381118282101715612b5557612b55612b1f565b604051601f8201601f191681016001600160401b0381118282101715612ba557612ba5612b1f565b604052919050565b5f6001600160401b03821115612bc557612bc5612b1f565b50601f01601f191660200190565b5f82601f830112612be2575f80fd5b8151612bf5612bf082612bad565b612b7d565b818152846020838601011115612c09575f80fd5b612c1a82602083016020870161297f565b949350505050565b5f60208284031215612c32575f80fd5b81516001600160401b03811115612c47575f80fd5b612c1a84828501612bd3565b602081525f610bba60208301846129a1565b5f60208284031215612c75575f80fd5b5051919050565b5f808335601e19843603018112612c91575f80fd5b8301803591506001600160401b03821115612caa575f80fd5b6020019150600581901b36038213156121c4575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112612ce9575f80fd5b9190910192915050565b5f82601f830112612d02575f80fd5b8135612d10612bf082612bad565b818152846020838601011115612d24575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60608236031215612d50575f80fd5b612d58612b33565b82356001600160401b0380821115612d6e575f80fd5b612d7a36838701612cf3565b83526020850135915080821115612d8f575f80fd5b50612d9c36828601612cf3565b602083015250612dae604084016128a0565b604082015292915050565b5f8251612ce981846020870161297f565b601f821115610b6657805f5260205f20601f840160051c81016020851015612def5750805b601f840160051c820191505b81811015612e0e575f8155600101612dfb565b5050505050565b81516001600160401b03811115612e2e57612e2e612b1f565b612e4281612e3c8454612ad9565b84612dca565b602080601f831160018114612e75575f8415612e5e5750858301515b5f19600386901b1c1916600185901b178555612ecc565b5f85815260208120601f198616915b82811015612ea357888601518255948401946001909101908401612e84565b5085821015612ec057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190808211156112f9576112f9612ed4565b5f63ffffffff808316818103612f2057612f20612ed4565b6001019392505050565b6001600160401b03818116838216028082169190828114612f4d57612f4d612ed4565b505092915050565b5f808335601e19843603018112612f6a575f80fd5b83016020810192503590506001600160401b03811115612f88575f80fd5b8036038213156121c4575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b5f8383855260208086019550808560051b830101845f5b8781101561306b57848303601f19018952813536889003605e19018112612ffa575f80fd5b870160606130088280612f55565b8287526130188388018284612f96565b9250505061302886830183612f55565b8683038888015261303a838284612f96565b9250505060406001600160401b036130538285016128a0565b16950194909452509783019790830190600101612fd5565b5090979650505050505050565b6020815281356020820152602082013560408201525f604083013561309c816128fb565b6001600160a01b031660608381019190915283013536849003601e190181126130c3575f80fd5b83016020810190356001600160401b038111156130de575f80fd5b8060051b36038213156130ef575f80fd5b60808085015261310360a085018284612fbe565b95945050505050565b80518015158114612834575f80fd5b5f806040838503121561312c575f80fd5b8251915061287e6020840161310c565b5f60208083525f845461314e81612ad9565b806020870152604060018084165f811461316f576001811461318b576131b8565b60ff19851660408a0152604084151560051b8a010195506131b8565b895f5260205f205f5b858110156131af5781548b8201860152908301908801613194565b8a016040019650505b509398975050505050505050565b818382375f9101908152919050565b5f80604083850312156131e6575f80fd5b82516001600160401b03808211156131fc575f80fd5b908401906060828703121561320f575f80fd5b613217612b33565b825181526020830151613229816128fb565b602082015260408301518281111561323f575f80fd5b61324b88828601612bd3565b604083015250935061287e9150506020840161310c565b5f60208284031215613272575f80fd5b610bba826128a0565b80820180821115610bbd57610bbd612ed4565b5f8235603e19833603018112612ce9575f80fd5b5f808335601e198436030181126132b7575f80fd5b8301803591506001600160401b038211156132d0575f80fd5b6020019150368190038213156121c4575f80fd5b602081525f612c1a602083018486612f96565b5f60408236031215613307575f80fd5b61330f612b5b565b61331883612821565b81526020808401356001600160401b0380821115613334575f80fd5b9085019036601f830112613346575f80fd5b81358181111561335857613358612b1f565b8060051b9150613369848301612b7d565b8181529183018401918481019036841115613382575f80fd5b938501935b838510156133ac578435925061339c836128fb565b8282529385019390850190613387565b94860194909452509295945050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b808310156134195784516001600160a01b031682529383019360019290920191908301906133f0565b509695505050505050565b60208152815160208201525f602083015160e0604084015261344a6101008401826129a1565b90506040840151601f198085840301606086015261346883836129a1565b92506001600160401b03606087015116608086015260808601519150808584030160a086015261349883836133be565b925060a08601519150808584030160c0860152506134b682826133be565b91505060c08401516134d360e08501826001600160401b03169052565b509392505050565b5f80604083850312156134ec575f80fd5b8251915060208301516001600160401b03811115613508575f80fd5b61351485828601612bd3565b9150509250929050565b6001600160401b0383111561353557613535612b1f565b613549836135438354612ad9565b83612dca565b5f601f84116001811461357a575f85156135635750838201355b5f19600387901b1c1916600186901b178355612e0e565b5f83815260208120601f198716915b828110156135a95786850135825560209485019460019092019101613589565b50868210156135c5575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81810381811115610bbd57610bbd612ed4565b6001600160401b038281168282160390808211156112f9576112f9612ed4565b5f6001600160401b03808316818103612f2057612f20612ed4565b5f60208284031215613635575f80fd5b813560ff81168114612a67575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb05a2646970667358221220046e4a56ab445a134397de8ba81f586fa290b8931c197a97ddaf31dfdbeaa00364736f6c63430008190033", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -886,13 +886,13 @@ func (it *PoAValidatorManagerInitialValidatorCreatedIterator) Close() error { type PoAValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash - Weight *big.Int + Weight uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*PoAValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} @@ -911,9 +911,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterInitialValidatorC return &PoAValidatorManagerInitialValidatorCreatedIterator{contract: _PoAValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -957,9 +957,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchInitialValidatorCr }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*PoAValidatorManagerInitialValidatorCreated, error) { event := new(PoAValidatorManagerInitialValidatorCreated) if err := _PoAValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { @@ -1328,14 +1328,14 @@ type PoAValidatorManagerValidationPeriodCreated struct { ValidationID [32]byte NodeID common.Hash RegisterValidationMessageID [32]byte - Weight *big.Int + Weight uint64 RegistrationExpiry uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*PoAValidatorManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} @@ -1358,9 +1358,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodC return &PoAValidatorManagerValidationPeriodCreatedIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1408,9 +1408,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodCr }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*PoAValidatorManagerValidationPeriodCreated, error) { event := new(PoAValidatorManagerValidationPeriodCreated) if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { @@ -1643,14 +1643,14 @@ func (it *PoAValidatorManagerValidationPeriodRegisteredIterator) Close() error { // PoAValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the PoAValidatorManager contract. type PoAValidatorManagerValidationPeriodRegistered struct { ValidationID [32]byte - Weight *big.Int + Weight uint64 Timestamp *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*PoAValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} @@ -1665,9 +1665,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidationPeriodR return &PoAValidatorManagerValidationPeriodRegisteredIterator{contract: _PoAValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1707,9 +1707,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidationPeriodRe }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*PoAValidatorManagerValidationPeriodRegistered, error) { event := new(PoAValidatorManagerValidationPeriodRegistered) if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { @@ -1790,14 +1790,14 @@ func (it *PoAValidatorManagerValidatorRemovalInitializedIterator) Close() error type PoAValidatorManagerValidatorRemovalInitialized struct { ValidationID [32]byte SetWeightMessageID [32]byte - Weight *big.Int + Weight uint64 EndTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*PoAValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} @@ -1816,9 +1816,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorRemovalI return &PoAValidatorManagerValidatorRemovalInitializedIterator{contract: _PoAValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1862,9 +1862,9 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorRemovalIn }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*PoAValidatorManagerValidatorRemovalInitialized, error) { event := new(PoAValidatorManagerValidatorRemovalInitialized) if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { @@ -1945,14 +1945,14 @@ func (it *PoAValidatorManagerValidatorWeightUpdateIterator) Close() error { type PoAValidatorManagerValidatorWeightUpdate struct { ValidationID [32]byte Nonce uint64 - ValidatorWeight uint64 + Weight uint64 SetWeightMessageID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*PoAValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} @@ -1973,7 +1973,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) FilterValidatorWeightUp // WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *PoAValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} @@ -2019,7 +2019,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) WatchValidatorWeightUpd // ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*PoAValidatorManagerValidatorWeightUpdate, error) { event := new(PoAValidatorManagerValidatorWeightUpdate) if err := _PoAValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { @@ -2032,7 +2032,7 @@ func (_PoAValidatorManager *PoAValidatorManagerFilterer) ParseValidatorWeightUpd // ValidatorMessagesMetaData contains all meta data concerning the ValidatorMessages contract. var ValidatorMessagesMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"name\":\"InvalidBLSPublicKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"}],\"name\":\"InvalidCodecID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"actual\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"expected\",\"type\":\"uint32\"}],\"name\":\"InvalidMessageLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidMessageType\",\"type\":\"error\"},{\"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\"}],\"name\":\"packConversionData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"valid\",\"type\":\"bool\"}],\"name\":\"packL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"packL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"validationPeriod\",\"type\":\"tuple\"}],\"name\":\"packRegisterL1ValidatorMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conversionID\",\"type\":\"bytes32\"}],\"name\":\"packSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"uptime\",\"type\":\"uint64\"}],\"name\":\"packValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorRegistrationMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackL1ValidatorWeightMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackRegisterL1ValidatorMessage\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"subnetID\",\"type\":\"bytes32\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"internalType\":\"structValidatorMessages.ValidationPeriod\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackSubnetToL1ConversionMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"}],\"name\":\"unpackValidationUptimeMessage\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x612160610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c3366004611904565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f0366004611904565b61044a565b604080519283526001600160401b039091166020830152016100d9565b610125610120366004611904565b61063b565b6040519081526020016100d9565b610146610141366004611904565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a561017936600461193d565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d991906119a1565b6101a56101c03660046119d5565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d366004611a0e565b610a1e565b610235610230366004611904565b610bff565b6040516100d99190611aaa565b6101a5610250366004611b61565b61154a565b6101a5610263366004611b93565b61158e565b61027b610276366004611ca1565b6115c4565b6040516100d9929190611d9d565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611dc9565b6102e6906008611ddc565b61ffff168582815181106102fc576102fc611df3565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611dc9565b61035f906008611ddc565b63ffffffff1686610371836002611e07565b8151811061038157610381611df3565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611dc9565b6103e2906008611ddc565b876103ee836006611e07565b815181106103fe576103fe611df3565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611df3565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611dc9565b6104a2906008611ddc565b61ffff168582815181106104b8576104b8611df3565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611dc9565b61051b906008611ddc565b63ffffffff168661052d836002611e07565b8151811061053d5761053d611df3565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611dc9565b61059c906008611ddc565b876105a8836006611e07565b815181106105b8576105b8611df3565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611dc9565b6105f2906008611ddc565b6001600160401b031688610607836026611e07565b8151811061061757610617611df3565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611dc9565b610692906008611ddc565b61ffff168482815181106106a8576106a8611df3565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611dc9565b61070b906008611ddc565b63ffffffff168561071d836002611e07565b8151811061072d5761072d611df3565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611dc9565b61078c906008611ddc565b86610798836006611e07565b815181106107a8576107a8611df3565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611dc9565b610821906008611ddc565b61ffff1686828151811061083757610837611df3565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611dc9565b61089a906008611ddc565b63ffffffff16876108ac836002611e07565b815181106108bc576108bc611df3565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611dc9565b61091d906008611ddc565b88610929836006611e07565b8151811061093957610939611df3565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611dc9565b610973906008611ddc565b6001600160401b031689610988836026611e07565b8151811061099857610998611df3565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611dc9565b6109d2906008611ddc565b6001600160401b03168a6109e783602e611e07565b815181106109f7576109f7611df3565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b60605f80833560208501356014610a3a87870160408901611e1a565b610a476060890189611e33565b60405160f09790971b6001600160f01b0319166020880152602287019590955250604285019290925260e090811b6001600160e01b0319908116606286015260609290921b6bffffffffffffffffffffffff191660668501529190911b16607a820152607e0160405160208183030381529060405290505f5b610acd6060850185611e33565b9050811015610bf85781610ae46060860186611e33565b83818110610af457610af4611df3565b9050602002810190610b069190611e7f565b610b109080611e9d565b9050610b1f6060870187611e33565b84818110610b2f57610b2f611df3565b9050602002810190610b419190611e7f565b610b4b9080611e9d565b610b586060890189611e33565b86818110610b6857610b68611df3565b9050602002810190610b7a9190611e7f565b610b88906020810190611e9d565b610b9560608b018b611e33565b88818110610ba557610ba5611df3565b9050602002810190610bb79190611e7f565b610bc8906060810190604001611edf565b604051602001610bde9796959493929190611ef8565b60408051601f198184030181529190529150600101610ac0565b5092915050565b610c076117b1565b5f610c106117b1565b5f805b6002811015610c6e57610c27816001611dc9565b610c32906008611ddc565b61ffff1686610c4763ffffffff871684611e07565b81518110610c5757610c57611df3565b016020015160f81c901b9190911790600101610c13565b5061ffff811615610c985760405163407b587360e01b815261ffff821660048201526024016102bb565b610ca3600284611f61565b9250505f805b6004811015610d0857610cbd816003611dc9565b610cc8906008611ddc565b63ffffffff16868563ffffffff1683610ce19190611e07565b81518110610cf157610cf1611df3565b016020015160f81c901b9190911790600101610ca9565b5063ffffffff8116600114610d3057604051635b60892f60e01b815260040160405180910390fd5b610d3b600484611f61565b9250505f805b6020811015610d9857610d5581601f611dc9565b610d60906008611ddc565b86610d7163ffffffff871684611e07565b81518110610d8157610d81611df3565b016020015160f81c901b9190911790600101610d41565b50808252610da7602084611f61565b9250505f805b6004811015610e0c57610dc1816003611dc9565b610dcc906008611ddc565b63ffffffff16868563ffffffff1683610de59190611e07565b81518110610df557610df5611df3565b016020015160f81c901b9190911790600101610dad565b50610e18600484611f61565b92505f8163ffffffff166001600160401b03811115610e3957610e3961180b565b6040519080825280601f01601f191660200182016040528015610e63576020820181803683370190505b5090505f5b8263ffffffff16811015610ed25786610e8763ffffffff871683611e07565b81518110610e9757610e97611df3565b602001015160f81c60f81b828281518110610eb457610eb4611df3565b60200101906001600160f81b03191690815f1a905350600101610e68565b5060208301819052610ee48285611f61565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610f705786610f2563ffffffff871683611e07565b81518110610f3557610f35611df3565b602001015160f81c60f81b828281518110610f5257610f52611df3565b60200101906001600160f81b03191690815f1a905350600101610f0b565b5060408301819052610f83603085611f61565b9350505f805b6008811015610fe957610f9d816007611dc9565b610fa8906008611ddc565b6001600160401b031687610fc263ffffffff881684611e07565b81518110610fd257610fd2611df3565b016020015160f81c901b9190911790600101610f89565b506001600160401b0381166060840152611004600885611f61565b9350505f805f5b600481101561106a5761101f816003611dc9565b61102a906008611ddc565b63ffffffff16888763ffffffff16836110439190611e07565b8151811061105357611053611df3565b016020015160f81c901b919091179060010161100b565b50611076600486611f61565b94505f5b60048110156110d95761108e816003611dc9565b611099906008611ddc565b63ffffffff16888763ffffffff16836110b29190611e07565b815181106110c2576110c2611df3565b016020015160f81c901b929092179160010161107a565b506110e5600486611f61565b94505f8263ffffffff166001600160401b038111156111065761110661180b565b60405190808252806020026020018201604052801561112f578160200160208202803683370190505b5090505f5b8363ffffffff16811015611217576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156111c9578a61117e63ffffffff8b1683611e07565b8151811061118e5761118e611df3565b602001015160f81c60f81b8282815181106111ab576111ab611df3565b60200101906001600160f81b03191690815f1a905350600101611164565b505f60148201519050808484815181106111e5576111e5611df3565b6001600160a01b039092166020928302919091019091015261120860148a611f61565b98505050806001019050611134565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156112995761124e816003611dc9565b611259906008611ddc565b63ffffffff16898863ffffffff16836112729190611e07565b8151811061128257611282611df3565b016020015160f81c901b919091179060010161123a565b506112a5600487611f61565b95505f5b6004811015611308576112bd816003611dc9565b6112c8906008611ddc565b63ffffffff16898863ffffffff16836112e19190611e07565b815181106112f1576112f1611df3565b016020015160f81c901b92909217916001016112a9565b50611314600487611f61565b95505f8263ffffffff166001600160401b038111156113355761133561180b565b60405190808252806020026020018201604052801561135e578160200160208202803683370190505b5090505f5b8363ffffffff16811015611446576040805160148082528183019092525f916020820181803683370190505090505f5b60148110156113f8578b6113ad63ffffffff8c1683611e07565b815181106113bd576113bd611df3565b602001015160f81c60f81b8282815181106113da576113da611df3565b60200101906001600160f81b03191690815f1a905350600101611393565b505f601482015190508084848151811061141457611414611df3565b6001600160a01b039092166020928302919091019091015261143760148b611f61565b99505050806001019050611363565b506040805180820190915263ffffffff9092168252602082015260a08501525f6114708284611f61565b61147b906014611f7e565b61148685607a611f61565b6114909190611f61565b90508063ffffffff168851146114cc57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561152f576114e3816007611dc9565b6114ee906008611ddc565b6001600160401b03168a61150863ffffffff8b1684611e07565b8151811061151857611518611df3565b016020015160f81c901b91909117906001016114cf565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e01611576565b5f60608260400151516030146115ed5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861162e988a986001989297929690959094909390929101611fa6565b60405160208183030381529060405290505f5b846080015160200151518110156116a05781856080015160200151828151811061166d5761166d611df3565b6020026020010151604051602001611686929190612060565b60408051601f198184030181529190529150600101611641565b5060a08401518051602091820151516040516116c0938593929101612096565b60405160208183030381529060405290505f5b8460a00151602001515181101561173257818560a001516020015182815181106116ff576116ff611df3565b6020026020010151604051602001611718929190612060565b60408051601f1981840301815291905291506001016116d3565b5060c08401516040516117499183916020016120d1565b604051602081830303815290604052905060028160405161176a9190612102565b602060405180830381855afa158015611785573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906117a89190612113565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604080519081016001600160401b03811182821017156118415761184161180b565b60405290565b60405160e081016001600160401b03811182821017156118415761184161180b565b604051601f8201601f191681016001600160401b03811182821017156118915761189161180b565b604052919050565b5f82601f8301126118a8575f80fd5b81356001600160401b038111156118c1576118c161180b565b6118d4601f8201601f1916602001611869565b8181528460208386010111156118e8575f80fd5b816020850160208301375f918101602001919091529392505050565b5f60208284031215611914575f80fd5b81356001600160401b03811115611929575f80fd5b61193584828501611899565b949350505050565b5f6020828403121561194d575f80fd5b5035919050565b5f5b8381101561196e578181015183820152602001611956565b50505f910152565b5f815180845261198d816020860160208601611954565b601f01601f19169290920160200192915050565b602081525f6119b36020830184611976565b9392505050565b80356001600160401b03811681146119d0575f80fd5b919050565b5f805f606084860312156119e7575f80fd5b833592506119f7602085016119ba565b9150611a05604085016119ba565b90509250925092565b5f60208284031215611a1e575f80fd5b81356001600160401b03811115611a33575f80fd5b8201608081850312156119b3575f80fd5b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611a9f5784516001600160a01b03168252938301936001929092019190830190611a76565b509695505050505050565b60208152815160208201525f602083015160e06040840152611ad0610100840182611976565b90506040840151601f1980858403016060860152611aee8383611976565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611b1e8383611a44565b925060a08601519150808584030160c086015250611b3c8282611a44565b91505060c0840151611b5960e08501826001600160401b03169052565b509392505050565b5f8060408385031215611b72575f80fd5b8235915060208301358015158114611b88575f80fd5b809150509250929050565b5f8060408385031215611ba4575f80fd5b82359150611bb4602084016119ba565b90509250929050565b80356001600160a01b03811681146119d0575f80fd5b5f60408284031215611be3575f80fd5b611beb61181f565b9050813563ffffffff81168114611c00575f80fd5b81526020828101356001600160401b0380821115611c1c575f80fd5b818501915085601f830112611c2f575f80fd5b813581811115611c4157611c4161180b565b8060051b9150611c52848301611869565b8181529183018401918481019088841115611c6b575f80fd5b938501935b83851015611c9057611c8185611bbd565b82529385019390850190611c70565b808688015250505050505092915050565b5f60208284031215611cb1575f80fd5b81356001600160401b0380821115611cc7575f80fd5b9083019060e08286031215611cda575f80fd5b611ce2611847565b82358152602083013582811115611cf7575f80fd5b611d0387828601611899565b602083015250604083013582811115611d1a575f80fd5b611d2687828601611899565b604083015250611d38606084016119ba565b6060820152608083013582811115611d4e575f80fd5b611d5a87828601611bd3565b60808301525060a083013582811115611d71575f80fd5b611d7d87828601611bd3565b60a083015250611d8f60c084016119ba565b60c082015295945050505050565b828152604060208201525f6119356040830184611976565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561158857611588611db5565b808202811582820484141761158857611588611db5565b634e487b7160e01b5f52603260045260245ffd5b8082018082111561158857611588611db5565b5f60208284031215611e2a575f80fd5b6119b382611bbd565b5f808335601e19843603018112611e48575f80fd5b8301803591506001600160401b03821115611e61575f80fd5b6020019150600581901b3603821315611e78575f80fd5b9250929050565b5f8235605e19833603018112611e93575f80fd5b9190910192915050565b5f808335601e19843603018112611eb2575f80fd5b8301803591506001600160401b03821115611ecb575f80fd5b602001915036819003821315611e78575f80fd5b5f60208284031215611eef575f80fd5b6119b3826119ba565b5f8851611f09818460208d01611954565b60e089901b6001600160e01b031916908301908152868860048301378681019050600481015f8152858782375060c09390931b6001600160c01b0319166004939094019283019390935250600c019695505050505050565b63ffffffff818116838216019080821115610bf857610bf8611db5565b63ffffffff818116838216028082169190828114611f9e57611f9e611db5565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611fec81602a850160208b01611954565b86519083019061200381602a840160208b01611954565b60c087901b6001600160c01b031916602a9290910191820152612035603282018660e01b6001600160e01b0319169052565b61204e603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f8351612071818460208801611954565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120a7818460208901611954565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120e2818460208801611954565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f8251611e93818460208701611954565b5f60208284031215612123575f80fd5b505191905056fea2646970667358221220c0b30a7d1574f37fe27736317f68c07745760d3ce113e1505eb78f7757b3827064736f6c63430008190033", + Bin: "0x61217b610034600b8282823980515f1a607314602857634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100b1575f3560e01c8063854a893f11610079578063854a893f146101b257806387418b8e1461020f5780639b83546514610222578063a699c13514610242578063e1d68f3014610255578063eb97ce5114610268575f80fd5b8063021de88f146100b5578063088c2463146100e25780634d8478841461011257806350782b0f146101335780637f7c427a1461016b575b5f80fd5b6100c86100c33660046118a9565b610289565b604080519283529015156020830152015b60405180910390f35b6100f56100f03660046118a9565b61044a565b604080519283526001600160401b039091166020830152016100d9565b6101256101203660046118a9565b61063b565b6040519081526020016100d9565b6101466101413660046118a9565b6107c8565b604080519384526001600160401b0392831660208501529116908201526060016100d9565b6101a56101793660046118e2565b604080515f60208201819052602282015260268082019390935281518082039093018352604601905290565b6040516100d99190611946565b6101a56101c036600461197a565b604080515f6020820152600360e01b602282015260268101949094526001600160c01b031960c093841b811660468601529190921b16604e830152805180830360360181526056909201905290565b6101a561021d3660046119eb565b610a1e565b6102356102303660046118a9565b610b60565b6040516100d99190611bb4565b6101a5610250366004611c6b565b6114ab565b6101a5610263366004611c9d565b6114ef565b61027b610276366004611d80565b611525565b6040516100d9929190611e7c565b5f8082516027146102c457825160405163cc92daa160e01b815263ffffffff9091166004820152602760248201526044015b60405180910390fd5b5f805b6002811015610313576102db816001611ea8565b6102e6906008611ebb565b61ffff168582815181106102fc576102fc611ed2565b016020015160f81c901b91909117906001016102c7565b5061ffff81161561033d5760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561039857610354816003611ea8565b61035f906008611ebb565b63ffffffff1686610371836002611ee6565b8151811061038157610381611ed2565b016020015160f81c901b9190911790600101610340565b5063ffffffff81166002146103c057604051635b60892f60e01b815260040160405180910390fd5b5f805b6020811015610415576103d781601f611ea8565b6103e2906008611ebb565b876103ee836006611ee6565b815181106103fe576103fe611ed2565b016020015160f81c901b91909117906001016103c3565b505f8660268151811061042a5761042a611ed2565b016020015191976001600160f81b03199092161515965090945050505050565b5f808251602e1461048057825160405163cc92daa160e01b815263ffffffff9091166004820152602e60248201526044016102bb565b5f805b60028110156104cf57610497816001611ea8565b6104a2906008611ebb565b61ffff168582815181106104b8576104b8611ed2565b016020015160f81c901b9190911790600101610483565b5061ffff8116156104f95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561055457610510816003611ea8565b61051b906008611ebb565b63ffffffff168661052d836002611ee6565b8151811061053d5761053d611ed2565b016020015160f81c901b91909117906001016104fc565b5063ffffffff81161561057a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156105cf5761059181601f611ea8565b61059c906008611ebb565b876105a8836006611ee6565b815181106105b8576105b8611ed2565b016020015160f81c901b919091179060010161057d565b505f805b600881101561062e576105e7816007611ea8565b6105f2906008611ebb565b6001600160401b031688610607836026611ee6565b8151811061061757610617611ed2565b016020015160f81c901b91909117906001016105d3565b5090969095509350505050565b5f815160261461067057815160405163cc92daa160e01b815263ffffffff9091166004820152602660248201526044016102bb565b5f805b60028110156106bf57610687816001611ea8565b610692906008611ebb565b61ffff168482815181106106a8576106a8611ed2565b016020015160f81c901b9190911790600101610673565b5061ffff8116156106e95760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b600481101561074457610700816003611ea8565b61070b906008611ebb565b63ffffffff168561071d836002611ee6565b8151811061072d5761072d611ed2565b016020015160f81c901b91909117906001016106ec565b5063ffffffff81161561076a57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156107bf5761078181601f611ea8565b61078c906008611ebb565b86610798836006611ee6565b815181106107a8576107a8611ed2565b016020015160f81c901b919091179060010161076d565b50949350505050565b5f805f83516036146107ff57835160405163cc92daa160e01b815263ffffffff9091166004820152603660248201526044016102bb565b5f805b600281101561084e57610816816001611ea8565b610821906008611ebb565b61ffff1686828151811061083757610837611ed2565b016020015160f81c901b9190911790600101610802565b5061ffff8116156108785760405163407b587360e01b815261ffff821660048201526024016102bb565b5f805b60048110156108d35761088f816003611ea8565b61089a906008611ebb565b63ffffffff16876108ac836002611ee6565b815181106108bc576108bc611ed2565b016020015160f81c901b919091179060010161087b565b5063ffffffff81166003146108fb57604051635b60892f60e01b815260040160405180910390fd5b5f805b60208110156109505761091281601f611ea8565b61091d906008611ebb565b88610929836006611ee6565b8151811061093957610939611ed2565b016020015160f81c901b91909117906001016108fe565b505f805b60088110156109af57610968816007611ea8565b610973906008611ebb565b6001600160401b031689610988836026611ee6565b8151811061099857610998611ed2565b016020015160f81c901b9190911790600101610954565b505f805b6008811015610a0e576109c7816007611ea8565b6109d2906008611ebb565b6001600160401b03168a6109e783602e611ee6565b815181106109f7576109f7611ed2565b016020015160f81c901b91909117906001016109b3565b5091989097509095509350505050565b80516020808301516040808501516060868101515192515f95810186905260228101969096526042860193909352600560e21b60628601526bffffffffffffffffffffffff1990831b16606685015260e01b6001600160e01b031916607a84015291607e0160405160208183030381529060405290505f5b836060015151811015610b59578184606001518281518110610aba57610aba611ed2565b60200260200101515f01515185606001518381518110610adc57610adc611ed2565b60200260200101515f015186606001518481518110610afd57610afd611ed2565b60200260200101516020015187606001518581518110610b1f57610b1f611ed2565b602002602001015160400151604051602001610b3f959493929190611ef9565b60408051601f198184030181529190529150600101610a96565b5092915050565b610b68611712565b5f610b71611712565b5f805b6002811015610bcf57610b88816001611ea8565b610b93906008611ebb565b61ffff1686610ba863ffffffff871684611ee6565b81518110610bb857610bb8611ed2565b016020015160f81c901b9190911790600101610b74565b5061ffff811615610bf95760405163407b587360e01b815261ffff821660048201526024016102bb565b610c04600284611f72565b9250505f805b6004811015610c6957610c1e816003611ea8565b610c29906008611ebb565b63ffffffff16868563ffffffff1683610c429190611ee6565b81518110610c5257610c52611ed2565b016020015160f81c901b9190911790600101610c0a565b5063ffffffff8116600114610c9157604051635b60892f60e01b815260040160405180910390fd5b610c9c600484611f72565b9250505f805b6020811015610cf957610cb681601f611ea8565b610cc1906008611ebb565b86610cd263ffffffff871684611ee6565b81518110610ce257610ce2611ed2565b016020015160f81c901b9190911790600101610ca2565b50808252610d08602084611f72565b9250505f805b6004811015610d6d57610d22816003611ea8565b610d2d906008611ebb565b63ffffffff16868563ffffffff1683610d469190611ee6565b81518110610d5657610d56611ed2565b016020015160f81c901b9190911790600101610d0e565b50610d79600484611f72565b92505f8163ffffffff166001600160401b03811115610d9a57610d9a61176c565b6040519080825280601f01601f191660200182016040528015610dc4576020820181803683370190505b5090505f5b8263ffffffff16811015610e335786610de863ffffffff871683611ee6565b81518110610df857610df8611ed2565b602001015160f81c60f81b828281518110610e1557610e15611ed2565b60200101906001600160f81b03191690815f1a905350600101610dc9565b5060208301819052610e458285611f72565b604080516030808252606082019092529195505f92506020820181803683370190505090505f5b6030811015610ed15786610e8663ffffffff871683611ee6565b81518110610e9657610e96611ed2565b602001015160f81c60f81b828281518110610eb357610eb3611ed2565b60200101906001600160f81b03191690815f1a905350600101610e6c565b5060408301819052610ee4603085611f72565b9350505f805b6008811015610f4a57610efe816007611ea8565b610f09906008611ebb565b6001600160401b031687610f2363ffffffff881684611ee6565b81518110610f3357610f33611ed2565b016020015160f81c901b9190911790600101610eea565b506001600160401b0381166060840152610f65600885611f72565b9350505f805f5b6004811015610fcb57610f80816003611ea8565b610f8b906008611ebb565b63ffffffff16888763ffffffff1683610fa49190611ee6565b81518110610fb457610fb4611ed2565b016020015160f81c901b9190911790600101610f6c565b50610fd7600486611f72565b94505f5b600481101561103a57610fef816003611ea8565b610ffa906008611ebb565b63ffffffff16888763ffffffff16836110139190611ee6565b8151811061102357611023611ed2565b016020015160f81c901b9290921791600101610fdb565b50611046600486611f72565b94505f8263ffffffff166001600160401b038111156110675761106761176c565b604051908082528060200260200182016040528015611090578160200160208202803683370190505b5090505f5b8363ffffffff16811015611178576040805160148082528183019092525f916020820181803683370190505090505f5b601481101561112a578a6110df63ffffffff8b1683611ee6565b815181106110ef576110ef611ed2565b602001015160f81c60f81b82828151811061110c5761110c611ed2565b60200101906001600160f81b03191690815f1a9053506001016110c5565b505f601482015190508084848151811061114657611146611ed2565b6001600160a01b039092166020928302919091019091015261116960148a611f72565b98505050806001019050611095565b506040805180820190915263ffffffff9092168252602082015260808401525f80805b60048110156111fa576111af816003611ea8565b6111ba906008611ebb565b63ffffffff16898863ffffffff16836111d39190611ee6565b815181106111e3576111e3611ed2565b016020015160f81c901b919091179060010161119b565b50611206600487611f72565b95505f5b60048110156112695761121e816003611ea8565b611229906008611ebb565b63ffffffff16898863ffffffff16836112429190611ee6565b8151811061125257611252611ed2565b016020015160f81c901b929092179160010161120a565b50611275600487611f72565b95505f8263ffffffff166001600160401b038111156112965761129661176c565b6040519080825280602002602001820160405280156112bf578160200160208202803683370190505b5090505f5b8363ffffffff168110156113a7576040805160148082528183019092525f916020820181803683370190505090505f5b6014811015611359578b61130e63ffffffff8c1683611ee6565b8151811061131e5761131e611ed2565b602001015160f81c60f81b82828151811061133b5761133b611ed2565b60200101906001600160f81b03191690815f1a9053506001016112f4565b505f601482015190508084848151811061137557611375611ed2565b6001600160a01b039092166020928302919091019091015261139860148b611f72565b995050508060010190506112c4565b506040805180820190915263ffffffff9092168252602082015260a08501525f6113d18284611f72565b6113dc906014611f8f565b6113e785607a611f72565b6113f19190611f72565b90508063ffffffff1688511461142d57875160405163cc92daa160e01b815263ffffffff918216600482015290821660248201526044016102bb565b5f805b600881101561149057611444816007611ea8565b61144f906008611ebb565b6001600160401b03168a61146963ffffffff8b1684611ee6565b8151811061147957611479611ed2565b016020015160f81c901b9190911790600101611430565b506001600160401b031660c086015250929695505050505050565b6040515f6020820152600160e11b60228201526026810183905281151560f81b60468201526060906047015b60405160208183030381529060405290505b92915050565b6040515f602082018190526022820152602681018390526001600160c01b031960c083901b166046820152606090604e016114d7565b5f606082604001515160301461154e5760405163180ffa0d60e01b815260040160405180910390fd5b82516020808501518051604080880151606089015160808a01518051908701515193515f9861158f988a986001989297929690959094909390929101611fb7565b60405160208183030381529060405290505f5b84608001516020015151811015611601578185608001516020015182815181106115ce576115ce611ed2565b60200260200101516040516020016115e7929190612071565b60408051601f1981840301815291905291506001016115a2565b5060a08401518051602091820151516040516116219385939291016120a7565b60405160208183030381529060405290505f5b8460a00151602001515181101561169357818560a0015160200151828151811061166057611660611ed2565b6020026020010151604051602001611679929190612071565b60408051601f198184030181529190529150600101611634565b5060c08401516040516116aa9183916020016120e2565b60405160208183030381529060405290506002816040516116cb9190612113565b602060405180830381855afa1580156116e6573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611709919061212e565b94909350915050565b6040805160e0810182525f808252606060208084018290528385018290528184018390528451808601865283815280820183905260808501528451808601909552918452908301529060a082019081525f60209091015290565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156117a2576117a261176c565b60405290565b604051606081016001600160401b03811182821017156117a2576117a261176c565b604080519081016001600160401b03811182821017156117a2576117a261176c565b60405160e081016001600160401b03811182821017156117a2576117a261176c565b604051601f8201601f191681016001600160401b03811182821017156118365761183661176c565b604052919050565b5f82601f83011261184d575f80fd5b81356001600160401b038111156118665761186661176c565b611879601f8201601f191660200161180e565b81815284602083860101111561188d575f80fd5b816020850160208301375f918101602001919091529392505050565b5f602082840312156118b9575f80fd5b81356001600160401b038111156118ce575f80fd5b6118da8482850161183e565b949350505050565b5f602082840312156118f2575f80fd5b5035919050565b5f5b838110156119135781810151838201526020016118fb565b50505f910152565b5f81518084526119328160208601602086016118f9565b601f01601f19169290920160200192915050565b602081525f611958602083018461191b565b9392505050565b80356001600160401b0381168114611975575f80fd5b919050565b5f805f6060848603121561198c575f80fd5b8335925061199c6020850161195f565b91506119aa6040850161195f565b90509250925092565b80356001600160a01b0381168114611975575f80fd5b5f6001600160401b038211156119e1576119e161176c565b5060051b60200190565b5f60208083850312156119fc575f80fd5b82356001600160401b0380821115611a12575f80fd5b9084019060808287031215611a25575f80fd5b611a2d611780565b823581528383013584820152611a45604084016119b3565b604082015260608084013583811115611a5c575f80fd5b80850194505087601f850112611a70575f80fd5b8335611a83611a7e826119c9565b61180e565b81815260059190911b8501860190868101908a831115611aa1575f80fd5b8787015b83811015611b3a57803587811115611abb575f80fd5b8801808d03601f1901861315611acf575f80fd5b611ad76117a8565b8a82013589811115611ae7575f80fd5b611af58f8d8386010161183e565b825250604082013589811115611b09575f80fd5b611b178f8d8386010161183e565b8c83015250611b2787830161195f565b6040820152845250918801918801611aa5565b506060850152509198975050505050505050565b5f6040830163ffffffff8351168452602080840151604060208701528281518085526060880191506020830194505f92505b80831015611ba95784516001600160a01b03168252938301936001929092019190830190611b80565b509695505050505050565b60208152815160208201525f602083015160e06040840152611bda61010084018261191b565b90506040840151601f1980858403016060860152611bf8838361191b565b92506001600160401b03606087015116608086015260808601519150808584030160a0860152611c288383611b4e565b925060a08601519150808584030160c086015250611c468282611b4e565b91505060c0840151611c6360e08501826001600160401b03169052565b509392505050565b5f8060408385031215611c7c575f80fd5b8235915060208301358015158114611c92575f80fd5b809150509250929050565b5f8060408385031215611cae575f80fd5b82359150611cbe6020840161195f565b90509250929050565b5f60408284031215611cd7575f80fd5b611cdf6117ca565b9050813563ffffffff81168114611cf4575f80fd5b81526020828101356001600160401b03811115611d0f575f80fd5b8301601f81018513611d1f575f80fd5b8035611d2d611a7e826119c9565b81815260059190911b82018301908381019087831115611d4b575f80fd5b928401925b82841015611d7057611d61846119b3565b82529284019290840190611d50565b8085870152505050505092915050565b5f60208284031215611d90575f80fd5b81356001600160401b0380821115611da6575f80fd5b9083019060e08286031215611db9575f80fd5b611dc16117ec565b82358152602083013582811115611dd6575f80fd5b611de28782860161183e565b602083015250604083013582811115611df9575f80fd5b611e058782860161183e565b604083015250611e176060840161195f565b6060820152608083013582811115611e2d575f80fd5b611e3987828601611cc7565b60808301525060a083013582811115611e50575f80fd5b611e5c87828601611cc7565b60a083015250611e6e60c0840161195f565b60c082015295945050505050565b828152604060208201525f6118da604083018461191b565b634e487b7160e01b5f52601160045260245ffd5b818103818111156114e9576114e9611e94565b80820281158282048414176114e9576114e9611e94565b634e487b7160e01b5f52603260045260245ffd5b808201808211156114e9576114e9611e94565b5f8651611f0a818460208b016118f9565b60e087901b6001600160e01b0319169083019081528551611f32816004840160208a016118f9565b8551910190611f488160048401602089016118f9565b60c09490941b6001600160c01b031916600491909401908101939093525050600c01949350505050565b63ffffffff818116838216019080821115610b5957610b59611e94565b63ffffffff818116838216028082169190828114611faf57611faf611e94565b505092915050565b61ffff60f01b8a60f01b1681525f63ffffffff60e01b808b60e01b166002840152896006840152808960e01b166026840152508651611ffd81602a850160208b016118f9565b86519083019061201481602a840160208b016118f9565b60c087901b6001600160c01b031916602a9290910191820152612046603282018660e01b6001600160e01b0319169052565b61205f603682018560e01b6001600160e01b0319169052565b603a019b9a5050505050505050505050565b5f83516120828184602088016118f9565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b5f84516120b88184602089016118f9565b6001600160e01b031960e095861b8116919093019081529290931b16600482015260080192915050565b5f83516120f38184602088016118f9565b60c09390931b6001600160c01b0319169190920190815260080192915050565b5f82516121248184602087016118f9565b9190910192915050565b5f6020828403121561213e575f80fd5b505191905056fea26469706673582212203eff6412f7c7baf5a74defc914c1b4770aa5110fc94bc4e80bc185b10586511764736f6c63430008190033", } // ValidatorMessagesABI is the input ABI used to generate the binding from. diff --git a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go index 95b11880f..5acc40a14 100644 --- a/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IPoSValidatorManager/IPoSValidatorManager.go @@ -46,7 +46,7 @@ type InitialValidator struct { // IPoSValidatorManagerMetaData contains all meta data concerning the IPoSValidatorManager contract. var IPoSValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"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\":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\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":\"recipientAddress\",\"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\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"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\":\"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\":\"recipientAddress\",\"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\":\"recipientAddress\",\"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\":\"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\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"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\":\"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\"}]", + ABI: "[{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"delegationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"changeDelegatorRewardRecipient\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"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\":\"recipientAddress\",\"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\":\"recipientAddress\",\"type\":\"address\"}],\"name\":\"forceInitializeEndValidation\",\"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\":\"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\":\"recipientAddress\",\"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\":\"recipientAddress\",\"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\":\"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\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"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\":\"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\"}]", } // IPoSValidatorManagerABI is the input ABI used to generate the binding from. @@ -1314,13 +1314,13 @@ func (it *IPoSValidatorManagerInitialValidatorCreatedIterator) Close() error { type IPoSValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash - Weight *big.Int + Weight uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IPoSValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} @@ -1339,9 +1339,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterInitialValidato return &IPoSValidatorManagerInitialValidatorCreatedIterator{contract: _IPoSValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1385,9 +1385,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchInitialValidator }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IPoSValidatorManagerInitialValidatorCreated, error) { event := new(IPoSValidatorManagerInitialValidatorCreated) if err := _IPoSValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { @@ -1614,14 +1614,14 @@ type IPoSValidatorManagerValidationPeriodCreated struct { ValidationID [32]byte NodeID common.Hash RegisterValidationMessageID [32]byte - Weight *big.Int + Weight uint64 RegistrationExpiry uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IPoSValidatorManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} @@ -1644,9 +1644,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPerio return &IPoSValidatorManagerValidationPeriodCreatedIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1694,9 +1694,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriod }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IPoSValidatorManagerValidationPeriodCreated, error) { event := new(IPoSValidatorManagerValidationPeriodCreated) if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { @@ -1929,14 +1929,14 @@ func (it *IPoSValidatorManagerValidationPeriodRegisteredIterator) Close() error // IPoSValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IPoSValidatorManager contract. type IPoSValidatorManagerValidationPeriodRegistered struct { ValidationID [32]byte - Weight *big.Int + Weight uint64 Timestamp *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IPoSValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} @@ -1951,9 +1951,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidationPerio return &IPoSValidatorManagerValidationPeriodRegisteredIterator{contract: _IPoSValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1993,9 +1993,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidationPeriod }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IPoSValidatorManagerValidationPeriodRegistered, error) { event := new(IPoSValidatorManagerValidationPeriodRegistered) if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { @@ -2076,14 +2076,14 @@ func (it *IPoSValidatorManagerValidatorRemovalInitializedIterator) Close() error type IPoSValidatorManagerValidatorRemovalInitialized struct { ValidationID [32]byte SetWeightMessageID [32]byte - Weight *big.Int + Weight uint64 EndTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IPoSValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} @@ -2102,9 +2102,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorRemova return &IPoSValidatorManagerValidatorRemovalInitializedIterator{contract: _IPoSValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -2148,9 +2148,9 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorRemoval }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IPoSValidatorManagerValidatorRemovalInitialized, error) { event := new(IPoSValidatorManagerValidatorRemovalInitialized) if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { @@ -2231,14 +2231,14 @@ func (it *IPoSValidatorManagerValidatorWeightUpdateIterator) Close() error { type IPoSValidatorManagerValidatorWeightUpdate struct { ValidationID [32]byte Nonce uint64 - ValidatorWeight uint64 + Weight uint64 SetWeightMessageID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IPoSValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} @@ -2259,7 +2259,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) FilterValidatorWeight // WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IPoSValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} @@ -2305,7 +2305,7 @@ func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) WatchValidatorWeightU // ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IPoSValidatorManager *IPoSValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IPoSValidatorManagerValidatorWeightUpdate, error) { event := new(IPoSValidatorManagerValidatorWeightUpdate) if err := _IPoSValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { diff --git a/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go b/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go index 6825e6e3c..9135c7b1b 100644 --- a/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go +++ b/abi-bindings/go/validator-manager/interfaces/IValidatorManager/IValidatorManager.go @@ -46,7 +46,7 @@ type InitialValidator struct { // IValidatorManagerMetaData contains all meta data concerning the IValidatorManager contract. var IValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"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\":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\":[{\"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\":[{\"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\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"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\"}]", + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"validationID\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes\",\"name\":\"nodeID\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"}],\"name\":\"InitialValidatorCreated\",\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"uint64\",\"name\":\"weight\",\"type\":\"uint64\"},{\"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\":\"weight\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"setWeightMessageID\",\"type\":\"bytes32\"}],\"name\":\"ValidatorWeightUpdate\",\"type\":\"event\"},{\"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\":[{\"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\":\"messsageIndex\",\"type\":\"uint32\"}],\"name\":\"initializeValidatorSet\",\"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\"}]", } // IValidatorManagerABI is the input ABI used to generate the binding from. @@ -371,13 +371,13 @@ func (it *IValidatorManagerInitialValidatorCreatedIterator) Close() error { type IValidatorManagerInitialValidatorCreated struct { ValidationID [32]byte NodeID common.Hash - Weight *big.Int + Weight uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// FilterInitialValidatorCreated is a free log retrieval operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte) (*IValidatorManagerInitialValidatorCreatedIterator, error) { var validationIDRule []interface{} @@ -396,9 +396,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) FilterInitialValidatorCreat return &IValidatorManagerInitialValidatorCreatedIterator{contract: _IValidatorManager.contract, event: "InitialValidatorCreated", logs: logs, sub: sub}, nil } -// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// WatchInitialValidatorCreated is a free log subscription operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerInitialValidatorCreated, validationID [][32]byte, nodeID [][]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -442,9 +442,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchInitialValidatorCreate }), nil } -// ParseInitialValidatorCreated is a log parse operation binding the contract event 0x9d47fef9da077661546e646d61830bfcbda90506c2e5eed38195e82c4eb1cbdf. +// ParseInitialValidatorCreated is a log parse operation binding the contract event 0xfe3e5983f71c8253fb0b678f2bc587aa8574d8f1aab9cf82b983777f5998392c. // -// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint256 weight) +// Solidity: event InitialValidatorCreated(bytes32 indexed validationID, bytes indexed nodeID, uint64 weight) func (_IValidatorManager *IValidatorManagerFilterer) ParseInitialValidatorCreated(log types.Log) (*IValidatorManagerInitialValidatorCreated, error) { event := new(IValidatorManagerInitialValidatorCreated) if err := _IValidatorManager.contract.UnpackLog(event, "InitialValidatorCreated", log); err != nil { @@ -526,14 +526,14 @@ type IValidatorManagerValidationPeriodCreated struct { ValidationID [32]byte NodeID common.Hash RegisterValidationMessageID [32]byte - Weight *big.Int + Weight uint64 RegistrationExpiry uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// FilterValidationPeriodCreated is a free log retrieval operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreated(opts *bind.FilterOpts, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (*IValidatorManagerValidationPeriodCreatedIterator, error) { var validationIDRule []interface{} @@ -556,9 +556,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodCreat return &IValidatorManagerValidationPeriodCreatedIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodCreated", logs: logs, sub: sub}, nil } -// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// WatchValidationPeriodCreated is a free log subscription operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreated(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodCreated, validationID [][32]byte, nodeID [][]byte, registerValidationMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -606,9 +606,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodCreate }), nil } -// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xb77297e3befc691bfc864a81e241f83e2ef722b6e7becaa2ecec250c6d52b430. +// ParseValidationPeriodCreated is a log parse operation binding the contract event 0xd8a184af94a03e121609cc5f803a446236793e920c7945abc6ba355c8a30cb49. // -// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint256 weight, uint64 registrationExpiry) +// Solidity: event ValidationPeriodCreated(bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, uint64 weight, uint64 registrationExpiry) func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodCreated(log types.Log) (*IValidatorManagerValidationPeriodCreated, error) { event := new(IValidatorManagerValidationPeriodCreated) if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodCreated", log); err != nil { @@ -841,14 +841,14 @@ func (it *IValidatorManagerValidationPeriodRegisteredIterator) Close() error { // IValidatorManagerValidationPeriodRegistered represents a ValidationPeriodRegistered event raised by the IValidatorManager contract. type IValidatorManagerValidationPeriodRegistered struct { ValidationID [32]byte - Weight *big.Int + Weight uint64 Timestamp *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// FilterValidationPeriodRegistered is a free log retrieval operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegistered(opts *bind.FilterOpts, validationID [][32]byte) (*IValidatorManagerValidationPeriodRegisteredIterator, error) { var validationIDRule []interface{} @@ -863,9 +863,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) FilterValidationPeriodRegis return &IValidatorManagerValidationPeriodRegisteredIterator{contract: _IValidatorManager.contract, event: "ValidationPeriodRegistered", logs: logs, sub: sub}, nil } -// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// WatchValidationPeriodRegistered is a free log subscription operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegistered(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidationPeriodRegistered, validationID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -905,9 +905,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidationPeriodRegist }), nil } -// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0xf8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568. +// ParseValidationPeriodRegistered is a log parse operation binding the contract event 0x8629ec2bfd8d3b792ba269096bb679e08f20ba2caec0785ef663cf94788e349b. // -// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint256 weight, uint256 timestamp) +// Solidity: event ValidationPeriodRegistered(bytes32 indexed validationID, uint64 weight, uint256 timestamp) func (_IValidatorManager *IValidatorManagerFilterer) ParseValidationPeriodRegistered(log types.Log) (*IValidatorManagerValidationPeriodRegistered, error) { event := new(IValidatorManagerValidationPeriodRegistered) if err := _IValidatorManager.contract.UnpackLog(event, "ValidationPeriodRegistered", log); err != nil { @@ -988,14 +988,14 @@ func (it *IValidatorManagerValidatorRemovalInitializedIterator) Close() error { type IValidatorManagerValidatorRemovalInitialized struct { ValidationID [32]byte SetWeightMessageID [32]byte - Weight *big.Int + Weight uint64 EndTime *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// FilterValidatorRemovalInitialized is a free log retrieval operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalInitialized(opts *bind.FilterOpts, validationID [][32]byte, setWeightMessageID [][32]byte) (*IValidatorManagerValidatorRemovalInitializedIterator, error) { var validationIDRule []interface{} @@ -1014,9 +1014,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorRemovalIniti return &IValidatorManagerValidatorRemovalInitializedIterator{contract: _IValidatorManager.contract, event: "ValidatorRemovalInitialized", logs: logs, sub: sub}, nil } -// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// WatchValidatorRemovalInitialized is a free log subscription operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitialized(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorRemovalInitialized, validationID [][32]byte, setWeightMessageID [][32]byte) (event.Subscription, error) { var validationIDRule []interface{} @@ -1060,9 +1060,9 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorRemovalInitia }), nil } -// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0x13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67. +// ParseValidatorRemovalInitialized is a log parse operation binding the contract event 0xfbfc4c00cddda774e9bce93712e29d12887b46526858a1afb0937cce8c30fa42. // -// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint256 weight, uint256 endTime) +// Solidity: event ValidatorRemovalInitialized(bytes32 indexed validationID, bytes32 indexed setWeightMessageID, uint64 weight, uint256 endTime) func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorRemovalInitialized(log types.Log) (*IValidatorManagerValidatorRemovalInitialized, error) { event := new(IValidatorManagerValidatorRemovalInitialized) if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorRemovalInitialized", log); err != nil { @@ -1143,14 +1143,14 @@ func (it *IValidatorManagerValidatorWeightUpdateIterator) Close() error { type IValidatorManagerValidatorWeightUpdate struct { ValidationID [32]byte Nonce uint64 - ValidatorWeight uint64 + Weight uint64 SetWeightMessageID [32]byte Raw types.Log // Blockchain specific contextual infos } // FilterValidatorWeightUpdate is a free log retrieval operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate(opts *bind.FilterOpts, validationID [][32]byte, nonce []uint64) (*IValidatorManagerValidatorWeightUpdateIterator, error) { var validationIDRule []interface{} @@ -1171,7 +1171,7 @@ func (_IValidatorManager *IValidatorManagerFilterer) FilterValidatorWeightUpdate // WatchValidatorWeightUpdate is a free log subscription operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate(opts *bind.WatchOpts, sink chan<- *IValidatorManagerValidatorWeightUpdate, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var validationIDRule []interface{} @@ -1217,7 +1217,7 @@ func (_IValidatorManager *IValidatorManagerFilterer) WatchValidatorWeightUpdate( // ParseValidatorWeightUpdate is a log parse operation binding the contract event 0x07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df. // -// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 validatorWeight, bytes32 setWeightMessageID) +// Solidity: event ValidatorWeightUpdate(bytes32 indexed validationID, uint64 indexed nonce, uint64 weight, bytes32 setWeightMessageID) func (_IValidatorManager *IValidatorManagerFilterer) ParseValidatorWeightUpdate(log types.Log) (*IValidatorManagerValidatorWeightUpdate, error) { event := new(IValidatorManagerValidatorWeightUpdate) if err := _IValidatorManager.contract.UnpackLog(event, "ValidatorWeightUpdate", log); err != nil { diff --git a/contracts/README.md b/contracts/README.md index f94cd1227..2f5bd6549 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -10,3 +10,10 @@ This directory is set up as a [Foundry](https://github.com/foundry-rs/foundry) p ## Generate documentation - Documentation can be generated by running `forge doc --build` from this repository. By default, this will generate documentation to `contracts/docs/`, and an HTML book to `contracts/docs/book/`. It's also possible to serve this book locally by running `forge doc --serve `. + +## Audits + +In general, the contracts in this repository have been audited. Any unaudited contracts will be explicitly marked as such. Note that the `main` branch may contain unaudited code. Please check [here](../audits/README.md) for which versions of each contract have been audited. + +> [!CAUTION] +> DO NOT USE UN-AUDITED CODE IN PRODUCTION! \ No newline at end of file diff --git a/contracts/ictt/README.md b/contracts/ictt/README.md index 24875fd9b..9a7402277 100644 --- a/contracts/ictt/README.md +++ b/contracts/ictt/README.md @@ -19,13 +19,6 @@ The token transferrer also supports "multi-hop" transfers, where tokens can be t In addition to supporting basic token transfers, the token transferrer contracts offer a `sendAndCall` interface for transferring tokens and using them in a smart contract interaction all within a single Teleporter message. If the call to the recipient smart contract fails, the transferred tokens are sent to a fallback recipient address on the destination chain of the transfer. The `sendAndCall` interface enables the direct use of transferred tokens in dApps on other chains, such as performing swaps, using the tokens to pay for fees when invoking services, etc. -A breakdown of the structure of the contracts that implement this function can be found under `./contracts` [here](./contracts/README.md). - -## Audits - -Some contracts in this repository have been audited. The `main` branch may contain unaudited code. Please check [here](./audits/README.md) for which versions of each contract have been audited. -DO NOT USE UN-AUDITED CODE IN PRODUCTION! - ## Upgradability The token transferrer contracts implement both upgradeable and non-upgradeable versions. The non-upgradeable versions are extensions of their respective upgradeable token transferrer contract, and has a `constructor` that calls the `initialize` function of the upgradeable version. The upgradeable contracts are ERC7201 compliant, and use namespace storage to store the state of the contract. diff --git a/contracts/validator-manager/PoSValidatorManager.sol b/contracts/validator-manager/PoSValidatorManager.sol index 1388ffc86..4243b850b 100644 --- a/contracts/validator-manager/PoSValidatorManager.sol +++ b/contracts/validator-manager/PoSValidatorManager.sol @@ -782,6 +782,7 @@ abstract contract PoSValidatorManager is } else if (validator.status == ValidatorStatus.Active) { delegationEndTime = uint64(block.timestamp); } else { + // Should be unreachable. revert InvalidValidatorStatus(validator.status); } @@ -824,6 +825,7 @@ abstract contract PoSValidatorManager is Validator memory validator = getValidator(delegator.validationID); if (validator.messageNonce == 0) { + // Should be unreachable. revert InvalidDelegationID(delegationID); } diff --git a/contracts/validator-manager/README.md b/contracts/validator-manager/README.md index 5932d4cc9..12202aa76 100644 --- a/contracts/validator-manager/README.md +++ b/contracts/validator-manager/README.md @@ -1,8 +1,5 @@ # Validator Manager Contract -> [!CAUTION] -> The contracts in this directory are still under active development, are unaudited, and should not be used in production. - The contracts in this directory define the Validator Manager used to manage Avalanche L1 validators, as defined in [ACP-77](https://github.com/avalanche-foundation/ACPs/tree/main/ACPs/77-reinventing-subnets). `ValidatorManager.sol` is the top-level abstract contract that provides the basic functionality. The other contracts are related as follows: ```mermaid diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index 28103f90d..b6d6070f3 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -75,7 +75,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida error InvalidBLSKeyLength(uint256 length); error InvalidNodeID(bytes nodeID); error InvalidConversionID(bytes32 encodedConversionID, bytes32 expectedConversionID); - error InvalidTotalWeight(uint256 weight); + error InvalidTotalWeight(uint64 weight); error InvalidValidationID(bytes32 validationID); error InvalidValidatorStatus(ValidatorStatus status); error InvalidWarpMessage(); @@ -160,7 +160,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida uint256 numInitialValidators = conversionData.initialValidators.length; - uint256 totalWeight; + uint64 totalWeight; for (uint32 i; i < numInitialValidators; ++i) { InitialValidator memory initialValidator = conversionData.initialValidators[i]; if ($._registeredValidators[initialValidator.nodeID] != bytes32(0)) { @@ -246,6 +246,11 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida revert InvalidRegistrationExpiry(input.registrationExpiry); } + // Ensure the new validator doesn't overflow the total weight + if (uint256(weight) + uint256($._churnTracker.totalWeight) > type(uint64).max) { + revert InvalidTotalWeight(weight); + } + _validatePChainOwner(input.remainingBalanceOwner); _validatePChainOwner(input.disableOwner); @@ -520,7 +525,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida emit ValidatorWeightUpdate({ validationID: validationID, nonce: nonce, - validatorWeight: newWeight, + weight: newWeight, setWeightMessageID: messageID }); diff --git a/contracts/validator-manager/ValidatorMessages.sol b/contracts/validator-manager/ValidatorMessages.sol index 3b197f10d..9adcdc8aa 100644 --- a/contracts/validator-manager/ValidatorMessages.sol +++ b/contracts/validator-manager/ValidatorMessages.sol @@ -152,7 +152,7 @@ library ValidatorMessages { * @param conversionData The struct representing data to pack into the message. * @return The packed message. */ - function packConversionData(ConversionData calldata conversionData) + function packConversionData(ConversionData memory conversionData) external pure returns (bytes memory) diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index 8fea7cc81..f04629bf5 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -44,8 +44,8 @@ struct Validator { */ struct ValidatorChurnPeriod { uint256 startedAt; - uint256 initialWeight; - uint256 totalWeight; + uint64 initialWeight; + uint64 totalWeight; uint64 churnAmount; } @@ -114,12 +114,12 @@ interface IValidatorManager { bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, - uint256 weight, + uint64 weight, uint64 registrationExpiry ); event InitialValidatorCreated( - bytes32 indexed validationID, bytes indexed nodeID, uint256 weight + bytes32 indexed validationID, bytes indexed nodeID, uint64 weight ); /** @@ -130,7 +130,7 @@ interface IValidatorManager { * @param timestamp The time at which the validation period was registered with the contract. */ event ValidationPeriodRegistered( - bytes32 indexed validationID, uint256 weight, uint256 timestamp + bytes32 indexed validationID, uint64 weight, uint256 timestamp ); /** @@ -145,7 +145,7 @@ interface IValidatorManager { event ValidatorRemovalInitialized( bytes32 indexed validationID, bytes32 indexed setWeightMessageID, - uint256 weight, + uint64 weight, uint256 endTime ); @@ -161,13 +161,13 @@ interface IValidatorManager { * @notice Event emitted when validator weight is updated. * @param validationID The ID of the validation period being updated * @param nonce The message nonce used to update the validator weight - * @param validatorWeight The updated validator weight that is sent to the P-Chain + * @param weight The updated validator weight that is sent to the P-Chain * @param setWeightMessageID The ID of the Warp message that updates the validator's weight on the P-Chain */ event ValidatorWeightUpdate( bytes32 indexed validationID, uint64 indexed nonce, - uint64 validatorWeight, + uint64 weight, bytes32 setWeightMessageID ); diff --git a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol index b5c97c2cf..013398a6c 100644 --- a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol @@ -7,20 +7,15 @@ pragma solidity 0.8.25; import {PoSValidatorManagerTest} from "./PoSValidatorManagerTests.t.sol"; import {ERC20TokenStakingManager} from "../ERC20TokenStakingManager.sol"; -import {PoSValidatorManager} from "../PoSValidatorManager.sol"; +import {PoSValidatorManager, PoSValidatorManagerSettings} from "../PoSValidatorManager.sol"; import {ExampleRewardCalculator} from "../ExampleRewardCalculator.sol"; -import { - ValidatorManagerSettings, - ValidatorRegistrationInput, - IValidatorManager -} from "../interfaces/IValidatorManager.sol"; -import {PoSValidatorManagerSettings} from "../interfaces/IPoSValidatorManager.sol"; -import {IRewardCalculator} from "../interfaces/IRewardCalculator.sol"; +import {ValidatorRegistrationInput, IValidatorManager} from "../interfaces/IValidatorManager.sol"; import {ICMInitializable} from "../../utilities/ICMInitializable.sol"; import {ExampleERC20} from "@mocks/ExampleERC20.sol"; import {IERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/IERC20.sol"; import {IERC20Mintable} from "../interfaces/IERC20Mintable.sol"; import {SafeERC20} from "@openzeppelin/contracts@5.0.2/token/ERC20/utils/SafeERC20.sol"; +import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { @@ -38,29 +33,31 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initializeValidatorSet(_defaultConversionData(), 0); } + function testDisableInitialization() public { + app = new ERC20TokenStakingManager(ICMInitializable.Disallowed); + vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); + app.initialize(_defaultPoSSettings(), token); + } + + function testZeroTokenAddress() public { + app = new ERC20TokenStakingManager(ICMInitializable.Allowed); + vm.expectRevert( + abi.encodeWithSelector( + ERC20TokenStakingManager.InvalidTokenAddress.selector, address(0) + ) + ); + app.initialize(_defaultPoSSettings(), IERC20Mintable(address(0))); + } + function testZeroMinimumDelegationFee() public { app = new ERC20TokenStakingManager(ICMInitializable.Allowed); vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.InvalidDelegationFee.selector, 0) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: 0, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumDelegationFeeBips = 0; + app.initialize(defaultPoSSettings, token); } function testMaxMinimumDelegationFee() public { @@ -71,24 +68,10 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidDelegationFee.selector, minimumDelegationFeeBips ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: minimumDelegationFeeBips, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumDelegationFeeBips = minimumDelegationFeeBips; + app.initialize(defaultPoSSettings, token); } function testInvalidStakeAmountRange() public { @@ -98,24 +81,11 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumStakeAmount = DEFAULT_MAXIMUM_STAKE_AMOUNT; + defaultPoSSettings.maximumStakeAmount = DEFAULT_MINIMUM_STAKE_AMOUNT; + app.initialize(defaultPoSSettings, token); } function testZeroMaxStakeMultiplier() public { @@ -123,52 +93,24 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.InvalidStakeMultiplier.selector, 0) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: 0, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.maximumStakeMultiplier = 0; + app.initialize(defaultPoSSettings, token); } function testMinStakeDurationTooLow() public { app = new ERC20TokenStakingManager(ICMInitializable.Allowed); - uint64 minStakeDuration = DEFAULT_CHURN_PERIOD - 1; + uint64 minimumStakeDuration = DEFAULT_CHURN_PERIOD - 1; vm.expectRevert( abi.encodeWithSelector( - PoSValidatorManager.InvalidMinStakeDuration.selector, minStakeDuration + PoSValidatorManager.InvalidMinStakeDuration.selector, minimumStakeDuration ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: minStakeDuration, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumStakeDuration = minimumStakeDuration; + app.initialize(defaultPoSSettings, token); } function testMaxStakeMultiplierOverLimit() public { @@ -179,24 +121,10 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidStakeMultiplier.selector, maximumStakeMultiplier ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: maximumStakeMultiplier, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.maximumStakeMultiplier = maximumStakeMultiplier; + app.initialize(defaultPoSSettings, token); } function testZeroWeightToValueFactor() public { @@ -204,24 +132,10 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.ZeroWeightToValueFactor.selector) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: 0, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.weightToValueFactor = 0; + app.initialize(defaultPoSSettings, token); } function testInvalidValidatorMinStakeDuration() public { @@ -309,24 +223,11 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app = new ERC20TokenStakingManager(ICMInitializable.Allowed); token = new ExampleERC20(); rewardCalculator = new ExampleRewardCalculator(DEFAULT_REWARD_RATE); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: rewardCalculator, - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }), - token - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.rewardCalculator = rewardCalculator; + app.initialize(defaultPoSSettings, token); + validatorManager = app; posValidatorManager = app; diff --git a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol index 6074f5eb5..c1c80fcbb 100644 --- a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol @@ -8,19 +8,14 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; import {PoSValidatorManagerTest} from "./PoSValidatorManagerTests.t.sol"; import {NativeTokenStakingManager} from "../NativeTokenStakingManager.sol"; -import {PoSValidatorManager} from "../PoSValidatorManager.sol"; -import { - ValidatorManagerSettings, - ValidatorRegistrationInput, - IValidatorManager -} from "../interfaces/IValidatorManager.sol"; -import {PoSValidatorManagerSettings} from "../interfaces/IPoSValidatorManager.sol"; -import {IRewardCalculator} from "../interfaces/IRewardCalculator.sol"; +import {PoSValidatorManager, PoSValidatorManagerSettings} from "../PoSValidatorManager.sol"; +import {ValidatorRegistrationInput, IValidatorManager} from "../interfaces/IValidatorManager.sol"; import {ExampleRewardCalculator} from "../ExampleRewardCalculator.sol"; import {ICMInitializable} from "../../utilities/ICMInitializable.sol"; import {INativeMinter} from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/INativeMinter.sol"; import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; +import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { NativeTokenStakingManager public app; @@ -34,28 +29,22 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initializeValidatorSet(_defaultConversionData(), 0); } + function testDisableInitialization() public { + app = new NativeTokenStakingManager(ICMInitializable.Disallowed); + vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); + + app.initialize(_defaultPoSSettings()); + } + function testZeroMinimumDelegationFee() public { app = new NativeTokenStakingManager(ICMInitializable.Allowed); vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.InvalidDelegationFee.selector, 0) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: 0, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumDelegationFeeBips = 0; + app.initialize(defaultPoSSettings); } function testMaxMinimumDelegationFee() public { @@ -66,23 +55,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidDelegationFee.selector, minimumDelegationFeeBips ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: minimumDelegationFeeBips, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumDelegationFeeBips = minimumDelegationFeeBips; + app.initialize(defaultPoSSettings); } function testInvalidStakeAmountRange() public { @@ -92,23 +68,11 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumStakeAmount = DEFAULT_MAXIMUM_STAKE_AMOUNT; + defaultPoSSettings.maximumStakeAmount = DEFAULT_MINIMUM_STAKE_AMOUNT; + app.initialize(defaultPoSSettings); } function testZeroMaxStakeMultiplier() public { @@ -116,23 +80,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.InvalidStakeMultiplier.selector, 0) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: 0, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.maximumStakeMultiplier = 0; + app.initialize(defaultPoSSettings); } function testMaxStakeMultiplierOverLimit() public { @@ -143,23 +94,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidStakeMultiplier.selector, maximumStakeMultiplier ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: maximumStakeMultiplier, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.maximumStakeMultiplier = maximumStakeMultiplier; + app.initialize(defaultPoSSettings); } function testZeroWeightToValueFactor() public { @@ -167,23 +105,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { vm.expectRevert( abi.encodeWithSelector(PoSValidatorManager.ZeroWeightToValueFactor.selector) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: 0, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.weightToValueFactor = 0; + app.initialize(defaultPoSSettings); } function testMinStakeDurationTooLow() public { @@ -194,23 +119,10 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { PoSValidatorManager.InvalidMinStakeDuration.selector, minStakeDuration ) ); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: minStakeDuration, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: IRewardCalculator(address(0)), - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.minimumStakeDuration = minStakeDuration; + app.initialize(defaultPoSSettings); } // Helpers @@ -267,23 +179,11 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { // Construct the object under test app = new TestableNativeTokenStakingManager(ICMInitializable.Allowed); rewardCalculator = new ExampleRewardCalculator(DEFAULT_REWARD_RATE); - app.initialize( - PoSValidatorManagerSettings({ - baseSettings: ValidatorManagerSettings({ - subnetID: DEFAULT_SUBNET_ID, - churnPeriodSeconds: DEFAULT_CHURN_PERIOD, - maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE - }), - minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, - maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, - minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, - minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, - maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, - weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, - rewardCalculator: rewardCalculator, - uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID - }) - ); + + PoSValidatorManagerSettings memory defaultPoSSettings = _defaultPoSSettings(); + defaultPoSSettings.rewardCalculator = rewardCalculator; + app.initialize(defaultPoSSettings); + validatorManager = app; posValidatorManager = app; return app; diff --git a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol index 12cae7e9b..39be0f19e 100644 --- a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol @@ -5,17 +5,18 @@ pragma solidity 0.8.25; -import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; import {PoAValidatorManager} from "../PoAValidatorManager.sol"; -import {ICMInitializable} from "@utilities/ICMInitializable.sol"; import { ValidatorManagerSettings, ValidatorRegistrationInput, IValidatorManager } from "../interfaces/IValidatorManager.sol"; +import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; +import {ICMInitializable} from "@utilities/ICMInitializable.sol"; +import {ValidatorManager} from "../ValidatorManager.sol"; import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable@5.0.2/access/OwnableUpgradeable.sol"; -import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; +import {Initializable} from "@openzeppelin/contracts@5.0.2/proxy/utils/Initializable.sol"; contract PoAValidatorManagerTest is ValidatorManagerTest { PoAValidatorManager public app; @@ -31,6 +32,19 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { app.initializeValidatorSet(_defaultConversionData(), 0); } + function testDisableInitialization() public { + app = new PoAValidatorManager(ICMInitializable.Disallowed); + vm.expectRevert(abi.encodeWithSelector(Initializable.InvalidInitialization.selector)); + app.initialize( + ValidatorManagerSettings({ + subnetID: DEFAULT_SUBNET_ID, + churnPeriodSeconds: DEFAULT_CHURN_PERIOD, + maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE + }), + address(this) + ); + } + function testInvalidOwnerRegistration() public { vm.prank(vm.addr(1)); vm.expectRevert( @@ -50,6 +64,28 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { ); } + // This test applies to all ValidatorManagers, but we test it here to avoid + // having to source UINT64MAX funds for PoSValidatorManagers. + function testTotalWeightOverflow() public { + uint64 weight = type(uint64).max; + + bytes memory nodeID = _newNodeID(); + vm.expectRevert( + abi.encodeWithSelector(ValidatorManager.InvalidTotalWeight.selector, weight) + ); + + _initializeValidatorRegistration( + ValidatorRegistrationInput({ + nodeID: nodeID, + blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, + remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, + disableOwner: DEFAULT_P_CHAIN_OWNER, + registrationExpiry: DEFAULT_EXPIRY + }), + weight + ); + } + function _initializeValidatorRegistration( ValidatorRegistrationInput memory input, uint64 weight diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 7a93de3c7..27297eb01 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -8,13 +8,20 @@ pragma solidity 0.8.25; import {IRewardCalculator} from "../interfaces/IRewardCalculator.sol"; import {ValidatorManagerTest} from "./ValidatorManagerTests.t.sol"; import {PoSValidatorManager} from "../PoSValidatorManager.sol"; +import { + DelegatorStatus, PoSValidatorManagerSettings +} from "../interfaces/IPoSValidatorManager.sol"; import {ValidatorManager} from "../ValidatorManager.sol"; +import { + ValidatorManagerSettings, + ValidatorRegistrationInput, + ValidatorStatus +} from "../interfaces/IValidatorManager.sol"; +import {ValidatorMessages} from "../ValidatorMessages.sol"; import { WarpMessage, IWarpMessenger } from "@avalabs/subnet-evm-contracts@1.2.0/contracts/interfaces/IWarpMessenger.sol"; -import {ValidatorMessages} from "../ValidatorMessages.sol"; -import {ValidatorRegistrationInput, ValidatorStatus} from "../interfaces/IValidatorManager.sol"; abstract contract PoSValidatorManagerTest is ValidatorManagerTest { uint64 public constant DEFAULT_UPTIME = uint64(100); @@ -40,6 +47,14 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { PoSValidatorManager public posValidatorManager; IRewardCalculator public rewardCalculator; + ValidatorRegistrationInput public defaultRegistrationInput = ValidatorRegistrationInput({ + nodeID: DEFAULT_NODE_ID, + blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, + registrationExpiry: DEFAULT_EXPIRY, + remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, + disableOwner: DEFAULT_P_CHAIN_OWNER + }); + event ValidationUptimeUpdated(bytes32 indexed validationID, uint64 uptime); event DelegatorAdded( @@ -61,7 +76,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { event ValidatorWeightUpdate( bytes32 indexed validationID, uint64 indexed nonce, - uint64 validatorWeight, + uint64 weight, bytes32 setWeightMessageID ); @@ -72,13 +87,6 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { event UptimeUpdated(bytes32 indexed validationID, uint64 uptime); function testDelegationFeeBipsTooLow() public { - ValidatorRegistrationInput memory registrationInput = ValidatorRegistrationInput({ - nodeID: DEFAULT_NODE_ID, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationExpiry: DEFAULT_EXPIRY, - remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, - disableOwner: DEFAULT_P_CHAIN_OWNER - }); vm.expectRevert( abi.encodeWithSelector( PoSValidatorManager.InvalidDelegationFee.selector, @@ -86,7 +94,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ) ); _initializeValidatorRegistration( - registrationInput, + defaultRegistrationInput, DEFAULT_MINIMUM_DELEGATION_FEE_BIPS - 1, DEFAULT_MINIMUM_STAKE_DURATION, DEFAULT_MINIMUM_STAKE_AMOUNT @@ -94,13 +102,6 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function testDelegationFeeBipsTooHigh() public { - ValidatorRegistrationInput memory registrationInput = ValidatorRegistrationInput({ - nodeID: DEFAULT_NODE_ID, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationExpiry: DEFAULT_EXPIRY, - remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, - disableOwner: DEFAULT_P_CHAIN_OWNER - }); uint16 delegationFeeBips = posValidatorManager.MAXIMUM_DELEGATION_FEE_BIPS() + 1; vm.expectRevert( abi.encodeWithSelector( @@ -109,7 +110,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ); _initializeValidatorRegistration( - registrationInput, + defaultRegistrationInput, delegationFeeBips, DEFAULT_MINIMUM_STAKE_DURATION, DEFAULT_MINIMUM_STAKE_AMOUNT @@ -117,13 +118,6 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function testInvalidMinStakeDuration() public { - ValidatorRegistrationInput memory registrationInput = ValidatorRegistrationInput({ - nodeID: DEFAULT_NODE_ID, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationExpiry: DEFAULT_EXPIRY, - remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, - disableOwner: DEFAULT_P_CHAIN_OWNER - }); vm.expectRevert( abi.encodeWithSelector( PoSValidatorManager.InvalidMinStakeDuration.selector, @@ -131,7 +125,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ) ); _initializeValidatorRegistration( - registrationInput, + defaultRegistrationInput, DEFAULT_DELEGATION_FEE_BIPS, DEFAULT_MINIMUM_STAKE_DURATION - 1, DEFAULT_MINIMUM_STAKE_AMOUNT @@ -139,20 +133,13 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function testStakeAmountTooLow() public { - ValidatorRegistrationInput memory registrationInput = ValidatorRegistrationInput({ - nodeID: DEFAULT_NODE_ID, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationExpiry: DEFAULT_EXPIRY, - remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, - disableOwner: DEFAULT_P_CHAIN_OWNER - }); vm.expectRevert( abi.encodeWithSelector( PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MINIMUM_STAKE_AMOUNT - 1 ) ); _initializeValidatorRegistration( - registrationInput, + defaultRegistrationInput, DEFAULT_DELEGATION_FEE_BIPS, DEFAULT_MINIMUM_STAKE_DURATION, DEFAULT_MINIMUM_STAKE_AMOUNT - 1 @@ -160,20 +147,13 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } function testStakeAmountTooHigh() public { - ValidatorRegistrationInput memory registrationInput = ValidatorRegistrationInput({ - nodeID: DEFAULT_NODE_ID, - blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, - registrationExpiry: DEFAULT_EXPIRY, - remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, - disableOwner: DEFAULT_P_CHAIN_OWNER - }); vm.expectRevert( abi.encodeWithSelector( PoSValidatorManager.InvalidStakeAmount.selector, DEFAULT_MAXIMUM_STAKE_AMOUNT + 1 ) ); _initializeValidatorRegistration( - registrationInput, + defaultRegistrationInput, DEFAULT_DELEGATION_FEE_BIPS, DEFAULT_MINIMUM_STAKE_DURATION, DEFAULT_MAXIMUM_STAKE_AMOUNT + 1 @@ -195,7 +175,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 validationID = _registerDefaultValidator(); _mockGetUptimeWarpMessage(new bytes(0), false); - vm.warp(DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION); + vm.warp(DEFAULT_COMPLETION_TIMESTAMP); vm.expectRevert(ValidatorManager.InvalidWarpMessage.selector); posValidatorManager.initializeEndValidation(validationID, true, 0); } @@ -219,7 +199,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { WARP_PRECOMPILE_ADDRESS, abi.encodeCall(IWarpMessenger.getVerifiedWarpMessage, 0) ); - vm.warp(DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION); + vm.warp(DEFAULT_COMPLETION_TIMESTAMP); vm.expectRevert( abi.encodeWithSelector( ValidatorManager.InvalidWarpOriginSenderAddress.selector, address(this) @@ -247,7 +227,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { WARP_PRECOMPILE_ADDRESS, abi.encodeCall(IWarpMessenger.getVerifiedWarpMessage, 0) ); - vm.warp(DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION); + vm.warp(DEFAULT_COMPLETION_TIMESTAMP); vm.expectRevert( abi.encodeWithSelector(ValidatorManager.InvalidValidationID.selector, validationID) ); @@ -593,44 +573,67 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 validationID = _registerDefaultValidator(); bytes32 delegationID = _registerDefaultDelegator(validationID); - _initializeEndDelegationValidatorActiveWithChecks({ - validationID: validationID, + _completeDefaultDelegator(validationID, delegationID); + } + + function testClaimDelegationFeesInvalidValidatorStatus() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + _completeDefaultDelegator(validationID, delegationID); + + vm.expectRevert( + abi.encodeWithSelector( + ValidatorManager.InvalidValidatorStatus.selector, ValidatorStatus.Active + ) + ); + + posValidatorManager.claimDelegationFees(validationID); + } + + function testClaimDelegationFeesInvalidSender() public { + bytes32 validationID = _registerDefaultValidator(); + _registerDefaultDelegator(validationID); + + _endDefaultValidatorWithChecks(validationID, 2); + + vm.expectRevert( + abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, address(123)) + ); + + vm.prank(address(123)); + posValidatorManager.claimDelegationFees(validationID); + } + + function testClaimDelegationFees() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + address rewardRecipient = address(42); + + _endDefaultValidatorWithChecks(validationID, 2); + + // Validator is Completed, so this will also complete the delegation. + _initializeEndDelegation({ sender: DEFAULT_DELEGATOR_ADDRESS, delegationID: delegationID, - startDelegationTimestamp: DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP, endDelegationTimestamp: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, - expectedValidatorWeight: DEFAULT_WEIGHT, - expectedNonce: 2, includeUptime: true, force: false, - rewardRecipient: address(0) + rewardRecipient: rewardRecipient }); uint256 expectedTotalReward = rewardCalculator.calculateReward({ stakeAmount: _weightToValue(DEFAULT_DELEGATOR_WEIGHT), validatorStartTime: DEFAULT_REGISTRATION_TIMESTAMP, stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, - stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, - uptimeSeconds: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + stakingEndTime: DEFAULT_COMPLETION_TIMESTAMP, + uptimeSeconds: DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP }); - uint256 expectedValidatorFees = - _calculateValidatorFeesFromDelegator(expectedTotalReward, DEFAULT_DELEGATION_FEE_BIPS); - uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; - address delegator = DEFAULT_DELEGATOR_ADDRESS; - - _completeEndDelegationWithChecks({ - validationID: validationID, - delegationID: delegationID, - delegator: delegator, - delegatorWeight: DEFAULT_DELEGATOR_WEIGHT, - expectedValidatorFees: expectedValidatorFees, - expectedDelegatorReward: expectedDelegatorReward, - validatorWeight: DEFAULT_WEIGHT, - expectedValidatorWeight: DEFAULT_WEIGHT, - expectedNonce: 2, - rewardRecipient: delegator - }); + _expectRewardIssuance( + address(this), expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000 + ); + posValidatorManager.claimDelegationFees(validationID); } function testCompleteEndDelegationWithNonDelegatorRewardRecipient() public { @@ -874,15 +877,14 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { expectedNonce: 1 }); - uint64 validatorEndTime = DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION; bytes memory setWeightMessage = ValidatorMessages.packL1ValidatorWeightMessage(validationID, 2, 0); bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( - validationID, validatorEndTime - DEFAULT_REGISTRATION_TIMESTAMP + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP ); _initializeEndValidation({ validationID: validationID, - completionTimestamp: validatorEndTime, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, setWeightMessage: setWeightMessage, includeUptime: true, uptimeMessage: uptimeMessage, @@ -892,7 +894,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _setUpCompleteDelegatorRegistrationWithChecks( validationID, delegationID, - validatorEndTime + 1, + DEFAULT_COMPLETION_TIMESTAMP + 1, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT, 1 ); @@ -991,7 +993,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function testInitializeDelegatorRegistrationValidatorCompleted() public { bytes32 validationID = _registerDefaultValidator(); - _endDefaultValidator(validationID, 1); + _endDefaultValidatorWithChecks(validationID, 1); _beforeSend(_weightToValue(DEFAULT_DELEGATOR_WEIGHT), DEFAULT_DELEGATOR_ADDRESS); @@ -1010,7 +1012,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 validationID = _registerDefaultValidator(); bytes32 delegationID = _initializeDefaultDelegatorRegistration(validationID); - _endDefaultValidator(validationID, 2); + _endDefaultValidatorWithChecks(validationID, 2); // completeDelegatorRegistration should fall through to _completeEndDelegation and refund the stake vm.expectEmit(true, true, true, true, address(validatorManager)); @@ -1034,7 +1036,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes32 validationID = _registerDefaultValidator(); bytes32 delegationID = _registerDefaultDelegator(validationID); - _endDefaultValidator(validationID, 2); + _endDefaultValidatorWithChecks(validationID, 2); uint64 delegationEndTime = DEFAULT_COMPLETION_TIMESTAMP + 1; @@ -1088,17 +1090,11 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { rewardRecipient: address(0) }); - _endDefaultValidator(validationID, 3); + _endDefaultValidatorWithChecks(validationID, 3); - uint256 expectedTotalReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_DELEGATOR_WEIGHT), - validatorStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, - stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, - uptimeSeconds: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP - }); + uint256 expectedTotalReward = _defaultDelegatorExpectedTotalReward(); - uint256 expectedValidatorFees = expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000; + uint256 expectedValidatorFees = (expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS) / 10000; uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; vm.expectEmit(true, true, true, true, address(posValidatorManager)); @@ -1233,13 +1229,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { rewardRecipient: address(0) }); - uint256 expectedTotalReward = rewardCalculator.calculateReward({ - stakeAmount: _weightToValue(DEFAULT_DELEGATOR_WEIGHT), - validatorStartTime: DEFAULT_REGISTRATION_TIMESTAMP, - stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, - stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, - uptimeSeconds: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP - }); + uint256 expectedTotalReward = _defaultDelegatorExpectedTotalReward(); uint256 expectedValidatorFees = _calculateValidatorFeesFromDelegator(expectedTotalReward, DEFAULT_DELEGATION_FEE_BIPS); @@ -1500,8 +1490,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // Submit an uptime proof via submitUptime uint64 uptimePercentage1 = 80; - uint64 uptime1 = (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) - * uptimePercentage1 / 100; + uint64 uptime1 = ( + (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage1 + ) / 100; bytes memory uptimeMsg1 = ValidatorMessages.packValidationUptimeMessage(validationID, uptime1); _mockGetUptimeWarpMessage(uptimeMsg1, true); @@ -1513,8 +1504,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { // Submit a second uptime proof via initializeEndValidation. This one is not sufficient for rewards // Submit an uptime proof via submitUptime uint64 uptimePercentage2 = 79; - uint64 uptime2 = (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) - * uptimePercentage2 / 100; + uint64 uptime2 = ( + (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage2 + ) / 100; bytes memory uptimeMsg2 = ValidatorMessages.packValidationUptimeMessage(validationID, uptime2); _mockGetUptimeWarpMessage(uptimeMsg2, true); @@ -1527,6 +1519,35 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _initializeEndValidation(validationID, true, address(0)); } + function testInitializeEndValidationWithoutNewUptime() public { + bytes32 validationID = _registerDefaultValidator(); + + vm.warp(DEFAULT_COMPLETION_TIMESTAMP); + bytes memory setValidatorWeightPayload = + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); + _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); + + // Submit an uptime proof via submitUptime + uint64 uptimePercentage1 = 80; + uint64 uptime1 = ( + (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage1 + ) / 100; + bytes memory uptimeMsg1 = + ValidatorMessages.packValidationUptimeMessage(validationID, uptime1); + _mockGetUptimeWarpMessage(uptimeMsg1, true); + + vm.expectEmit(true, true, true, true, address(validatorManager)); + emit UptimeUpdated(validationID, uptime1); + posValidatorManager.submitUptimeProof(validationID, 0); + + vm.expectEmit(true, true, true, true, address(validatorManager)); + emit ValidatorRemovalInitialized( + validationID, bytes32(0), DEFAULT_WEIGHT, DEFAULT_COMPLETION_TIMESTAMP + ); + + _initializeEndValidation(validationID, false, address(0)); + } + function testInitializeEndValidationInsufficientUptime() public { bytes32 validationID = _registerDefaultValidator(); uint64 uptimePercentage = 79; @@ -1538,7 +1559,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( validationID, - (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ((DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage) + / 100 ); _mockGetUptimeWarpMessage(uptimeMsg, true); @@ -1551,19 +1573,288 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _initializeEndValidation(validationID, true, address(0)); } - function testInitializeEndValidationPoAValidator() public { + function testSubmitUptimeProofPoaValidator() public { bytes32 defaultInitialValidationID = sha256(abi.encodePacked(DEFAULT_SUBNET_ID, uint32(1))); + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.ValidatorNotPoS.selector, defaultInitialValidationID + ) + ); + posValidatorManager.submitUptimeProof(defaultInitialValidationID, 0); + } + + function testSubmitUptimeProofInactiveValidator() public { + bytes32 validationID = _registerDefaultValidator(); + + bytes memory setWeightMessage = + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + ); + + _initializeEndValidation({ + validationID: validationID, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + setWeightMessage: setWeightMessage, + includeUptime: true, + uptimeMessage: uptimeMessage, + force: false + }); + + _beforeSend(_weightToValue(DEFAULT_DELEGATOR_WEIGHT), DEFAULT_DELEGATOR_ADDRESS); + + vm.expectRevert( + abi.encodeWithSelector( + ValidatorManager.InvalidValidatorStatus.selector, ValidatorStatus.PendingRemoved + ) + ); + posValidatorManager.submitUptimeProof(validationID, 0); + } + + function testEndValidationPoAValidator() public { + bytes32 validationID = sha256(abi.encodePacked(DEFAULT_SUBNET_ID, uint32(1))); + vm.warp(DEFAULT_COMPLETION_TIMESTAMP); bytes memory setValidatorWeightPayload = - ValidatorMessages.packL1ValidatorWeightMessage(defaultInitialValidationID, 1, 0); + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 1, 0); _mockSendWarpMessage(setValidatorWeightPayload, bytes32(0)); + vm.expectEmit(true, true, true, true, address(validatorManager)); emit ValidatorRemovalInitialized( - defaultInitialValidationID, bytes32(0), DEFAULT_WEIGHT, DEFAULT_COMPLETION_TIMESTAMP + validationID, bytes32(0), DEFAULT_WEIGHT, DEFAULT_COMPLETION_TIMESTAMP ); - _initializeEndValidation(defaultInitialValidationID, false, address(0)); + _initializeEndValidation(validationID, false, address(0)); + + uint256 balanceBefore = _getStakeAssetBalance(address(this)); + + bytes memory subnetValidatorRegistrationMessage = + ValidatorMessages.packL1ValidatorRegistrationMessage(validationID, false); + _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); + + posValidatorManager.completeEndValidation(0); + + assertEq(_getStakeAssetBalance(address(this)), balanceBefore); + } + + function testDelegationToPoAValidator() public { + bytes32 defaultInitialValidationID = sha256(abi.encodePacked(DEFAULT_SUBNET_ID, uint32(1))); + + _beforeSend(_weightToValue(DEFAULT_DELEGATOR_WEIGHT), DEFAULT_DELEGATOR_ADDRESS); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.ValidatorNotPoS.selector, defaultInitialValidationID + ) + ); + + _initializeDelegatorRegistration( + defaultInitialValidationID, DEFAULT_DELEGATOR_ADDRESS, DEFAULT_DELEGATOR_WEIGHT + ); + } + + function testDelegationOverWeightLimit() public { + bytes32 validationID = _registerDefaultValidator(); + + uint64 delegatorWeight = DEFAULT_WEIGHT * DEFAULT_MAXIMUM_STAKE_MULTIPLIER + 1; + + _beforeSend(_weightToValue(delegatorWeight), DEFAULT_DELEGATOR_ADDRESS); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.MaxWeightExceeded.selector, delegatorWeight + DEFAULT_WEIGHT + ) + ); + + _initializeDelegatorRegistration(validationID, DEFAULT_DELEGATOR_ADDRESS, delegatorWeight); + } + + function testCompleteDelegatorRegistrationAlreadyRegistered() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + ) + ); + + posValidatorManager.completeDelegatorRegistration(delegationID, 0); + } + + function testCompleteDelegatorRegistrationWrongValidationID() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _initializeDefaultDelegatorRegistration(validationID); + + bytes memory setValidatorWeightPayload = ValidatorMessages.packL1ValidatorWeightMessage( + delegationID, 2, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT + ); + _mockGetPChainWarpMessage(setValidatorWeightPayload, true); + + vm.expectRevert( + abi.encodeWithSelector(ValidatorManager.InvalidValidationID.selector, validationID) + ); + + vm.warp(DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP); + posValidatorManager.completeDelegatorRegistration(delegationID, 0); + } + + function testCompleteEndDelegationWrongValidationID() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + _initializeEndDelegationValidatorActiveWithChecks({ + validationID: validationID, + sender: DEFAULT_DELEGATOR_ADDRESS, + delegationID: delegationID, + startDelegationTimestamp: DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP, + endDelegationTimestamp: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, + expectedValidatorWeight: DEFAULT_WEIGHT, + expectedNonce: 2, + includeUptime: true, + force: false, + rewardRecipient: address(this) + }); + + bytes memory setValidatorWeightPayload = + ValidatorMessages.packL1ValidatorWeightMessage(delegationID, 2, DEFAULT_WEIGHT); + _mockGetPChainWarpMessage(setValidatorWeightPayload, true); + + vm.expectRevert( + abi.encodeWithSelector(ValidatorManager.InvalidValidationID.selector, delegationID) + ); + + posValidatorManager.completeEndDelegation(delegationID, 0); + } + + function testInitializeEndDelegationNotRegistered() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _initializeDefaultDelegatorRegistration(validationID); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.PendingAdded + ) + ); + + posValidatorManager.initializeEndDelegation(delegationID, true, 0); + } + + function testInitializeEndDelegationWrongSender() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + vm.expectRevert( + abi.encodeWithSelector(PoSValidatorManager.UnauthorizedOwner.selector, address(123)) + ); + + vm.prank(address(123)); + posValidatorManager.initializeEndDelegation(delegationID, true, 0); + } + + function testCompleteDelegatorRegistrationForDelegatorRegisteredWhileValidatorPendingRemoved() + public + { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _initializeDefaultDelegatorRegistration(validationID); + + bytes memory setWeightMessage = + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 2, 0); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + ); + + _initializeEndValidation({ + validationID: validationID, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + setWeightMessage: setWeightMessage, + includeUptime: true, + uptimeMessage: uptimeMessage, + force: false + }); + + _setUpCompleteDelegatorRegistrationWithChecks( + validationID, delegationID, DEFAULT_COMPLETION_TIMESTAMP + 1, 0, 2 + ); + + uint256 expectedReward = rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_WEIGHT), + validatorStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + stakingStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + stakingEndTime: DEFAULT_COMPLETION_TIMESTAMP, + uptimeSeconds: DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + }); + + _completeEndValidationWithChecks({ + validationID: validationID, + validatorOwner: address(this), + expectedReward: expectedReward, + validatorWeight: DEFAULT_WEIGHT, + rewardRecipient: address(this) + }); + + vm.warp(DEFAULT_COMPLETION_TIMESTAMP + 1 + DEFAULT_MINIMUM_STAKE_DURATION); + _expectStakeUnlock(DEFAULT_DELEGATOR_ADDRESS, _weightToValue(DEFAULT_DELEGATOR_WEIGHT)); + posValidatorManager.initializeEndDelegation(delegationID, true, 0); + } + + function testCompleteEndDelegationWhileActive() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + ) + ); + + posValidatorManager.completeEndDelegation(delegationID, 0); + } + + function testCompleteDelegatorRegistrationValidatorPendingRemoved() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _initializeDefaultDelegatorRegistration(validationID); + + bytes memory setWeightMessage = + ValidatorMessages.packL1ValidatorWeightMessage(validationID, 2, 0); + bytes memory uptimeMessage = ValidatorMessages.packValidationUptimeMessage( + validationID, DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + ); + + _initializeEndValidation({ + validationID: validationID, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + setWeightMessage: setWeightMessage, + includeUptime: true, + uptimeMessage: uptimeMessage, + force: false + }); + + _setUpCompleteDelegatorRegistrationWithChecks( + validationID, delegationID, DEFAULT_COMPLETION_TIMESTAMP + 1, 0, 2 + ); + + vm.expectRevert( + abi.encodeWithSelector( + ValidatorManager.InvalidValidatorStatus.selector, ValidatorStatus.PendingRemoved + ) + ); + + posValidatorManager.initializeEndDelegation(delegationID, false, 0); + } + + function testResendEndDelegationWhileActive() public { + bytes32 validationID = _registerDefaultValidator(); + bytes32 delegationID = _registerDefaultDelegator(validationID); + + vm.expectRevert( + abi.encodeWithSelector( + PoSValidatorManager.InvalidDelegatorStatus.selector, DelegatorStatus.Active + ) + ); + + posValidatorManager.resendUpdateDelegation(delegationID); } function testForceInitializeEndValidation() public { @@ -1594,7 +1885,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( validationID, - (DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage / 100 + ((DEFAULT_COMPLETION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP) * uptimePercentage) + / 100 ); _mockGetUptimeWarpMessage(uptimeMsg, true); @@ -1790,6 +2082,39 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { }); } + function _completeDefaultDelegator(bytes32 validationID, bytes32 delegationID) internal { + _initializeEndDelegationValidatorActiveWithChecks({ + validationID: validationID, + sender: DEFAULT_DELEGATOR_ADDRESS, + delegationID: delegationID, + startDelegationTimestamp: DEFAULT_DELEGATOR_INIT_REGISTRATION_TIMESTAMP, + endDelegationTimestamp: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, + expectedValidatorWeight: DEFAULT_WEIGHT, + expectedNonce: 2, + includeUptime: true, + force: false, + rewardRecipient: address(this) + }); + + uint256 expectedTotalReward = _defaultDelegatorExpectedTotalReward(); + uint256 expectedValidatorFees = + _calculateValidatorFeesFromDelegator(expectedTotalReward, DEFAULT_DELEGATION_FEE_BIPS); + uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; + + _completeEndDelegationWithChecks({ + validationID: validationID, + delegationID: delegationID, + delegator: DEFAULT_DELEGATOR_ADDRESS, + delegatorWeight: DEFAULT_DELEGATOR_WEIGHT, + expectedValidatorFees: expectedValidatorFees, + expectedDelegatorReward: expectedDelegatorReward, + validatorWeight: DEFAULT_WEIGHT, + expectedValidatorWeight: DEFAULT_WEIGHT, + expectedNonce: 2, + rewardRecipient: address(this) + }); + } + function _registerDelegator( bytes32 validationID, address delegatorAddress, @@ -1839,7 +2164,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { emit ValidatorWeightUpdate({ validationID: validationID, nonce: expectedNonce, - validatorWeight: expectedValidatorWeight, + weight: expectedValidatorWeight, setWeightMessageID: bytes32(0) }); @@ -1904,6 +2229,18 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { } } + function _endDefaultValidatorWithChecks(bytes32 validationID, uint64 expectedNonce) internal { + _endValidationWithChecks({ + validationID: validationID, + validatorOwner: address(this), + completeRegistrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP, + completionTimestamp: DEFAULT_COMPLETION_TIMESTAMP, + validatorWeight: DEFAULT_WEIGHT, + expectedNonce: expectedNonce, + rewardRecipient: address(this) + }); + } + function _endDefaultValidator(bytes32 validationID, uint64 expectedNonce) internal { address validatorOwner = address(this); _endValidationWithChecks({ @@ -2103,6 +2440,34 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { function _expectStakeUnlock(address account, uint256 amount) internal virtual; function _expectRewardIssuance(address account, uint256 amount) internal virtual; + function _defaultDelegatorExpectedTotalReward() internal view returns (uint256) { + return rewardCalculator.calculateReward({ + stakeAmount: _weightToValue(DEFAULT_DELEGATOR_WEIGHT), + validatorStartTime: DEFAULT_REGISTRATION_TIMESTAMP, + stakingStartTime: DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP, + stakingEndTime: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP, + uptimeSeconds: DEFAULT_DELEGATOR_END_DELEGATION_TIMESTAMP - DEFAULT_REGISTRATION_TIMESTAMP + }); + } + + function _defaultPoSSettings() internal pure returns (PoSValidatorManagerSettings memory) { + return PoSValidatorManagerSettings({ + baseSettings: ValidatorManagerSettings({ + subnetID: DEFAULT_SUBNET_ID, + churnPeriodSeconds: DEFAULT_CHURN_PERIOD, + maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE + }), + minimumStakeAmount: DEFAULT_MINIMUM_STAKE_AMOUNT, + maximumStakeAmount: DEFAULT_MAXIMUM_STAKE_AMOUNT, + minimumStakeDuration: DEFAULT_MINIMUM_STAKE_DURATION, + minimumDelegationFeeBips: DEFAULT_MINIMUM_DELEGATION_FEE_BIPS, + maximumStakeMultiplier: DEFAULT_MAXIMUM_STAKE_MULTIPLIER, + weightToValueFactor: DEFAULT_WEIGHT_TO_VALUE_FACTOR, + rewardCalculator: IRewardCalculator(address(0)), + uptimeBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID + }); + } + function _calculateValidatorFeesFromDelegator( uint256 totalReward, uint64 delegationFeeBips diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index 2785825fe..7889cdd72 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -42,6 +42,8 @@ abstract contract ValidatorManagerTest is Test { uint64 public constant DEFAULT_WEIGHT = 1e6; // Set the default weight to 1e10 to avoid churn issues uint64 public constant DEFAULT_INITIAL_VALIDATOR_WEIGHT = DEFAULT_WEIGHT * 1e4; + uint64 public constant DEFAULT_INITIAL_TOTAL_WEIGHT = + DEFAULT_INITIAL_VALIDATOR_WEIGHT + DEFAULT_WEIGHT; uint256 public constant DEFAULT_MINIMUM_STAKE_AMOUNT = 20e12; uint256 public constant DEFAULT_MAXIMUM_STAKE_AMOUNT = 1e22; uint64 public constant DEFAULT_CHURN_PERIOD = 1 hours; @@ -64,18 +66,22 @@ abstract contract ValidatorManagerTest is Test { bytes32 indexed validationID, bytes indexed nodeID, bytes32 indexed registerValidationMessageID, - uint256 weight, + uint64 weight, uint64 registrationExpiry ); + event InitialValidatorCreated( + bytes32 indexed validationID, bytes indexed nodeID, uint64 weight + ); + event ValidationPeriodRegistered( - bytes32 indexed validationID, uint256 stakeAmount, uint256 timestamp + bytes32 indexed validationID, uint64 weight, uint256 timestamp ); event ValidatorRemovalInitialized( bytes32 indexed validationID, bytes32 indexed setWeightMessageID, - uint256 stakeAmount, + uint64 weight, uint256 endTime ); @@ -635,6 +641,14 @@ abstract contract ValidatorManagerTest is Test { weight: DEFAULT_WEIGHT, blsPublicKey: DEFAULT_BLS_PUBLIC_KEY }); + + // Confirm the total initial weight + uint64 initialWeight; + for (uint256 i = 0; i < initialValidators.length; i++) { + initialWeight += initialValidators[i].weight; + } + assertEq(initialWeight, DEFAULT_INITIAL_TOTAL_WEIGHT); + return ConversionData({ subnetID: DEFAULT_SUBNET_ID, validatorManagerBlockchainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, diff --git a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol index 9193484b5..6f7ffc4b2 100644 --- a/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorMessagesTests.t.sol @@ -7,13 +7,15 @@ pragma solidity 0.8.25; import {Test} from "@forge-std/Test.sol"; import {ValidatorMessages} from "../ValidatorMessages.sol"; -import {PChainOwner} from "../interfaces/IValidatorManager.sol"; +import {PChainOwner, ConversionData, InitialValidator} from "../interfaces/IValidatorManager.sol"; contract ValidatorMessagesTest is Test { bytes32 public constant DEFAULT_SUBNET_ID = bytes32(hex"1234567812345678123456781234567812345678123456781234567812345678"); bytes public constant DEFAULT_NODE_ID = bytes(hex"1234567812345678123456781234567812345678123456781234567812345678"); + bytes32 public constant DEFAULT_SUBNET_CONVERSION_ID = + bytes32(hex"1234567812345678123456781234567812345678123456781234567812345678"); bytes public constant DEFAULT_BLS_PUBLIC_KEY = bytes( hex"123456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678" ); @@ -23,13 +25,227 @@ contract ValidatorMessagesTest is Test { uint64 public constant DEFAULT_EXPIRY = 1000; // solhint-disable-next-line var-name-mixedcase PChainOwner public DEFAULT_P_CHAIN_OWNER; + address public constant DEFAULT_OWNER = 0x1234567812345678123456781234567812345678; function setUp() public { address[] memory addresses = new address[](1); - addresses[0] = 0x1234567812345678123456781234567812345678; + addresses[0] = DEFAULT_OWNER; DEFAULT_P_CHAIN_OWNER = PChainOwner({threshold: 1, addresses: addresses}); } + function testSubnetConversionMessageInvalidInputLength() public { + bytes memory packed = + ValidatorMessages.packSubnetToL1ConversionMessage(DEFAULT_SUBNET_CONVERSION_ID); + // Invalid length + bytes memory invalidPacked = new bytes(packed.length - 1); + for (uint256 i = 0; i < packed.length - 1; i++) { + invalidPacked[i] = packed[i]; + } + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidMessageLength.selector, 37, 38) + ); + ValidatorMessages.unpackSubnetToL1ConversionMessage(invalidPacked); + } + + function testSubnetConversionMessageInvalidCodecID() public { + bytes memory packed = + ValidatorMessages.packSubnetToL1ConversionMessage(DEFAULT_SUBNET_CONVERSION_ID); + + // Invalid codec ID + bytes memory invalidPacked2 = packed; + invalidPacked2[1] = 0x01; + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidCodecID.selector, uint32(1)) + ); + ValidatorMessages.unpackSubnetToL1ConversionMessage(invalidPacked2); + } + + function testSubnetConversionMessageInvalidTypeID() public { + bytes memory packed = + ValidatorMessages.packSubnetToL1ConversionMessage(DEFAULT_SUBNET_CONVERSION_ID); + // Invalid message type + bytes memory invalidPacked3 = packed; + invalidPacked3[5] = 0x01; + vm.expectRevert(ValidatorMessages.InvalidMessageType.selector); + ValidatorMessages.unpackSubnetToL1ConversionMessage(invalidPacked3); + } + + function testRegisterSubnetValidatorMessageInvalidBLSKey() public { + vm.expectRevert(ValidatorMessages.InvalidBLSPublicKey.selector); + // 47 bytes + bytes memory invalidBLSKey = bytes( + hex"3456781234567812345678123456781234567812345678123456781234567812345678123456781234567812345678" + ); + ValidatorMessages.packRegisterL1ValidatorMessage( + ValidatorMessages.ValidationPeriod({ + subnetID: DEFAULT_SUBNET_ID, + nodeID: DEFAULT_NODE_ID, + registrationExpiry: DEFAULT_EXPIRY, + blsPublicKey: invalidBLSKey, + remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, + disableOwner: DEFAULT_P_CHAIN_OWNER, + weight: DEFAULT_WEIGHT + }) + ); + } + + function testRegisterSubnetValidatorMessageInvalidInputLength() public { + bytes memory packed = _getPackedRegisterL1ValidatorMessage(); + // Invalid length + bytes memory invalidPacked = new bytes(packed.length - 1); + for (uint256 i = 0; i < packed.length - 1; i++) { + invalidPacked[i] = packed[i]; + } + vm.expectRevert( + abi.encodeWithSelector( + ValidatorMessages.InvalidMessageLength.selector, uint32(193), uint32(194) + ) + ); + ValidatorMessages.unpackRegisterL1ValidatorMessage(invalidPacked); + } + + function testRegisterSubnetValidatorMessageInvalidCodecID() public { + bytes memory packed = _getPackedRegisterL1ValidatorMessage(); + + // Invalid codec ID + bytes memory invalidPacked2 = packed; + invalidPacked2[1] = 0x01; + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidCodecID.selector, uint32(1)) + ); + ValidatorMessages.unpackRegisterL1ValidatorMessage(invalidPacked2); + } + + function testRegisterSubnetValidatorMessageInvalidTypeID() public { + bytes memory packed = _getPackedRegisterL1ValidatorMessage(); + + // Invalid message type + bytes memory invalidPacked3 = packed; + invalidPacked3[5] = 0x00; + vm.expectRevert(ValidatorMessages.InvalidMessageType.selector); + ValidatorMessages.unpackRegisterL1ValidatorMessage(invalidPacked3); + } + + function testSubnetValidatorRegistrationMessageInvalidInputLength() public { + bytes memory packed = + ValidatorMessages.packL1ValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); + + // Invalid length + bytes memory invalidPacked = new bytes(packed.length - 1); + for (uint256 i = 0; i < packed.length - 1; i++) { + invalidPacked[i] = packed[i]; + } + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidMessageLength.selector, 38, 39) + ); + ValidatorMessages.unpackL1ValidatorRegistrationMessage(invalidPacked); + } + + function testSubnetValidatorRegistrationMessageInvalidCodecID() public { + bytes memory packed = + ValidatorMessages.packL1ValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); + + // Invalid codec ID + bytes memory invalidPacked2 = packed; + invalidPacked2[1] = 0x01; + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidCodecID.selector, uint32(1)) + ); + ValidatorMessages.unpackL1ValidatorRegistrationMessage(invalidPacked2); + } + + function testSubnetValidatorRegistrationMessageInvalidTypeID() public { + bytes memory packed = + ValidatorMessages.packL1ValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); + + // Invalid message type + bytes memory invalidPacked3 = packed; + invalidPacked3[5] = 0x01; + vm.expectRevert(ValidatorMessages.InvalidMessageType.selector); + ValidatorMessages.unpackL1ValidatorRegistrationMessage(invalidPacked3); + } + + function testValidationUptimeMessageInvalidInputLength() public { + bytes memory packed = + ValidatorMessages.packValidationUptimeMessage(DEFAULT_VALIDATION_ID, 100); + + // Invalid length + bytes memory invalidPacked = new bytes(packed.length - 1); + for (uint256 i = 0; i < packed.length - 1; i++) { + invalidPacked[i] = packed[i]; + } + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidMessageLength.selector, 45, 46) + ); + ValidatorMessages.unpackValidationUptimeMessage(invalidPacked); + } + + function testValidationUptimeMessageInvalidCodecID() public { + bytes memory packed = + ValidatorMessages.packValidationUptimeMessage(DEFAULT_VALIDATION_ID, 100); + + // Invalid codec ID + bytes memory invalidPacked2 = packed; + invalidPacked2[1] = 0x01; + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidCodecID.selector, uint32(1)) + ); + ValidatorMessages.unpackValidationUptimeMessage(invalidPacked2); + } + + function testValidationUptimeMessageInvalidTypeID() public { + bytes memory packed = + ValidatorMessages.packValidationUptimeMessage(DEFAULT_VALIDATION_ID, 100); + + // Invalid message type + bytes memory invalidPacked3 = packed; + invalidPacked3[5] = 0x01; + vm.expectRevert(ValidatorMessages.InvalidMessageType.selector); + ValidatorMessages.unpackValidationUptimeMessage(invalidPacked3); + } + + function testSetSubnetValidatorWeightMessageInvalidInputLength() public { + bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( + DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT + ); + + // Invalid length + bytes memory invalidPacked = new bytes(packed.length - 1); + for (uint256 i = 0; i < packed.length - 1; i++) { + invalidPacked[i] = packed[i]; + } + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidMessageLength.selector, 53, 54) + ); + ValidatorMessages.unpackL1ValidatorWeightMessage(invalidPacked); + } + + function testSetSubnetValidatorWeightMessageInvalidCodecID() public { + bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( + DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT + ); + + // Invalid codec ID + bytes memory invalidPacked2 = packed; + invalidPacked2[1] = 0x01; + vm.expectRevert( + abi.encodeWithSelector(ValidatorMessages.InvalidCodecID.selector, uint32(1)) + ); + ValidatorMessages.unpackL1ValidatorWeightMessage(invalidPacked2); + } + + function testSetSubnetValidatorWeightMessageInvalidTypeID() public { + bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( + DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT + ); + + // Invalid message type + bytes memory invalidPacked3 = packed; + invalidPacked3[5] = 0x01; + vm.expectRevert(ValidatorMessages.InvalidMessageType.selector); + ValidatorMessages.unpackL1ValidatorWeightMessage(invalidPacked3); + } + function testRegisterSubnetValidatorMessage() public view { (bytes32 validationID, bytes memory packed) = ValidatorMessages .packRegisterL1ValidatorMessage( @@ -56,6 +272,32 @@ contract ValidatorMessagesTest is Test { assertEq(recoveredID, validationID); } + function testSubnetConversionMessage() public pure { + bytes memory packed = + ValidatorMessages.packSubnetToL1ConversionMessage(DEFAULT_SUBNET_CONVERSION_ID); + bytes32 conversionID = ValidatorMessages.unpackSubnetToL1ConversionMessage(packed); + assertEq(conversionID, DEFAULT_SUBNET_CONVERSION_ID); + } + + function testPackL1ConversionData() public pure { + InitialValidator[] memory initialValidators = new InitialValidator[](1); + initialValidators[0] = InitialValidator({ + nodeID: DEFAULT_NODE_ID, + weight: DEFAULT_WEIGHT, + blsPublicKey: DEFAULT_BLS_PUBLIC_KEY + }); + bytes memory packed = ValidatorMessages.packConversionData( + ConversionData({ + subnetID: DEFAULT_SUBNET_ID, + validatorManagerBlockchainID: DEFAULT_SUBNET_CONVERSION_ID, + validatorManagerAddress: DEFAULT_OWNER, + initialValidators: initialValidators + }) + ); + + assertEq(packed.length, 186); + } + function testSubnetValidatorRegistrationMessage() public pure { bytes memory packed = ValidatorMessages.packL1ValidatorRegistrationMessage(DEFAULT_VALIDATION_ID, true); @@ -76,7 +318,7 @@ contract ValidatorMessagesTest is Test { assertEq(weight, DEFAULT_WEIGHT); } - function testSubnetValidatorWeightUpdateMessag() public pure { + function testSubnetValidatorWeightUpdateMessage() public pure { bytes memory packed = ValidatorMessages.packL1ValidatorWeightMessage( DEFAULT_VALIDATION_ID, 100, DEFAULT_WEIGHT ); @@ -95,4 +337,19 @@ contract ValidatorMessagesTest is Test { assertEq(validationID, DEFAULT_VALIDATION_ID); assertEq(uptime, 100); } + + function _getPackedRegisterL1ValidatorMessage() internal returns (bytes memory) { + (, bytes memory packed) = ValidatorMessages.packRegisterL1ValidatorMessage( + ValidatorMessages.ValidationPeriod({ + subnetID: DEFAULT_SUBNET_ID, + nodeID: DEFAULT_NODE_ID, + registrationExpiry: DEFAULT_EXPIRY, + blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, + remainingBalanceOwner: DEFAULT_P_CHAIN_OWNER, + disableOwner: DEFAULT_P_CHAIN_OWNER, + weight: DEFAULT_WEIGHT + }) + ); + return packed; + } } diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index 98ac15d71..84f5c2185 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -334,7 +334,7 @@ func InitializeValidatorSet( validationIDs = append(validationIDs, subnetInfo.SubnetID.Append(uint32(i))) } - Expect(initialValidatorCreatedEvent.Weight).Should(Equal(new(big.Int).SetUint64(nodes[0].Weight))) + Expect(initialValidatorCreatedEvent.Weight).Should(Equal(nodes[0].Weight)) emittedValidationID := ids.ID(initialValidatorCreatedEvent.ValidationID) Expect(emittedValidationID).Should(Equal(validationIDs[0])) @@ -1070,7 +1070,7 @@ func InitializeAndCompleteEndInitialPoSValidation( ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight.Uint64()).Should(Equal(weight)) + Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain // (Sending to the P-Chain will be skipped for now) @@ -1167,7 +1167,7 @@ func InitializeAndCompleteEndPoSValidation( ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight.Uint64()).Should(Equal(node.Weight)) + Expect(validatorRemovalEvent.Weight).Should(Equal(node.Weight)) // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain unsignedMessage := ExtractWarpMessageFromLog(ctx, receipt, subnetInfo) @@ -1245,7 +1245,7 @@ func InitializeAndCompleteEndInitialPoAValidation( ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight.Uint64()).Should(Equal(weight)) + Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain // (Sending to the P-Chain will be skipped for now) @@ -1320,7 +1320,7 @@ func InitializeAndCompleteEndPoAValidation( ) Expect(err).Should(BeNil()) Expect(validatorRemovalEvent.ValidationID[:]).Should(Equal(validationID[:])) - Expect(validatorRemovalEvent.Weight.Uint64()).Should(Equal(weight)) + Expect(validatorRemovalEvent.Weight).Should(Equal(weight)) // Gather subnet-evm Warp signatures for the SetSubnetValidatorWeightMessage & relay to the P-Chain // (Sending to the P-Chain will be skipped for now)