diff --git a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go index cebf9195c..096976097 100644 --- a/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/validator-manager/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -68,7 +68,6 @@ type Validator struct { // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { - PChainBlockchainID [32]byte SubnetID [32]byte ChurnPeriodSeconds uint64 MaximumChurnPercentage uint8 @@ -83,8 +82,8 @@ type ValidatorRegistrationInput struct { // ERC20TokenStakingManagerMetaData contains all meta data concerning the ERC20TokenStakingManager contract. var ERC20TokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b506040516160fc3803806160fc83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615faf8061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c806376f78621116100d9578063b771b3bc11610093578063c974d1b61161006e578063c974d1b6146103a7578063d5f20ff6146103af578063df93d8de146103cf578063eb0acb89146103d9575f80fd5b8063b771b3bc1461035b578063ba3a4b9714610381578063bee0a03f14610394575f80fd5b806376f78621146102f45780638280a25a1461030757806393e245981461030f57806398f3e2b4146103225780639e1bc4ef14610335578063a3a65e4814610348575f80fd5b806335455ded1161014457806360305d621161011f57806360305d621461029e57806361e2f490146102bb57806362065856146102ce57806366435abf146102e1575f80fd5b806335455ded1461025c578063467ef06f146102785780635297fae61461028b575f80fd5b80630118acc41461018b5780630322ed98146101a05780630cdd0985146101b3578063151d30d1146102045780632e2194d81461021e578063330a0a3a14610249575b5f80fd5b61019e6101993660046152c0565b6103ec565b005b61019e6101ae3660046152fb565b610890565b6101f16101c13660046152fb565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b61020c600a81565b60405160ff90911681526020016101fb565b61023161022c3660046152fb565b610a49565b6040516001600160401b0390911681526020016101fb565b61019e610257366004615326565b610a5f565b61026561271081565b60405161ffff90911681526020016101fb565b61019e610286366004615364565b610b3e565b61019e61029936600461537d565b610bde565b6102a6601481565b60405163ffffffff90911681526020016101fb565b61019e6102c93660046153a5565b610db3565b6101f16102dc366004615409565b6113e7565b6102316102ef3660046152fb565b611400565b61019e6103023660046152c0565b611414565b61020c603081565b61019e61031d3660046152fb565b611657565b61019e61033036600461537d565b61175d565b6101f1610343366004615422565b611a81565b61019e610356366004615364565b611aad565b6103696005600160991b0181565b6040516001600160a01b0390911681526020016101fb565b61019e61038f3660046152fb565b611c65565b61019e6103a23660046152fb565b611eeb565b61020c601481565b6103c26103bd3660046152fb565b611fff565b6040516101fb9190615456565b6102316202a30081565b6101f16103e736600461551d565b6120c7565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615f0383398151915293929190829060ff16600481111561044d5761044d615442565b600481111561045e5761045e615442565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f6104e282611fff565b90506002835160048111156104f9576104f9615442565b1461054b5760405162461bcd60e51b815260206004820152602a60248201525f80516020615f238339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146105b05760405162461bcd60e51b815260206004820152603360248201525f80516020615f238339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b6064820152608401610542565b6003835280515f9060029060058111156105cc576105cc615442565b036106235786156105e4576105e183876120fc565b90505b5f846060015183608001516105f99190615596565b90506106058482612398565b506001600160401b0390811660e0870152421660a086015250610657565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b561068a86606001516113e7565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b91906155b6565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff1916600183600481111561076a5761076a615442565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c699161087e916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615f838339815191526020526040808220815160e0810190925280545f80516020615f4383398151915293929190829060ff1660058111156108dd576108dd615442565b60058111156108ee576108ee615442565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091508151600581111561095d5761095d615442565b146109c25760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b6064820152608401610542565b6005600160991b016001600160a01b031663ee5b48eb6109e78584606001515f6124ef565b6040518263ffffffff1660e01b8152600401610a0391906155ef565b6020604051808303815f875af1158015610a1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4391906155b6565b50505050565b5f610a5964e8d4a5100083615621565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610aa8575080546001600160401b03808416911610155b15610ac65760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610af18484612716565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615f038339815191525f80610b5784612730565b91509150610b6482612a7a565b610b6e5750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610b9c57610b9c615442565b03610bc1575f83815260088501602052604081208054919055610bbf8282612ab5565b505b610bd781610bd284604001516113e7565b612b2b565b5050505050565b5f80516020615f038339815191525f610bf684612b4e565b90505f80610c078360400151612d28565b50915091505f610c1683611fff565b9050816001600160401b031681606001516001600160401b03161015610c4e5760405162461bcd60e51b815260040161054290615640565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610c935760405162461bcd60e51b815260040161054290615682565b60015f87815260068701602052604090205460ff166004811115610cb957610cb9615442565b14610d225760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b6064820152608401610542565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615f438339815191529060ff1615610e505760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b6064820152608401610542565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb791906155b6565b836020013514610f195760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b6064820152608401610542565b30610f2a60608501604086016156cb565b6001600160a01b031614610f9c5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b6064820152608401610542565b5f610faa60608501856156e6565b91505f9050843560208601356014610fc86060890160408a016156cb565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff1610156112f7575f61104860608901896156e6565b8363ffffffff1681811061105e5761105e61572b565b9050602002810190611070919061573f565b611079906157ef565b80515f81815260098901602052604090205491925090156110ac5760405162461bcd60e51b815260040161054290615886565b84825f0151836020015184604001516040516020016110ce94939291906158ce565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161111c919061591d565b602060405180830381855afa158015611137573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061115a91906155b6565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff191660018360058111156111e6576111e6615442565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff19169284169290921790915584015161129991168661592e565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a3505050806112f090615941565b905061102c565b50600584018190555f61130986612b4e565b90505f6113198260400151612f63565b90508060028560405161132c919061591d565b602060405180830381855afa158015611347573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061136a91906155b6565b146113ce5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b6064820152608401610542565b505050600a909201805460ff1916600117905550505050565b5f610a596001600160401b03831664e8d4a51000615963565b5f61140a82611fff565b6080015192915050565b5f80516020615f038339815191525f61142c856130d5565b905061143785612a7a565b611442575050505050565b5f8581526005830160205260409020546001600160a01b031633146114795760405162461bcd60e51b81526004016105429061597a565b5f85815260058301602052604090205460a08201516114a891600160b01b90046001600160401b0316906159cc565b6001600160401b03168160c001516001600160401b031610156115295760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b6064820152608401610542565b8315610bd7575f61153a86856120fc565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b590611591906113e7565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015611607573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162b91906155b6565b5f8781526008850160205260408120805490919061164a90849061592e565b9091555050505050505050565b5f80516020615f038339815191525f61166f83611fff565b905060048151600581111561168657611686615442565b146116f05760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b6064820152608401610542565b5f8381526005830160205260409020546001600160a01b031633146117275760405162461bcd60e51b81526004016105429061597a565b5f83815260088301602090815260408083208054908490556005860190925290912054610a43906001600160a01b031682612ab5565b611765613350565b5f80516020615f038339815191525f61177d84612b4e565b90505f8061178e8360400151612d28565b50915091505f61179d83611fff565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff1660048111156117d7576117d7615442565b60048111156117e8576117e8615442565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff1916905590840151919250848116911610156118cc5760405162461bcd60e51b815260040161054290615640565b826001600160401b03168160e001516001600160401b031611156119025760405162461bcd60e51b815260040161054290615682565b60038151600481111561191757611917615442565b1461196b5760405162461bcd60e51b815260206004820152603160248201525f80516020615f238339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b6064820152608401610542565b5f878152600787016020908152604080832080549084905587845260058a01909252822054909190612710906119ac90600160a01b900461ffff1684615963565b6119b69190615621565b905080886008015f8881526020019081526020015f205f8282546119da919061592e565b909155505f90506119eb82846159ec565b90506119fb846020015182612ab5565b611a108460200151610bd286606001516113e7565b856001600160401b0316878b7f9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d50338486604051611a56929190918252602082015260400190565b60405180910390a4505050505050505050611a7d60015f80516020615f6383398151915255565b5050565b5f611a8a613350565b611a9583338461339a565b9050610a5960015f80516020615f6383398151915255565b5f80516020615f438339815191525f611ac583612b4e565b90505f80611ad68360400151613754565b9150915080611b385760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b6064820152608401610542565b5f82815260078501602052604081208054611b52906159ff565b9050118015611b84575060015f83815260088601602052604090205460ff166005811115611b8257611b82615442565b145b611ba05760405162461bcd60e51b815260040161054290615a37565b5f8281526007850160205260408120611bb891615210565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615f0383398151915293929190829060ff166004811115611cc657611cc6615442565b6004811115611cd757611cd7615442565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611d5e57611d5e615442565b1480611d7c5750600381516004811115611d7a57611d7a615442565b145b611dd05760405162461bcd60e51b815260206004820152603260248201525f80516020615f23833981519152604482015271737461747573206e6f742070656e64696e6760701b6064820152608401610542565b5f611dde8260400151611fff565b905080606001516001600160401b03165f03611e625760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e204944006064820152608401610542565b6005600160991b016001600160a01b031663ee5b48eb611e8f8460400151846060015185608001516124ef565b6040518263ffffffff1660e01b8152600401611eab91906155ef565b6020604051808303815f875af1158015611ec7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd791906155b6565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615f43833981519152929190611f33906159ff565b9050118015611f65575060015f83815260088301602052604090205460ff166005811115611f6357611f63615442565b145b611f815760405162461bcd60e51b815260040161054290615a37565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611fba9190600401615a7e565b6020604051808303815f875af1158015611fd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ffa91906155b6565b505050565b612007615247565b5f8281525f80516020615f83833981519152602052604090819020815160e0810190925280545f80516020615f43833981519152929190829060ff16600581111561205457612054615442565b600581111561206557612065615442565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b5f6120d0613350565b6120dc858585856138f5565b90506120f460015f80516020615f6383398151915255565b949350505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612147573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261216e9190810190615b13565b91509150806121d15760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b6064820152608401610542565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612214573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223891906155b6565b82511461229c5760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b6064820152608401610542565b60208201516001600160a01b0316156123125760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b6064820152608401610542565b5f806123218460400151613b6a565b9150915081871461238e5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b6064820152608401610542565b9695505050505050565b5f8281525f80516020615f83833981519152602052604081206002015481905f80516020615f4383398151915290600160801b90046001600160401b03166123e08582613d42565b5f6123ea87613f50565b5f8881526008850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61243a8a858b6124ef565b6040518263ffffffff1660e01b815260040161245691906155ef565b6020604051808303815f875af1158015612472573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061249691906155b6565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b6002811015612568576125288160016159ec565b612533906008615963565b5081515f9083908390811061254a5761254a61572b565b60200101906001600160f81b03191690815f1a905350600101612514565b505f5b60048110156125d35761257f8160036159ec565b61258a906008615963565b600263ffffffff16901c60f81b828260026125a5919061592e565b815181106125b5576125b561572b565b60200101906001600160f81b03191690815f1a90535060010161256b565b505f5b6020811015612635576125ea81601f6159ec565b6125f5906008615963565b86901c60f81b8261260783600661592e565b815181106126175761261761572b565b60200101906001600160f81b03191690815f1a9053506001016125d6565b505f5b60088110156126a05761264c8160076159ec565b612657906008615963565b6001600160401b038616901c60f81b8261267283602661592e565b815181106126825761268261572b565b60200101906001600160f81b03191690815f1a905350600101612638565b505f5b600881101561270b576126b78160076159ec565b6126c2906008615963565b6001600160401b038516901c60f81b826126dd83602e61592e565b815181106126ed576126ed61572b565b60200101906001600160f81b03191690815f1a9053506001016126a3565b5090505b9392505050565b61271e613fe0565b6127278261402b565b611a7d816140a2565b5f612739615247565b5f80516020615f438339815191525f61275185612b4e565b90505f806127628360400151613754565b9150915080156127c75760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b6064820152608401610542565b5f828152600885016020526040808220815160e081019092528054829060ff1660058111156127f8576127f8615442565b600581111561280957612809615442565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f908251600581111561287a5761287a615442565b1480612898575060018251600581111561289657612896615442565b145b6128f75760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b6064820152608401610542565b60038251600581111561290c5761290c615442565b036129195750600461291d565b5060055b6020808301515f9081526009880190915260408120558181600581111561294657612946615442565b9081600581111561295957612959615442565b9052505f84815260088701602052604090208251815484929190829060ff1916600183600581111561298d5761298d615442565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612a4157612a41615442565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b5f5f80516020615ee383398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612b10575f80fd5b505af1158015612b22573d5f803e3d5ffd5b50505050505050565b5f80516020615ee383398151915254611a7d906001600160a01b03168383614143565b60408051606080820183525f8083526020830181905292820152905f80516020615f438339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612bc3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612bea9190810190615b13565b9150915080612c4a5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b6064820152608401610542565b8254825114612cad5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b6064820152608401610542565b60208201516001600160a01b031615612d205760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b6064820152608401610542565b509392505050565b5f805f8351603614612d4c5760405162461bcd60e51b815260040161054290615be5565b5f805b6002811015612d9b57612d638160016159ec565b612d6e906008615963565b61ffff16868281518110612d8457612d8461572b565b016020015160f81c901b9190911790600101612d4f565b5061ffff811615612dbe5760405162461bcd60e51b815260040161054290615c2e565b5f805b6004811015612e1957612dd58160036159ec565b612de0906008615963565b63ffffffff1687612df283600261592e565b81518110612e0257612e0261572b565b016020015160f81c901b9190911790600101612dc1565b5063ffffffff8116600414612e405760405162461bcd60e51b815260040161054290615c71565b5f805b6020811015612e9557612e5781601f6159ec565b612e62906008615963565b88612e6e83600661592e565b81518110612e7e57612e7e61572b565b016020015160f81c901b9190911790600101612e43565b505f805b6008811015612ef457612ead8160076159ec565b612eb8906008615963565b6001600160401b031689612ecd83602661592e565b81518110612edd57612edd61572b565b016020015160f81c901b9190911790600101612e99565b505f805b6008811015612f5357612f0c8160076159ec565b612f17906008615963565b6001600160401b03168a612f2c83602e61592e565b81518110612f3c57612f3c61572b565b016020015160f81c901b9190911790600101612ef8565b5091989097509095509350505050565b5f8151602614612f855760405162461bcd60e51b815260040161054290615be5565b5f805b6002811015612fd457612f9c8160016159ec565b612fa7906008615963565b61ffff16848281518110612fbd57612fbd61572b565b016020015160f81c901b9190911790600101612f88565b5061ffff811615612ff75760405162461bcd60e51b815260040161054290615c2e565b5f805b60048110156130525761300e8160036159ec565b613019906008615963565b63ffffffff168561302b83600261592e565b8151811061303b5761303b61572b565b016020015160f81c901b9190911790600101612ffa565b5063ffffffff8116156130775760405162461bcd60e51b815260040161054290615c71565b5f805b60208110156130cc5761308e81601f6159ec565b613099906008615963565b866130a583600661592e565b815181106130b5576130b561572b565b016020015160f81c901b919091179060010161307a565b50949350505050565b6130dd615247565b5f8281525f80516020615f838339815191526020526040808220815160e0810190925280545f80516020615f4383398151915293929190829060ff16600581111561312a5761312a615442565b600581111561313b5761313b615442565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c090910152909150815160058111156131ad576131ad615442565b146132095760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b6064820152608401610542565b60038152426001600160401b031660c08201525f84815260088301602052604090208151815483929190829060ff1916600183600581111561324d5761324d615442565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6132f98582612398565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f80516020615f6383398151915280546001190161338157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f80516020615f6383398151915255565b5f5f80516020615f03833981519152816133b661022c856141a2565b90505f6133c287611fff565b90506133cd87612a7a565b61342a5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b6064820152608401610542565b60028151600581111561343f5761343f615442565b1461349e5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b6064820152608401610542565b5f8282608001516134af91906159cc565b600485015460408401519192506134d1916001600160401b0390911690615cb8565b6001600160401b0316816001600160401b031611156135505760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b6064820152608401610542565b5f8061355c8a84612398565b915091505f8a8360405160200161358a92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff1916600183600481111561362557613625615442565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f8082516027146137775760405162461bcd60e51b815260040161054290615be5565b5f805b60028110156137c65761378e8160016159ec565b613799906008615963565b61ffff168582815181106137af576137af61572b565b016020015160f81c901b919091179060010161377a565b5061ffff8116156137e95760405162461bcd60e51b815260040161054290615c2e565b5f805b6004811015613844576138008160036159ec565b61380b906008615963565b63ffffffff168661381d83600261592e565b8151811061382d5761382d61572b565b016020015160f81c901b91909117906001016137ec565b5063ffffffff811660031461386b5760405162461bcd60e51b815260040161054290615c71565b5f805b60208110156138c05761388281601f6159ec565b61388d906008615963565b8761389983600661592e565b815181106138a9576138a961572b565b016020015160f81c901b919091179060010161386e565b505f866026815181106138d5576138d561572b565b016020015191976001600160f81b03199092161515965090945050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615f038339815191529061ffff861610801590613941575061271061ffff861611155b61395d5760405162461bcd60e51b815260040161054290615ce3565b60028101546001600160401b0390811690851610156139d65760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b6064820152608401610542565b8054831015613a395760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b6064820152608401610542565b8060010154831115613aa05760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b6064820152608401610542565b5f613aaa846141a2565b90505f613ab682610a49565b90505f613ac389836141c5565b90506040518060600160405280613ad73390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b5f808251602e14613b8d5760405162461bcd60e51b815260040161054290615be5565b5f805b6002811015613bdc57613ba48160016159ec565b613baf906008615963565b61ffff16858281518110613bc557613bc561572b565b016020015160f81c901b9190911790600101613b90565b5061ffff811615613bff5760405162461bcd60e51b815260040161054290615c2e565b5f805b6004811015613c5a57613c168160036159ec565b613c21906008615963565b63ffffffff1686613c3383600261592e565b81518110613c4357613c4361572b565b016020015160f81c901b9190911790600101613c02565b5063ffffffff8116600514613c815760405162461bcd60e51b815260040161054290615c71565b5f805b6020811015613cd657613c9881601f6159ec565b613ca3906008615963565b87613caf83600661592e565b81518110613cbf57613cbf61572b565b016020015160f81c901b9190911790600101613c84565b505f805b6008811015613d3557613cee8160076159ec565b613cf9906008615963565b6001600160401b031688613d0e83602661592e565b81518110613d1e57613d1e61572b565b016020015160f81c901b9190911790600101613cda565b5090969095509350505050565b5f80516020615f438339815191525f6001600160401b038084169085161115613d7657613d6f8385615596565b9050613d83565b613d808484615596565b90505b6040805160808101825260038401548082526004850154602083015260058501549282019290925260068401546001600160401b0316606082015242911580613de5575060028401548151613de1916001600160401b03169061592e565b8210155b15613e0b576001600160401b038316606082015281815260408101516020820152613e2a565b8281606001818151613e1d91906159cc565b6001600160401b03169052505b6060810151613e3a906064615cb8565b602082015160028601546001600160401b039290921691613e659190600160401b900460ff16615963565b1015613ec95760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b6064820152608401610542565b856001600160401b031681604001818151613ee4919061592e565b9052506040810180516001600160401b0387169190613f049083906159ec565b905250805160038501556020810151600485015560408101516005850155606001516006909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615f838339815191526020526040812060020180545f80516020615f4383398151915291600160401b9091046001600160401b0316906008613f9a83615d2e565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661402957604051631afcd79f60e31b815260040160405180910390fd5b565b614033613fe0565b61403c8161472a565b614044614743565b61409f608082013560a083013561406160e0850160c08601615409565b614072610100860160e08701615d49565b61ffff1661408861012087016101008801615d62565b61409a610140880161012089016156cb565b614753565b50565b6140aa613fe0565b5f80516020615ee38339815191526001600160a01b0382166141235760405162461bcd60e51b815260206004820152602c60248201527f4552433230546f6b656e5374616b696e674d616e616765723a207a65726f207460448201526b6f6b656e206164647265737360a01b6064820152608401610542565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03838116602483015260448201839052611ffa91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614997565b5f610a59825f80516020615ee3833981519152546001600160a01b0316906149f8565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff166142505760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b6064820152608401610542565b5f80516020615f438339815191524261426f6040860160208701615409565b6001600160401b0316116142e15760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b6064820152608401610542565b6142f16040850160208601615409565b6001600160401b03166143076202a3004261592e565b1161437a5760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e206675747572650000000000000000006064820152608401610542565b83356143d25760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b6064820152608401610542565b83355f908152600982016020526040902054156144015760405162461bcd60e51b815260040161054290615886565b60306144106040860186615d82565b9050146144755760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b6064820152608401610542565b61447f835f613d42565b5f806145196040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906144c49190615409565b6001600160401b031681526020016144df60408a018a615d82565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614b5a565b5f828152600786016020526040902091935091506145378282615e08565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906145649085906004016155ef565b6020604051808303815f875af1158015614580573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906145a491906155b6565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff1916600183600581111561461c5761461c615442565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916146fc918e01908e01615409565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614732613fe0565b61473a614f09565b61409f81614f11565b61474b613fe0565b6140296150b3565b61475b613fe0565b5f80516020615f03833981519152836147c75760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b6064820152608401610542565b6127108411156147e95760405162461bcd60e51b815260040161054290615ce3565b858711156148515760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b6064820152608401610542565b5f8360ff16116148be5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b6064820152608401610542565b600a60ff841611156149305760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b6064820152608401610542565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6149ab6001600160a01b038416836150bb565b905080515f141580156149cf5750808060200190518101906149cd9190615ec7565b155b15611ffa57604051635274afe760e01b81526001600160a01b0384166004820152602401610542565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614a3e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a6291906155b6565b9050614a796001600160a01b0385163330866150c8565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015614abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614ae191906155b6565b9050818111614b475760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610542565b614b5182826159ec565b95945050505050565b5f6060826080015151603014614bc45760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b6064820152608401610542565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614c3b57614bfb8160016159ec565b614c06906008615963565b5081515f90839083908110614c1d57614c1d61572b565b60200101906001600160f81b03191690815f1a905350600101614be7565b505f5b6004811015614ca357614c528160036159ec565b614c5d906008615963565b600160ff919091161c60f81b82614c7583600261592e565b81518110614c8557614c8561572b565b60200101906001600160f81b03191690815f1a905350600101614c3e565b505f5b6020811015614d005784518160208110614cc257614cc261572b565b1a60f81b82614cd283600661592e565b81518110614ce257614ce261572b565b60200101906001600160f81b03191690815f1a905350600101614ca6565b505f5b6020811015614d605784602001518160208110614d2257614d2261572b565b1a60f81b82614d3283602661592e565b81518110614d4257614d4261572b565b60200101906001600160f81b03191690815f1a905350600101614d03565b505f5b6008811015614dd457614d778160076159ec565b614d82906008615963565b60ff1685604001516001600160401b0316901c60f81b82826046614da6919061592e565b81518110614db657614db661572b565b60200101906001600160f81b03191690815f1a905350600101614d63565b505f5b6030811015614e3f5784608001518181518110614df657614df661572b565b01602001516001600160f81b03191682614e1183604e61592e565b81518110614e2157614e2161572b565b60200101906001600160f81b03191690815f1a905350600101614dd7565b505f5b6008811015614eb157614e568160076159ec565b614e61906008615963565b60608601516001600160401b0390811691161c60f81b82614e8383607e61592e565b81518110614e9357614e9361572b565b60200101906001600160f81b03191690815f1a905350600101614e42565b50600281604051614ec2919061591d565b602060405180830381855afa158015614edd573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614f0091906155b6565b94909350915050565b614029613fe0565b614f19613fe0565b80355f80516020615f4383398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614f656080840160608501615d62565b60ff161115614fd25760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b6064820152608401610542565b5f614fe36080840160608501615d62565b60ff161161504b5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b6064820152608401610542565b61505b6080830160608401615d62565b60028201805460ff92909216600160401b0260ff60401b1990921691909117905561508c6060830160408401615409565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b613387613fe0565b606061270f83835f615101565b6040516001600160a01b038481166024830152838116604483015260648201839052610a439186918216906323b872dd90608401614170565b6060814710156151265760405163cd78605960e01b8152306004820152602401610542565b5f80856001600160a01b03168486604051615141919061591d565b5f6040518083038185875af1925050503d805f811461517b576040519150601f19603f3d011682016040523d82523d5f602084013e615180565b606091505b509150915061238e8683836060826151a05761519b826151e7565b61270f565b81511580156151b757506001600160a01b0384163b155b156151e057604051639996b31560e01b81526001600160a01b0385166004820152602401610542565b508061270f565b8051156151f75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461521c906159ff565b5f825580601f1061522b575050565b601f0160209004905f5260205f209081019061409f9190615283565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115615297575f8155600101615284565b5090565b801515811461409f575f80fd5b803563ffffffff811681146152bb575f80fd5b919050565b5f805f606084860312156152d2575f80fd5b8335925060208401356152e48161529b565b91506152f2604085016152a8565b90509250925092565b5f6020828403121561530b575f80fd5b5035919050565b6001600160a01b038116811461409f575f80fd5b5f80828403610160811215615339575f80fd5b61014080821215615348575f80fd5b849350830135905061535981615312565b809150509250929050565b5f60208284031215615374575f80fd5b61270f826152a8565b5f806040838503121561538e575f80fd5b615397836152a8565b946020939093013593505050565b5f80604083850312156153b6575f80fd5b82356001600160401b038111156153cb575f80fd5b8301608081860312156153dc575f80fd5b91506153ea602084016152a8565b90509250929050565b80356001600160401b03811681146152bb575f80fd5b5f60208284031215615419575f80fd5b61270f826153f3565b5f8060408385031215615433575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b815160e08201906006811061547957634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b03604084015116604083015260608301516154b460608401826001600160401b03169052565b5060808301516154cf60808401826001600160401b03169052565b5060a08301516154ea60a08401826001600160401b03169052565b5060c083015161550560c08401826001600160401b03169052565b5092915050565b803561ffff811681146152bb575f80fd5b5f805f8060808587031215615530575f80fd5b84356001600160401b03811115615545575f80fd5b850160608188031215615556575f80fd5b93506155646020860161550c565b9250615572604086016153f3565b9396929550929360600135925050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908082111561550557615505615582565b5f602082840312156155c6575f80fd5b5051919050565b5f5b838110156155e75781810151838201526020016155cf565b50505f910152565b602081525f825180602084015261560d8160408501602087016155cd565b601f01601f19169190910160400192915050565b5f8261563b57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b5f602082840312156156db575f80fd5b813561270f81615312565b5f808335601e198436030181126156fb575f80fd5b8301803591506001600160401b03821115615714575f80fd5b6020019150600581901b36038213156124e8575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615753575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156157935761579361575d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156157c1576157c161575d565b604052919050565b5f6001600160401b038211156157e1576157e161575d565b50601f01601f191660200190565b5f606082360312156157ff575f80fd5b615807615771565b8235815260206158188185016153f3565b8183015260408401356001600160401b03811115615834575f80fd5b840136601f820112615844575f80fd5b8035615857615852826157c9565b615799565b818152368483850101111561586a575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516158df818460208a016155cd565b80830190508581526001600160401b0360c01b8560c01b166020820152835161590f8160288401602088016155cd565b016028019695505050505050565b5f82516157538184602087016155cd565b80820180821115610a5957610a59615582565b5f63ffffffff80831681810361595957615959615582565b6001019392505050565b8082028115828204841417610a5957610a59615582565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b0381811683821601908082111561550557615505615582565b81810381811115610a5957610a59615582565b600181811c90821680615a1357607f821691505b602082108103615a3157634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615a90816159ff565b806020870152604060018084165f8114615ab15760018114615acd57615afa565b60ff19851660408a0152604084151560051b8a01019550615afa565b895f5260205f205f5b85811015615af15781548b8201860152908301908801615ad6565b8a016040019650505b509398975050505050505050565b80516152bb8161529b565b5f8060408385031215615b24575f80fd5b82516001600160401b0380821115615b3a575f80fd5b9084019060608287031215615b4d575f80fd5b615b55615771565b82518152602080840151615b6881615312565b82820152604084015183811115615b7d575f80fd5b80850194505087601f850112615b91575f80fd5b83519250615ba1615852846157c9565b8381528882858701011115615bb4575f80fd5b615bc3848383018488016155cd565b80604084015250819550615bd8818801615b08565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615cdb57615cdb615582565b505092915050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b5f6001600160401b0380831681810361595957615959615582565b5f60208284031215615d59575f80fd5b61270f8261550c565b5f60208284031215615d72575f80fd5b813560ff8116811461270f575f80fd5b5f808335601e19843603018112615d97575f80fd5b8301803591506001600160401b03821115615db0575f80fd5b6020019150368190038213156124e8575f80fd5b601f821115611ffa57805f5260205f20601f840160051c81016020851015615de95750805b601f840160051c820191505b81811015610bd7575f8155600101615df5565b81516001600160401b03811115615e2157615e2161575d565b615e3581615e2f84546159ff565b84615dc4565b602080601f831160018114615e68575f8415615e515750858301515b5f19600386901b1c1916600185901b178555615ebf565b5f85815260208120601f198616915b82811015615e9657888601518255948401946001909101908401615e77565b5085821015615eb357878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215615ed7575f80fd5b815161270f8161529b56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20Mintable\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"delegationAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"stakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressEmptyCode\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"SafeERC20FailedOperation\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561000f575f80fd5b506040516160d83803806160d883398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615f8b8061014d5f395ff3fe608060405234801561000f575f80fd5b50600436106101a1575f3560e01c806376f78621116100f3578063ba3a4b9711610093578063d5f20ff61161006e578063d5f20ff6146103bd578063df93d8de146103dd578063eb0acb89146103e7578063f09969ae146103fa575f80fd5b8063ba3a4b971461038f578063bee0a03f146103a2578063c974d1b6146103b5575f80fd5b806398f3e2b4116100ce57806398f3e2b4146103305780639e1bc4ef14610343578063a3a65e4814610356578063b771b3bc14610369575f80fd5b806376f78621146103025780638280a25a1461031557806393e245981461031d575f80fd5b8063467ef06f1161015e57806361e2f4901161013957806361e2f490146102c257806362065856146102d557806366435abf146102e8578063732214f8146102fb575f80fd5b8063467ef06f1461027f5780635297fae61461029257806360305d62146102a5575f80fd5b80630118acc4146101a55780630322ed98146101ba5780630cdd0985146101cd578063151d30d11461021e5780632e2194d81461023857806335455ded14610263575b5f80fd5b6101b86101b33660046152a3565b61040d565b005b6101b86101c83660046152de565b6108b1565b61020b6101db3660046152de565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08602052604090205490565b6040519081526020015b60405180910390f35b610226600a81565b60405160ff9091168152602001610215565b61024b6102463660046152de565b610a6a565b6040516001600160401b039091168152602001610215565b61026c61271081565b60405161ffff9091168152602001610215565b6101b861028d3660046152f5565b610a80565b6101b86102a036600461530e565b610b20565b6102ad601481565b60405163ffffffff9091168152602001610215565b6101b86102d0366004615336565b610cf5565b61020b6102e336600461539a565b611329565b61024b6102f63660046152de565b611342565b61020b5f81565b6101b86103103660046152a3565b611356565b610226603081565b6101b861032b3660046152de565b611599565b6101b861033e36600461530e565b61169f565b61020b6103513660046153b3565b6119c3565b6101b86103643660046152f5565b6119ef565b6103776005600160991b0181565b6040516001600160a01b039091168152602001610215565b6101b861039d3660046152de565b611ba7565b6101b86103b03660046152de565b611e2d565b610226601481565b6103d06103cb3660046152de565b611f41565b60405161021591906153e7565b61024b6202a30081565b61020b6103f53660046154a7565b612009565b6101b8610408366004615520565b61203e565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615edf83398151915293929190829060ff16600481111561046e5761046e6153d3565b600481111561047f5761047f6153d3565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f61050382611f41565b905060028351600481111561051a5761051a6153d3565b1461056c5760405162461bcd60e51b815260206004820152602a60248201525f80516020615eff8339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146105d15760405162461bcd60e51b815260206004820152603360248201525f80516020615eff8339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b6064820152608401610563565b6003835280515f9060029060058111156105ed576105ed6153d3565b0361064457861561060557610602838761211d565b90505b5f8460600151836080015161061a9190615572565b905061062684826123b9565b506001600160401b0390811660e0870152421660a086015250610678565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b56106ab8660600151611329565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015610728573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074c9190615592565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff1916600183600481111561078b5761078b6153d3565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c699161089f916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615f5f8339815191526020526040808220815160e0810190925280545f80516020615f1f83398151915293929190829060ff1660058111156108fe576108fe6153d3565b600581111561090f5761090f6153d3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091508151600581111561097e5761097e6153d3565b146109e35760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b6064820152608401610563565b6005600160991b016001600160a01b031663ee5b48eb610a088584606001515f612510565b6040518263ffffffff1660e01b8152600401610a2491906155cb565b6020604051808303815f875af1158015610a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a649190615592565b50505050565b5f610a7a64e8d4a51000836155fd565b92915050565b5f80516020615edf8339815191525f80610a9984612737565b91509150610aa682612a81565b610ab05750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610ade57610ade6153d3565b03610b03575f83815260088501602052604081208054919055610b018282612abc565b505b610b1981610b148460400151611329565b612b32565b5050505050565b5f80516020615edf8339815191525f610b3884612b55565b90505f80610b498360400151612d1b565b50915091505f610b5883611f41565b9050816001600160401b031681606001516001600160401b03161015610b905760405162461bcd60e51b81526004016105639061561c565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610bd55760405162461bcd60e51b81526004016105639061565e565b60015f87815260068701602052604090205460ff166004811115610bfb57610bfb6153d3565b14610c645760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b6064820152608401610563565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615f1f8339815191529060ff1615610d925760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b6064820152608401610563565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190615592565b836020013514610e5b5760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b6064820152608401610563565b30610e6c60608501604086016156a7565b6001600160a01b031614610ede5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b6064820152608401610563565b5f610eec60608501856156c2565b91505f9050843560208601356014610f0a6060890160408a016156a7565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015611239575f610f8a60608901896156c2565b8363ffffffff16818110610fa057610fa0615707565b9050602002810190610fb2919061571b565b610fbb906157cb565b80515f8181526008890160205260409020549192509015610fee5760405162461bcd60e51b815260040161056390615862565b84825f01518360200151846040015160405160200161101094939291906158aa565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161105e91906158f9565b602060405180830381855afa158015611079573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061109c9190615592565b5f83815260088a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260078d01909252909120815181549394509192909190829060ff19166001836005811115611128576111286153d3565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516111db91168661590a565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a3505050806112329061591d565b9050610f6e565b50600484018190555f61124b86612b55565b90505f61125b8260400151612f56565b90508060028560405161126e91906158f9565b602060405180830381855afa158015611289573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112ac9190615592565b146113105760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b6064820152608401610563565b5050506009909201805460ff1916600117905550505050565b5f610a7a6001600160401b03831664e8d4a5100061593f565b5f61134c82611f41565b6080015192915050565b5f80516020615edf8339815191525f61136e856130c8565b905061137985612a81565b611384575050505050565b5f8581526005830160205260409020546001600160a01b031633146113bb5760405162461bcd60e51b815260040161056390615956565b5f85815260058301602052604090205460a08201516113ea91600160b01b90046001600160401b0316906159a8565b6001600160401b03168160c001516001600160401b0316101561146b5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b6064820152608401610563565b8315610b19575f61147c868561211d565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b5906114d390611329565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015611549573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156d9190615592565b5f8781526008850160205260408120805490919061158c90849061590a565b9091555050505050505050565b5f80516020615edf8339815191525f6115b183611f41565b90506004815160058111156115c8576115c86153d3565b146116325760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b6064820152608401610563565b5f8381526005830160205260409020546001600160a01b031633146116695760405162461bcd60e51b815260040161056390615956565b5f83815260088301602090815260408083208054908490556005860190925290912054610a64906001600160a01b031682612abc565b6116a7613343565b5f80516020615edf8339815191525f6116bf84612b55565b90505f806116d08360400151612d1b565b50915091505f6116df83611f41565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff166004811115611719576117196153d3565b600481111561172a5761172a6153d3565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff19169055908401519192508481169116101561180e5760405162461bcd60e51b81526004016105639061561c565b826001600160401b03168160e001516001600160401b031611156118445760405162461bcd60e51b81526004016105639061565e565b600381516004811115611859576118596153d3565b146118ad5760405162461bcd60e51b815260206004820152603160248201525f80516020615eff8339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b6064820152608401610563565b5f878152600787016020908152604080832080549084905587845260058a01909252822054909190612710906118ee90600160a01b900461ffff168461593f565b6118f891906155fd565b905080886008015f8881526020019081526020015f205f82825461191c919061590a565b909155505f905061192d82846159c8565b905061193d846020015182612abc565b6119528460200151610b148660600151611329565b856001600160401b0316878b7f9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d50338486604051611998929190918252602082015260400190565b60405180910390a45050505050505050506119bf60015f80516020615f3f83398151915255565b5050565b5f6119cc613343565b6119d783338461338d565b9050610a7a60015f80516020615f3f83398151915255565b5f80516020615f1f8339815191525f611a0783612b55565b90505f80611a188360400151613747565b9150915080611a7a5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b6064820152608401610563565b5f82815260068501602052604081208054611a94906159db565b9050118015611ac6575060015f83815260078601602052604090205460ff166005811115611ac457611ac46153d3565b145b611ae25760405162461bcd60e51b815260040161056390615a13565b5f8281526006850160205260408120611afa916151f3565b5f8281526007850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260088b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615edf83398151915293929190829060ff166004811115611c0857611c086153d3565b6004811115611c1957611c196153d3565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611ca057611ca06153d3565b1480611cbe5750600381516004811115611cbc57611cbc6153d3565b145b611d125760405162461bcd60e51b815260206004820152603260248201525f80516020615eff833981519152604482015271737461747573206e6f742070656e64696e6760701b6064820152608401610563565b5f611d208260400151611f41565b905080606001516001600160401b03165f03611da45760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e204944006064820152608401610563565b6005600160991b016001600160a01b031663ee5b48eb611dd1846040015184606001518560800151612510565b6040518263ffffffff1660e01b8152600401611ded91906155cb565b6020604051808303815f875af1158015611e09573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b199190615592565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040812080545f80516020615f1f833981519152929190611e75906159db565b9050118015611ea7575060015f83815260078301602052604090205460ff166005811115611ea557611ea56153d3565b145b611ec35760405162461bcd60e51b815260040161056390615a13565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611efc9190600401615a5a565b6020604051808303815f875af1158015611f18573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f3c9190615592565b505050565b611f4961522a565b5f8281525f80516020615f5f833981519152602052604090819020815160e0810190925280545f80516020615f1f833981519152929190829060ff166005811115611f9657611f966153d3565b6005811115611fa757611fa76153d3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b5f612012613343565b61201e858585856138e8565b905061203660015f80516020615f3f83398151915255565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680612087575080546001600160401b03808416911610155b156120a55760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556120d08484613b5d565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612168573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261218f9190810190615aef565b91509150806121f25760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b6064820152608401610563565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612235573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122599190615592565b8251146122bd5760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b6064820152608401610563565b60208201516001600160a01b0316156123335760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b6064820152608401610563565b5f806123428460400151613b77565b915091508187146123af5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b6064820152608401610563565b9695505050505050565b5f8281525f80516020615f5f833981519152602052604081206002015481905f80516020615f1f83398151915290600160801b90046001600160401b03166124018582613d4f565b5f61240b87613f5d565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61245b8a858b612510565b6040518263ffffffff1660e01b815260040161247791906155cb565b6020604051808303815f875af1158015612493573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124b79190615592565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b6002811015612589576125498160016159c8565b61255490600861593f565b5081515f9083908390811061256b5761256b615707565b60200101906001600160f81b03191690815f1a905350600101612535565b505f5b60048110156125f4576125a08160036159c8565b6125ab90600861593f565b600263ffffffff16901c60f81b828260026125c6919061590a565b815181106125d6576125d6615707565b60200101906001600160f81b03191690815f1a90535060010161258c565b505f5b60208110156126565761260b81601f6159c8565b61261690600861593f565b86901c60f81b8261262883600661590a565b8151811061263857612638615707565b60200101906001600160f81b03191690815f1a9053506001016125f7565b505f5b60088110156126c15761266d8160076159c8565b61267890600861593f565b6001600160401b038616901c60f81b8261269383602661590a565b815181106126a3576126a3615707565b60200101906001600160f81b03191690815f1a905350600101612659565b505f5b600881101561272c576126d88160076159c8565b6126e390600861593f565b6001600160401b038516901c60f81b826126fe83602e61590a565b8151811061270e5761270e615707565b60200101906001600160f81b03191690815f1a9053506001016126c4565b5090505b9392505050565b5f61274061522a565b5f80516020615f1f8339815191525f61275885612b55565b90505f806127698360400151613747565b9150915080156127ce5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b6064820152608401610563565b5f828152600785016020526040808220815160e081019092528054829060ff1660058111156127ff576127ff6153d3565b6005811115612810576128106153d3565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612881576128816153d3565b148061289f575060018251600581111561289d5761289d6153d3565b145b6128fe5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b6064820152608401610563565b600382516005811115612913576129136153d3565b0361292057506004612924565b5060055b6020808301515f9081526008880190915260408120558181600581111561294d5761294d6153d3565b90816005811115612960576129606153d3565b9052505f84815260078701602052604090208251815484929190829060ff19166001836005811115612994576129946153d3565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612a4857612a486153d3565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b5f5f80516020615ebf83398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612b17575f80fd5b505af1158015612b29573d5f803e3d5ffd5b50505050505050565b5f80516020615ebf833981519152546119bf906001600160a01b03168383613fed565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612bb9573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612be09190810190615aef565b9150915080612c405760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b6064820152608401610563565b815115612ca15760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b6064820152608401610563565b60208201516001600160a01b031615612d145760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b6064820152608401610563565b5092915050565b5f805f8351603614612d3f5760405162461bcd60e51b815260040161056390615bc1565b5f805b6002811015612d8e57612d568160016159c8565b612d6190600861593f565b61ffff16868281518110612d7757612d77615707565b016020015160f81c901b9190911790600101612d42565b5061ffff811615612db15760405162461bcd60e51b815260040161056390615c0a565b5f805b6004811015612e0c57612dc88160036159c8565b612dd390600861593f565b63ffffffff1687612de583600261590a565b81518110612df557612df5615707565b016020015160f81c901b9190911790600101612db4565b5063ffffffff8116600414612e335760405162461bcd60e51b815260040161056390615c4d565b5f805b6020811015612e8857612e4a81601f6159c8565b612e5590600861593f565b88612e6183600661590a565b81518110612e7157612e71615707565b016020015160f81c901b9190911790600101612e36565b505f805b6008811015612ee757612ea08160076159c8565b612eab90600861593f565b6001600160401b031689612ec083602661590a565b81518110612ed057612ed0615707565b016020015160f81c901b9190911790600101612e8c565b505f805b6008811015612f4657612eff8160076159c8565b612f0a90600861593f565b6001600160401b03168a612f1f83602e61590a565b81518110612f2f57612f2f615707565b016020015160f81c901b9190911790600101612eeb565b5091989097509095509350505050565b5f8151602614612f785760405162461bcd60e51b815260040161056390615bc1565b5f805b6002811015612fc757612f8f8160016159c8565b612f9a90600861593f565b61ffff16848281518110612fb057612fb0615707565b016020015160f81c901b9190911790600101612f7b565b5061ffff811615612fea5760405162461bcd60e51b815260040161056390615c0a565b5f805b6004811015613045576130018160036159c8565b61300c90600861593f565b63ffffffff168561301e83600261590a565b8151811061302e5761302e615707565b016020015160f81c901b9190911790600101612fed565b5063ffffffff81161561306a5760405162461bcd60e51b815260040161056390615c4d565b5f805b60208110156130bf5761308181601f6159c8565b61308c90600861593f565b8661309883600661590a565b815181106130a8576130a8615707565b016020015160f81c901b919091179060010161306d565b50949350505050565b6130d061522a565b5f8281525f80516020615f5f8339815191526020526040808220815160e0810190925280545f80516020615f1f83398151915293929190829060ff16600581111561311d5761311d6153d3565b600581111561312e5761312e6153d3565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c090910152909150815160058111156131a0576131a06153d3565b146131fc5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b6064820152608401610563565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff19166001836005811115613240576132406153d3565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6132ec85826123b9565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f80516020615f3f83398151915280546001190161337457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f80516020615f3f83398151915255565b5f5f80516020615edf833981519152816133a96102468561404c565b90505f6133b587611f41565b90506133c087612a81565b61341d5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b6064820152608401610563565b600281516005811115613432576134326153d3565b146134915760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b6064820152608401610563565b5f8282608001516134a291906159a8565b600485015460408401519192506134c4916001600160401b0390911690615c94565b6001600160401b0316816001600160401b031611156135435760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b6064820152608401610563565b5f8061354f8a846123b9565b915091505f8a8360405160200161357d92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff19166001836004811115613618576136186153d3565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f80825160271461376a5760405162461bcd60e51b815260040161056390615bc1565b5f805b60028110156137b9576137818160016159c8565b61378c90600861593f565b61ffff168582815181106137a2576137a2615707565b016020015160f81c901b919091179060010161376d565b5061ffff8116156137dc5760405162461bcd60e51b815260040161056390615c0a565b5f805b6004811015613837576137f38160036159c8565b6137fe90600861593f565b63ffffffff168661381083600261590a565b8151811061382057613820615707565b016020015160f81c901b91909117906001016137df565b5063ffffffff811660031461385e5760405162461bcd60e51b815260040161056390615c4d565b5f805b60208110156138b35761387581601f6159c8565b61388090600861593f565b8761388c83600661590a565b8151811061389c5761389c615707565b016020015160f81c901b9190911790600101613861565b505f866026815181106138c8576138c8615707565b016020015191976001600160f81b03199092161515965090945050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615edf8339815191529061ffff861610801590613934575061271061ffff861611155b6139505760405162461bcd60e51b815260040161056390615cbf565b60028101546001600160401b0390811690851610156139c95760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b6064820152608401610563565b8054831015613a2c5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b6064820152608401610563565b8060010154831115613a935760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b6064820152608401610563565b5f613a9d8461404c565b90505f613aa982610a6a565b90505f613ab6898361406f565b90506040518060600160405280613aca3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b613b656145d3565b613b6e8261461e565b6119bf81614693565b5f808251602e14613b9a5760405162461bcd60e51b815260040161056390615bc1565b5f805b6002811015613be957613bb18160016159c8565b613bbc90600861593f565b61ffff16858281518110613bd257613bd2615707565b016020015160f81c901b9190911790600101613b9d565b5061ffff811615613c0c5760405162461bcd60e51b815260040161056390615c0a565b5f805b6004811015613c6757613c238160036159c8565b613c2e90600861593f565b63ffffffff1686613c4083600261590a565b81518110613c5057613c50615707565b016020015160f81c901b9190911790600101613c0f565b5063ffffffff8116600514613c8e5760405162461bcd60e51b815260040161056390615c4d565b5f805b6020811015613ce357613ca581601f6159c8565b613cb090600861593f565b87613cbc83600661590a565b81518110613ccc57613ccc615707565b016020015160f81c901b9190911790600101613c91565b505f805b6008811015613d4257613cfb8160076159c8565b613d0690600861593f565b6001600160401b031688613d1b83602661590a565b81518110613d2b57613d2b615707565b016020015160f81c901b9190911790600101613ce7565b5090969095509350505050565b5f80516020615f1f8339815191525f6001600160401b038084169085161115613d8357613d7c8385615572565b9050613d90565b613d8d8484615572565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580613df2575060018401548151613dee916001600160401b03169061590a565b8210155b15613e18576001600160401b038316606082015281815260408101516020820152613e37565b8281606001818151613e2a91906159a8565b6001600160401b03169052505b6060810151613e47906064615c94565b602082015160018601546001600160401b039290921691613e729190600160401b900460ff1661593f565b1015613ed65760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b6064820152608401610563565b856001600160401b031681604001818151613ef1919061590a565b9052506040810180516001600160401b0387169190613f119083906159c8565b905250805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615f5f8339815191526020526040812060020180545f80516020615f1f83398151915291600160401b9091046001600160401b0316906008613fa783615d0a565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260079290920160205250604090922060020154600160401b9004909116919050565b6040516001600160a01b03838116602483015260448201839052611f3c91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050614734565b5f610a7a825f80516020615ebf833981519152546001600160a01b031690614795565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff166140fa5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b6064820152608401610563565b5f80516020615f1f83398151915242614119604086016020870161539a565b6001600160401b03161161418b5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b6064820152608401610563565b61419b604085016020860161539a565b6001600160401b03166141b16202a3004261590a565b116142245760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e206675747572650000000000000000006064820152608401610563565b833561427c5760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b6064820152608401610563565b83355f908152600882016020526040902054156142ab5760405162461bcd60e51b815260040161056390615862565b60306142ba6040860186615d25565b90501461431f5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b6064820152608401610563565b614329835f613d4f565b5f806143c26040518060a00160405280855f01548152602001885f01358152602001876001600160401b0316815260200188602001602081019061436d919061539a565b6001600160401b0316815260200161438860408a018a615d25565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506148f7565b5f828152600686016020526040902091935091506143e08282615dab565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061440d9085906004016155cb565b6020604051808303815f875af1158015614429573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061444d9190615592565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600788019091522081518154829060ff191660018360058111156144c5576144c56153d3565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916145a5918e01908e0161539a565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661461c57604051631afcd79f60e31b815260040160405180910390fd5b565b6146266145d3565b61462f81614ca6565b614637614cbf565b6146906060820135608083013561465460c0850160a0860161539a565b61466460e0860160c08701615e6a565b61ffff16614679610100870160e08801615e83565b61468b610120880161010089016156a7565b614ccf565b50565b61469b6145d3565b5f80516020615ebf8339815191526001600160a01b0382166147145760405162461bcd60e51b815260206004820152602c60248201527f4552433230546f6b656e5374616b696e674d616e616765723a207a65726f207460448201526b6f6b656e206164647265737360a01b6064820152608401610563565b80546001600160a01b0319166001600160a01b0392909216919091179055565b5f6147486001600160a01b03841683614f13565b905080515f1415801561476c57508080602001905181019061476a9190615ea3565b155b15611f3c57604051635274afe760e01b81526001600160a01b0384166004820152602401610563565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa1580156147db573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147ff9190615592565b90506148166001600160a01b038516333086614f20565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa15801561485a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061487e9190615592565b90508181116148e45760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610563565b6148ee82826159c8565b95945050505050565b5f60608260800151516030146149615760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b6064820152608401610563565b60408051608680825260c082019092525f916020820181803683370190505090505f5b60028110156149d8576149988160016159c8565b6149a390600861593f565b5081515f908390839081106149ba576149ba615707565b60200101906001600160f81b03191690815f1a905350600101614984565b505f5b6004811015614a40576149ef8160036159c8565b6149fa90600861593f565b600160ff919091161c60f81b82614a1283600261590a565b81518110614a2257614a22615707565b60200101906001600160f81b03191690815f1a9053506001016149db565b505f5b6020811015614a9d5784518160208110614a5f57614a5f615707565b1a60f81b82614a6f83600661590a565b81518110614a7f57614a7f615707565b60200101906001600160f81b03191690815f1a905350600101614a43565b505f5b6020811015614afd5784602001518160208110614abf57614abf615707565b1a60f81b82614acf83602661590a565b81518110614adf57614adf615707565b60200101906001600160f81b03191690815f1a905350600101614aa0565b505f5b6008811015614b7157614b148160076159c8565b614b1f90600861593f565b60ff1685604001516001600160401b0316901c60f81b82826046614b43919061590a565b81518110614b5357614b53615707565b60200101906001600160f81b03191690815f1a905350600101614b00565b505f5b6030811015614bdc5784608001518181518110614b9357614b93615707565b01602001516001600160f81b03191682614bae83604e61590a565b81518110614bbe57614bbe615707565b60200101906001600160f81b03191690815f1a905350600101614b74565b505f5b6008811015614c4e57614bf38160076159c8565b614bfe90600861593f565b60608601516001600160401b0390811691161c60f81b82614c2083607e61590a565b81518110614c3057614c30615707565b60200101906001600160f81b03191690815f1a905350600101614bdf565b50600281604051614c5f91906158f9565b602060405180830381855afa158015614c7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614c9d9190615592565b94909350915050565b614cae6145d3565b614cb6614f59565b61469081614f61565b614cc76145d3565b61461c6150dc565b614cd76145d3565b5f80516020615edf83398151915283614d435760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b6064820152608401610563565b612710841115614d655760405162461bcd60e51b815260040161056390615cbf565b85871115614dcd5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b6064820152608401610563565b5f8360ff1611614e3a5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b6064820152608401610563565b600a60ff84161115614eac5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b6064820152608401610563565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b606061273083835f6150e4565b6040516001600160a01b038481166024830152838116604483015260648201839052610a649186918216906323b872dd9060840161401a565b61461c6145d3565b614f696145d3565b80355f80516020615f1f8339815191529081556014614f8e6060840160408501615e83565b60ff161115614ffb5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b6064820152608401610563565b5f61500c6060840160408501615e83565b60ff16116150745760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b6064820152608401610563565b6150846060830160408401615e83565b60018201805460ff92909216600160401b0260ff60401b199092169190911790556150b5604083016020840161539a565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61337a6145d3565b6060814710156151095760405163cd78605960e01b8152306004820152602401610563565b5f80856001600160a01b0316848660405161512491906158f9565b5f6040518083038185875af1925050503d805f811461515e576040519150601f19603f3d011682016040523d82523d5f602084013e615163565b606091505b50915091506123af8683836060826151835761517e826151ca565b612730565b815115801561519a57506001600160a01b0384163b155b156151c357604051639996b31560e01b81526001600160a01b0385166004820152602401610563565b5080612730565b8051156151da5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546151ff906159db565b5f825580601f1061520e575050565b601f0160209004905f5260205f20908101906146909190615266565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b8082111561527a575f8155600101615267565b5090565b8015158114614690575f80fd5b803563ffffffff8116811461529e575f80fd5b919050565b5f805f606084860312156152b5575f80fd5b8335925060208401356152c78161527e565b91506152d56040850161528b565b90509250925092565b5f602082840312156152ee575f80fd5b5035919050565b5f60208284031215615305575f80fd5b6127308261528b565b5f806040838503121561531f575f80fd5b6153288361528b565b946020939093013593505050565b5f8060408385031215615347575f80fd5b82356001600160401b0381111561535c575f80fd5b83016080818603121561536d575f80fd5b915061537b6020840161528b565b90509250929050565b80356001600160401b038116811461529e575f80fd5b5f602082840312156153aa575f80fd5b61273082615384565b5f80604083850312156153c4575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b815160e08201906006811061540a57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161544560608401826001600160401b03169052565b50608083015161546060808401826001600160401b03169052565b5060a083015161547b60a08401826001600160401b03169052565b5060c0830151612d1460c08401826001600160401b03169052565b803561ffff8116811461529e575f80fd5b5f805f80608085870312156154ba575f80fd5b84356001600160401b038111156154cf575f80fd5b8501606081880312156154e0575f80fd5b93506154ee60208601615496565b92506154fc60408601615384565b9396929550929360600135925050565b6001600160a01b0381168114614690575f80fd5b5f80828403610140811215615533575f80fd5b61012080821215615542575f80fd5b84935083013590506155538161550c565b809150509250929050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b03828116828216039080821115612d1457612d1461555e565b5f602082840312156155a2575f80fd5b5051919050565b5f5b838110156155c35781810151838201526020016155ab565b50505f910152565b602081525f82518060208401526155e98160408501602087016155a9565b601f01601f19169190910160400192915050565b5f8261561757634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b5f602082840312156156b7575f80fd5b81356127308161550c565b5f808335601e198436030181126156d7575f80fd5b8301803591506001600160401b038211156156f0575f80fd5b6020019150600581901b3603821315612509575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261572f575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561576f5761576f615739565b60405290565b604051601f8201601f191681016001600160401b038111828210171561579d5761579d615739565b604052919050565b5f6001600160401b038211156157bd576157bd615739565b50601f01601f191660200190565b5f606082360312156157db575f80fd5b6157e361574d565b8235815260206157f4818501615384565b8183015260408401356001600160401b03811115615810575f80fd5b840136601f820112615820575f80fd5b803561583361582e826157a5565b615775565b8181523684838501011115615846575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516158bb818460208a016155a9565b80830190508581526001600160401b0360c01b8560c01b16602082015283516158eb8160288401602088016155a9565b016028019695505050505050565b5f825161572f8184602087016155a9565b80820180821115610a7a57610a7a61555e565b5f63ffffffff8083168181036159355761593561555e565b6001019392505050565b8082028115828204841417610a7a57610a7a61555e565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b03818116838216019080821115612d1457612d1461555e565b81810381811115610a7a57610a7a61555e565b600181811c908216806159ef57607f821691505b602082108103615a0d57634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615a6c816159db565b806020870152604060018084165f8114615a8d5760018114615aa957615ad6565b60ff19851660408a0152604084151560051b8a01019550615ad6565b895f5260205f205f5b85811015615acd5781548b8201860152908301908801615ab2565b8a016040019650505b509398975050505050505050565b805161529e8161527e565b5f8060408385031215615b00575f80fd5b82516001600160401b0380821115615b16575f80fd5b9084019060608287031215615b29575f80fd5b615b3161574d565b82518152602080840151615b448161550c565b82820152604084015183811115615b59575f80fd5b80850194505087601f850112615b6d575f80fd5b83519250615b7d61582e846157a5565b8381528882858701011115615b90575f80fd5b615b9f848383018488016155a9565b80604084015250819550615bb4818801615ae4565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615cb757615cb761555e565b505092915050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b5f6001600160401b038083168181036159355761593561555e565b5f808335601e19843603018112615d3a575f80fd5b8301803591506001600160401b03821115615d53575f80fd5b602001915036819003821315612509575f80fd5b601f821115611f3c57805f5260205f20601f840160051c81016020851015615d8c5750805b601f840160051c820191505b81811015610b19575f8155600101615d98565b81516001600160401b03811115615dc457615dc4615739565b615dd881615dd284546159db565b84615d67565b602080601f831160018114615e0b575f8415615df45750858301515b5f19600386901b1c1916600185901b178555615e62565b5f85815260208120601f198616915b82811015615e3957888601518255948401946001909101908401615e1a565b5085821015615e5657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215615e7a575f80fd5b61273082615496565b5f60208284031215615e93575f80fd5b813560ff81168114612730575f80fd5b5f60208284031215615eb3575f80fd5b81516127308161527e56fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a164736f6c6343000819000a", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -440,6 +439,37 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) MAXIMUMS return _ERC20TokenStakingManager.Contract.MAXIMUMSTAKEMULTIPLIERLIMIT(&_ERC20TokenStakingManager.CallOpts) } +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _ERC20TokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_ERC20TokenStakingManager *ERC20TokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _ERC20TokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_ERC20TokenStakingManager.CallOpts) +} + // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) @@ -731,23 +761,23 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Comp return _ERC20TokenStakingManager.Contract.CompleteValidatorRegistration(&_ERC20TokenStakingManager.TransactOpts, messageIndex) } -// Initialize is a paid mutator transaction binding the contract method 0x330a0a3a. +// Initialize is a paid mutator transaction binding the contract method 0xf09969ae. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.contract.Transact(opts, "initialize", settings, token) } -// Initialize is a paid mutator transaction binding the contract method 0x330a0a3a. +// Initialize is a paid mutator transaction binding the contract method 0xf09969ae. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) } -// Initialize is a paid mutator transaction binding the contract method 0x330a0a3a. +// Initialize is a paid mutator transaction binding the contract method 0xf09969ae. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings, address token) returns() func (_ERC20TokenStakingManager *ERC20TokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings, token common.Address) (*types.Transaction, error) { return _ERC20TokenStakingManager.Contract.Initialize(&_ERC20TokenStakingManager.TransactOpts, settings, token) } diff --git a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go index 731fe5258..dd5233204 100644 --- a/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/validator-manager/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -68,7 +68,6 @@ type Validator struct { // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { - PChainBlockchainID [32]byte SubnetID [32]byte ChurnPeriodSeconds uint64 MaximumChurnPercentage uint8 @@ -83,8 +82,8 @@ type ValidatorRegistrationInput struct { // NativeTokenStakingManagerMetaData contains all meta data concerning the NativeTokenStakingManager contract. var NativeTokenStakingManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", - Bin: "0x608060405234801561000f575f80fd5b50604051615dba380380615dba83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c6d8061014d5f395ff3fe608060405260043610610195575f3560e01c806362065856116100e7578063b771b3bc11610087578063c599e24f11610062578063c599e24f146104cb578063c974d1b6146104de578063d5f20ff6146104f2578063df93d8de1461051e575f80fd5b8063b771b3bc14610473578063ba3a4b971461048d578063bee0a03f146104ac575f80fd5b80638280a25a116100c25780638280a25a1461040257806393e245981461041657806398f3e2b414610435578063a3a65e4814610454575f80fd5b806362065856146103a557806366435abf146103c457806376f78621146103e3575f80fd5b8063329c3e1211610152578063467ef06f1161012d578063467ef06f1461031f5780635297fae61461033e57806360305d621461035d57806361e2f49014610386575f80fd5b8063329c3e12146102b257806335455ded146102e457806340034a931461030c575f80fd5b80630118acc4146101995780630322ed98146101ba5780630cdd0985146101d9578063151d30d1146102365780631f7a9d8f1461025c5780632e2194d81461027b575b5f80fd5b3480156101a4575f80fd5b506101b86101b336600461501b565b610534565b005b3480156101c5575f80fd5b506101b86101d4366004615056565b6109d8565b3480156101e4575f80fd5b506102236101f3366004615056565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b348015610241575f80fd5b5061024a600a81565b60405160ff909116815260200161022d565b348015610267575f80fd5b506101b861027636600461506d565b610b91565b348015610286575f80fd5b5061029a610295366004615056565b610c6e565b6040516001600160401b03909116815260200161022d565b3480156102bd575f80fd5b506102cc6001600160991b0181565b6040516001600160a01b03909116815260200161022d565b3480156102ef575f80fd5b506102f961271081565b60405161ffff909116815260200161022d565b61022361031a3660046150ab565b610c84565b34801561032a575f80fd5b506101b86103393660046150ff565b610cb8565b348015610349575f80fd5b506101b8610358366004615118565b610d58565b348015610368575f80fd5b50610371601481565b60405163ffffffff909116815260200161022d565b348015610391575f80fd5b506101b86103a0366004615140565b610f2d565b3480156103b0575f80fd5b506102236103bf36600461518e565b611561565b3480156103cf575f80fd5b5061029a6103de366004615056565b61157a565b3480156103ee575f80fd5b506101b86103fd36600461501b565b61158e565b34801561040d575f80fd5b5061024a603081565b348015610421575f80fd5b506101b8610430366004615056565b6117d1565b348015610440575f80fd5b506101b861044f366004615118565b6118d7565b34801561045f575f80fd5b506101b861046e3660046150ff565b611bfb565b34801561047e575f80fd5b506102cc6005600160991b0181565b348015610498575f80fd5b506101b86104a7366004615056565b611db3565b3480156104b7575f80fd5b506101b86104c6366004615056565b612039565b6102236104d9366004615056565b61214d565b3480156104e9575f80fd5b5061024a601481565b3480156104fd575f80fd5b5061051161050c366004615056565b61217e565b60405161022d91906151bb565b348015610529575f80fd5b5061029a6202a30081565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615bc183398151915293929190829060ff166004811115610595576105956151a7565b60048111156105a6576105a66151a7565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f61062a8261217e565b9050600283516004811115610641576106416151a7565b146106935760405162461bcd60e51b815260206004820152602a60248201525f80516020615be18339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146106f85760405162461bcd60e51b815260206004820152603360248201525f80516020615be18339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b606482015260840161068a565b6003835280515f906002906005811115610714576107146151a7565b0361076b57861561072c576107298387612246565b90505b5f846060015183608001516107419190615285565b905061074d84826124e2565b506001600160401b0390811660e0870152421660a08601525061079f565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b56107d28660600151611561565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa15801561084f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061087391906152a5565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff191660018360048111156108b2576108b26151a7565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c69916109c6916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615c418339815191526020526040808220815160e0810190925280545f80516020615c0183398151915293929190829060ff166005811115610a2557610a256151a7565b6005811115610a3657610a366151a7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c09091015290915081516005811115610aa557610aa56151a7565b14610b0a5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b606482015260840161068a565b6005600160991b016001600160a01b031663ee5b48eb610b2f8584606001515f612639565b6040518263ffffffff1660e01b8152600401610b4b91906152de565b6020604051808303815f875af1158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b91906152a5565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610bda575080546001600160401b03808416911610155b15610bf85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610c228361285e565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610c7e64e8d4a5100083615310565b92915050565b5f610c8d612872565b610c99848484346128a9565b9050610cb160015f80516020615c2183398151915255565b9392505050565b5f80516020615bc18339815191525f80610cd184612b26565b91509150610cde82612e70565b610ce85750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1657610d166151a7565b03610d3b575f83815260088501602052604081208054919055610d398282612eab565b505b610d5181610d4c8460400151611561565b612f11565b5050505050565b5f80516020615bc18339815191525f610d7084612f24565b90505f80610d8183604001516130fe565b50915091505f610d908361217e565b9050816001600160401b031681606001516001600160401b03161015610dc85760405162461bcd60e51b815260040161068a9061532f565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610e0d5760405162461bcd60e51b815260040161068a90615371565b60015f87815260068701602052604090205460ff166004811115610e3357610e336151a7565b14610e9c5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b606482015260840161068a565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615c018339815191529060ff1615610fca5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b606482015260840161068a565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103191906152a5565b8360200135146110935760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b606482015260840161068a565b306110a460608501604086016153ce565b6001600160a01b0316146111165760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b606482015260840161068a565b5f61112460608501856153e9565b91505f90508435602086013560146111426060890160408a016153ce565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015611471575f6111c260608901896153e9565b8363ffffffff168181106111d8576111d861542e565b90506020028101906111ea9190615442565b6111f3906154f2565b80515f81815260098901602052604090205491925090156112265760405162461bcd60e51b815260040161068a90615589565b84825f01518360200151846040015160405160200161124894939291906155d1565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f916002916112969190615620565b602060405180830381855afa1580156112b1573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112d491906152a5565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115611360576113606151a7565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151611413911686615631565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508061146a90615644565b90506111a6565b50600584018190555f61148386612f24565b90505f6114938260400151613339565b9050806002856040516114a69190615620565b602060405180830381855afa1580156114c1573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114e491906152a5565b146115485760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b606482015260840161068a565b505050600a909201805460ff1916600117905550505050565b5f610c7e6001600160401b03831664e8d4a51000615666565b5f6115848261217e565b6080015192915050565b5f80516020615bc18339815191525f6115a6856134a2565b90506115b185612e70565b6115bc575050505050565b5f8581526005830160205260409020546001600160a01b031633146115f35760405162461bcd60e51b815260040161068a9061567d565b5f85815260058301602052604090205460a082015161162291600160b01b90046001600160401b0316906156cf565b6001600160401b03168160c001516001600160401b031610156116a35760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b606482015260840161068a565b8315610d51575f6116b48685612246565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b59061170b90611561565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015611781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a591906152a5565b5f878152600885016020526040812080549091906117c4908490615631565b9091555050505050505050565b5f80516020615bc18339815191525f6117e98361217e565b9050600481516005811115611800576118006151a7565b1461186a5760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b606482015260840161068a565b5f8381526005830160205260409020546001600160a01b031633146118a15760405162461bcd60e51b815260040161068a9061567d565b5f83815260088301602090815260408083208054908490556005860190925290912054610b8b906001600160a01b031682612eab565b6118df612872565b5f80516020615bc18339815191525f6118f784612f24565b90505f8061190883604001516130fe565b50915091505f6119178361217e565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff166004811115611951576119516151a7565b6004811115611962576119626151a7565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff191690559084015191925084811691161015611a465760405162461bcd60e51b815260040161068a9061532f565b826001600160401b03168160e001516001600160401b03161115611a7c5760405162461bcd60e51b815260040161068a90615371565b600381516004811115611a9157611a916151a7565b14611ae55760405162461bcd60e51b815260206004820152603160248201525f80516020615be18339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b606482015260840161068a565b5f878152600787016020908152604080832080549084905587845260058a0190925282205490919061271090611b2690600160a01b900461ffff1684615666565b611b309190615310565b905080886008015f8881526020019081526020015f205f828254611b549190615631565b909155505f9050611b6582846156ef565b9050611b75846020015182612eab565b611b8a8460200151610d4c8660600151611561565b856001600160401b0316878b7f9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d50338486604051611bd0929190918252602082015260400190565b60405180910390a4505050505050505050611bf760015f80516020615c2183398151915255565b5050565b5f80516020615c018339815191525f611c1383612f24565b90505f80611c24836040015161371d565b9150915080611c865760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b606482015260840161068a565b5f82815260078501602052604081208054611ca090615702565b9050118015611cd2575060015f83815260088601602052604090205460ff166005811115611cd057611cd06151a7565b145b611cee5760405162461bcd60e51b815260040161068a90615734565b5f8281526007850160205260408120611d0691614f70565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615bc183398151915293929190829060ff166004811115611e1457611e146151a7565b6004811115611e2557611e256151a7565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611eac57611eac6151a7565b1480611eca5750600381516004811115611ec857611ec86151a7565b145b611f1e5760405162461bcd60e51b815260206004820152603260248201525f80516020615be1833981519152604482015271737461747573206e6f742070656e64696e6760701b606482015260840161068a565b5f611f2c826040015161217e565b905080606001516001600160401b03165f03611fb05760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e20494400606482015260840161068a565b6005600160991b016001600160a01b031663ee5b48eb611fdd846040015184606001518560800151612639565b6040518263ffffffff1660e01b8152600401611ff991906152de565b6020604051808303815f875af1158015612015573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d5191906152a5565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615c0183398151915292919061208190615702565b90501180156120b3575060015f83815260088301602052604090205460ff1660058111156120b1576120b16151a7565b145b6120cf5760405162461bcd60e51b815260040161068a90615734565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91612108919060040161577b565b6020604051808303815f875af1158015612124573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061214891906152a5565b505050565b5f612156612872565b6121618233346138be565b905061217960015f80516020615c2183398151915255565b919050565b612186614fa7565b5f8281525f80516020615c41833981519152602052604090819020815160e0810190925280545f80516020615c01833981519152929190829060ff1660058111156121d3576121d36151a7565b60058111156121e4576121e46151a7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612291573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122b89190810190615810565b915091508061231b5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b606482015260840161068a565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561235e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238291906152a5565b8251146123e65760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b606482015260840161068a565b60208201516001600160a01b03161561245c5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b606482015260840161068a565b5f8061246b8460400151613c75565b915091508187146124d85760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b606482015260840161068a565b9695505050505050565b5f8281525f80516020615c41833981519152602052604081206002015481905f80516020615c0183398151915290600160801b90046001600160401b031661252a8582613e4d565b5f6125348761405b565b5f8881526008850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6125848a858b612639565b6040518263ffffffff1660e01b81526004016125a091906152de565b6020604051808303815f875af11580156125bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125e091906152a5565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156126b2576126728160016156ef565b61267d906008615666565b5081515f908390839081106126945761269461542e565b60200101906001600160f81b03191690815f1a90535060010161265e565b505f5b600481101561271d576126c98160036156ef565b6126d4906008615666565b600263ffffffff16901c60f81b828260026126ef9190615631565b815181106126ff576126ff61542e565b60200101906001600160f81b03191690815f1a9053506001016126b5565b505f5b602081101561277f5761273481601f6156ef565b61273f906008615666565b86901c60f81b82612751836006615631565b815181106127615761276161542e565b60200101906001600160f81b03191690815f1a905350600101612720565b505f5b60088110156127ea576127968160076156ef565b6127a1906008615666565b6001600160401b038616901c60f81b826127bc836026615631565b815181106127cc576127cc61542e565b60200101906001600160f81b03191690815f1a905350600101612782565b505f5b6008811015612855576128018160076156ef565b61280c906008615666565b6001600160401b038516901c60f81b8261282783602e615631565b815181106128375761283761542e565b60200101906001600160f81b03191690815f1a9053506001016127ed565b50949350505050565b6128666140eb565b61286f81614136565b50565b5f80516020615c218339815191528054600119016128a357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615bc18339815191529061ffff8616108015906128f5575061271061ffff861611155b6129115760405162461bcd60e51b815260040161068a906158e2565b60028101546001600160401b03908116908516101561298a5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b606482015260840161068a565b80548310156129ed5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b606482015260840161068a565b8060010154831115612a545760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b606482015260840161068a565b825f612a5f82610c6e565b90505f612a6c89836141aa565b90506040518060600160405280612a803390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b60015f80516020615c2183398151915255565b5f612b2f614fa7565b5f80516020615c018339815191525f612b4785612f24565b90505f80612b58836040015161371d565b915091508015612bbd5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b606482015260840161068a565b5f828152600885016020526040808220815160e081019092528054829060ff166005811115612bee57612bee6151a7565b6005811115612bff57612bff6151a7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612c7057612c706151a7565b1480612c8e5750600182516005811115612c8c57612c8c6151a7565b145b612ced5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b606482015260840161068a565b600382516005811115612d0257612d026151a7565b03612d0f57506004612d13565b5060055b6020808301515f90815260098801909152604081205581816005811115612d3c57612d3c6151a7565b90816005811115612d4f57612d4f6151a7565b9052505f84815260088701602052604090208251815484929190829060ff19166001836005811115612d8357612d836151a7565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612e3757612e376151a7565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612ef7575f80fd5b505af1158015612f09573d5f803e3d5ffd5b505050505050565b611bf76001600160a01b0383168261470f565b60408051606080820183525f8083526020830181905292820152905f80516020615c018339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612f99573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612fc09190810190615810565b91509150806130205760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b606482015260840161068a565b82548251146130835760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b606482015260840161068a565b60208201516001600160a01b0316156130f65760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b606482015260840161068a565b509392505050565b5f805f83516036146131225760405162461bcd60e51b815260040161068a9061592d565b5f805b6002811015613171576131398160016156ef565b613144906008615666565b61ffff1686828151811061315a5761315a61542e565b016020015160f81c901b9190911790600101613125565b5061ffff8116156131945760405162461bcd60e51b815260040161068a90615976565b5f805b60048110156131ef576131ab8160036156ef565b6131b6906008615666565b63ffffffff16876131c8836002615631565b815181106131d8576131d861542e565b016020015160f81c901b9190911790600101613197565b5063ffffffff81166004146132165760405162461bcd60e51b815260040161068a906159b9565b5f805b602081101561326b5761322d81601f6156ef565b613238906008615666565b88613244836006615631565b815181106132545761325461542e565b016020015160f81c901b9190911790600101613219565b505f805b60088110156132ca576132838160076156ef565b61328e906008615666565b6001600160401b0316896132a3836026615631565b815181106132b3576132b361542e565b016020015160f81c901b919091179060010161326f565b505f805b6008811015613329576132e28160076156ef565b6132ed906008615666565b6001600160401b03168a61330283602e615631565b815181106133125761331261542e565b016020015160f81c901b91909117906001016132ce565b5091989097509095509350505050565b5f815160261461335b5760405162461bcd60e51b815260040161068a9061592d565b5f805b60028110156133aa576133728160016156ef565b61337d906008615666565b61ffff168482815181106133935761339361542e565b016020015160f81c901b919091179060010161335e565b5061ffff8116156133cd5760405162461bcd60e51b815260040161068a90615976565b5f805b6004811015613428576133e48160036156ef565b6133ef906008615666565b63ffffffff1685613401836002615631565b815181106134115761341161542e565b016020015160f81c901b91909117906001016133d0565b5063ffffffff81161561344d5760405162461bcd60e51b815260040161068a906159b9565b5f805b60208110156128555761346481601f6156ef565b61346f906008615666565b8661347b836006615631565b8151811061348b5761348b61542e565b016020015160f81c901b9190911790600101613450565b6134aa614fa7565b5f8281525f80516020615c418339815191526020526040808220815160e0810190925280545f80516020615c0183398151915293929190829060ff1660058111156134f7576134f76151a7565b6005811115613508576135086151a7565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561357a5761357a6151a7565b146135d65760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b606482015260840161068a565b60038152426001600160401b031660c08201525f84815260088301602052604090208151815483929190829060ff1916600183600581111561361a5761361a6151a7565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6136c685826124e2565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f8082516027146137405760405162461bcd60e51b815260040161068a9061592d565b5f805b600281101561378f576137578160016156ef565b613762906008615666565b61ffff168582815181106137785761377861542e565b016020015160f81c901b9190911790600101613743565b5061ffff8116156137b25760405162461bcd60e51b815260040161068a90615976565b5f805b600481101561380d576137c98160036156ef565b6137d4906008615666565b63ffffffff16866137e6836002615631565b815181106137f6576137f661542e565b016020015160f81c901b91909117906001016137b5565b5063ffffffff81166003146138345760405162461bcd60e51b815260040161068a906159b9565b5f805b60208110156138895761384b81601f6156ef565b613856906008615666565b87613862836006615631565b815181106138725761387261542e565b016020015160f81c901b9190911790600101613837565b505f8660268151811061389e5761389e61542e565b016020015191976001600160f81b03199092161515965090945050505050565b5f5f80516020615bc1833981519152816138d784610c6e565b90505f6138e38761217e565b90506138ee87612e70565b61394b5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b606482015260840161068a565b600281516005811115613960576139606151a7565b146139bf5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b606482015260840161068a565b5f8282608001516139d091906156cf565b600485015460408401519192506139f2916001600160401b0390911690615a00565b6001600160401b0316816001600160401b03161115613a715760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b606482015260840161068a565b5f80613a7d8a846124e2565b915091505f8a83604051602001613aab92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff19166001836004811115613b4657613b466151a7565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f808251602e14613c985760405162461bcd60e51b815260040161068a9061592d565b5f805b6002811015613ce757613caf8160016156ef565b613cba906008615666565b61ffff16858281518110613cd057613cd061542e565b016020015160f81c901b9190911790600101613c9b565b5061ffff811615613d0a5760405162461bcd60e51b815260040161068a90615976565b5f805b6004811015613d6557613d218160036156ef565b613d2c906008615666565b63ffffffff1686613d3e836002615631565b81518110613d4e57613d4e61542e565b016020015160f81c901b9190911790600101613d0d565b5063ffffffff8116600514613d8c5760405162461bcd60e51b815260040161068a906159b9565b5f805b6020811015613de157613da381601f6156ef565b613dae906008615666565b87613dba836006615631565b81518110613dca57613dca61542e565b016020015160f81c901b9190911790600101613d8f565b505f805b6008811015613e4057613df98160076156ef565b613e04906008615666565b6001600160401b031688613e19836026615631565b81518110613e2957613e2961542e565b016020015160f81c901b9190911790600101613de5565b5090969095509350505050565b5f80516020615c018339815191525f6001600160401b038084169085161115613e8157613e7a8385615285565b9050613e8e565b613e8b8484615285565b90505b6040805160808101825260038401548082526004850154602083015260058501549282019290925260068401546001600160401b0316606082015242911580613ef0575060028401548151613eec916001600160401b031690615631565b8210155b15613f16576001600160401b038316606082015281815260408101516020820152613f35565b8281606001818151613f2891906156cf565b6001600160401b03169052505b6060810151613f45906064615a00565b602082015160028601546001600160401b039290921691613f709190600160401b900460ff16615666565b1015613fd45760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b606482015260840161068a565b856001600160401b031681604001818151613fef9190615631565b9052506040810180516001600160401b038716919061400f9083906156ef565b905250805160038501556020810151600485015560408101516005850155606001516006909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615c418339815191526020526040812060020180545f80516020615c0183398151915291600160401b9091046001600160401b03169060086140a583615a2b565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661413457604051631afcd79f60e31b815260040160405180910390fd5b565b61413e6140eb565b614147816147a2565b61414f6147bb565b61286f608082013560a083013561416c60e0850160c0860161518e565b61417d610100860160e08701615a46565b61ffff1661419361012087016101008801615a5f565b6141a5610140880161012089016153ce565b6147cb565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff166142355760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b606482015260840161068a565b5f80516020615c0183398151915242614254604086016020870161518e565b6001600160401b0316116142c65760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b606482015260840161068a565b6142d6604085016020860161518e565b6001600160401b03166142ec6202a30042615631565b1161435f5760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e20667574757265000000000000000000606482015260840161068a565b83356143b75760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b606482015260840161068a565b83355f908152600982016020526040902054156143e65760405162461bcd60e51b815260040161068a90615589565b60306143f56040860186615a7f565b90501461445a5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b606482015260840161068a565b614464835f613e4d565b5f806144fe6040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906144a9919061518e565b6001600160401b031681526020016144c460408a018a615a7f565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614a0f565b5f8281526007860160205260409020919350915061451c8282615b05565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906145499085906004016152de565b6020604051808303815f875af1158015614565573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061458991906152a5565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff19166001836005811115614601576146016151a7565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916146e1918e01908e0161518e565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b804710156147325760405163cd78605960e01b815230600482015260240161068a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f811461477b576040519150601f19603f3d011682016040523d82523d5f602084013e614780565b606091505b505090508061214857604051630a12f52160e11b815260040160405180910390fd5b6147aa6140eb565b6147b2614dbe565b61286f81614dc6565b6147c36140eb565b614134614f68565b6147d36140eb565b5f80516020615bc18339815191528361483f5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b606482015260840161068a565b6127108411156148615760405162461bcd60e51b815260040161068a906158e2565b858711156148c95760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b606482015260840161068a565b5f8360ff16116149365760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b606482015260840161068a565b600a60ff841611156149a85760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b606482015260840161068a565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6060826080015151603014614a795760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b606482015260840161068a565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614af057614ab08160016156ef565b614abb906008615666565b5081515f90839083908110614ad257614ad261542e565b60200101906001600160f81b03191690815f1a905350600101614a9c565b505f5b6004811015614b5857614b078160036156ef565b614b12906008615666565b600160ff919091161c60f81b82614b2a836002615631565b81518110614b3a57614b3a61542e565b60200101906001600160f81b03191690815f1a905350600101614af3565b505f5b6020811015614bb55784518160208110614b7757614b7761542e565b1a60f81b82614b87836006615631565b81518110614b9757614b9761542e565b60200101906001600160f81b03191690815f1a905350600101614b5b565b505f5b6020811015614c155784602001518160208110614bd757614bd761542e565b1a60f81b82614be7836026615631565b81518110614bf757614bf761542e565b60200101906001600160f81b03191690815f1a905350600101614bb8565b505f5b6008811015614c8957614c2c8160076156ef565b614c37906008615666565b60ff1685604001516001600160401b0316901c60f81b82826046614c5b9190615631565b81518110614c6b57614c6b61542e565b60200101906001600160f81b03191690815f1a905350600101614c18565b505f5b6030811015614cf45784608001518181518110614cab57614cab61542e565b01602001516001600160f81b03191682614cc683604e615631565b81518110614cd657614cd661542e565b60200101906001600160f81b03191690815f1a905350600101614c8c565b505f5b6008811015614d6657614d0b8160076156ef565b614d16906008615666565b60608601516001600160401b0390811691161c60f81b82614d3883607e615631565b81518110614d4857614d4861542e565b60200101906001600160f81b03191690815f1a905350600101614cf7565b50600281604051614d779190615620565b602060405180830381855afa158015614d92573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614db591906152a5565b94909350915050565b6141346140eb565b614dce6140eb565b80355f80516020615c0183398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614e1a6080840160608501615a5f565b60ff161115614e875760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b606482015260840161068a565b5f614e986080840160608501615a5f565b60ff1611614f005760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b606482015260840161068a565b614f106080830160608401615a5f565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614f41606083016040840161518e565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612b136140eb565b508054614f7c90615702565b5f825580601f10614f8b575050565b601f0160209004905f5260205f209081019061286f9190614fe3565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115614ff7575f8155600101614fe4565b5090565b801515811461286f575f80fd5b803563ffffffff81168114612179575f80fd5b5f805f6060848603121561502d575f80fd5b83359250602084013561503f81614ffb565b915061504d60408501615008565b90509250925092565b5f60208284031215615066575f80fd5b5035919050565b5f610140828403121561507e575f80fd5b50919050565b803561ffff81168114612179575f80fd5b80356001600160401b0381168114612179575f80fd5b5f805f606084860312156150bd575f80fd5b83356001600160401b038111156150d2575f80fd5b8401606081870312156150e3575f80fd5b92506150f160208501615084565b915061504d60408501615095565b5f6020828403121561510f575f80fd5b610cb182615008565b5f8060408385031215615129575f80fd5b61513283615008565b946020939093013593505050565b5f8060408385031215615151575f80fd5b82356001600160401b03811115615166575f80fd5b830160808186031215615177575f80fd5b915061518560208401615008565b90509250929050565b5f6020828403121561519e575f80fd5b610cb182615095565b634e487b7160e01b5f52602160045260245ffd5b815160e0820190600681106151de57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161521960608401826001600160401b03169052565b50608083015161523460808401826001600160401b03169052565b5060a083015161524f60a08401826001600160401b03169052565b5060c083015161526a60c08401826001600160401b03169052565b5092915050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908082111561526a5761526a615271565b5f602082840312156152b5575f80fd5b5051919050565b5f5b838110156152d65781810151838201526020016152be565b50505f910152565b602081525f82518060208401526152fc8160408501602087016152bc565b601f01601f19169190910160400192915050565b5f8261532a57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b6001600160a01b038116811461286f575f80fd5b5f602082840312156153de575f80fd5b8135610cb1816153ba565b5f808335601e198436030181126153fe575f80fd5b8301803591506001600160401b03821115615417575f80fd5b6020019150600581901b3603821315612632575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615456575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561549657615496615460565b60405290565b604051601f8201601f191681016001600160401b03811182821017156154c4576154c4615460565b604052919050565b5f6001600160401b038211156154e4576154e4615460565b50601f01601f191660200190565b5f60608236031215615502575f80fd5b61550a615474565b82358152602061551b818501615095565b8183015260408401356001600160401b03811115615537575f80fd5b840136601f820112615547575f80fd5b803561555a615555826154cc565b61549c565b818152368483850101111561556d575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516155e2818460208a016152bc565b80830190508581526001600160401b0360c01b8560c01b16602082015283516156128160288401602088016152bc565b016028019695505050505050565b5f82516154568184602087016152bc565b80820180821115610c7e57610c7e615271565b5f63ffffffff80831681810361565c5761565c615271565b6001019392505050565b8082028115828204841417610c7e57610c7e615271565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b0381811683821601908082111561526a5761526a615271565b81810381811115610c7e57610c7e615271565b600181811c9082168061571657607f821691505b60208210810361507e57634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f845461578d81615702565b806020870152604060018084165f81146157ae57600181146157ca576157f7565b60ff19851660408a0152604084151560051b8a010195506157f7565b895f5260205f205f5b858110156157ee5781548b82018601529083019088016157d3565b8a016040019650505b509398975050505050505050565b805161217981614ffb565b5f8060408385031215615821575f80fd5b82516001600160401b0380821115615837575f80fd5b908401906060828703121561584a575f80fd5b615852615474565b82518152602080840151615865816153ba565b8282015260408401518381111561587a575f80fd5b80850194505087601f85011261588e575f80fd5b8351925061589e615555846154cc565b83815288828587010111156158b1575f80fd5b6158c0848383018488016152bc565b806040840152508195506158d5818801615805565b9450505050509250929050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615a2357615a23615271565b505092915050565b5f6001600160401b0380831681810361565c5761565c615271565b5f60208284031215615a56575f80fd5b610cb182615084565b5f60208284031215615a6f575f80fd5b813560ff81168114610cb1575f80fd5b5f808335601e19843603018112615a94575f80fd5b8301803591506001600160401b03821115615aad575f80fd5b602001915036819003821315612632575f80fd5b601f82111561214857805f5260205f20601f840160051c81016020851015615ae65750805b601f840160051c820191505b81811015610d51575f8155600101615af2565b81516001600160401b03811115615b1e57615b1e615460565b615b3281615b2c8454615702565b84615ac1565b602080601f831160018114615b65575f8415615b4e5750858301515b5f19600386901b1c1916600185901b178555612f09565b5f85815260208120601f198616915b82811015615b9357888601518255948401946001909101908401615b74565b5085821015615bb057878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_DELEGATION_FEE_BIPS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_STAKE_MULTIPLIER_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"NATIVE_MINTER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractINativeMinter\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimDelegationFees\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeDelegatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndDelegation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structPoSValidatorManagerSettings\",\"components\":[{\"name\":\"baseSettings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"minimumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maximumStakeAmount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"minimumStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"minimumDelegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"maximumStakeMultiplier\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"rewardCalculator\",\"type\":\"address\",\"internalType\":\"contractIRewardCalculator\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeDelegatorRegistration\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeEndDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"includeUptimeProof\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"delegationFeeBips\",\"type\":\"uint16\",\"internalType\":\"uint16\"},{\"name\":\"minStakeDuration\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendUpdateDelegation\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"valueToWeight\",\"inputs\":[{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"weightToValue\",\"inputs\":[{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"pure\"},{\"type\":\"event\",\"name\":\"DelegationEnded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"rewards\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"fees\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorAdded\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"delegatorAddress\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"delegatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRegistered\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"startTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DelegatorRemovalInitialized\",\"inputs\":[{\"name\":\"delegationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AddressInsufficientBalance\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"FailedInnerCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ReentrancyGuardReentrantCall\",\"inputs\":[]}]", + Bin: "0x608060405234801561000f575f80fd5b50604051615da2380380615da283398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c558061014d5f395ff3fe6080604052600436106101af575f3560e01c806366435abf116100e7578063b771b3bc11610087578063c599e24f11610062578063c599e24f146104f8578063c974d1b61461050b578063d5f20ff61461051f578063df93d8de1461054b575f80fd5b8063b771b3bc146104a0578063ba3a4b97146104ba578063bee0a03f146104d9575f80fd5b80638280a25a116100c25780638280a25a1461042f57806393e245981461044357806398f3e2b414610462578063a3a65e4814610481575f80fd5b806366435abf146103de578063732214f8146103fd57806376f7862114610410575f80fd5b806335455ded116101525780635297fae61161012d5780635297fae61461035857806360305d621461037757806361e2f490146103a057806362065856146103bf575f80fd5b806335455ded146102fe57806340034a9314610326578063467ef06f14610339575f80fd5b8063151d30d11161018d578063151d30d11461025057806320e55565146102765780632e2194d814610295578063329c3e12146102cc575f80fd5b80630118acc4146101b35780630322ed98146101d45780630cdd0985146101f3575b5f80fd5b3480156101be575f80fd5b506101d26101cd36600461500a565b610561565b005b3480156101df575f80fd5b506101d26101ee366004615045565b610a05565b3480156101fe575f80fd5b5061023d61020d366004615045565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08602052604090205490565b6040519081526020015b60405180910390f35b34801561025b575f80fd5b50610264600a81565b60405160ff9091168152602001610247565b348015610281575f80fd5b506101d261029036600461505c565b610bbe565b3480156102a0575f80fd5b506102b46102af366004615045565b610c9b565b6040516001600160401b039091168152602001610247565b3480156102d7575f80fd5b506102e66001600160991b0181565b6040516001600160a01b039091168152602001610247565b348015610309575f80fd5b5061031361271081565b60405161ffff9091168152602001610247565b61023d61033436600461509a565b610cb1565b348015610344575f80fd5b506101d26103533660046150ee565b610ce5565b348015610363575f80fd5b506101d2610372366004615107565b610d85565b348015610382575f80fd5b5061038b601481565b60405163ffffffff9091168152602001610247565b3480156103ab575f80fd5b506101d26103ba36600461512f565b610f5a565b3480156103ca575f80fd5b5061023d6103d936600461517d565b61158e565b3480156103e9575f80fd5b506102b46103f8366004615045565b6115a7565b348015610408575f80fd5b5061023d5f81565b34801561041b575f80fd5b506101d261042a36600461500a565b6115bb565b34801561043a575f80fd5b50610264603081565b34801561044e575f80fd5b506101d261045d366004615045565b6117fe565b34801561046d575f80fd5b506101d261047c366004615107565b611904565b34801561048c575f80fd5b506101d261049b3660046150ee565b611c28565b3480156104ab575f80fd5b506102e66005600160991b0181565b3480156104c5575f80fd5b506101d26104d4366004615045565b611de0565b3480156104e4575f80fd5b506101d26104f3366004615045565b612066565b61023d610506366004615045565b61217a565b348015610516575f80fd5b50610264601481565b34801561052a575f80fd5b5061053e610539366004615045565b6121ab565b60405161024791906151aa565b348015610556575f80fd5b506102b46202a30081565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ba983398151915293929190829060ff1660048111156105c2576105c2615196565b60048111156105d3576105d3615196565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f610657826121ab565b905060028351600481111561066e5761066e615196565b146106c05760405162461bcd60e51b815260206004820152602a60248201525f80516020615bc98339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146107255760405162461bcd60e51b815260206004820152603360248201525f80516020615bc98339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b60648201526084016106b7565b6003835280515f90600290600581111561074157610741615196565b03610798578615610759576107568387612273565b90505b5f8460600151836080015161076e919061526d565b905061077a848261250f565b506001600160401b0390811660e0870152421660a0860152506107cc565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b56107ff866060015161158e565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa15801561087c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a0919061528d565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff191660018360048111156108df576108df615196565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c69916109f3916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615c298339815191526020526040808220815160e0810190925280545f80516020615be983398151915293929190829060ff166005811115610a5257610a52615196565b6005811115610a6357610a63615196565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c09091015290915081516005811115610ad257610ad2615196565b14610b375760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084016106b7565b6005600160991b016001600160a01b031663ee5b48eb610b5c8584606001515f612666565b6040518263ffffffff1660e01b8152600401610b7891906152c6565b6020604051808303815f875af1158015610b94573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bb8919061528d565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610c07575080546001600160401b03808416911610155b15610c255760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610c4f8361288b565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610cab64e8d4a51000836152f8565b92915050565b5f610cba61289f565b610cc6848484346128d6565b9050610cde60015f80516020615c0983398151915255565b9392505050565b5f80516020615ba98339815191525f80610cfe84612b53565b91509150610d0b82612e9d565b610d155750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d4357610d43615196565b03610d68575f83815260088501602052604081208054919055610d668282612ed8565b505b610d7e81610d79846040015161158e565b612f3e565b5050505050565b5f80516020615ba98339815191525f610d9d84612f51565b90505f80610dae8360400151613117565b50915091505f610dbd836121ab565b9050816001600160401b031681606001516001600160401b03161015610df55760405162461bcd60e51b81526004016106b790615317565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610e3a5760405162461bcd60e51b81526004016106b790615359565b60015f87815260068701602052604090205460ff166004811115610e6057610e60615196565b14610ec95760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b60648201526084016106b7565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f80516020615be98339815191529060ff1615610ff75760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b60648201526084016106b7565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561103a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061105e919061528d565b8360200135146110c05760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b60648201526084016106b7565b306110d160608501604086016153b6565b6001600160a01b0316146111435760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b60648201526084016106b7565b5f61115160608501856153d1565b91505f905084356020860135601461116f6060890160408a016153b6565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff16101561149e575f6111ef60608901896153d1565b8363ffffffff1681811061120557611205615416565b9050602002810190611217919061542a565b611220906154da565b80515f81815260088901602052604090205491925090156112535760405162461bcd60e51b81526004016106b790615571565b84825f01518360200151846040015160405160200161127594939291906155b9565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f916002916112c39190615608565b602060405180830381855afa1580156112de573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611301919061528d565b5f83815260088a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260078d01909252909120815181549394509192909190829060ff1916600183600581111561138d5761138d615196565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151611440911686615619565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a3505050806114979061562c565b90506111d3565b50600484018190555f6114b086612f51565b90505f6114c08260400151613352565b9050806002856040516114d39190615608565b602060405180830381855afa1580156114ee573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190611511919061528d565b146115755760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b60648201526084016106b7565b5050506009909201805460ff1916600117905550505050565b5f610cab6001600160401b03831664e8d4a5100061564e565b5f6115b1826121ab565b6080015192915050565b5f80516020615ba98339815191525f6115d3856134bb565b90506115de85612e9d565b6115e9575050505050565b5f8581526005830160205260409020546001600160a01b031633146116205760405162461bcd60e51b81526004016106b790615665565b5f85815260058301602052604090205460a082015161164f91600160b01b90046001600160401b0316906156b7565b6001600160401b03168160c001516001600160401b031610156116d05760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b60648201526084016106b7565b8315610d7e575f6116e18685612273565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b5906117389061158e565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa1580156117ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d2919061528d565b5f878152600885016020526040812080549091906117f1908490615619565b9091555050505050505050565b5f80516020615ba98339815191525f611816836121ab565b905060048151600581111561182d5761182d615196565b146118975760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b60648201526084016106b7565b5f8381526005830160205260409020546001600160a01b031633146118ce5760405162461bcd60e51b81526004016106b790615665565b5f83815260088301602090815260408083208054908490556005860190925290912054610bb8906001600160a01b031682612ed8565b61190c61289f565b5f80516020615ba98339815191525f61192484612f51565b90505f806119358360400151613117565b50915091505f611944836121ab565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff16600481111561197e5761197e615196565b600481111561198f5761198f615196565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff191690559084015191925084811691161015611a735760405162461bcd60e51b81526004016106b790615317565b826001600160401b03168160e001516001600160401b03161115611aa95760405162461bcd60e51b81526004016106b790615359565b600381516004811115611abe57611abe615196565b14611b125760405162461bcd60e51b815260206004820152603160248201525f80516020615bc98339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b60648201526084016106b7565b5f878152600787016020908152604080832080549084905587845260058a0190925282205490919061271090611b5390600160a01b900461ffff168461564e565b611b5d91906152f8565b905080886008015f8881526020019081526020015f205f828254611b819190615619565b909155505f9050611b9282846156d7565b9050611ba2846020015182612ed8565b611bb78460200151610d79866060015161158e565b856001600160401b0316878b7f9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d50338486604051611bfd929190918252602082015260400190565b60405180910390a4505050505050505050611c2460015f80516020615c0983398151915255565b5050565b5f80516020615be98339815191525f611c4083612f51565b90505f80611c518360400151613736565b9150915080611cb35760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b60648201526084016106b7565b5f82815260068501602052604081208054611ccd906156ea565b9050118015611cff575060015f83815260078601602052604090205460ff166005811115611cfd57611cfd615196565b145b611d1b5760405162461bcd60e51b81526004016106b79061571c565b5f8281526006850160205260408120611d3391614f5f565b5f8281526007850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260088b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ba983398151915293929190829060ff166004811115611e4157611e41615196565b6004811115611e5257611e52615196565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611ed957611ed9615196565b1480611ef75750600381516004811115611ef557611ef5615196565b145b611f4b5760405162461bcd60e51b815260206004820152603260248201525f80516020615bc9833981519152604482015271737461747573206e6f742070656e64696e6760701b60648201526084016106b7565b5f611f5982604001516121ab565b905080606001516001600160401b03165f03611fdd5760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e2049440060648201526084016106b7565b6005600160991b016001600160a01b031663ee5b48eb61200a846040015184606001518560800151612666565b6040518263ffffffff1660e01b815260040161202691906152c6565b6020604051808303815f875af1158015612042573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d7e919061528d565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040812080545f80516020615be98339815191529291906120ae906156ea565b90501180156120e0575060015f83815260078301602052604090205460ff1660058111156120de576120de615196565b145b6120fc5760405162461bcd60e51b81526004016106b79061571c565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916121359190600401615763565b6020604051808303815f875af1158015612151573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612175919061528d565b505050565b5f61218361289f565b61218e8233346138d7565b90506121a660015f80516020615c0983398151915255565b919050565b6121b3614f96565b5f8281525f80516020615c29833981519152602052604090819020815160e0810190925280545f80516020615be9833981519152929190829060ff16600581111561220057612200615196565b600581111561221157612211615196565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa1580156122be573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122e591908101906157f8565b91509150806123485760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b60648201526084016106b7565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561238b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123af919061528d565b8251146124135760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b60648201526084016106b7565b60208201516001600160a01b0316156124895760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b60648201526084016106b7565b5f806124988460400151613c8e565b915091508187146125055760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b60648201526084016106b7565b9695505050505050565b5f8281525f80516020615c29833981519152602052604081206002015481905f80516020615be983398151915290600160801b90046001600160401b03166125578582613e66565b5f61256187614074565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6125b18a858b612666565b6040518263ffffffff1660e01b81526004016125cd91906152c6565b6020604051808303815f875af11580156125e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260d919061528d565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156126df5761269f8160016156d7565b6126aa90600861564e565b5081515f908390839081106126c1576126c1615416565b60200101906001600160f81b03191690815f1a90535060010161268b565b505f5b600481101561274a576126f68160036156d7565b61270190600861564e565b600263ffffffff16901c60f81b8282600261271c9190615619565b8151811061272c5761272c615416565b60200101906001600160f81b03191690815f1a9053506001016126e2565b505f5b60208110156127ac5761276181601f6156d7565b61276c90600861564e565b86901c60f81b8261277e836006615619565b8151811061278e5761278e615416565b60200101906001600160f81b03191690815f1a90535060010161274d565b505f5b6008811015612817576127c38160076156d7565b6127ce90600861564e565b6001600160401b038616901c60f81b826127e9836026615619565b815181106127f9576127f9615416565b60200101906001600160f81b03191690815f1a9053506001016127af565b505f5b60088110156128825761282e8160076156d7565b61283990600861564e565b6001600160401b038516901c60f81b8261285483602e615619565b8151811061286457612864615416565b60200101906001600160f81b03191690815f1a90535060010161281a565b50949350505050565b612893614104565b61289c8161414f565b50565b5f80516020615c098339815191528054600119016128d057604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615ba98339815191529061ffff861610801590612922575061271061ffff861611155b61293e5760405162461bcd60e51b81526004016106b7906158ca565b60028101546001600160401b0390811690851610156129b75760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b60648201526084016106b7565b8054831015612a1a5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b60648201526084016106b7565b8060010154831115612a815760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b60648201526084016106b7565b825f612a8c82610c9b565b90505f612a9989836141c1565b90506040518060600160405280612aad3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b60015f80516020615c0983398151915255565b5f612b5c614f96565b5f80516020615be98339815191525f612b7485612f51565b90505f80612b858360400151613736565b915091508015612bea5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b60648201526084016106b7565b5f828152600785016020526040808220815160e081019092528054829060ff166005811115612c1b57612c1b615196565b6005811115612c2c57612c2c615196565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612c9d57612c9d615196565b1480612cbb5750600182516005811115612cb957612cb9615196565b145b612d1a5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b60648201526084016106b7565b600382516005811115612d2f57612d2f615196565b03612d3c57506004612d40565b5060055b6020808301515f90815260088801909152604081205581816005811115612d6957612d69615196565b90816005811115612d7c57612d7c615196565b9052505f84815260078701602052604090208251815484929190829060ff19166001836005811115612db057612db0615196565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612e6457612e64615196565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612f24575f80fd5b505af1158015612f36573d5f803e3d5ffd5b505050505050565b611c246001600160a01b03831682614725565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612fb5573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612fdc91908101906157f8565b915091508061303c5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b60648201526084016106b7565b81511561309d5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b60648201526084016106b7565b60208201516001600160a01b0316156131105760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b60648201526084016106b7565b5092915050565b5f805f835160361461313b5760405162461bcd60e51b81526004016106b790615915565b5f805b600281101561318a576131528160016156d7565b61315d90600861564e565b61ffff1686828151811061317357613173615416565b016020015160f81c901b919091179060010161313e565b5061ffff8116156131ad5760405162461bcd60e51b81526004016106b79061595e565b5f805b6004811015613208576131c48160036156d7565b6131cf90600861564e565b63ffffffff16876131e1836002615619565b815181106131f1576131f1615416565b016020015160f81c901b91909117906001016131b0565b5063ffffffff811660041461322f5760405162461bcd60e51b81526004016106b7906159a1565b5f805b60208110156132845761324681601f6156d7565b61325190600861564e565b8861325d836006615619565b8151811061326d5761326d615416565b016020015160f81c901b9190911790600101613232565b505f805b60088110156132e35761329c8160076156d7565b6132a790600861564e565b6001600160401b0316896132bc836026615619565b815181106132cc576132cc615416565b016020015160f81c901b9190911790600101613288565b505f805b6008811015613342576132fb8160076156d7565b61330690600861564e565b6001600160401b03168a61331b83602e615619565b8151811061332b5761332b615416565b016020015160f81c901b91909117906001016132e7565b5091989097509095509350505050565b5f81516026146133745760405162461bcd60e51b81526004016106b790615915565b5f805b60028110156133c35761338b8160016156d7565b61339690600861564e565b61ffff168482815181106133ac576133ac615416565b016020015160f81c901b9190911790600101613377565b5061ffff8116156133e65760405162461bcd60e51b81526004016106b79061595e565b5f805b6004811015613441576133fd8160036156d7565b61340890600861564e565b63ffffffff168561341a836002615619565b8151811061342a5761342a615416565b016020015160f81c901b91909117906001016133e9565b5063ffffffff8116156134665760405162461bcd60e51b81526004016106b7906159a1565b5f805b60208110156128825761347d81601f6156d7565b61348890600861564e565b86613494836006615619565b815181106134a4576134a4615416565b016020015160f81c901b9190911790600101613469565b6134c3614f96565b5f8281525f80516020615c298339815191526020526040808220815160e0810190925280545f80516020615be983398151915293929190829060ff16600581111561351057613510615196565b600581111561352157613521615196565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561359357613593615196565b146135ef5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b60648201526084016106b7565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561363357613633615196565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6136df858261250f565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f8082516027146137595760405162461bcd60e51b81526004016106b790615915565b5f805b60028110156137a8576137708160016156d7565b61377b90600861564e565b61ffff1685828151811061379157613791615416565b016020015160f81c901b919091179060010161375c565b5061ffff8116156137cb5760405162461bcd60e51b81526004016106b79061595e565b5f805b6004811015613826576137e28160036156d7565b6137ed90600861564e565b63ffffffff16866137ff836002615619565b8151811061380f5761380f615416565b016020015160f81c901b91909117906001016137ce565b5063ffffffff811660031461384d5760405162461bcd60e51b81526004016106b7906159a1565b5f805b60208110156138a25761386481601f6156d7565b61386f90600861564e565b8761387b836006615619565b8151811061388b5761388b615416565b016020015160f81c901b9190911790600101613850565b505f866026815181106138b7576138b7615416565b016020015191976001600160f81b03199092161515965090945050505050565b5f5f80516020615ba9833981519152816138f084610c9b565b90505f6138fc876121ab565b905061390787612e9d565b6139645760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b60648201526084016106b7565b60028151600581111561397957613979615196565b146139d85760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b60648201526084016106b7565b5f8282608001516139e991906156b7565b60048501546040840151919250613a0b916001600160401b03909116906159e8565b6001600160401b0316816001600160401b03161115613a8a5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b60648201526084016106b7565b5f80613a968a8461250f565b915091505f8a83604051602001613ac492919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff19166001836004811115613b5f57613b5f615196565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f808251602e14613cb15760405162461bcd60e51b81526004016106b790615915565b5f805b6002811015613d0057613cc88160016156d7565b613cd390600861564e565b61ffff16858281518110613ce957613ce9615416565b016020015160f81c901b9190911790600101613cb4565b5061ffff811615613d235760405162461bcd60e51b81526004016106b79061595e565b5f805b6004811015613d7e57613d3a8160036156d7565b613d4590600861564e565b63ffffffff1686613d57836002615619565b81518110613d6757613d67615416565b016020015160f81c901b9190911790600101613d26565b5063ffffffff8116600514613da55760405162461bcd60e51b81526004016106b7906159a1565b5f805b6020811015613dfa57613dbc81601f6156d7565b613dc790600861564e565b87613dd3836006615619565b81518110613de357613de3615416565b016020015160f81c901b9190911790600101613da8565b505f805b6008811015613e5957613e128160076156d7565b613e1d90600861564e565b6001600160401b031688613e32836026615619565b81518110613e4257613e42615416565b016020015160f81c901b9190911790600101613dfe565b5090969095509350505050565b5f80516020615be98339815191525f6001600160401b038084169085161115613e9a57613e93838561526d565b9050613ea7565b613ea4848461526d565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b0316606082015242911580613f09575060018401548151613f05916001600160401b031690615619565b8210155b15613f2f576001600160401b038316606082015281815260408101516020820152613f4e565b8281606001818151613f4191906156b7565b6001600160401b03169052505b6060810151613f5e9060646159e8565b602082015160018601546001600160401b039290921691613f899190600160401b900460ff1661564e565b1015613fed5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b60648201526084016106b7565b856001600160401b0316816040018181516140089190615619565b9052506040810180516001600160401b03871691906140289083906156d7565b905250805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615c298339815191526020526040812060020180545f80516020615be983398151915291600160401b9091046001600160401b03169060086140be83615a13565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260079290920160205250604090922060020154600160401b9004909116919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661414d57604051631afcd79f60e31b815260040160405180910390fd5b565b614157614104565b614160816147b8565b6141686147d1565b61289c6060820135608083013561418560c0850160a0860161517d565b61419560e0860160c08701615a2e565b61ffff166141aa610100870160e08801615a47565b6141bc610120880161010089016153b6565b6147e1565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff1661424c5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b60648201526084016106b7565b5f80516020615be98339815191524261426b604086016020870161517d565b6001600160401b0316116142dd5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b60648201526084016106b7565b6142ed604085016020860161517d565b6001600160401b03166143036202a30042615619565b116143765760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e2066757475726500000000000000000060648201526084016106b7565b83356143ce5760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b60648201526084016106b7565b83355f908152600882016020526040902054156143fd5760405162461bcd60e51b81526004016106b790615571565b603061440c6040860186615a67565b9050146144715760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b60648201526084016106b7565b61447b835f613e66565b5f806145146040518060a00160405280855f01548152602001885f01358152602001876001600160401b031681526020018860200160208101906144bf919061517d565b6001600160401b031681526020016144da60408a018a615a67565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614a25565b5f828152600686016020526040902091935091506145328282615aed565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061455f9085906004016152c6565b6020604051808303815f875af115801561457b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061459f919061528d565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600788019091522081518154829060ff1916600183600581111561461757614617615196565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916146f7918e01908e0161517d565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b804710156147485760405163cd78605960e01b81523060048201526024016106b7565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614791576040519150601f19603f3d011682016040523d82523d5f602084013e614796565b606091505b505090508061217557604051630a12f52160e11b815260040160405180910390fd5b6147c0614104565b6147c8614dd4565b61289c81614ddc565b6147d9614104565b61414d614f57565b6147e9614104565b5f80516020615ba9833981519152836148555760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b60648201526084016106b7565b6127108411156148775760405162461bcd60e51b81526004016106b7906158ca565b858711156148df5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b60648201526084016106b7565b5f8360ff161161494c5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b60648201526084016106b7565b600a60ff841611156149be5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b60648201526084016106b7565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6060826080015151603014614a8f5760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b60648201526084016106b7565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614b0657614ac68160016156d7565b614ad190600861564e565b5081515f90839083908110614ae857614ae8615416565b60200101906001600160f81b03191690815f1a905350600101614ab2565b505f5b6004811015614b6e57614b1d8160036156d7565b614b2890600861564e565b600160ff919091161c60f81b82614b40836002615619565b81518110614b5057614b50615416565b60200101906001600160f81b03191690815f1a905350600101614b09565b505f5b6020811015614bcb5784518160208110614b8d57614b8d615416565b1a60f81b82614b9d836006615619565b81518110614bad57614bad615416565b60200101906001600160f81b03191690815f1a905350600101614b71565b505f5b6020811015614c2b5784602001518160208110614bed57614bed615416565b1a60f81b82614bfd836026615619565b81518110614c0d57614c0d615416565b60200101906001600160f81b03191690815f1a905350600101614bce565b505f5b6008811015614c9f57614c428160076156d7565b614c4d90600861564e565b60ff1685604001516001600160401b0316901c60f81b82826046614c719190615619565b81518110614c8157614c81615416565b60200101906001600160f81b03191690815f1a905350600101614c2e565b505f5b6030811015614d0a5784608001518181518110614cc157614cc1615416565b01602001516001600160f81b03191682614cdc83604e615619565b81518110614cec57614cec615416565b60200101906001600160f81b03191690815f1a905350600101614ca2565b505f5b6008811015614d7c57614d218160076156d7565b614d2c90600861564e565b60608601516001600160401b0390811691161c60f81b82614d4e83607e615619565b81518110614d5e57614d5e615416565b60200101906001600160f81b03191690815f1a905350600101614d0d565b50600281604051614d8d9190615608565b602060405180830381855afa158015614da8573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614dcb919061528d565b94909350915050565b61414d614104565b614de4614104565b80355f80516020615be98339815191529081556014614e096060840160408501615a47565b60ff161115614e765760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b60648201526084016106b7565b5f614e876060840160408501615a47565b60ff1611614eef5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b60648201526084016106b7565b614eff6060830160408401615a47565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055614f30604083016020840161517d565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612b40614104565b508054614f6b906156ea565b5f825580601f10614f7a575050565b601f0160209004905f5260205f209081019061289c9190614fd2565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115614fe6575f8155600101614fd3565b5090565b801515811461289c575f80fd5b803563ffffffff811681146121a6575f80fd5b5f805f6060848603121561501c575f80fd5b83359250602084013561502e81614fea565b915061503c60408501614ff7565b90509250925092565b5f60208284031215615055575f80fd5b5035919050565b5f610120828403121561506d575f80fd5b50919050565b803561ffff811681146121a6575f80fd5b80356001600160401b03811681146121a6575f80fd5b5f805f606084860312156150ac575f80fd5b83356001600160401b038111156150c1575f80fd5b8401606081870312156150d2575f80fd5b92506150e060208501615073565b915061503c60408501615084565b5f602082840312156150fe575f80fd5b610cde82614ff7565b5f8060408385031215615118575f80fd5b61512183614ff7565b946020939093013593505050565b5f8060408385031215615140575f80fd5b82356001600160401b03811115615155575f80fd5b830160808186031215615166575f80fd5b915061517460208401614ff7565b90509250929050565b5f6020828403121561518d575f80fd5b610cde82615084565b634e487b7160e01b5f52602160045260245ffd5b815160e0820190600681106151cd57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161520860608401826001600160401b03169052565b50608083015161522360808401826001600160401b03169052565b5060a083015161523e60a08401826001600160401b03169052565b5060c083015161311060c08401826001600160401b03169052565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908082111561311057613110615259565b5f6020828403121561529d575f80fd5b5051919050565b5f5b838110156152be5781810151838201526020016152a6565b50505f910152565b602081525f82518060208401526152e48160408501602087016152a4565b601f01601f19169190910160400192915050565b5f8261531257634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b6001600160a01b038116811461289c575f80fd5b5f602082840312156153c6575f80fd5b8135610cde816153a2565b5f808335601e198436030181126153e6575f80fd5b8301803591506001600160401b038211156153ff575f80fd5b6020019150600581901b360382131561265f575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261543e575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561547e5761547e615448565b60405290565b604051601f8201601f191681016001600160401b03811182821017156154ac576154ac615448565b604052919050565b5f6001600160401b038211156154cc576154cc615448565b50601f01601f191660200190565b5f606082360312156154ea575f80fd5b6154f261545c565b823581526020615503818501615084565b8183015260408401356001600160401b0381111561551f575f80fd5b840136601f82011261552f575f80fd5b803561554261553d826154b4565b615484565b8181523684838501011115615555575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516155ca818460208a016152a4565b80830190508581526001600160401b0360c01b8560c01b16602082015283516155fa8160288401602088016152a4565b016028019695505050505050565b5f825161543e8184602087016152a4565b80820180821115610cab57610cab615259565b5f63ffffffff80831681810361564457615644615259565b6001019392505050565b8082028115828204841417610cab57610cab615259565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b0381811683821601908082111561311057613110615259565b81810381811115610cab57610cab615259565b600181811c908216806156fe57607f821691505b60208210810361506d57634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615775816156ea565b806020870152604060018084165f811461579657600181146157b2576157df565b60ff19851660408a0152604084151560051b8a010195506157df565b895f5260205f205f5b858110156157d65781548b82018601529083019088016157bb565b8a016040019650505b509398975050505050505050565b80516121a681614fea565b5f8060408385031215615809575f80fd5b82516001600160401b038082111561581f575f80fd5b9084019060608287031215615832575f80fd5b61583a61545c565b8251815260208084015161584d816153a2565b82820152604084015183811115615862575f80fd5b80850194505087601f850112615876575f80fd5b8351925061588661553d846154b4565b8381528882858701011115615899575f80fd5b6158a8848383018488016152a4565b806040840152508195506158bd8188016157ed565b9450505050509250929050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615a0b57615a0b615259565b505092915050565b5f6001600160401b0380831681810361564457615644615259565b5f60208284031215615a3e575f80fd5b610cde82615073565b5f60208284031215615a57575f80fd5b813560ff81168114610cde575f80fd5b5f808335601e19843603018112615a7c575f80fd5b8301803591506001600160401b03821115615a95575f80fd5b60200191503681900382131561265f575f80fd5b601f82111561217557805f5260205f20601f840160051c81016020851015615ace5750805b601f840160051c820191505b81811015610d7e575f8155600101615ada565b81516001600160401b03811115615b0657615b06615448565b615b1a81615b1484546156ea565b84615aa9565b602080601f831160018114615b4d575f8415615b365750858301515b5f19600386901b1c1916600185901b178555612f36565b5f85815260208120601f198616915b82811015615b7b57888601518255948401946001909101908401615b5c565b5085821015615b9857878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a164736f6c6343000819000a", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -471,6 +470,37 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) NATIVE return _NativeTokenStakingManager.Contract.NATIVEMINTER(&_NativeTokenStakingManager.CallOpts) } +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _NativeTokenStakingManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_NativeTokenStakingManager *NativeTokenStakingManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _NativeTokenStakingManager.Contract.PCHAINBLOCKCHAINID(&_NativeTokenStakingManager.CallOpts) +} + // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) @@ -762,23 +792,23 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Co return _NativeTokenStakingManager.Contract.CompleteValidatorRegistration(&_NativeTokenStakingManager.TransactOpts, messageIndex) } -// Initialize is a paid mutator transaction binding the contract method 0x1f7a9d8f. +// Initialize is a paid mutator transaction binding the contract method 0x20e55565. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactor) Initialize(opts *bind.TransactOpts, settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.contract.Transact(opts, "initialize", settings) } -// Initialize is a paid mutator transaction binding the contract method 0x1f7a9d8f. +// Initialize is a paid mutator transaction binding the contract method 0x20e55565. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } -// Initialize is a paid mutator transaction binding the contract method 0x1f7a9d8f. +// Initialize is a paid mutator transaction binding the contract method 0x20e55565. // -// Solidity: function initialize(((bytes32,bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() +// Solidity: function initialize(((bytes32,uint64,uint8),uint256,uint256,uint64,uint16,uint8,address) settings) returns() func (_NativeTokenStakingManager *NativeTokenStakingManagerTransactorSession) Initialize(settings PoSValidatorManagerSettings) (*types.Transaction, error) { return _NativeTokenStakingManager.Contract.Initialize(&_NativeTokenStakingManager.TransactOpts, settings) } diff --git a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go index 2dbe9c8fa..f4c1dcc29 100644 --- a/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go +++ b/abi-bindings/go/validator-manager/PoAValidatorManager/PoAValidatorManager.go @@ -57,7 +57,6 @@ type Validator struct { // ValidatorManagerSettings is an auto generated low-level Go binding around an user-defined struct. type ValidatorManagerSettings struct { - PChainBlockchainID [32]byte SubnetID [32]byte ChurnPeriodSeconds uint64 MaximumChurnPercentage uint8 @@ -72,8 +71,8 @@ type ValidatorRegistrationInput struct { // PoAValidatorManagerMetaData contains all meta data concerning the PoAValidatorManager contract. var PoAValidatorManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"pChainBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", - Bin: "0x608060405234801561000f575f80fd5b5060405161396538038061396583398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6138188061014d5f395ff3fe608060405234801561000f575f80fd5b506004361061011c575f3560e01c80638994ab49116100a9578063bee0a03f1161006e578063bee0a03f146102b4578063c974d1b6146102c7578063d5f20ff6146102cf578063df93d8de146102ef578063f2fde38b146102f9575f80fd5b80638994ab49146102295780638da5cb5b1461023c57806397fb70d414610280578063a3a65e4814610293578063b771b3bc146102a6575f80fd5b806360305d62116100ef57806360305d62146101ac57806361e2f490146101c957806366435abf146101dc578063715018a6146102075780638280a25a1461020f575f80fd5b80630322ed98146101205780630cdd098514610135578063467ef06f14610186578063580a400614610199575b5f80fd5b61013361012e366004612daa565b61030c565b005b610173610143366004612daa565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b610133610194366004612dd9565b6104ca565b6101336101a7366004612e1c565b6104d8565b6101b4601481565b60405163ffffffff909116815260200161017d565b6101336101d7366004612e52565b6105e6565b6101ef6101ea366004612daa565b610c1a565b6040516001600160401b03909116815260200161017d565b610133610c2e565b610217603081565b60405160ff909116815260200161017d565b610173610237366004612eb2565b610c41565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b03909116815260200161017d565b61013361028e366004612daa565b610c5d565b6101336102a1366004612dd9565b610c72565b6102686005600160991b0181565b6101336102c2366004612daa565b610e2a565b610217601481565b6102e26102dd366004612daa565b610f39565b60405161017d9190612f0b565b6101ef6202a30081565b610133610307366004612fc1565b611001565b5f8181525f805160206137ec8339815191526020526040808220815160e0810190925280545f805160206137cc83398151915293929190829060ff16600581111561035957610359612ef7565b600581111561036a5761036a612ef7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156103d9576103d9612ef7565b146104435760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084015b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb6104688584606001515f61103e565b6040518263ffffffff1660e01b81526004016104849190613005565b6020604051808303815f875af11580156104a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104c49190613037565b50505050565b6104d381611263565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561051c5750825b90505f826001600160401b031660011480156105375750303b155b905081158015610545575080155b156105635760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561058d57845460ff60401b1916600160401b1785555b61059787876115ad565b83156105dd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f805160206137cc8339815191529060ff16156106835760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b606482015260840161043a565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106ea9190613037565b83602001351461074c5760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b606482015260840161043a565b3061075d6060850160408601612fc1565b6001600160a01b0316146107cf5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b606482015260840161043a565b5f6107dd606085018561304e565b91505f90508435602086013560146107fb6060890160408a01612fc1565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015610b2a575f61087b606089018961304e565b8363ffffffff1681811061089157610891613093565b90506020028101906108a391906130a7565b6108ac90613157565b80515f81815260098901602052604090205491925090156108df5760405162461bcd60e51b815260040161043a906131ee565b84825f0151836020015184604001516040516020016109019493929190613236565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161094f9190613285565b602060405180830381855afa15801561096a573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061098d9190613037565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff19166001836005811115610a1957610a19612ef7565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151610acc9116866132aa565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a350505080610b23906132bd565b905061085f565b50600584018190555f610b3c866115c7565b90505f610b4c82604001516117a1565b905080600285604051610b5f9190613285565b602060405180830381855afa158015610b7a573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610b9d9190613037565b14610c015760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b606482015260840161043a565b505050600a909201805460ff1916600117905550505050565b5f610c2482610f39565b6080015192915050565b610c3661190a565b610c3f5f611965565b565b5f610c4a61190a565b610c5483836119d5565b90505b92915050565b610c6561190a565b610c6e81611f3a565b5050565b5f805160206137cc8339815191525f610c8a836115c7565b90505f80610c9b83604001516121b5565b9150915080610cfd5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b606482015260840161043a565b5f82815260078501602052604081208054610d17906132df565b9050118015610d49575060015f83815260088601602052604090205460ff166005811115610d4757610d47612ef7565b145b610d655760405162461bcd60e51b815260040161043a90613311565b5f8281526007850160205260408120610d7d91612d1f565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f805160206137cc833981519152929190610e72906132df565b9050118015610ea4575060015f83815260088301602052604090205460ff166005811115610ea257610ea2612ef7565b145b610ec05760405162461bcd60e51b815260040161043a90613311565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610ef99190600401613358565b6020604051808303815f875af1158015610f15573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d39190613037565b610f41612d56565b5f8281525f805160206137ec833981519152602052604090819020815160e0810190925280545f805160206137cc833981519152929190829060ff166005811115610f8e57610f8e612ef7565b6005811115610f9f57610f9f612ef7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b61100961190a565b6001600160a01b03811661103257604051631e4fbdf760e01b81525f600482015260240161043a565b61103b81611965565b50565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156110b7576110778160016133e2565b6110829060086133f5565b5081515f9083908390811061109957611099613093565b60200101906001600160f81b03191690815f1a905350600101611063565b505f5b6004811015611122576110ce8160036133e2565b6110d99060086133f5565b600263ffffffff16901c60f81b828260026110f491906132aa565b8151811061110457611104613093565b60200101906001600160f81b03191690815f1a9053506001016110ba565b505f5b60208110156111845761113981601f6133e2565b6111449060086133f5565b86901c60f81b826111568360066132aa565b8151811061116657611166613093565b60200101906001600160f81b03191690815f1a905350600101611125565b505f5b60088110156111ef5761119b8160076133e2565b6111a69060086133f5565b6001600160401b038616901c60f81b826111c18360266132aa565b815181106111d1576111d1613093565b60200101906001600160f81b03191690815f1a905350600101611187565b505f5b600881101561125a576112068160076133e2565b6112119060086133f5565b6001600160401b038516901c60f81b8261122c83602e6132aa565b8151811061123c5761123c613093565b60200101906001600160f81b03191690815f1a9053506001016111f2565b50949350505050565b5f61126c612d56565b5f805160206137cc8339815191525f611284856115c7565b90505f8061129583604001516121b5565b9150915080156112fa5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b606482015260840161043a565b5f828152600885016020526040808220815160e081019092528054829060ff16600581111561132b5761132b612ef7565b600581111561133c5761133c612ef7565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156113ad576113ad612ef7565b14806113cb57506001825160058111156113c9576113c9612ef7565b145b61142a5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b606482015260840161043a565b60038251600581111561143f5761143f612ef7565b0361144c57506004611450565b5060055b6020808301515f9081526009880190915260408120558181600581111561147957611479612ef7565b9081600581111561148c5761148c612ef7565b9052505f84815260088701602052604090208251815484929190829060ff191660018360058111156114c0576114c0612ef7565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558151600581111561157457611574612ef7565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b6115b5612356565b6115be8261239f565b610c6e816123b8565b60408051606080820183525f8083526020830181905292820152905f805160206137cc8339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa15801561163c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611663919081019061341b565b91509150806116c35760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b606482015260840161043a565b82548251146117265760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b606482015260840161043a565b60208201516001600160a01b0316156117995760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b606482015260840161043a565b509392505050565b5f81516026146117c35760405162461bcd60e51b815260040161043a906134ed565b5f805b6002811015611812576117da8160016133e2565b6117e59060086133f5565b61ffff168482815181106117fb576117fb613093565b016020015160f81c901b91909117906001016117c6565b5061ffff8116156118355760405162461bcd60e51b815260040161043a90613536565b5f805b60048110156118905761184c8160036133e2565b6118579060086133f5565b63ffffffff16856118698360026132aa565b8151811061187957611879613093565b016020015160f81c901b9190911790600101611838565b5063ffffffff8116156118b55760405162461bcd60e51b815260040161043a90613579565b5f805b602081101561125a576118cc81601f6133e2565b6118d79060086133f5565b866118e38360066132aa565b815181106118f3576118f3613093565b016020015160f81c901b91909117906001016118b8565b3361193c7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610c3f5760405163118cdaa760e01b815233600482015260240161043a565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff16611a605760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b606482015260840161043a565b5f805160206137cc83398151915242611a7f60408601602087016135c0565b6001600160401b031611611af15760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b606482015260840161043a565b611b0160408501602086016135c0565b6001600160401b0316611b176202a300426132aa565b11611b8a5760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e20667574757265000000000000000000606482015260840161043a565b8335611be25760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b606482015260840161043a565b83355f90815260098201602052604090205415611c115760405162461bcd60e51b815260040161043a906131ee565b6030611c2060408601866135d9565b905014611c855760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b606482015260840161043a565b611c8f835f6123c9565b5f80611d296040518060a0016040528085600101548152602001885f01358152602001876001600160401b03168152602001886020016020810190611cd491906135c0565b6001600160401b03168152602001611cef60408a018a6135d9565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506125d7565b5f82815260078601602052604090209193509150611d478282613666565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611d74908590600401613005565b6020604051808303815f875af1158015611d90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db49190613037565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff19166001836005811115611e2c57611e2c612ef7565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91611f0c918e01908e016135c0565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611f42612d56565b5f8281525f805160206137ec8339815191526020526040808220815160e0810190925280545f805160206137cc83398151915293929190829060ff166005811115611f8f57611f8f612ef7565b6005811115611fa057611fa0612ef7565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561201257612012612ef7565b1461206e5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b606482015260840161043a565b60038152426001600160401b031660c08201525f84815260088301602052604090208151815483929190829060ff191660018360058111156120b2576120b2612ef7565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f61215e8582612986565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f8082516027146121d85760405162461bcd60e51b815260040161043a906134ed565b5f805b6002811015612227576121ef8160016133e2565b6121fa9060086133f5565b61ffff1685828151811061221057612210613093565b016020015160f81c901b91909117906001016121db565b5061ffff81161561224a5760405162461bcd60e51b815260040161043a90613536565b5f805b60048110156122a5576122618160036133e2565b61226c9060086133f5565b63ffffffff168661227e8360026132aa565b8151811061228e5761228e613093565b016020015160f81c901b919091179060010161224d565b5063ffffffff81166003146122cc5760405162461bcd60e51b815260040161043a90613579565b5f805b6020811015612321576122e381601f6133e2565b6122ee9060086133f5565b876122fa8360066132aa565b8151811061230a5761230a613093565b016020015160f81c901b91909117906001016122cf565b505f8660268151811061233657612336613093565b016020015191976001600160f81b03199092161515965090945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610c3f57604051631afcd79f60e31b815260040160405180910390fd5b6123a7612356565b6123af612add565b61103b81612ae5565b6123c0612356565b61103b81612c87565b5f805160206137cc8339815191525f6001600160401b0380841690851611156123fd576123f68385613725565b905061240a565b6124078484613725565b90505b6040805160808101825260038401548082526004850154602083015260058501549282019290925260068401546001600160401b031660608201524291158061246c575060028401548151612468916001600160401b0316906132aa565b8210155b15612492576001600160401b0383166060820152818152604081015160208201526124b1565b82816060018181516124a49190613745565b6001600160401b03169052505b60608101516124c1906064613765565b602082015160028601546001600160401b0392909216916124ec9190600160401b900460ff166133f5565b10156125505760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b606482015260840161043a565b856001600160401b03168160400181815161256b91906132aa565b9052506040810180516001600160401b038716919061258b9083906133e2565b905250805160038501556020810151600485015560408101516005850155606001516006909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f60608260800151516030146126415760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b606482015260840161043a565b60408051608680825260c082019092525f916020820181803683370190505090505f5b60028110156126b8576126788160016133e2565b6126839060086133f5565b5081515f9083908390811061269a5761269a613093565b60200101906001600160f81b03191690815f1a905350600101612664565b505f5b6004811015612720576126cf8160036133e2565b6126da9060086133f5565b600160ff919091161c60f81b826126f28360026132aa565b8151811061270257612702613093565b60200101906001600160f81b03191690815f1a9053506001016126bb565b505f5b602081101561277d578451816020811061273f5761273f613093565b1a60f81b8261274f8360066132aa565b8151811061275f5761275f613093565b60200101906001600160f81b03191690815f1a905350600101612723565b505f5b60208110156127dd578460200151816020811061279f5761279f613093565b1a60f81b826127af8360266132aa565b815181106127bf576127bf613093565b60200101906001600160f81b03191690815f1a905350600101612780565b505f5b6008811015612851576127f48160076133e2565b6127ff9060086133f5565b60ff1685604001516001600160401b0316901c60f81b8282604661282391906132aa565b8151811061283357612833613093565b60200101906001600160f81b03191690815f1a9053506001016127e0565b505f5b60308110156128bc578460800151818151811061287357612873613093565b01602001516001600160f81b0319168261288e83604e6132aa565b8151811061289e5761289e613093565b60200101906001600160f81b03191690815f1a905350600101612854565b505f5b600881101561292e576128d38160076133e2565b6128de9060086133f5565b60608601516001600160401b0390811691161c60f81b8261290083607e6132aa565b8151811061291057612910613093565b60200101906001600160f81b03191690815f1a9053506001016128bf565b5060028160405161293f9190613285565b602060405180830381855afa15801561295a573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061297d9190613037565b94909350915050565b5f8281525f805160206137ec833981519152602052604081206002015481905f805160206137cc83398151915290600160801b90046001600160401b03166129ce85826123c9565b5f6129d887612c8f565b5f8881526008850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb612a288a858b61103e565b6040518263ffffffff1660e01b8152600401612a449190613005565b6020604051808303815f875af1158015612a60573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a849190613037565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b610c3f612356565b612aed612356565b80355f805160206137cc83398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014612b396080840160608501613790565b60ff161115612ba65760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b606482015260840161043a565b5f612bb76080840160608501613790565b60ff1611612c1f5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b606482015260840161043a565b612c2f6080830160608401613790565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055612c6060608301604084016135c0565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b611009612356565b5f8181525f805160206137ec8339815191526020526040812060020180545f805160206137cc83398151915291600160401b9091046001600160401b0316906008612cd9836137b0565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b508054612d2b906132df565b5f825580601f10612d3a575050565b601f0160209004905f5260205f209081019061103b9190612d92565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115612da6575f8155600101612d93565b5090565b5f60208284031215612dba575f80fd5b5035919050565b803563ffffffff81168114612dd4575f80fd5b919050565b5f60208284031215612de9575f80fd5b610c5482612dc1565b5f60808284031215612e02575f80fd5b50919050565b6001600160a01b038116811461103b575f80fd5b5f8060a08385031215612e2d575f80fd5b612e378484612df2565b91506080830135612e4781612e08565b809150509250929050565b5f8060408385031215612e63575f80fd5b82356001600160401b03811115612e78575f80fd5b612e8485828601612df2565b925050612e9360208401612dc1565b90509250929050565b80356001600160401b0381168114612dd4575f80fd5b5f8060408385031215612ec3575f80fd5b82356001600160401b03811115612ed8575f80fd5b830160608186031215612ee9575f80fd5b9150612e9360208401612e9c565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110612f2e57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151612f6960608401826001600160401b03169052565b506080830151612f8460808401826001600160401b03169052565b5060a0830151612f9f60a08401826001600160401b03169052565b5060c0830151612fba60c08401826001600160401b03169052565b5092915050565b5f60208284031215612fd1575f80fd5b8135612fdc81612e08565b9392505050565b5f5b83811015612ffd578181015183820152602001612fe5565b50505f910152565b602081525f8251806020840152613023816040850160208701612fe3565b601f01601f19169190910160400192915050565b5f60208284031215613047575f80fd5b5051919050565b5f808335601e19843603018112613063575f80fd5b8301803591506001600160401b0382111561307c575f80fd5b6020019150600581901b3603821315612ad6575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e198336030181126130bb575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156130fb576130fb6130c5565b60405290565b604051601f8201601f191681016001600160401b0381118282101715613129576131296130c5565b604052919050565b5f6001600160401b03821115613149576131496130c5565b50601f01601f191660200190565b5f60608236031215613167575f80fd5b61316f6130d9565b823581526020613180818501612e9c565b8183015260408401356001600160401b0381111561319c575f80fd5b840136601f8201126131ac575f80fd5b80356131bf6131ba82613131565b613101565b81815236848385010111156131d2575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f8551613247818460208a01612fe3565b80830190508581526001600160401b0360c01b8560c01b1660208201528351613277816028840160208801612fe3565b016028019695505050505050565b5f82516130bb818460208701612fe3565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c5757610c57613296565b5f63ffffffff8083168181036132d5576132d5613296565b6001019392505050565b600181811c908216806132f357607f821691505b602082108103612e0257634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f845461336a816132df565b806020870152604060018084165f811461338b57600181146133a7576133d4565b60ff19851660408a0152604084151560051b8a010195506133d4565b895f5260205f205f5b858110156133cb5781548b82018601529083019088016133b0565b8a016040019650505b509398975050505050505050565b81810381811115610c5757610c57613296565b8082028115828204841417610c5757610c57613296565b80518015158114612dd4575f80fd5b5f806040838503121561342c575f80fd5b82516001600160401b0380821115613442575f80fd5b9084019060608287031215613455575f80fd5b61345d6130d9565b8251815260208084015161347081612e08565b82820152604084015183811115613485575f80fd5b80850194505087601f850112613499575f80fd5b835192506134a96131ba84613131565b83815288828587010111156134bc575f80fd5b6134cb84838301848801612fe3565b806040840152508195506134e081880161340c565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b5f602082840312156135d0575f80fd5b610c5482612e9c565b5f808335601e198436030181126135ee575f80fd5b8301803591506001600160401b03821115613607575f80fd5b602001915036819003821315612ad6575f80fd5b601f8211156104d357805f5260205f20601f840160051c810160208510156136405750805b601f840160051c820191505b8181101561365f575f815560010161364c565b5050505050565b81516001600160401b0381111561367f5761367f6130c5565b6136938161368d84546132df565b8461361b565b602080601f8311600181146136c6575f84156136af5750858301515b5f19600386901b1c1916600185901b17855561371d565b5f85815260208120601f198616915b828110156136f4578886015182559484019460019091019084016136d5565b508582101561371157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160401b03828116828216039080821115612fba57612fba613296565b6001600160401b03818116838216019080821115612fba57612fba613296565b6001600160401b0381811683821602808216919082811461378857613788613296565b505092915050565b5f602082840312156137a0575f80fd5b813560ff81168114612fdc575f80fd5b5f6001600160401b038083168181036132d5576132d561329656fee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"init\",\"type\":\"uint8\",\"internalType\":\"enumICMInitializable\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"ADDRESS_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"BLS_PUBLIC_KEY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_CHURN_PERCENTAGE_LIMIT\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAXIMUM_REGISTRATION_EXPIRY_LENGTH\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"P_CHAIN_BLOCKCHAIN_ID\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"WARP_MESSENGER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIWarpMessenger\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"activeValidators\",\"inputs\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"completeEndValidation\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeValidatorRegistration\",\"inputs\":[{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getValidator\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structValidator\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumValidatorStatus\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"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\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getWeight\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"settings\",\"type\":\"tuple\",\"internalType\":\"structValidatorManagerSettings\",\"components\":[{\"name\":\"subnetID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"churnPeriodSeconds\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maximumChurnPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeEndValidation\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorRegistration\",\"inputs\":[{\"name\":\"registrationInput\",\"type\":\"tuple\",\"internalType\":\"structValidatorRegistrationInput\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"initializeValidatorSet\",\"inputs\":[{\"name\":\"subnetConversionData\",\"type\":\"tuple\",\"internalType\":\"structSubnetConversionData\",\"components\":[{\"name\":\"convertSubnetTxID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerBlockchainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"validatorManagerAddress\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"initialValidators\",\"type\":\"tuple[]\",\"internalType\":\"structInitialValidator[]\",\"components\":[{\"name\":\"nodeID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"blsPublicKey\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}]},{\"name\":\"messageIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendEndValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"resendRegisterValidatorMessage\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"InitialValidatorCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodCreated\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nodeID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"registerValidationMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"registrationExpiry\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodEnded\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"enumValidatorStatus\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidationPeriodRegistered\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"timestamp\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorRemovalInitialized\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"weight\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endTime\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidatorWeightUpdate\",\"inputs\":[{\"name\":\"validationID\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"nonce\",\"type\":\"uint64\",\"indexed\":true,\"internalType\":\"uint64\"},{\"name\":\"validatorWeight\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"setWeightMessageID\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"OwnableInvalidOwner\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"OwnableUnauthorizedAccount\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}]}]", + Bin: "0x608060405234801561000f575f80fd5b5060405161393438038061393483398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b6137e78061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c80638da5cb5b116100a9578063c974d1b61161006e578063c974d1b6146102c6578063d588c18f146102ce578063d5f20ff6146102e1578063df93d8de14610301578063f2fde38b1461030b575f80fd5b80638da5cb5b1461023b57806397fb70d41461027f578063a3a65e4814610292578063b771b3bc146102a5578063bee0a03f146102b3575f80fd5b806366435abf116100ef57806366435abf146101d4578063715018a6146101ff578063732214f8146102075780638280a25a1461020e5780638994ab4914610228575f80fd5b80630322ed981461012b5780630cdd098514610140578063467ef06f1461019157806360305d62146101a457806361e2f490146101c1575b5f80fd5b61013e610139366004612d80565b61031e565b005b61017e61014e366004612d80565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08602052604090205490565b6040519081526020015b60405180910390f35b61013e61019f366004612daf565b6104dc565b6101ac601481565b60405163ffffffff9091168152602001610188565b61013e6101cf366004612dc8565b6104ea565b6101e76101e2366004612d80565b610b1e565b6040516001600160401b039091168152602001610188565b61013e610b32565b61017e5f81565b610216603081565b60405160ff9091168152602001610188565b61017e610236366004612e42565b610b45565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610188565b61013e61028d366004612d80565b610b61565b61013e6102a0366004612daf565b610b76565b6102676005600160991b0181565b61013e6102c1366004612d80565b610d2e565b610216601481565b61013e6102dc366004612e97565b610e3d565b6102f46102ef366004612d80565b610f4b565b6040516101889190612ee1565b6101e76202a30081565b61013e610319366004612f90565b611013565b5f8181525f805160206137bb8339815191526020526040808220815160e0810190925280545f8051602061379b83398151915293929190829060ff16600581111561036b5761036b612ecd565b600581111561037c5761037c612ecd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c090910152909150815160058111156103eb576103eb612ecd565b146104555760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b60648201526084015b60405180910390fd5b6005600160991b016001600160a01b031663ee5b48eb61047a8584606001515f611050565b6040518263ffffffff1660e01b81526004016104969190612fd4565b6020604051808303815f875af11580156104b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104d69190613006565b50505050565b6104e581611275565b505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f8051602061379b8339815191529060ff16156105875760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b606482015260840161044c565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105ca573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105ee9190613006565b8360200135146106505760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b606482015260840161044c565b306106616060850160408601612f90565b6001600160a01b0316146106d35760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b606482015260840161044c565b5f6106e1606085018561301d565b91505f90508435602086013560146106ff6060890160408a01612f90565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015610a2e575f61077f606089018961301d565b8363ffffffff1681811061079557610795613062565b90506020028101906107a79190613076565b6107b090613126565b80515f81815260088901602052604090205491925090156107e35760405162461bcd60e51b815260040161044c906131bd565b84825f0151836020015184604001516040516020016108059493929190613205565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f916002916108539190613254565b602060405180830381855afa15801561086e573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906108919190613006565b5f83815260088a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260078d01909252909120815181549394509192909190829060ff1916600183600581111561091d5761091d612ecd565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff1916928416929092179091558401516109d0911686613279565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a350505080610a279061328c565b9050610763565b50600484018190555f610a40866115bf565b90505f610a508260400151611785565b905080600285604051610a639190613254565b602060405180830381855afa158015610a7e573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190610aa19190613006565b14610b055760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b606482015260840161044c565b5050506009909201805460ff1916600117905550505050565b5f610b2882610f4b565b6080015192915050565b610b3a6118ee565b610b435f611949565b565b5f610b4e6118ee565b610b5883836119b9565b90505b92915050565b610b696118ee565b610b7281611f1d565b5050565b5f8051602061379b8339815191525f610b8e836115bf565b90505f80610b9f8360400151612198565b9150915080610c015760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b606482015260840161044c565b5f82815260068501602052604081208054610c1b906132ae565b9050118015610c4d575060015f83815260078601602052604090205460ff166005811115610c4b57610c4b612ecd565b145b610c695760405162461bcd60e51b815260040161044c906132e0565b5f8281526006850160205260408120610c8191612cf5565b5f8281526007850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260088b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb066020526040812080545f8051602061379b833981519152929190610d76906132ae565b9050118015610da8575060015f83815260078301602052604090205460ff166005811115610da657610da6612ecd565b145b610dc45760405162461bcd60e51b815260040161044c906132e0565b5f82815260068201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91610dfd9190600401613327565b6020604051808303815f875af1158015610e19573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104e59190613006565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610e815750825b90505f826001600160401b03166001148015610e9c5750303b155b905081158015610eaa575080155b15610ec85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ef257845460ff60401b1916600160401b1785555b610efc8787612339565b8315610f4257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b610f53612d2c565b5f8281525f805160206137bb833981519152602052604090819020815160e0810190925280545f8051602061379b833981519152929190829060ff166005811115610fa057610fa0612ecd565b6005811115610fb157610fb1612ecd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b61101b6118ee565b6001600160a01b03811661104457604051631e4fbdf760e01b81525f600482015260240161044c565b61104d81611949565b50565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b60028110156110c9576110898160016133b1565b6110949060086133c4565b5081515f908390839081106110ab576110ab613062565b60200101906001600160f81b03191690815f1a905350600101611075565b505f5b6004811015611134576110e08160036133b1565b6110eb9060086133c4565b600263ffffffff16901c60f81b828260026111069190613279565b8151811061111657611116613062565b60200101906001600160f81b03191690815f1a9053506001016110cc565b505f5b60208110156111965761114b81601f6133b1565b6111569060086133c4565b86901c60f81b82611168836006613279565b8151811061117857611178613062565b60200101906001600160f81b03191690815f1a905350600101611137565b505f5b6008811015611201576111ad8160076133b1565b6111b89060086133c4565b6001600160401b038616901c60f81b826111d3836026613279565b815181106111e3576111e3613062565b60200101906001600160f81b03191690815f1a905350600101611199565b505f5b600881101561126c576112188160076133b1565b6112239060086133c4565b6001600160401b038516901c60f81b8261123e83602e613279565b8151811061124e5761124e613062565b60200101906001600160f81b03191690815f1a905350600101611204565b50949350505050565b5f61127e612d2c565b5f8051602061379b8339815191525f611296856115bf565b90505f806112a78360400151612198565b91509150801561130c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b606482015260840161044c565b5f828152600785016020526040808220815160e081019092528054829060ff16600581111561133d5761133d612ecd565b600581111561134e5761134e612ecd565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f90825160058111156113bf576113bf612ecd565b14806113dd57506001825160058111156113db576113db612ecd565b145b61143c5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b606482015260840161044c565b60038251600581111561145157611451612ecd565b0361145e57506004611462565b5060055b6020808301515f9081526008880190915260408120558181600581111561148b5761148b612ecd565b9081600581111561149e5761149e612ecd565b9052505f84815260078701602052604090208251815484929190829060ff191660018360058111156114d2576114d2612ecd565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790558151600581111561158657611586612ecd565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b60408051606080820183525f8083526020830152918101919091526040516306f8253560e41b815263ffffffff831660048201525f9081906005600160991b0190636f825350906024015f60405180830381865afa158015611623573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261164a91908101906133ea565b91509150806116aa5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b606482015260840161044c565b81511561170b5760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b606482015260840161044c565b60208201516001600160a01b03161561177e5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b606482015260840161044c565b5092915050565b5f81516026146117a75760405162461bcd60e51b815260040161044c906134bc565b5f805b60028110156117f6576117be8160016133b1565b6117c99060086133c4565b61ffff168482815181106117df576117df613062565b016020015160f81c901b91909117906001016117aa565b5061ffff8116156118195760405162461bcd60e51b815260040161044c90613505565b5f805b6004811015611874576118308160036133b1565b61183b9060086133c4565b63ffffffff168561184d836002613279565b8151811061185d5761185d613062565b016020015160f81c901b919091179060010161181c565b5063ffffffff8116156118995760405162461bcd60e51b815260040161044c90613548565b5f805b602081101561126c576118b081601f6133b1565b6118bb9060086133c4565b866118c7836006613279565b815181106118d7576118d7613062565b016020015160f81c901b919091179060010161189c565b336119207f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b435760405163118cdaa760e01b815233600482015260240161044c565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09545f9060ff16611a445760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b606482015260840161044c565b5f8051602061379b83398151915242611a63604086016020870161358f565b6001600160401b031611611ad55760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b606482015260840161044c565b611ae5604085016020860161358f565b6001600160401b0316611afb6202a30042613279565b11611b6e5760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e20667574757265000000000000000000606482015260840161044c565b8335611bc65760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b606482015260840161044c565b83355f90815260088201602052604090205415611bf55760405162461bcd60e51b815260040161044c906131bd565b6030611c0460408601866135a8565b905014611c695760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b606482015260840161044c565b611c73835f612353565b5f80611d0c6040518060a00160405280855f01548152602001885f01358152602001876001600160401b03168152602001886020016020810190611cb7919061358f565b6001600160401b03168152602001611cd260408a018a6135a8565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250612561565b5f82815260068601602052604090209193509150611d2a8282613635565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb90611d57908590600401612fd4565b6020604051808303815f875af1158015611d73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d979190613006565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600788019091522081518154829060ff19166001836005811115611e0f57611e0f612ecd565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b91611eef918e01908e0161358f565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b611f25612d2c565b5f8281525f805160206137bb8339815191526020526040808220815160e0810190925280545f8051602061379b83398151915293929190829060ff166005811115611f7257611f72612ecd565b6005811115611f8357611f83612ecd565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c09091015290915081516005811115611ff557611ff5612ecd565b146120515760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b606482015260840161044c565b60038152426001600160401b031660c08201525f84815260078301602052604090208151815483929190829060ff1916600183600581111561209557612095612ecd565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6121418582612910565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f8082516027146121bb5760405162461bcd60e51b815260040161044c906134bc565b5f805b600281101561220a576121d28160016133b1565b6121dd9060086133c4565b61ffff168582815181106121f3576121f3613062565b016020015160f81c901b91909117906001016121be565b5061ffff81161561222d5760405162461bcd60e51b815260040161044c90613505565b5f805b6004811015612288576122448160036133b1565b61224f9060086133c4565b63ffffffff1686612261836002613279565b8151811061227157612271613062565b016020015160f81c901b9190911790600101612230565b5063ffffffff81166003146122af5760405162461bcd60e51b815260040161044c90613548565b5f805b6020811015612304576122c681601f6133b1565b6122d19060086133c4565b876122dd836006613279565b815181106122ed576122ed613062565b016020015160f81c901b91909117906001016122b2565b505f8660268151811061231957612319613062565b016020015191976001600160f81b03199092161515965090945050505050565b612341612a67565b61234a82612ab0565b610b7281612ac9565b5f8051602061379b8339815191525f6001600160401b0380841690851611156123875761238083856136f4565b9050612394565b61239184846136f4565b90505b6040805160808101825260028401548082526003850154602083015260048501549282019290925260058401546001600160401b03166060820152429115806123f65750600184015481516123f2916001600160401b031690613279565b8210155b1561241c576001600160401b03831660608201528181526040810151602082015261243b565b828160600181815161242e9190613714565b6001600160401b03169052505b606081015161244b906064613734565b602082015160018601546001600160401b0392909216916124769190600160401b900460ff166133c4565b10156124da5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b606482015260840161044c565b856001600160401b0316816040018181516124f59190613279565b9052506040810180516001600160401b03871691906125159083906133b1565b905250805160028501556020810151600385015560408101516004850155606001516005909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f60608260800151516030146125cb5760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b606482015260840161044c565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015612642576126028160016133b1565b61260d9060086133c4565b5081515f9083908390811061262457612624613062565b60200101906001600160f81b03191690815f1a9053506001016125ee565b505f5b60048110156126aa576126598160036133b1565b6126649060086133c4565b600160ff919091161c60f81b8261267c836002613279565b8151811061268c5761268c613062565b60200101906001600160f81b03191690815f1a905350600101612645565b505f5b602081101561270757845181602081106126c9576126c9613062565b1a60f81b826126d9836006613279565b815181106126e9576126e9613062565b60200101906001600160f81b03191690815f1a9053506001016126ad565b505f5b6020811015612767578460200151816020811061272957612729613062565b1a60f81b82612739836026613279565b8151811061274957612749613062565b60200101906001600160f81b03191690815f1a90535060010161270a565b505f5b60088110156127db5761277e8160076133b1565b6127899060086133c4565b60ff1685604001516001600160401b0316901c60f81b828260466127ad9190613279565b815181106127bd576127bd613062565b60200101906001600160f81b03191690815f1a90535060010161276a565b505f5b603081101561284657846080015181815181106127fd576127fd613062565b01602001516001600160f81b0319168261281883604e613279565b8151811061282857612828613062565b60200101906001600160f81b03191690815f1a9053506001016127de565b505f5b60088110156128b85761285d8160076133b1565b6128689060086133c4565b60608601516001600160401b0390811691161c60f81b8261288a83607e613279565b8151811061289a5761289a613062565b60200101906001600160f81b03191690815f1a905350600101612849565b506002816040516128c99190613254565b602060405180830381855afa1580156128e4573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906129079190613006565b94909350915050565b5f8281525f805160206137bb833981519152602052604081206002015481905f8051602061379b83398151915290600160801b90046001600160401b03166129588582612353565b5f61296287612ada565b5f8881526007850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6129b28a858b611050565b6040518263ffffffff1660e01b81526004016129ce9190612fd4565b6020604051808303815f875af11580156129ea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a0e9190613006565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b4357604051631afcd79f60e31b815260040160405180910390fd5b612ab8612a67565b612ac0612b6a565b61104d81612b72565b612ad1612a67565b61104d81612ced565b5f8181525f805160206137bb8339815191526020526040812060020180545f8051602061379b83398151915291600160401b9091046001600160401b0316906008612b248361375f565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260079290920160205250604090922060020154600160401b9004909116919050565b610b43612a67565b612b7a612a67565b80355f8051602061379b8339815191529081556014612b9f606084016040850161377a565b60ff161115612c0c5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b606482015260840161044c565b5f612c1d606084016040850161377a565b60ff1611612c855760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b606482015260840161044c565b612c95606083016040840161377a565b60018201805460ff92909216600160401b0260ff60401b19909216919091179055612cc6604083016020840161358f565b600191909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61101b612a67565b508054612d01906132ae565b5f825580601f10612d10575050565b601f0160209004905f5260205f209081019061104d9190612d68565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115612d7c575f8155600101612d69565b5090565b5f60208284031215612d90575f80fd5b5035919050565b803563ffffffff81168114612daa575f80fd5b919050565b5f60208284031215612dbf575f80fd5b610b5882612d97565b5f8060408385031215612dd9575f80fd5b82356001600160401b03811115612dee575f80fd5b830160808186031215612dff575f80fd5b9150612e0d60208401612d97565b90509250929050565b5f60608284031215612e26575f80fd5b50919050565b80356001600160401b0381168114612daa575f80fd5b5f8060408385031215612e53575f80fd5b82356001600160401b03811115612e68575f80fd5b612e7485828601612e16565b925050612e0d60208401612e2c565b6001600160a01b038116811461104d575f80fd5b5f8060808385031215612ea8575f80fd5b612eb28484612e16565b91506060830135612ec281612e83565b809150509250929050565b634e487b7160e01b5f52602160045260245ffd5b815160e082019060068110612f0457634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b0360408401511660408301526060830151612f3f60608401826001600160401b03169052565b506080830151612f5a60808401826001600160401b03169052565b5060a0830151612f7560a08401826001600160401b03169052565b5060c083015161177e60c08401826001600160401b03169052565b5f60208284031215612fa0575f80fd5b8135612fab81612e83565b9392505050565b5f5b83811015612fcc578181015183820152602001612fb4565b50505f910152565b602081525f8251806020840152612ff2816040850160208701612fb2565b601f01601f19169190910160400192915050565b5f60208284031215613016575f80fd5b5051919050565b5f808335601e19843603018112613032575f80fd5b8301803591506001600160401b0382111561304b575f80fd5b6020019150600581901b3603821315612a60575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261308a575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b03811182821017156130ca576130ca613094565b60405290565b604051601f8201601f191681016001600160401b03811182821017156130f8576130f8613094565b604052919050565b5f6001600160401b0382111561311857613118613094565b50601f01601f191660200190565b5f60608236031215613136575f80fd5b61313e6130a8565b82358152602061314f818501612e2c565b8183015260408401356001600160401b0381111561316b575f80fd5b840136601f82011261317b575f80fd5b803561318e61318982613100565b6130d0565b81815236848385010111156131a1575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f8551613216818460208a01612fb2565b80830190508581526001600160401b0360c01b8560c01b1660208201528351613246816028840160208801612fb2565b016028019695505050505050565b5f825161308a818460208701612fb2565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b5b57610b5b613265565b5f63ffffffff8083168181036132a4576132a4613265565b6001019392505050565b600181811c908216806132c257607f821691505b602082108103612e2657634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454613339816132ae565b806020870152604060018084165f811461335a5760018114613376576133a3565b60ff19851660408a0152604084151560051b8a010195506133a3565b895f5260205f205f5b8581101561339a5781548b820186015290830190880161337f565b8a016040019650505b509398975050505050505050565b81810381811115610b5b57610b5b613265565b8082028115828204841417610b5b57610b5b613265565b80518015158114612daa575f80fd5b5f80604083850312156133fb575f80fd5b82516001600160401b0380821115613411575f80fd5b9084019060608287031215613424575f80fd5b61342c6130a8565b8251815260208084015161343f81612e83565b82820152604084015183811115613454575f80fd5b80850194505087601f850112613468575f80fd5b8351925061347861318984613100565b838152888285870101111561348b575f80fd5b61349a84838301848801612fb2565b806040840152508195506134af8188016133db565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b5f6020828403121561359f575f80fd5b610b5882612e2c565b5f808335601e198436030181126135bd575f80fd5b8301803591506001600160401b038211156135d6575f80fd5b602001915036819003821315612a60575f80fd5b601f8211156104e557805f5260205f20601f840160051c8101602085101561360f5750805b601f840160051c820191505b8181101561362e575f815560010161361b565b5050505050565b81516001600160401b0381111561364e5761364e613094565b6136628161365c84546132ae565b846135ea565b602080601f831160018114613695575f841561367e5750858301515b5f19600386901b1c1916600185901b1785556136ec565b5f85815260208120601f198616915b828110156136c3578886015182559484019460019091019084016136a4565b50858210156136e057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b6001600160401b0382811682821603908082111561177e5761177e613265565b6001600160401b0381811683821601908082111561177e5761177e613265565b6001600160401b0381811683821602808216919082811461375757613757613265565b505092915050565b5f6001600160401b038083168181036132a4576132a4613265565b5f6020828403121561378a575f80fd5b813560ff81168114612fab575f80fdfee92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb07a164736f6c6343000819000a", } // PoAValidatorManagerABI is the input ABI used to generate the binding from. @@ -367,6 +366,37 @@ func (_PoAValidatorManager *PoAValidatorManagerCallerSession) MAXIMUMREGISTRATIO return _PoAValidatorManager.Contract.MAXIMUMREGISTRATIONEXPIRYLENGTH(&_PoAValidatorManager.CallOpts) } +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCaller) PCHAINBLOCKCHAINID(opts *bind.CallOpts) ([32]byte, error) { + var out []interface{} + err := _PoAValidatorManager.contract.Call(opts, &out, "P_CHAIN_BLOCKCHAIN_ID") + + if err != nil { + return *new([32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + + return out0, err + +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +} + +// PCHAINBLOCKCHAINID is a free data retrieval call binding the contract method 0x732214f8. +// +// Solidity: function P_CHAIN_BLOCKCHAIN_ID() view returns(bytes32) +func (_PoAValidatorManager *PoAValidatorManagerCallerSession) PCHAINBLOCKCHAINID() ([32]byte, error) { + return _PoAValidatorManager.Contract.PCHAINBLOCKCHAINID(&_PoAValidatorManager.CallOpts) +} + // WARPMESSENGER is a free data retrieval call binding the contract method 0xb771b3bc. // // Solidity: function WARP_MESSENGER() view returns(address) @@ -564,23 +594,23 @@ func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) CompleteValida return _PoAValidatorManager.Contract.CompleteValidatorRegistration(&_PoAValidatorManager.TransactOpts, messageIndex) } -// Initialize is a paid mutator transaction binding the contract method 0x580a4006. +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. // -// Solidity: function initialize((bytes32,bytes32,uint64,uint8) settings, address initialOwner) returns() +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() func (_PoAValidatorManager *PoAValidatorManagerTransactor) Initialize(opts *bind.TransactOpts, settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { return _PoAValidatorManager.contract.Transact(opts, "initialize", settings, initialOwner) } -// Initialize is a paid mutator transaction binding the contract method 0x580a4006. +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. // -// Solidity: function initialize((bytes32,bytes32,uint64,uint8) settings, address initialOwner) returns() +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() func (_PoAValidatorManager *PoAValidatorManagerSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) } -// Initialize is a paid mutator transaction binding the contract method 0x580a4006. +// Initialize is a paid mutator transaction binding the contract method 0xd588c18f. // -// Solidity: function initialize((bytes32,bytes32,uint64,uint8) settings, address initialOwner) returns() +// Solidity: function initialize((bytes32,uint64,uint8) settings, address initialOwner) returns() func (_PoAValidatorManager *PoAValidatorManagerTransactorSession) Initialize(settings ValidatorManagerSettings, initialOwner common.Address) (*types.Transaction, error) { return _PoAValidatorManager.Contract.Initialize(&_PoAValidatorManager.TransactOpts, settings, initialOwner) } diff --git a/contracts/validator-manager/ValidatorManager.sol b/contracts/validator-manager/ValidatorManager.sol index f67def6b7..c783adc48 100644 --- a/contracts/validator-manager/ValidatorManager.sol +++ b/contracts/validator-manager/ValidatorManager.sol @@ -32,8 +32,6 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida /// @custom:storage-location erc7201:avalanche-icm.storage.ValidatorManager struct ValidatorManagerStorage { - /// @notice The blockchainID of the P-Chain. - bytes32 _pChainBlockchainID; /// @notice The subnetID associated with this validator manager. bytes32 _subnetID; /// @notice The number of seconds after which to reset the churn tracker. @@ -62,6 +60,7 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida uint64 public constant MAXIMUM_REGISTRATION_EXPIRY_LENGTH = 2 days; uint32 public constant ADDRESS_LENGTH = 20; // This is only used as a packed uint32 uint8 public constant BLS_PUBLIC_KEY_LENGTH = 48; + bytes32 public constant P_CHAIN_BLOCKCHAIN_ID = bytes32(0); // solhint-disable ordering function _getValidatorManagerStorage() @@ -96,7 +95,6 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida onlyInitializing { ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); - $._pChainBlockchainID = settings.pChainBlockchainID; $._subnetID = settings.subnetID; require( @@ -457,12 +455,12 @@ abstract contract ValidatorManager is Initializable, ContextUpgradeable, IValida view returns (WarpMessage memory) { - ValidatorManagerStorage storage $ = _getValidatorManagerStorage(); (WarpMessage memory warpMessage, bool valid) = WARP_MESSENGER.getVerifiedWarpMessage(messageIndex); require(valid, "ValidatorManager: invalid warp message"); + // Must match to P-Chain blockchain id, which is 0. require( - warpMessage.sourceChainID == $._pChainBlockchainID, + warpMessage.sourceChainID == P_CHAIN_BLOCKCHAIN_ID, "ValidatorManager: invalid source chain ID" ); require( diff --git a/contracts/validator-manager/interfaces/IValidatorManager.sol b/contracts/validator-manager/interfaces/IValidatorManager.sol index 80bdad31b..a505f5605 100644 --- a/contracts/validator-manager/interfaces/IValidatorManager.sol +++ b/contracts/validator-manager/interfaces/IValidatorManager.sol @@ -46,7 +46,6 @@ event ValidatorWeightUpdate( ); struct ValidatorManagerSettings { - bytes32 pChainBlockchainID; bytes32 subnetID; uint64 churnPeriodSeconds; uint8 maximumChurnPercentage; diff --git a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol index ebad4feae..046130709 100644 --- a/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/ERC20TokenStakingManagerTests.t.sol @@ -36,7 +36,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -63,7 +62,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -86,7 +84,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -108,7 +105,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -130,7 +126,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -153,7 +148,6 @@ contract ERC20TokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE diff --git a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol index c607e0f01..593704a78 100644 --- a/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol +++ b/contracts/validator-manager/tests/NativeTokenStakingManagerTests.t.sol @@ -30,7 +30,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -56,7 +55,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -78,7 +76,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -99,7 +96,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -120,7 +116,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE @@ -142,7 +137,6 @@ contract NativeTokenStakingManagerTest is PoSValidatorManagerTest { app.initialize( PoSValidatorManagerSettings({ baseSettings: ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE diff --git a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol index 38b9fe90e..1f3339537 100644 --- a/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoAValidatorManagerTests.t.sol @@ -24,7 +24,6 @@ contract PoAValidatorManagerTest is ValidatorManagerTest { app = new PoAValidatorManager(ICMInitializable.Allowed); app.initialize( ValidatorManagerSettings({ - pChainBlockchainID: P_CHAIN_BLOCKCHAIN_ID, subnetID: DEFAULT_SUBNET_ID, churnPeriodSeconds: DEFAULT_CHURN_PERIOD, maximumChurnPercentage: DEFAULT_MAXIMUM_CHURN_PERCENTAGE diff --git a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol index 001260350..089b3351d 100644 --- a/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/PoSValidatorManagerTests.t.sol @@ -174,7 +174,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { blsPublicKey: DEFAULT_BLS_PUBLIC_KEY, registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP }); - _mockGetVerifiedWarpMessage(new bytes(0), false); + _mockGetUptimeWarpMessage(new bytes(0), false); vm.warp(DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION); vm.expectRevert(_formatErrorMessage("invalid warp message")); posValidatorManager.initializeEndValidation(validationID, true, 0); @@ -190,8 +190,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { registrationTimestamp: DEFAULT_REGISTRATION_TIMESTAMP }); - _mockGetVerifiedWarpMessage(new bytes(0), true); - _mockGetBlockchainID(); + _mockGetUptimeWarpMessage(new bytes(0), true); + _mockGetBlockchainID(posValidatorManager.P_CHAIN_BLOCKCHAIN_ID()); vm.warp(DEFAULT_REGISTRATION_TIMESTAMP + DEFAULT_MINIMUM_STAKE_DURATION); vm.expectRevert(_formatErrorMessage("invalid source chain ID")); posValidatorManager.initializeEndValidation(validationID, true, 0); @@ -367,7 +367,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { .packSubnetValidatorWeightUpdateMessage( validationID, 1, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT ); - _mockGetVerifiedWarpMessage(setValidatorWeightPayload, true); + _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.warp(DEFAULT_DELEGATOR_COMPLETE_REGISTRATION_TIMESTAMP); vm.expectRevert("PoSValidatorManager: nonce does not match"); @@ -650,7 +650,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { .packSubnetValidatorWeightUpdateMessage( validationID, 3, DEFAULT_DELEGATOR_WEIGHT + DEFAULT_WEIGHT ); - _mockGetVerifiedWarpMessage(setValidatorWeightPayload, true); + _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.expectRevert("PoSValidatorManager: nonce does not match"); posValidatorManager.completeEndDelegation(0, delegationID2); @@ -873,7 +873,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { .packSubnetValidatorWeightUpdateMessage( validationID, expectedNonce, expectedValidatorWeight ); - _mockGetVerifiedWarpMessage(setValidatorWeightPayload, true); + _mockGetPChainWarpMessage(setValidatorWeightPayload, true); vm.warp(completeRegistrationTimestamp); vm.expectEmit(true, true, true, true, address(posValidatorManager)); @@ -903,8 +903,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( validationID, endDelegationTimestamp - startDelegationTimestamp ); - _mockGetVerifiedWarpMessage(uptimeMsg, true); - _mockGetBlockchainID(P_CHAIN_BLOCKCHAIN_ID); + _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetBlockchainID(); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit ValidatorWeightUpdate({ @@ -934,7 +934,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes memory subnetValidatorRegistrationMessage = ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); - _mockGetVerifiedWarpMessage(subnetValidatorRegistrationMessage, true); + _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit ValidationPeriodEnded(validationID, ValidatorStatus.Completed); @@ -965,7 +965,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { bytes memory weightUpdateMessage = ValidatorMessages.packSubnetValidatorWeightUpdateMessage( validationID, expectedNonce, validatorWeight ); - _mockGetVerifiedWarpMessage(weightUpdateMessage, true); + _mockGetPChainWarpMessage(weightUpdateMessage, true); vm.expectEmit(true, true, true, true, address(posValidatorManager)); emit DelegationEnded( diff --git a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol index f9885b1e3..bbe7417ee 100644 --- a/contracts/validator-manager/tests/ValidatorManagerTests.t.sol +++ b/contracts/validator-manager/tests/ValidatorManagerTests.t.sol @@ -17,8 +17,6 @@ import { // TODO: Remove this once all unit tests implemented // solhint-disable no-empty-blocks abstract contract ValidatorManagerTest is Test { - bytes32 public constant P_CHAIN_BLOCKCHAIN_ID = - bytes32(hex"0000000000000000000000000000000000000000000000000000000000000000"); bytes32 public constant DEFAULT_SUBNET_ID = bytes32(hex"1234567812345678123456781234567812345678123456781234567812345678"); bytes32 public constant DEFAULT_NODE_ID = @@ -178,7 +176,7 @@ abstract contract ValidatorManagerTest is Test { bytes memory subnetValidatorRegistrationMessage = ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); - _mockGetVerifiedWarpMessage(subnetValidatorRegistrationMessage, true); + _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); vm.expectEmit(true, true, true, true, address(validatorManager)); emit ValidationPeriodEnded(validationID, ValidatorStatus.Completed); @@ -197,7 +195,7 @@ abstract contract ValidatorManagerTest is Test { bytes memory subnetValidatorRegistrationMessage = ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, false); - _mockGetVerifiedWarpMessage(subnetValidatorRegistrationMessage, true); + _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); vm.expectEmit(true, true, true, true, address(validatorManager)); emit ValidationPeriodEnded(validationID, ValidatorStatus.Invalidated); @@ -326,7 +324,7 @@ abstract contract ValidatorManagerTest is Test { bytes memory subnetValidatorRegistrationMessage = ValidatorMessages.packSubnetValidatorRegistrationMessage(validationID, true); - _mockGetVerifiedWarpMessage(subnetValidatorRegistrationMessage, true); + _mockGetPChainWarpMessage(subnetValidatorRegistrationMessage, true); vm.warp(registrationTimestamp); vm.expectEmit(true, true, true, true, address(validatorManager)); @@ -383,8 +381,8 @@ abstract contract ValidatorManagerTest is Test { bytes memory uptimeMsg = ValidatorMessages.packValidationUptimeMessage( validationID, completionTimestamp - registrationTimestamp ); - _mockGetVerifiedWarpMessage(uptimeMsg, true); - _mockGetBlockchainID(P_CHAIN_BLOCKCHAIN_ID); + _mockGetUptimeWarpMessage(uptimeMsg, true); + _mockGetBlockchainID(); } vm.expectEmit(true, true, true, true, address(validatorManager)); emit ValidatorRemovalInitialized(validationID, bytes32(0), weight, completionTimestamp); @@ -403,13 +401,31 @@ abstract contract ValidatorManagerTest is Test { ); } - function _mockGetVerifiedWarpMessage(bytes memory expectedPayload, bool valid) internal { + function _mockGetPChainWarpMessage(bytes memory expectedPayload, bool valid) internal { vm.mockCall( WARP_PRECOMPILE_ADDRESS, abi.encodeWithSelector(IWarpMessenger.getVerifiedWarpMessage.selector, uint32(0)), abi.encode( WarpMessage({ - sourceChainID: P_CHAIN_BLOCKCHAIN_ID, + sourceChainID: validatorManager.P_CHAIN_BLOCKCHAIN_ID(), + originSenderAddress: address(0), + payload: expectedPayload + }), + valid + ) + ); + vm.expectCall( + WARP_PRECOMPILE_ADDRESS, abi.encodeCall(IWarpMessenger.getVerifiedWarpMessage, 0) + ); + } + + function _mockGetUptimeWarpMessage(bytes memory expectedPayload, bool valid) internal { + vm.mockCall( + WARP_PRECOMPILE_ADDRESS, + abi.encodeWithSelector(IWarpMessenger.getVerifiedWarpMessage.selector, uint32(0)), + abi.encode( + WarpMessage({ + sourceChainID: DEFAULT_SOURCE_BLOCKCHAIN_ID, originSenderAddress: address(0), payload: expectedPayload }), @@ -437,7 +453,7 @@ abstract contract ValidatorManagerTest is Test { } function _mockInitializeValidatorSet() internal { - _mockGetVerifiedWarpMessage( + _mockGetPChainWarpMessage( ValidatorMessages.packSubnetConversionMessage(DEFAULT_SUBNET_CONVERSION_TX_ID), true ); } diff --git a/tests/flows/validator-manager/poa_to_pos.go b/tests/flows/validator-manager/poa_to_pos.go index 918dd3c79..872303576 100644 --- a/tests/flows/validator-manager/poa_to_pos.go +++ b/tests/flows/validator-manager/poa_to_pos.go @@ -88,7 +88,6 @@ func PoAMigrationToPoS(network interfaces.LocalNetwork) { tx, err := poaValidatorManager.Initialize( opts, poavalidatormanager.ValidatorManagerSettings{ - PChainBlockchainID: pChainInfo.BlockchainID, SubnetID: subnetAInfo.SubnetID, ChurnPeriodSeconds: uint64(0), MaximumChurnPercentage: uint8(20), @@ -165,7 +164,6 @@ func PoAMigrationToPoS(network interfaces.LocalNetwork) { opts, nativetokenstakingmanager.PoSValidatorManagerSettings{ BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ - PChainBlockchainID: pChainInfo.BlockchainID, SubnetID: subnetAInfo.SubnetID, ChurnPeriodSeconds: utils.DefaultChurnPeriodSeconds, MaximumChurnPercentage: utils.DefaultMaxChurnPercentage, diff --git a/tests/utils/validator_manager.go b/tests/utils/validator_manager.go index 55ebf381b..f39c11e24 100644 --- a/tests/utils/validator_manager.go +++ b/tests/utils/validator_manager.go @@ -90,7 +90,6 @@ func DeployAndInitializeNativeTokenStakingManager( opts, nativetokenstakingmanager.PoSValidatorManagerSettings{ BaseSettings: nativetokenstakingmanager.ValidatorManagerSettings{ - PChainBlockchainID: pChainInfo.BlockchainID, SubnetID: subnet.SubnetID, ChurnPeriodSeconds: DefaultChurnPeriodSeconds, MaximumChurnPercentage: DefaultMaxChurnPercentage, @@ -159,7 +158,6 @@ func DeployAndInitializeERC20TokenStakingManager( opts, erc20tokenstakingmanager.PoSValidatorManagerSettings{ BaseSettings: erc20tokenstakingmanager.ValidatorManagerSettings{ - PChainBlockchainID: pChainInfo.BlockchainID, SubnetID: subnet.SubnetID, ChurnPeriodSeconds: DefaultChurnPeriodSeconds, MaximumChurnPercentage: DefaultMaxChurnPercentage, @@ -216,7 +214,6 @@ func DeployAndInitializePoAValidatorManager( tx, err := validatorManager.Initialize( opts, poavalidatormanager.ValidatorManagerSettings{ - PChainBlockchainID: pChainInfo.BlockchainID, SubnetID: subnet.SubnetID, ChurnPeriodSeconds: uint64(0), MaximumChurnPercentage: uint8(20),