diff --git a/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go b/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go index 7d787d8c7..cebf9195c 100644 --- a/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go +++ b/abi-bindings/go/staking/ERC20TokenStakingManager/ERC20TokenStakingManager.go @@ -83,8 +83,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\"}],\"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: "0x608060405234801561000f575f80fd5b506040516160e13803806160e183398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615f948061014d5f395ff3fe608060405234801561000f575f80fd5b5060043610610187575f3560e01c806376f78621116100d9578063b771b3bc11610093578063c974d1b61161006e578063c974d1b6146103a7578063d5f20ff6146103af578063df93d8de146103cf578063eb0acb89146103d9575f80fd5b8063b771b3bc1461035b578063ba3a4b9714610381578063bee0a03f14610394575f80fd5b806376f78621146102f45780638280a25a1461030757806393e245981461030f57806398f3e2b4146103225780639e1bc4ef14610335578063a3a65e4814610348575f80fd5b806335455ded1161014457806360305d621161011f57806360305d621461029e57806361e2f490146102bb57806362065856146102ce57806366435abf146102e1575f80fd5b806335455ded1461025c578063467ef06f146102785780635297fae61461028b575f80fd5b80630118acc41461018b5780630322ed98146101a05780630cdd0985146101b3578063151d30d1146102045780632e2194d81461021e578063330a0a3a14610249575b5f80fd5b61019e6101993660046152a5565b6103ec565b005b61019e6101ae3660046152e0565b610890565b6101f16101c13660046152e0565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b61020c600a81565b60405160ff90911681526020016101fb565b61023161022c3660046152e0565b610a49565b6040516001600160401b0390911681526020016101fb565b61019e61025736600461530b565b610a5f565b61026561271081565b60405161ffff90911681526020016101fb565b61019e610286366004615349565b610b3e565b61019e610299366004615362565b610bde565b6102a6601481565b60405163ffffffff90911681526020016101fb565b61019e6102c936600461538a565b610db3565b6101f16102dc3660046153ee565b6113e7565b6102316102ef3660046152e0565b611400565b61019e6103023660046152a5565b611414565b61020c603081565b61019e61031d3660046152e0565b611657565b61019e610330366004615362565b61175d565b6101f1610343366004615407565b611a66565b61019e610356366004615349565b611a92565b6103696005600160991b0181565b6040516001600160a01b0390911681526020016101fb565b61019e61038f3660046152e0565b611c4a565b61019e6103a23660046152e0565b611ed0565b61020c601481565b6103c26103bd3660046152e0565b611fe4565b6040516101fb919061543b565b6102316202a30081565b6101f16103e7366004615502565b6120ac565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ee883398151915293929190829060ff16600481111561044d5761044d615427565b600481111561045e5761045e615427565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f6104e282611fe4565b90506002835160048111156104f9576104f9615427565b1461054b5760405162461bcd60e51b815260206004820152602a60248201525f80516020615f088339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146105b05760405162461bcd60e51b815260206004820152603360248201525f80516020615f088339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b6064820152608401610542565b6003835280515f9060029060058111156105cc576105cc615427565b036106235786156105e4576105e183876120e1565b90505b5f846060015183608001516105f9919061557b565b9050610605848261237d565b506001600160401b0390811660e0870152421660a086015250610657565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b561068a86606001516113e7565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015610707573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072b919061559b565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff1916600183600481111561076a5761076a615427565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c699161087e916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615f688339815191526020526040808220815160e0810190925280545f80516020615f2883398151915293929190829060ff1660058111156108dd576108dd615427565b60058111156108ee576108ee615427565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091508151600581111561095d5761095d615427565b146109c25760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b6064820152608401610542565b6005600160991b016001600160a01b031663ee5b48eb6109e78584606001515f6124d4565b6040518263ffffffff1660e01b8152600401610a0391906155d4565b6020604051808303815f875af1158015610a1f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a43919061559b565b50505050565b5f610a5964e8d4a5100083615606565b92915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610aa8575080546001600160401b03808416911610155b15610ac65760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610af184846126fb565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b5f80516020615ee88339815191525f80610b5784612715565b91509150610b6482612a5f565b610b6e5750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610b9c57610b9c615427565b03610bc1575f83815260088501602052604081208054919055610bbf8282612a9a565b505b610bd781610bd284604001516113e7565b612b10565b5050505050565b5f80516020615ee88339815191525f610bf684612b33565b90505f80610c078360400151612d0d565b50915091505f610c1683611fe4565b9050816001600160401b031681606001516001600160401b03161015610c4e5760405162461bcd60e51b815260040161054290615625565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610c935760405162461bcd60e51b815260040161054290615667565b60015f87815260068701602052604090205460ff166004811115610cb957610cb9615427565b14610d225760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b6064820152608401610542565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615f288339815191529060ff1615610e505760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b6064820152608401610542565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb7919061559b565b836020013514610f195760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b6064820152608401610542565b30610f2a60608501604086016156b0565b6001600160a01b031614610f9c5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b6064820152608401610542565b5f610faa60608501856156cb565b91505f9050843560208601356014610fc86060890160408a016156b0565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff1610156112f7575f61104860608901896156cb565b8363ffffffff1681811061105e5761105e615710565b90506020028101906110709190615724565b611079906157d4565b80515f81815260098901602052604090205491925090156110ac5760405162461bcd60e51b81526004016105429061586b565b84825f0151836020015184604001516040516020016110ce94939291906158b3565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f9160029161111c9190615902565b602060405180830381855afa158015611137573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061115a919061559b565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff191660018360058111156111e6576111e6615427565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151611299911686615913565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a3505050806112f090615926565b905061102c565b50600584018190555f61130986612b33565b90505f6113198260400151612f48565b90508060028560405161132c9190615902565b602060405180830381855afa158015611347573d5f803e3d5ffd5b5050506040513d601f19601f8201168201806040525081019061136a919061559b565b146113ce5760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b6064820152608401610542565b505050600a909201805460ff1916600117905550505050565b5f610a596001600160401b03831664e8d4a51000615948565b5f61140a82611fe4565b6080015192915050565b5f80516020615ee88339815191525f61142c856130ba565b905061143785612a5f565b611442575050505050565b5f8581526005830160205260409020546001600160a01b031633146114795760405162461bcd60e51b81526004016105429061595f565b5f85815260058301602052604090205460a08201516114a891600160b01b90046001600160401b0316906159b1565b6001600160401b03168160c001516001600160401b031610156115295760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b6064820152608401610542565b8315610bd7575f61153a86856120e1565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b590611591906113e7565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015611607573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162b919061559b565b5f8781526008850160205260408120805490919061164a908490615913565b9091555050505050505050565b5f80516020615ee88339815191525f61166f83611fe4565b905060048151600581111561168657611686615427565b146116f05760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b6064820152608401610542565b5f8381526005830160205260409020546001600160a01b031633146117275760405162461bcd60e51b81526004016105429061595f565b5f83815260088301602090815260408083208054908490556005860190925290912054610a43906001600160a01b031682612a9a565b611765613335565b5f80516020615ee88339815191525f61177d84612b33565b90505f8061178e8360400151612d0d565b50915091505f61179d83611fe4565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff1660048111156117d7576117d7615427565b60048111156117e8576117e8615427565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff1916905590840151919250848116911610156118cc5760405162461bcd60e51b815260040161054290615625565b826001600160401b03168160e001516001600160401b031611156119025760405162461bcd60e51b815260040161054290615667565b60038151600481111561191757611917615427565b1461196b5760405162461bcd60e51b815260206004820152603160248201525f80516020615f088339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b6064820152608401610542565b5f878152600787016020908152604080832080549084905587845260058a01909252822054909190612710906119ac90600160a01b900461ffff1684615948565b6119b69190615606565b905080886008015f8881526020019081526020015f205f8282546119da9190615913565b909155505060208301516119f7906119f283856159d1565b612a9a565b611a0c8360200151610bd285606001516113e7565b846001600160401b0316868a7f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a45050505050505050611a6260015f80516020615f4883398151915255565b5050565b5f611a6f613335565b611a7a83338461337f565b9050610a5960015f80516020615f4883398151915255565b5f80516020615f288339815191525f611aaa83612b33565b90505f80611abb8360400151613739565b9150915080611b1d5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b6064820152608401610542565b5f82815260078501602052604081208054611b37906159e4565b9050118015611b69575060015f83815260088601602052604090205460ff166005811115611b6757611b67615427565b145b611b855760405162461bcd60e51b815260040161054290615a1c565b5f8281526007850160205260408120611b9d916151f5565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ee883398151915293929190829060ff166004811115611cab57611cab615427565b6004811115611cbc57611cbc615427565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611d4357611d43615427565b1480611d615750600381516004811115611d5f57611d5f615427565b145b611db55760405162461bcd60e51b815260206004820152603260248201525f80516020615f08833981519152604482015271737461747573206e6f742070656e64696e6760701b6064820152608401610542565b5f611dc38260400151611fe4565b905080606001516001600160401b03165f03611e475760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e204944006064820152608401610542565b6005600160991b016001600160a01b031663ee5b48eb611e748460400151846060015185608001516124d4565b6040518263ffffffff1660e01b8152600401611e9091906155d4565b6020604051808303815f875af1158015611eac573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bd7919061559b565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615f28833981519152929190611f18906159e4565b9050118015611f4a575060015f83815260088301602052604090205460ff166005811115611f4857611f48615427565b145b611f665760405162461bcd60e51b815260040161054290615a1c565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb91611f9f9190600401615a63565b6020604051808303815f875af1158015611fbb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fdf919061559b565b505050565b611fec61522c565b5f8281525f80516020615f68833981519152602052604090819020815160e0810190925280545f80516020615f28833981519152929190829060ff16600581111561203957612039615427565b600581111561204a5761204a615427565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b5f6120b5613335565b6120c1858585856138da565b90506120d960015f80516020615f4883398151915255565b949350505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa15801561212c573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526121539190810190615af8565b91509150806121b65760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b6064820152608401610542565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061221d919061559b565b8251146122815760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b6064820152608401610542565b60208201516001600160a01b0316156122f75760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b6064820152608401610542565b5f806123068460400151613b4f565b915091508187146123735760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b6064820152608401610542565b9695505050505050565b5f8281525f80516020615f68833981519152602052604081206002015481905f80516020615f2883398151915290600160801b90046001600160401b03166123c58582613d27565b5f6123cf87613f35565b5f8881526008850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb61241f8a858b6124d4565b6040518263ffffffff1660e01b815260040161243b91906155d4565b6020604051808303815f875af1158015612457573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061247b919061559b565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b600281101561254d5761250d8160016159d1565b612518906008615948565b5081515f9083908390811061252f5761252f615710565b60200101906001600160f81b03191690815f1a9053506001016124f9565b505f5b60048110156125b8576125648160036159d1565b61256f906008615948565b600263ffffffff16901c60f81b8282600261258a9190615913565b8151811061259a5761259a615710565b60200101906001600160f81b03191690815f1a905350600101612550565b505f5b602081101561261a576125cf81601f6159d1565b6125da906008615948565b86901c60f81b826125ec836006615913565b815181106125fc576125fc615710565b60200101906001600160f81b03191690815f1a9053506001016125bb565b505f5b6008811015612685576126318160076159d1565b61263c906008615948565b6001600160401b038616901c60f81b82612657836026615913565b8151811061266757612667615710565b60200101906001600160f81b03191690815f1a90535060010161261d565b505f5b60088110156126f05761269c8160076159d1565b6126a7906008615948565b6001600160401b038516901c60f81b826126c283602e615913565b815181106126d2576126d2615710565b60200101906001600160f81b03191690815f1a905350600101612688565b5090505b9392505050565b612703613fc5565b61270c82614010565b611a6281614087565b5f61271e61522c565b5f80516020615f288339815191525f61273685612b33565b90505f806127478360400151613739565b9150915080156127ac5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b6064820152608401610542565b5f828152600885016020526040808220815160e081019092528054829060ff1660058111156127dd576127dd615427565b60058111156127ee576127ee615427565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f908251600581111561285f5761285f615427565b148061287d575060018251600581111561287b5761287b615427565b145b6128dc5760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b6064820152608401610542565b6003825160058111156128f1576128f1615427565b036128fe57506004612902565b5060055b6020808301515f9081526009880190915260408120558181600581111561292b5761292b615427565b9081600581111561293e5761293e615427565b9052505f84815260088701602052604090208251815484929190829060ff1916600183600581111561297257612972615427565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612a2657612a26615427565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b5f5f80516020615ec883398151915280546040516340c10f1960e01b81526001600160a01b038681166004830152602482018690529293509116906340c10f19906044015f604051808303815f87803b158015612af5575f80fd5b505af1158015612b07573d5f803e3d5ffd5b50505050505050565b5f80516020615ec883398151915254611a62906001600160a01b03168383614128565b60408051606080820183525f8083526020830181905292820152905f80516020615f288339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612ba8573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612bcf9190810190615af8565b9150915080612c2f5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b6064820152608401610542565b8254825114612c925760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b6064820152608401610542565b60208201516001600160a01b031615612d055760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b6064820152608401610542565b509392505050565b5f805f8351603614612d315760405162461bcd60e51b815260040161054290615bca565b5f805b6002811015612d8057612d488160016159d1565b612d53906008615948565b61ffff16868281518110612d6957612d69615710565b016020015160f81c901b9190911790600101612d34565b5061ffff811615612da35760405162461bcd60e51b815260040161054290615c13565b5f805b6004811015612dfe57612dba8160036159d1565b612dc5906008615948565b63ffffffff1687612dd7836002615913565b81518110612de757612de7615710565b016020015160f81c901b9190911790600101612da6565b5063ffffffff8116600414612e255760405162461bcd60e51b815260040161054290615c56565b5f805b6020811015612e7a57612e3c81601f6159d1565b612e47906008615948565b88612e53836006615913565b81518110612e6357612e63615710565b016020015160f81c901b9190911790600101612e28565b505f805b6008811015612ed957612e928160076159d1565b612e9d906008615948565b6001600160401b031689612eb2836026615913565b81518110612ec257612ec2615710565b016020015160f81c901b9190911790600101612e7e565b505f805b6008811015612f3857612ef18160076159d1565b612efc906008615948565b6001600160401b03168a612f1183602e615913565b81518110612f2157612f21615710565b016020015160f81c901b9190911790600101612edd565b5091989097509095509350505050565b5f8151602614612f6a5760405162461bcd60e51b815260040161054290615bca565b5f805b6002811015612fb957612f818160016159d1565b612f8c906008615948565b61ffff16848281518110612fa257612fa2615710565b016020015160f81c901b9190911790600101612f6d565b5061ffff811615612fdc5760405162461bcd60e51b815260040161054290615c13565b5f805b600481101561303757612ff38160036159d1565b612ffe906008615948565b63ffffffff1685613010836002615913565b8151811061302057613020615710565b016020015160f81c901b9190911790600101612fdf565b5063ffffffff81161561305c5760405162461bcd60e51b815260040161054290615c56565b5f805b60208110156130b15761307381601f6159d1565b61307e906008615948565b8661308a836006615913565b8151811061309a5761309a615710565b016020015160f81c901b919091179060010161305f565b50949350505050565b6130c261522c565b5f8281525f80516020615f688339815191526020526040808220815160e0810190925280545f80516020615f2883398151915293929190829060ff16600581111561310f5761310f615427565b600581111561312057613120615427565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561319257613192615427565b146131ee5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b6064820152608401610542565b60038152426001600160401b031660c08201525f84815260088301602052604090208151815483929190829060ff1916600183600581111561323257613232615427565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6132de858261237d565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f80516020615f4883398151915280546001190161336657604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b60015f80516020615f4883398151915255565b5f5f80516020615ee88339815191528161339b61022c85614187565b90505f6133a787611fe4565b90506133b287612a5f565b61340f5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b6064820152608401610542565b60028151600581111561342457613424615427565b146134835760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b6064820152608401610542565b5f82826080015161349491906159b1565b600485015460408401519192506134b6916001600160401b0390911690615c9d565b6001600160401b0316816001600160401b031611156135355760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b6064820152608401610542565b5f806135418a8461237d565b915091505f8a8360405160200161356f92919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff1916600183600481111561360a5761360a615427565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f80825160271461375c5760405162461bcd60e51b815260040161054290615bca565b5f805b60028110156137ab576137738160016159d1565b61377e906008615948565b61ffff1685828151811061379457613794615710565b016020015160f81c901b919091179060010161375f565b5061ffff8116156137ce5760405162461bcd60e51b815260040161054290615c13565b5f805b6004811015613829576137e58160036159d1565b6137f0906008615948565b63ffffffff1686613802836002615913565b8151811061381257613812615710565b016020015160f81c901b91909117906001016137d1565b5063ffffffff81166003146138505760405162461bcd60e51b815260040161054290615c56565b5f805b60208110156138a55761386781601f6159d1565b613872906008615948565b8761387e836006615913565b8151811061388e5761388e615710565b016020015160f81c901b9190911790600101613853565b505f866026815181106138ba576138ba615710565b016020015191976001600160f81b03199092161515965090945050505050565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615ee88339815191529061ffff861610801590613926575061271061ffff861611155b6139425760405162461bcd60e51b815260040161054290615cc8565b60028101546001600160401b0390811690851610156139bb5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b6064820152608401610542565b8054831015613a1e5760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b6064820152608401610542565b8060010154831115613a855760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b6064820152608401610542565b5f613a8f84614187565b90505f613a9b82610a49565b90505f613aa889836141aa565b90506040518060600160405280613abc3390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b5f808251602e14613b725760405162461bcd60e51b815260040161054290615bca565b5f805b6002811015613bc157613b898160016159d1565b613b94906008615948565b61ffff16858281518110613baa57613baa615710565b016020015160f81c901b9190911790600101613b75565b5061ffff811615613be45760405162461bcd60e51b815260040161054290615c13565b5f805b6004811015613c3f57613bfb8160036159d1565b613c06906008615948565b63ffffffff1686613c18836002615913565b81518110613c2857613c28615710565b016020015160f81c901b9190911790600101613be7565b5063ffffffff8116600514613c665760405162461bcd60e51b815260040161054290615c56565b5f805b6020811015613cbb57613c7d81601f6159d1565b613c88906008615948565b87613c94836006615913565b81518110613ca457613ca4615710565b016020015160f81c901b9190911790600101613c69565b505f805b6008811015613d1a57613cd38160076159d1565b613cde906008615948565b6001600160401b031688613cf3836026615913565b81518110613d0357613d03615710565b016020015160f81c901b9190911790600101613cbf565b5090969095509350505050565b5f80516020615f288339815191525f6001600160401b038084169085161115613d5b57613d54838561557b565b9050613d68565b613d65848461557b565b90505b6040805160808101825260038401548082526004850154602083015260058501549282019290925260068401546001600160401b0316606082015242911580613dca575060028401548151613dc6916001600160401b031690615913565b8210155b15613df0576001600160401b038316606082015281815260408101516020820152613e0f565b8281606001818151613e0291906159b1565b6001600160401b03169052505b6060810151613e1f906064615c9d565b602082015160028601546001600160401b039290921691613e4a9190600160401b900460ff16615948565b1015613eae5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b6064820152608401610542565b856001600160401b031681604001818151613ec99190615913565b9052506040810180516001600160401b0387169190613ee99083906159d1565b905250805160038501556020810151600485015560408101516005850155606001516006909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615f688339815191526020526040812060020180545f80516020615f2883398151915291600160401b9091046001600160401b0316906008613f7f83615d13565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661400e57604051631afcd79f60e31b815260040160405180910390fd5b565b614018613fc5565b6140218161470f565b614029614728565b614084608082013560a083013561404660e0850160c086016153ee565b614057610100860160e08701615d2e565b61ffff1661406d61012087016101008801615d47565b61407f610140880161012089016156b0565b614738565b50565b61408f613fc5565b5f80516020615ec88339815191526001600160a01b0382166141085760405162461bcd60e51b815260206004820152602c60248201527f4552433230546f6b656e5374616b696e674d616e616765723a207a65726f207460448201526b6f6b656e206164647265737360a01b6064820152608401610542565b80546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b03838116602483015260448201839052611fdf91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061497c565b5f610a59825f80516020615ec8833981519152546001600160a01b0316906149dd565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff166142355760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b6064820152608401610542565b5f80516020615f288339815191524261425460408601602087016153ee565b6001600160401b0316116142c65760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b6064820152608401610542565b6142d660408501602086016153ee565b6001600160401b03166142ec6202a30042615913565b1161435f5760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e206675747572650000000000000000006064820152608401610542565b83356143b75760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b6064820152608401610542565b83355f908152600982016020526040902054156143e65760405162461bcd60e51b81526004016105429061586b565b60306143f56040860186615d67565b90501461445a5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b6064820152608401610542565b614464835f613d27565b5f806144fe6040518060a0016040528085600101548152602001885f01358152602001876001600160401b031681526020018860200160208101906144a991906153ee565b6001600160401b031681526020016144c460408a018a615d67565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152505050915250614b3f565b5f8281526007860160205260409020919350915061451c8282615ded565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb906145499085906004016155d4565b6020604051808303815f875af1158015614565573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614589919061559b565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff1916600183600581111561460157614601615427565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916146e1918e01908e016153ee565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b614717613fc5565b61471f614eee565b61408481614ef6565b614730613fc5565b61400e615098565b614740613fc5565b5f80516020615ee8833981519152836147ac5760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b6064820152608401610542565b6127108411156147ce5760405162461bcd60e51b815260040161054290615cc8565b858711156148365760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b6064820152608401610542565b5f8360ff16116148a35760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b6064820152608401610542565b600a60ff841611156149155760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b6064820152608401610542565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6149906001600160a01b038416836150a0565b905080515f141580156149b45750808060200190518101906149b29190615eac565b155b15611fdf57604051635274afe760e01b81526001600160a01b0384166004820152602401610542565b6040516370a0823160e01b81523060048201525f9081906001600160a01b038516906370a0823190602401602060405180830381865afa158015614a23573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a47919061559b565b9050614a5e6001600160a01b0385163330866150ad565b6040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015614aa2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614ac6919061559b565b9050818111614b2c5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610542565b614b3682826159d1565b95945050505050565b5f6060826080015151603014614ba95760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b6064820152608401610542565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614c2057614be08160016159d1565b614beb906008615948565b5081515f90839083908110614c0257614c02615710565b60200101906001600160f81b03191690815f1a905350600101614bcc565b505f5b6004811015614c8857614c378160036159d1565b614c42906008615948565b600160ff919091161c60f81b82614c5a836002615913565b81518110614c6a57614c6a615710565b60200101906001600160f81b03191690815f1a905350600101614c23565b505f5b6020811015614ce55784518160208110614ca757614ca7615710565b1a60f81b82614cb7836006615913565b81518110614cc757614cc7615710565b60200101906001600160f81b03191690815f1a905350600101614c8b565b505f5b6020811015614d455784602001518160208110614d0757614d07615710565b1a60f81b82614d17836026615913565b81518110614d2757614d27615710565b60200101906001600160f81b03191690815f1a905350600101614ce8565b505f5b6008811015614db957614d5c8160076159d1565b614d67906008615948565b60ff1685604001516001600160401b0316901c60f81b82826046614d8b9190615913565b81518110614d9b57614d9b615710565b60200101906001600160f81b03191690815f1a905350600101614d48565b505f5b6030811015614e245784608001518181518110614ddb57614ddb615710565b01602001516001600160f81b03191682614df683604e615913565b81518110614e0657614e06615710565b60200101906001600160f81b03191690815f1a905350600101614dbc565b505f5b6008811015614e9657614e3b8160076159d1565b614e46906008615948565b60608601516001600160401b0390811691161c60f81b82614e6883607e615913565b81518110614e7857614e78615710565b60200101906001600160f81b03191690815f1a905350600101614e27565b50600281604051614ea79190615902565b602060405180830381855afa158015614ec2573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614ee5919061559b565b94909350915050565b61400e613fc5565b614efe613fc5565b80355f80516020615f2883398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614f4a6080840160608501615d47565b60ff161115614fb75760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b6064820152608401610542565b5f614fc86080840160608501615d47565b60ff16116150305760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b6064820152608401610542565b6150406080830160608401615d47565b60028201805460ff92909216600160401b0260ff60401b1990921691909117905561507160608301604084016153ee565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b61336c613fc5565b60606126f483835f6150e6565b6040516001600160a01b038481166024830152838116604483015260648201839052610a439186918216906323b872dd90608401614155565b60608147101561510b5760405163cd78605960e01b8152306004820152602401610542565b5f80856001600160a01b031684866040516151269190615902565b5f6040518083038185875af1925050503d805f8114615160576040519150601f19603f3d011682016040523d82523d5f602084013e615165565b606091505b509150915061237386838360608261518557615180826151cc565b6126f4565b815115801561519c57506001600160a01b0384163b155b156151c557604051639996b31560e01b81526001600160a01b0385166004820152602401610542565b50806126f4565b8051156151dc5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b508054615201906159e4565b5f825580601f10615210575050565b601f0160209004905f5260205f20908101906140849190615268565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b8082111561527c575f8155600101615269565b5090565b8015158114614084575f80fd5b803563ffffffff811681146152a0575f80fd5b919050565b5f805f606084860312156152b7575f80fd5b8335925060208401356152c981615280565b91506152d76040850161528d565b90509250925092565b5f602082840312156152f0575f80fd5b5035919050565b6001600160a01b0381168114614084575f80fd5b5f8082840361016081121561531e575f80fd5b6101408082121561532d575f80fd5b849350830135905061533e816152f7565b809150509250929050565b5f60208284031215615359575f80fd5b6126f48261528d565b5f8060408385031215615373575f80fd5b61537c8361528d565b946020939093013593505050565b5f806040838503121561539b575f80fd5b82356001600160401b038111156153b0575f80fd5b8301608081860312156153c1575f80fd5b91506153cf6020840161528d565b90509250929050565b80356001600160401b03811681146152a0575f80fd5b5f602082840312156153fe575f80fd5b6126f4826153d8565b5f8060408385031215615418575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b815160e08201906006811061545e57634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b036040840151166040830152606083015161549960608401826001600160401b03169052565b5060808301516154b460808401826001600160401b03169052565b5060a08301516154cf60a08401826001600160401b03169052565b5060c08301516154ea60c08401826001600160401b03169052565b5092915050565b803561ffff811681146152a0575f80fd5b5f805f8060808587031215615515575f80fd5b84356001600160401b0381111561552a575f80fd5b85016060818803121561553b575f80fd5b9350615549602086016154f1565b9250615557604086016153d8565b9396929550929360600135925050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038281168282160390808211156154ea576154ea615567565b5f602082840312156155ab575f80fd5b5051919050565b5f5b838110156155cc5781810151838201526020016155b4565b50505f910152565b602081525f82518060208401526155f28160408501602087016155b2565b601f01601f19169190910160400192915050565b5f8261562057634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b5f602082840312156156c0575f80fd5b81356126f4816152f7565b5f808335601e198436030181126156e0575f80fd5b8301803591506001600160401b038211156156f9575f80fd5b6020019150600581901b36038213156124cd575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112615738575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561577857615778615742565b60405290565b604051601f8201601f191681016001600160401b03811182821017156157a6576157a6615742565b604052919050565b5f6001600160401b038211156157c6576157c6615742565b50601f01601f191660200190565b5f606082360312156157e4575f80fd5b6157ec615756565b8235815260206157fd8185016153d8565b8183015260408401356001600160401b03811115615819575f80fd5b840136601f820112615829575f80fd5b803561583c615837826157ae565b61577e565b818152368483850101111561584f575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516158c4818460208a016155b2565b80830190508581526001600160401b0360c01b8560c01b16602082015283516158f48160288401602088016155b2565b016028019695505050505050565b5f82516157388184602087016155b2565b80820180821115610a5957610a59615567565b5f63ffffffff80831681810361593e5761593e615567565b6001019392505050565b8082028115828204841417610a5957610a59615567565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b038181168382160190808211156154ea576154ea615567565b81810381811115610a5957610a59615567565b600181811c908216806159f857607f821691505b602082108103615a1657634e487b7160e01b5f52602260045260245ffd5b50919050565b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615a75816159e4565b806020870152604060018084165f8114615a965760018114615ab257615adf565b60ff19851660408a0152604084151560051b8a01019550615adf565b895f5260205f205f5b85811015615ad65781548b8201860152908301908801615abb565b8a016040019650505b509398975050505050505050565b80516152a081615280565b5f8060408385031215615b09575f80fd5b82516001600160401b0380821115615b1f575f80fd5b9084019060608287031215615b32575f80fd5b615b3a615756565b82518152602080840151615b4d816152f7565b82820152604084015183811115615b62575f80fd5b80850194505087601f850112615b76575f80fd5b83519250615b86615837846157ae565b8381528882858701011115615b99575f80fd5b615ba8848383018488016155b2565b80604084015250819550615bbd818801615aed565b9450505050509250929050565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615cc057615cc0615567565b505092915050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b5f6001600160401b0380831681810361593e5761593e615567565b5f60208284031215615d3e575f80fd5b6126f4826154f1565b5f60208284031215615d57575f80fd5b813560ff811681146126f4575f80fd5b5f808335601e19843603018112615d7c575f80fd5b8301803591506001600160401b03821115615d95575f80fd5b6020019150368190038213156124cd575f80fd5b601f821115611fdf57805f5260205f20601f840160051c81016020851015615dce5750805b601f840160051c820191505b81811015610bd7575f8155600101615dda565b81516001600160401b03811115615e0657615e06615742565b615e1a81615e1484546159e4565b84615da9565b602080601f831160018114615e4d575f8415615e365750858301515b5f19600386901b1c1916600185901b178555615ea4565b5f85815260208120601f198616915b82811015615e7b57888601518255948401946001909101908401615e5c565b5085821015615e9857878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215615ebc575f80fd5b81516126f48161528056fe6e5bdfcce15e53c3406ea67bfce37dcd26f5152d5492824e43fd5e3c8ac5ab004317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + 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", } // ERC20TokenStakingManagerABI is the input ABI used to generate the binding from. @@ -992,12 +992,14 @@ type ERC20TokenStakingManagerDelegationEnded struct { DelegationID [32]byte ValidationID [32]byte Nonce uint64 + Rewards *big.Int + Fees *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, nonce []uint64) (*ERC20TokenStakingManagerDelegationEndedIterator, error) { var delegationIDRule []interface{} @@ -1020,9 +1022,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) FilterDelegat return &ERC20TokenStakingManagerDelegationEndedIterator{contract: _ERC20TokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *ERC20TokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var delegationIDRule []interface{} @@ -1070,9 +1072,9 @@ func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) WatchDelegati }), nil } -// ParseDelegationEnded is a log parse operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// ParseDelegationEnded is a log parse operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_ERC20TokenStakingManager *ERC20TokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*ERC20TokenStakingManagerDelegationEnded, error) { event := new(ERC20TokenStakingManagerDelegationEnded) if err := _ERC20TokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { diff --git a/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go b/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go index a21ad1acd..731fe5258 100644 --- a/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go +++ b/abi-bindings/go/staking/NativeTokenStakingManager/NativeTokenStakingManager.go @@ -83,8 +83,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\"}],\"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: "0x608060405234801561000f575f80fd5b50604051615d9f380380615d9f83398101604081905261002e91610107565b60018160018111156100425761004261012c565b0361004f5761004f610055565b50610140565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100a55760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146101045780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b5f60208284031215610117575f80fd5b815160028110610125575f80fd5b9392505050565b634e487b7160e01b5f52602160045260245ffd5b615c528061014d5f395ff3fe608060405260043610610195575f3560e01c806362065856116100e7578063b771b3bc11610087578063c599e24f11610062578063c599e24f146104cb578063c974d1b6146104de578063d5f20ff6146104f2578063df93d8de1461051e575f80fd5b8063b771b3bc14610473578063ba3a4b971461048d578063bee0a03f146104ac575f80fd5b80638280a25a116100c25780638280a25a1461040257806393e245981461041657806398f3e2b414610435578063a3a65e4814610454575f80fd5b806362065856146103a557806366435abf146103c457806376f78621146103e3575f80fd5b8063329c3e1211610152578063467ef06f1161012d578063467ef06f1461031f5780635297fae61461033e57806360305d621461035d57806361e2f49014610386575f80fd5b8063329c3e12146102b257806335455ded146102e457806340034a931461030c575f80fd5b80630118acc4146101995780630322ed98146101ba5780630cdd0985146101d9578063151d30d1146102365780631f7a9d8f1461025c5780632e2194d81461027b575b5f80fd5b3480156101a4575f80fd5b506101b86101b3366004615000565b610534565b005b3480156101c5575f80fd5b506101b86101d436600461503b565b6109d8565b3480156101e4575f80fd5b506102236101f336600461503b565b5f9081527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb09602052604090205490565b6040519081526020015b60405180910390f35b348015610241575f80fd5b5061024a600a81565b60405160ff909116815260200161022d565b348015610267575f80fd5b506101b8610276366004615052565b610b91565b348015610286575f80fd5b5061029a61029536600461503b565b610c6e565b6040516001600160401b03909116815260200161022d565b3480156102bd575f80fd5b506102cc6001600160991b0181565b6040516001600160a01b03909116815260200161022d565b3480156102ef575f80fd5b506102f961271081565b60405161ffff909116815260200161022d565b61022361031a366004615090565b610c84565b34801561032a575f80fd5b506101b86103393660046150e4565b610cb8565b348015610349575f80fd5b506101b86103583660046150fd565b610d58565b348015610368575f80fd5b50610371601481565b60405163ffffffff909116815260200161022d565b348015610391575f80fd5b506101b86103a0366004615125565b610f2d565b3480156103b0575f80fd5b506102236103bf366004615173565b611561565b3480156103cf575f80fd5b5061029a6103de36600461503b565b61157a565b3480156103ee575f80fd5b506101b86103fd366004615000565b61158e565b34801561040d575f80fd5b5061024a603081565b348015610421575f80fd5b506101b861043036600461503b565b6117d1565b348015610440575f80fd5b506101b861044f3660046150fd565b6118d7565b34801561045f575f80fd5b506101b861046e3660046150e4565b611be0565b34801561047e575f80fd5b506102cc6005600160991b0181565b348015610498575f80fd5b506101b86104a736600461503b565b611d98565b3480156104b7575f80fd5b506101b86104c636600461503b565b61201e565b6102236104d936600461503b565b612132565b3480156104e9575f80fd5b5061024a601481565b3480156104fd575f80fd5b5061051161050c36600461503b565b612163565b60405161022d91906151a0565b348015610529575f80fd5b5061029a6202a30081565b5f8381527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ba683398151915293929190829060ff1660048111156105955761059561518c565b60048111156105a6576105a661518c565b8152815461010090046001600160a01b03166020820152600182015460408083019190915260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e0909101528101519091505f61062a82612163565b90506002835160048111156106415761064161518c565b146106935760405162461bcd60e51b815260206004820152602a60248201525f80516020615bc68339815191526044820152696e6f742061637469766560b01b60648201526084015b60405180910390fd5b60208301516001600160a01b031633146106f85760405162461bcd60e51b815260206004820152603360248201525f80516020615bc68339815191526044820152723737ba1037bbb732b210313c9039b2b73232b960691b606482015260840161068a565b6003835280515f9060029060058111156107145761071461518c565b0361076b57861561072c57610729838761222b565b90505b5f84606001518360800151610741919061526a565b905061074d84826124c7565b506001600160401b0390811660e0870152421660a08601525061079f565b505f82815260098501602052604090205460608201516001600160401b0390811660e086015260c0830151811660a0860152165b8460040160089054906101000a90046001600160a01b03166001600160a01b031663778c06b56107d28660600151611561565b60a0808601516080890151918901516040516001600160e01b031960e087901b16815260048101949094526001600160401b03918216602485015291811660448401529081166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa15801561084f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610873919061528a565b5f898152600787016020908152604080832093909355600688019052208451815486929190829060ff191660018360048111156108b2576108b261518c565b0217905550602082015181546001600160a01b0390911661010002610100600160a81b031990911617815560408083015160018301556060830151600283018054608086015160a08088015160c08901516001600160401b03908116600160c01b026001600160c01b03928216600160801b02929092166001600160801b03948216600160401b026001600160801b0319909616978216979097179490941792909216949094171790915560e090940151600390930180549390941667ffffffffffffffff199390931692909217909255850151905184918a917f5cd7ff518ea5cf079cc34b155d074410ae8c095910ebea921240641508658c69916109c6916001600160401b0391909116815260200190565b60405180910390a35050505050505050565b5f8181525f80516020615c268339815191526020526040808220815160e0810190925280545f80516020615be683398151915293929190829060ff166005811115610a2557610a2561518c565b6005811115610a3657610a3661518c565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c09091015290915081516005811115610aa557610aa561518c565b14610b0a5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2056616c696461746f72206e6f742060448201526e1c195b991a5b99c81c995b5bdd985b608a1b606482015260840161068a565b6005600160991b016001600160a01b031663ee5b48eb610b2f8584606001515f61261e565b6040518263ffffffff1660e01b8152600401610b4b91906152c3565b6020604051808303815f875af1158015610b67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b8b919061528a565b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680610bda575080546001600160401b03808416911610155b15610bf85760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155610c2283612843565b805460ff60401b191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b5f610c7e64e8d4a51000836152f5565b92915050565b5f610c8d612857565b610c998484843461288e565b9050610cb160015f80516020615c0683398151915255565b9392505050565b5f80516020615ba68339815191525f80610cd184612b0b565b91509150610cde82612e55565b610ce85750505050565b5f8281526005840160205260409020546001600160a01b0316600482516005811115610d1657610d1661518c565b03610d3b575f83815260088501602052604081208054919055610d398282612e90565b505b610d5181610d4c8460400151611561565b612ef6565b5050505050565b5f80516020615ba68339815191525f610d7084612f09565b90505f80610d8183604001516130e3565b50915091505f610d9083612163565b9050816001600160401b031681606001516001600160401b03161015610dc85760405162461bcd60e51b815260040161068a90615314565b5f8681526006860160205260409020600201546001600160401b03808416600160c01b909204161115610e0d5760405162461bcd60e51b815260040161068a90615356565b60015f87815260068701602052604090205460ff166004811115610e3357610e3361518c565b14610e9c5760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a2064656c65676174696f6e4960448201527211081b9bdd081c195b991a5b99c81859191959606a1b606482015260840161068a565b5f868152600686016020908152604091829020805460ff1916600290811782550180546001600160401b0342818116600160401b026fffffffffffffffff000000000000000019909316929092179092559251928352841691859189917f245fc69b36e168426e0306fc8d8300661b9af297c7958820dbf804f9f63e7064910160405180910390a450505050505050565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f80516020615be68339815191529060ff1615610fca5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20616c726561647920696e697469616044820152721b1a5e9959081d985b1a59185d1bdc881cd95d606a1b606482015260840161068a565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611031919061528a565b8360200135146110935760405162461bcd60e51b815260206004820152602760248201527f56616c696461746f724d616e616765723a20696e76616c696420626c6f636b636044820152661a185a5b88125160ca1b606482015260840161068a565b306110a460608501604086016153b3565b6001600160a01b0316146111165760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015272746f72206d616e61676572206164647265737360681b606482015260840161068a565b5f61112460608501856153ce565b91505f90508435602086013560146111426060890160408a016153b3565b60408051602081019590955284019290925260e090811b6001600160e01b03199081166060808601919091529290921b6bffffffffffffffffffffffff1916606484015284901b166078820152607c0160405160208183030381529060405290505f805b838163ffffffff161015611471575f6111c260608901896153ce565b8363ffffffff168181106111d8576111d8615413565b90506020028101906111ea9190615427565b6111f3906154d7565b80515f81815260098901602052604090205491925090156112265760405162461bcd60e51b815260040161068a9061556e565b84825f01518360200151846040015160405160200161124894939291906155b6565b60408051808303601f190181528282528b35602084015260e086901b6001600160e01b031916838301528151602481850301815260449093019182905296505f916002916112969190615605565b602060405180830381855afa1580156112b1573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906112d4919061528a565b5f83815260098a0160209081526040808320849055805160e0810182526002815287518184015287830180516001600160401b039081168385015260608301869052905181166080830152421660a082015260c0810184905284845260088d01909252909120815181549394509192909190829060ff191660018360058111156113605761136061518c565b0217905550602082810151600183015560408301516002830180546060860151608087015160a08801516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909301516003909201805467ffffffffffffffff191692841692909217909155840151611413911686615616565b83516020808601516040516001600160401b039091168152929750909183917fb815f891730222788b3f8d66249b3a287ce680c3df13866fd9a4f37743ae1014910160405180910390a35050508061146a90615629565b90506111a6565b50600584018190555f61148386612f09565b90505f611493826040015161331e565b9050806002856040516114a69190615605565b602060405180830381855afa1580156114c1573d5f803e3d5ffd5b5050506040513d601f19601f820116820180604052508101906114e4919061528a565b146115485760405162461bcd60e51b815260206004820152602e60248201527f56616c696461746f724d616e616765723a20696e76616c6964207375626e657460448201526d0818dbdb9d995c9cda5bdb88125160921b606482015260840161068a565b505050600a909201805460ff1916600117905550505050565b5f610c7e6001600160401b03831664e8d4a5100061564b565b5f61158482612163565b6080015192915050565b5f80516020615ba68339815191525f6115a685613487565b90506115b185612e55565b6115bc575050505050565b5f8581526005830160205260409020546001600160a01b031633146115f35760405162461bcd60e51b815260040161068a90615662565b5f85815260058301602052604090205460a082015161162291600160b01b90046001600160401b0316906156b4565b6001600160401b03168160c001516001600160401b031610156116a35760405162461bcd60e51b815260206004820152603360248201527f506f5356616c696461746f724d616e616765723a206d696e696d756d207374616044820152721ad948191d5c985d1a5bdb881b9bdd081b595d606a1b606482015260840161068a565b8315610d51575f6116b4868561222b565b5f87815260098501602052604090819020805467ffffffffffffffff19166001600160401b038416179055600485015490840151919250600160401b90046001600160a01b03169063778c06b59061170b90611561565b60a085015160c086015160405160e085901b6001600160e01b031916815260048101939093526001600160401b0391821660248401819052604484015281166064830152841660848201525f60a4820181905260c482015260e401602060405180830381865afa158015611781573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117a5919061528a565b5f878152600885016020526040812080549091906117c4908490615616565b9091555050505050505050565b5f80516020615ba68339815191525f6117e983612163565b90506004815160058111156118005761180061518c565b1461186a5760405162461bcd60e51b815260206004820152603460248201527f506f5356616c696461746f724d616e616765723a2076616c69646174696f6e206044820152731c195c9a5bd9081b9bdd0818dbdb5c1b195d195960621b606482015260840161068a565b5f8381526005830160205260409020546001600160a01b031633146118a15760405162461bcd60e51b815260040161068a90615662565b5f83815260088301602090815260408083208054908490556005860190925290912054610b8b906001600160a01b031682612e90565b6118df612857565b5f80516020615ba68339815191525f6118f784612f09565b90505f8061190883604001516130e3565b50915091505f61191783612163565b5f8781526006870160205260408082208151610100810190925280549394509192909190829060ff1660048111156119515761195161518c565b60048111156119625761196261518c565b8152815461010090046001600160a01b03166020808301919091526001808401546040808501919091526002808601546001600160401b03808216606080890191909152600160401b830482166080890152600160801b8304821660a0890152600160c01b909204811660c0880152600397880154811660e0909701969096525f8f815260068f0190955291842080546001600160a81b0319168155928301849055820192909255909201805467ffffffffffffffff191690559084015191925084811691161015611a465760405162461bcd60e51b815260040161068a90615314565b826001600160401b03168160e001516001600160401b03161115611a7c5760405162461bcd60e51b815260040161068a90615356565b600381516004811115611a9157611a9161518c565b14611ae55760405162461bcd60e51b815260206004820152603160248201525f80516020615bc68339815191526044820152701b9bdd081c195b991a5b99c81859191959607a1b606482015260840161068a565b5f878152600787016020908152604080832080549084905587845260058a0190925282205490919061271090611b2690600160a01b900461ffff168461564b565b611b3091906152f5565b905080886008015f8881526020019081526020015f205f828254611b549190615616565b90915550506020830151611b7190611b6c83856156d4565b612e90565b611b868360200151610d4c8560600151611561565b846001600160401b0316868a7f52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab60405160405180910390a45050505050505050611bdc60015f80516020615c0683398151915255565b5050565b5f80516020615be68339815191525f611bf883612f09565b90505f80611c098360400151613702565b9150915080611c6b5760405162461bcd60e51b815260206004820152602860248201527f56616c696461746f724d616e616765723a20526567697374726174696f6e206e6044820152671bdd081d985b1a5960c21b606482015260840161068a565b5f82815260078501602052604081208054611c85906156e7565b9050118015611cb7575060015f83815260088601602052604090205460ff166005811115611cb557611cb561518c565b145b611cd35760405162461bcd60e51b815260040161068a90615719565b5f8281526007850160205260408120611ceb91614f55565b5f8281526008850160208181526040808420805460ff191660029081178255810180546001600160401b0342818116600160c01b026001600160c01b03909316929092178355600190930154875260098b0185528387208990559588905293835292548151600160801b90910490931683529082019290925283917ff8fd1c90fb9cfa2ca2358fdf5806b086ad43315d92b221c929efc7f105ce7568910160405180910390a25050505050565b5f8181527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0660205260408082208151610100810190925280545f80516020615ba683398151915293929190829060ff166004811115611df957611df961518c565b6004811115611e0a57611e0a61518c565b8152815461010090046001600160a01b03166020820152600180830154604083015260028301546001600160401b038082166060850152600160401b820481166080850152600160801b8204811660a0850152600160c01b909104811660c084015260039093015490921660e09091015290915081516004811115611e9157611e9161518c565b1480611eaf5750600381516004811115611ead57611ead61518c565b145b611f035760405162461bcd60e51b815260206004820152603260248201525f80516020615bc6833981519152604482015271737461747573206e6f742070656e64696e6760701b606482015260840161068a565b5f611f118260400151612163565b905080606001516001600160401b03165f03611f955760405162461bcd60e51b815260206004820152603f60248201527f506f5356616c696461746f724d616e616765723a20636f756c64206e6f74206660448201527f696e642076616c696461746f7220666f722064656c65676174696f6e20494400606482015260840161068a565b6005600160991b016001600160a01b031663ee5b48eb611fc284604001518460600151856080015161261e565b6040518263ffffffff1660e01b8152600401611fde91906152c3565b6020604051808303815f875af1158015611ffa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d51919061528a565b5f8181527fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb076020526040812080545f80516020615be6833981519152929190612066906156e7565b9050118015612098575060015f83815260088301602052604090205460ff1660058111156120965761209661518c565b145b6120b45760405162461bcd60e51b815260040161068a90615719565b5f82815260078201602052604090819020905163ee5b48eb60e01b81526005600160991b019163ee5b48eb916120ed9190600401615760565b6020604051808303815f875af1158015612109573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061212d919061528a565b505050565b5f61213b612857565b6121468233346138a3565b905061215e60015f80516020615c0683398151915255565b919050565b61216b614f8c565b5f8281525f80516020615c26833981519152602052604090819020815160e0810190925280545f80516020615be6833981519152929190829060ff1660058111156121b8576121b861518c565b60058111156121c9576121c961518c565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a083015260039092015490911660c0909101529392505050565b6040516306f8253560e41b815263ffffffff821660048201525f90819081906005600160991b0190636f825350906024015f60405180830381865afa158015612276573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261229d91908101906157f5565b91509150806123005760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642077617260448201526870206d65737361676560b81b606482015260840161068a565b6005600160991b016001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612367919061528a565b8251146123cb5760405162461bcd60e51b815260206004820152602c60248201527f506f5356616c696461746f724d616e616765723a20696e76616c696420736f7560448201526b1c98d94818da185a5b88125160a21b606482015260840161068a565b60208201516001600160a01b0316156124415760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206f726960448201527167696e2073656e646572206164647265737360701b606482015260840161068a565b5f806124508460400151613c5a565b915091508187146124bd5760405162461bcd60e51b815260206004820152603160248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964207570746044820152701a5b59481d985b1a59185d1a5bdb881251607a1b606482015260840161068a565b9695505050505050565b5f8281525f80516020615c26833981519152602052604081206002015481905f80516020615be683398151915290600160801b90046001600160401b031661250f8582613e32565b5f61251987614040565b5f8881526008850160205260408120600201805467ffffffffffffffff60801b1916600160801b6001600160401b038b16021790559091506005600160991b0163ee5b48eb6125698a858b61261e565b6040518263ffffffff1660e01b815260040161258591906152c3565b6020604051808303815f875af11580156125a1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c5919061528a565b604080516001600160401b038a811682526020820184905282519394508516928b927f07de5ff35a674a8005e661f3333c907ca6333462808762d19dc7b3abb1a8c1df928290030190a3909450925050505b9250929050565b60408051603680825260608281019093525f91906020820181803683370190505090505f5b6002811015612697576126578160016156d4565b61266290600861564b565b5081515f9083908390811061267957612679615413565b60200101906001600160f81b03191690815f1a905350600101612643565b505f5b6004811015612702576126ae8160036156d4565b6126b990600861564b565b600263ffffffff16901c60f81b828260026126d49190615616565b815181106126e4576126e4615413565b60200101906001600160f81b03191690815f1a90535060010161269a565b505f5b60208110156127645761271981601f6156d4565b61272490600861564b565b86901c60f81b82612736836006615616565b8151811061274657612746615413565b60200101906001600160f81b03191690815f1a905350600101612705565b505f5b60088110156127cf5761277b8160076156d4565b61278690600861564b565b6001600160401b038616901c60f81b826127a1836026615616565b815181106127b1576127b1615413565b60200101906001600160f81b03191690815f1a905350600101612767565b505f5b600881101561283a576127e68160076156d4565b6127f190600861564b565b6001600160401b038516901c60f81b8261280c83602e615616565b8151811061281c5761281c615413565b60200101906001600160f81b03191690815f1a9053506001016127d2565b50949350505050565b61284b6140d0565b6128548161411b565b50565b5f80516020615c0683398151915280546001190161288857604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b7f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d03545f905f80516020615ba68339815191529061ffff8616108015906128da575061271061ffff861611155b6128f65760405162461bcd60e51b815260040161068a906158c7565b60028101546001600160401b03908116908516101561296f5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d696e60448201526e1039ba30b5b290323ab930ba34b7b760891b606482015260840161068a565b80548310156129d25760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152687420746f6f206c6f7760b81b606482015260840161068a565b8060010154831115612a395760405162461bcd60e51b815260206004820152602a60248201527f506f5356616c696461746f724d616e616765723a207374616b6520616d6f756e6044820152690e840e8dede40d0d2ced60b31b606482015260840161068a565b825f612a4482610c6e565b90505f612a51898361418f565b90506040518060600160405280612a653390565b6001600160a01b03908116825261ffff808c166020808501919091526001600160401b03808d166040958601525f8781526005909a0182529884902085518154928701519690950151909916600160b01b0267ffffffffffffffff60b01b1995909216600160a01b026001600160b01b031990911693909216929092171791909116179093555090915050949350505050565b60015f80516020615c0683398151915255565b5f612b14614f8c565b5f80516020615be68339815191525f612b2c85612f09565b90505f80612b3d8360400151613702565b915091508015612ba25760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20736044820152691d1a5b1b081d985b1a5960b21b606482015260840161068a565b5f828152600885016020526040808220815160e081019092528054829060ff166005811115612bd357612bd361518c565b6005811115612be457612be461518c565b81526001820154602082015260028201546001600160401b038082166040840152600160401b820481166060840152600160801b820481166080840152600160c01b909104811660a08301526003928301541660c0909101529091505f9082516005811115612c5557612c5561518c565b1480612c735750600182516005811115612c7157612c7161518c565b145b612cd25760405162461bcd60e51b815260206004820152602a60248201527f56616c696461746f724d616e616765723a20696e76616c69642076616c696461604482015269746f722073746174757360b01b606482015260840161068a565b600382516005811115612ce757612ce761518c565b03612cf457506004612cf8565b5060055b6020808301515f90815260098801909152604081205581816005811115612d2157612d2161518c565b90816005811115612d3457612d3461518c565b9052505f84815260088701602052604090208251815484929190829060ff19166001836005811115612d6857612d6861518c565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff19169190921617905581516005811115612e1c57612e1c61518c565b60405185907f1c08e59656f1a18dc2da76826cdc52805c43e897a17c50faefb8ab3c1526cc16905f90a350919791965090945050505050565b5f9081527f4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d0560205260409020546001600160a01b0316151590565b6040516327ad555d60e11b81526001600160a01b0383166004820152602481018290526001600160991b0190634f5aaaba906044015f604051808303815f87803b158015612edc575f80fd5b505af1158015612eee573d5f803e3d5ffd5b505050505050565b611bdc6001600160a01b038316826146f4565b60408051606080820183525f8083526020830181905292820152905f80516020615be68339815191526040516306f8253560e41b815263ffffffff851660048201529091505f9081906005600160991b0190636f825350906024015f60405180830381865afa158015612f7e573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612fa591908101906157f5565b91509150806130055760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a20696e76616c69642077617270206d60448201526565737361676560d01b606482015260840161068a565b82548251146130685760405162461bcd60e51b815260206004820152602960248201527f56616c696461746f724d616e616765723a20696e76616c696420736f757263656044820152680818da185a5b88125160ba1b606482015260840161068a565b60208201516001600160a01b0316156130db5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a20696e76616c6964206f726967696e60448201526e2073656e646572206164647265737360881b606482015260840161068a565b509392505050565b5f805f83516036146131075760405162461bcd60e51b815260040161068a90615912565b5f805b60028110156131565761311e8160016156d4565b61312990600861564b565b61ffff1686828151811061313f5761313f615413565b016020015160f81c901b919091179060010161310a565b5061ffff8116156131795760405162461bcd60e51b815260040161068a9061595b565b5f805b60048110156131d4576131908160036156d4565b61319b90600861564b565b63ffffffff16876131ad836002615616565b815181106131bd576131bd615413565b016020015160f81c901b919091179060010161317c565b5063ffffffff81166004146131fb5760405162461bcd60e51b815260040161068a9061599e565b5f805b60208110156132505761321281601f6156d4565b61321d90600861564b565b88613229836006615616565b8151811061323957613239615413565b016020015160f81c901b91909117906001016131fe565b505f805b60088110156132af576132688160076156d4565b61327390600861564b565b6001600160401b031689613288836026615616565b8151811061329857613298615413565b016020015160f81c901b9190911790600101613254565b505f805b600881101561330e576132c78160076156d4565b6132d290600861564b565b6001600160401b03168a6132e783602e615616565b815181106132f7576132f7615413565b016020015160f81c901b91909117906001016132b3565b5091989097509095509350505050565b5f81516026146133405760405162461bcd60e51b815260040161068a90615912565b5f805b600281101561338f576133578160016156d4565b61336290600861564b565b61ffff1684828151811061337857613378615413565b016020015160f81c901b9190911790600101613343565b5061ffff8116156133b25760405162461bcd60e51b815260040161068a9061595b565b5f805b600481101561340d576133c98160036156d4565b6133d490600861564b565b63ffffffff16856133e6836002615616565b815181106133f6576133f6615413565b016020015160f81c901b91909117906001016133b5565b5063ffffffff8116156134325760405162461bcd60e51b815260040161068a9061599e565b5f805b602081101561283a5761344981601f6156d4565b61345490600861564b565b86613460836006615616565b8151811061347057613470615413565b016020015160f81c901b9190911790600101613435565b61348f614f8c565b5f8281525f80516020615c268339815191526020526040808220815160e0810190925280545f80516020615be683398151915293929190829060ff1660058111156134dc576134dc61518c565b60058111156134ed576134ed61518c565b8152600182015460208201526002808301546001600160401b038082166040850152600160401b820481166060850152600160801b820481166080850152600160c01b909104811660a084015260039093015490921660c0909101529091508151600581111561355f5761355f61518c565b146135bb5760405162461bcd60e51b815260206004820152602660248201527f56616c696461746f724d616e616765723a2076616c696461746f72206e6f742060448201526561637469766560d01b606482015260840161068a565b60038152426001600160401b031660c08201525f84815260088301602052604090208151815483929190829060ff191660018360058111156135ff576135ff61518c565b02179055506020820151600182015560408201516002820180546060850151608086015160a08701516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909201516003909101805467ffffffffffffffff1916919092161790555f6136ab85826124c7565b6080840151604080516001600160401b03909216825242602083015291935083925087917f13d58394cf269d48bcf927959a29a5ffee7c9924dafff8927ecdf3c48ffa7c67910160405180910390a3509392505050565b5f8082516027146137255760405162461bcd60e51b815260040161068a90615912565b5f805b60028110156137745761373c8160016156d4565b61374790600861564b565b61ffff1685828151811061375d5761375d615413565b016020015160f81c901b9190911790600101613728565b5061ffff8116156137975760405162461bcd60e51b815260040161068a9061595b565b5f805b60048110156137f2576137ae8160036156d4565b6137b990600861564b565b63ffffffff16866137cb836002615616565b815181106137db576137db615413565b016020015160f81c901b919091179060010161379a565b5063ffffffff81166003146138195760405162461bcd60e51b815260040161068a9061599e565b5f805b602081101561386e5761383081601f6156d4565b61383b90600861564b565b87613847836006615616565b8151811061385757613857615413565b016020015160f81c901b919091179060010161381c565b505f8660268151811061388357613883615413565b016020015191976001600160f81b03199092161515965090945050505050565b5f5f80516020615ba6833981519152816138bc84610c6e565b90505f6138c887612163565b90506138d387612e55565b6139305760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a206e6f74206120506f53207660448201526730b634b230ba37b960c11b606482015260840161068a565b6002815160058111156139455761394561518c565b146139a45760405162461bcd60e51b815260206004820152602960248201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e6044820152686f742061637469766560b81b606482015260840161068a565b5f8282608001516139b591906156b4565b600485015460408401519192506139d7916001600160401b03909116906159e5565b6001600160401b0316816001600160401b03161115613a565760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a206d6178696d756d2076616c6044820152741a59185d1bdc881dd95a59da1d081c995858da1959605a1b606482015260840161068a565b5f80613a628a846124c7565b915091505f8a83604051602001613a9092919091825260c01b6001600160c01b031916602082015260280190565b60408051601f1981840301815282825280516020909101206101008301909152915080600181526001600160a01b038c1660208083019190915260408083018f90526001600160401b03808b1660608501525f6080850181905260a0850181905290881660c085015260e090930183905284835260068b01909152902081518154829060ff19166001836004811115613b2b57613b2b61518c565b02179055506020828101518254610100600160a81b0319166101006001600160a01b039283160217835560408085015160018501556060808601516002860180546080808a015160a08b015160c08c01516001600160401b039687166001600160801b031990951694909417600160401b92871692909202919091176001600160801b0316600160801b918616919091026001600160c01b031617600160c01b928516929092029190911790915560e0909701516003909601805467ffffffffffffffff191696821696909617909555815189861681528a861694810194909452938b1690830152918101859052908c16918d9184917fb0024b263bc3a0b728a6edea50a69efa841189f8d32ee8af9d1c2b1a1a223426910160405180910390a49a9950505050505050505050565b5f808251602e14613c7d5760405162461bcd60e51b815260040161068a90615912565b5f805b6002811015613ccc57613c948160016156d4565b613c9f90600861564b565b61ffff16858281518110613cb557613cb5615413565b016020015160f81c901b9190911790600101613c80565b5061ffff811615613cef5760405162461bcd60e51b815260040161068a9061595b565b5f805b6004811015613d4a57613d068160036156d4565b613d1190600861564b565b63ffffffff1686613d23836002615616565b81518110613d3357613d33615413565b016020015160f81c901b9190911790600101613cf2565b5063ffffffff8116600514613d715760405162461bcd60e51b815260040161068a9061599e565b5f805b6020811015613dc657613d8881601f6156d4565b613d9390600861564b565b87613d9f836006615616565b81518110613daf57613daf615413565b016020015160f81c901b9190911790600101613d74565b505f805b6008811015613e2557613dde8160076156d4565b613de990600861564b565b6001600160401b031688613dfe836026615616565b81518110613e0e57613e0e615413565b016020015160f81c901b9190911790600101613dca565b5090969095509350505050565b5f80516020615be68339815191525f6001600160401b038084169085161115613e6657613e5f838561526a565b9050613e73565b613e70848461526a565b90505b6040805160808101825260038401548082526004850154602083015260058501549282019290925260068401546001600160401b0316606082015242911580613ed5575060028401548151613ed1916001600160401b031690615616565b8210155b15613efb576001600160401b038316606082015281815260408101516020820152613f1a565b8281606001818151613f0d91906156b4565b6001600160401b03169052505b6060810151613f2a9060646159e5565b602082015160028601546001600160401b039290921691613f559190600160401b900460ff1661564b565b1015613fb95760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e2060448201526c1c985d1948195e18d959591959609a1b606482015260840161068a565b856001600160401b031681604001818151613fd49190615616565b9052506040810180516001600160401b0387169190613ff49083906156d4565b905250805160038501556020810151600485015560408101516005850155606001516006909301805467ffffffffffffffff19166001600160401b039094169390931790925550505050565b5f8181525f80516020615c268339815191526020526040812060020180545f80516020615be683398151915291600160401b9091046001600160401b031690600861408a83615a10565b82546101009290920a6001600160401b038181021990931691831602179091555f94855260089290920160205250604090922060020154600160401b9004909116919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661411957604051631afcd79f60e31b815260040160405180910390fd5b565b6141236140d0565b61412c81614787565b6141346147a0565b612854608082013560a083013561415160e0850160c08601615173565b614162610100860160e08701615a2b565b61ffff1661417861012087016101008801615a44565b61418a610140880161012089016153b3565b6147b0565b7fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb0a545f9060ff1661421a5760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a2076616c696461746f72207365742060448201526e1b9bdd081a5b9a5d1a585b1a5e9959608a1b606482015260840161068a565b5f80516020615be6833981519152426142396040860160208701615173565b6001600160401b0316116142ab5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e20656044820152727870697279206e6f7420696e2066757475726560681b606482015260840161068a565b6142bb6040850160208601615173565b6001600160401b03166142d16202a30042615616565b116143445760405162461bcd60e51b815260206004820152603760248201527f56616c696461746f724d616e616765723a20726567697374726174696f6e206560448201527f787069727920746f6f2066617220696e20667574757265000000000000000000606482015260840161068a565b833561439c5760405162461bcd60e51b815260206004820152602160248201527f56616c696461746f724d616e616765723a20696e76616c6964206e6f646520496044820152601160fa1b606482015260840161068a565b83355f908152600982016020526040902054156143cb5760405162461bcd60e51b815260040161068a9061556e565b60306143da6040860186615a64565b90501461443f5760405162461bcd60e51b815260206004820152602d60248201527f56616c696461746f724d616e616765723a20696e76616c696420626c7350756260448201526c0d8d2c696caf240d8cadccee8d609b1b606482015260840161068a565b614449835f613e32565b5f806144e36040518060a0016040528085600101548152602001885f01358152602001876001600160401b0316815260200188602001602081019061448e9190615173565b6001600160401b031681526020016144a960408a018a615a64565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050509152506149f4565b5f828152600786016020526040902091935091506145018282615aea565b5060405163ee5b48eb60e01b81525f906005600160991b019063ee5b48eb9061452e9085906004016152c3565b6020604051808303815f875af115801561454a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061456e919061528a565b6040805160e08101909152909150806001815288356020808301919091526001600160401b03891660408084018290525f60608501819052608085019290925260a0840182905260c0909301819052868152600888019091522081518154829060ff191660018360058111156145e6576145e661518c565b021790555060208281015160018301556040808401516002840180546060870151608088015160a08901516001600160401b039586166001600160801b031990941693909317600160401b92861692909202919091176001600160801b0316600160801b918516919091026001600160c01b031617600160c01b9184169190910217905560c0909401516003909301805467ffffffffffffffff19169390941692909217909255829189359186917f79b81620b81daf2c08cd5bb3dbb79e75d2d7a87f52171fde5aadc8c47823026e918b916146c6918e01908e01615173565b604080516001600160401b0393841681529290911660208301520160405180910390a4509095945050505050565b804710156147175760405163cd78605960e01b815230600482015260240161068a565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114614760576040519150601f19603f3d011682016040523d82523d5f602084013e614765565b606091505b505090508061212d57604051630a12f52160e11b815260040160405180910390fd5b61478f6140d0565b614797614da3565b61285481614dab565b6147a86140d0565b614119614f4d565b6147b86140d0565b5f80516020615ba6833981519152836148245760405162461bcd60e51b815260206004820152602860248201527f506f5356616c696461746f724d616e616765723a207a65726f2064656c65676160448201526774696f6e2066656560c01b606482015260840161068a565b6127108411156148465760405162461bcd60e51b815260040161068a906158c7565b858711156148ae5760405162461bcd60e51b815260206004820152602f60248201527f506f5356616c696461746f724d616e616765723a20696e76616c69642073746160448201526e6b6520616d6f756e742072616e676560881b606482015260840161068a565b5f8360ff161161491b5760405162461bcd60e51b815260206004820152603260248201527f506f5356616c696461746f724d616e616765723a207a65726f206d6178696d75604482015271369039ba30b5b29036bab63a34b83634b2b960711b606482015260840161068a565b600a60ff8416111561498d5760405162461bcd60e51b815260206004820152603560248201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206d617860448201527434b6bab69039ba30b5b29036bab63a34b83634b2b960591b606482015260840161068a565b95865560018601949094556002850180546001600160401b0390941667ffffffffffffffff19909416939093179092556003840155600490920180546001600160a01b03909216600160401b026001600160e01b031990921660ff90931692909217179055565b5f6060826080015151603014614a5e5760405162461bcd60e51b815260206004820152602960248201527f5374616b696e674d657373616765733a20696e76616c6964207369676e6174756044820152680e4ca40d8cadccee8d60bb1b606482015260840161068a565b60408051608680825260c082019092525f916020820181803683370190505090505f5b6002811015614ad557614a958160016156d4565b614aa090600861564b565b5081515f90839083908110614ab757614ab7615413565b60200101906001600160f81b03191690815f1a905350600101614a81565b505f5b6004811015614b3d57614aec8160036156d4565b614af790600861564b565b600160ff919091161c60f81b82614b0f836002615616565b81518110614b1f57614b1f615413565b60200101906001600160f81b03191690815f1a905350600101614ad8565b505f5b6020811015614b9a5784518160208110614b5c57614b5c615413565b1a60f81b82614b6c836006615616565b81518110614b7c57614b7c615413565b60200101906001600160f81b03191690815f1a905350600101614b40565b505f5b6020811015614bfa5784602001518160208110614bbc57614bbc615413565b1a60f81b82614bcc836026615616565b81518110614bdc57614bdc615413565b60200101906001600160f81b03191690815f1a905350600101614b9d565b505f5b6008811015614c6e57614c118160076156d4565b614c1c90600861564b565b60ff1685604001516001600160401b0316901c60f81b82826046614c409190615616565b81518110614c5057614c50615413565b60200101906001600160f81b03191690815f1a905350600101614bfd565b505f5b6030811015614cd95784608001518181518110614c9057614c90615413565b01602001516001600160f81b03191682614cab83604e615616565b81518110614cbb57614cbb615413565b60200101906001600160f81b03191690815f1a905350600101614c71565b505f5b6008811015614d4b57614cf08160076156d4565b614cfb90600861564b565b60608601516001600160401b0390811691161c60f81b82614d1d83607e615616565b81518110614d2d57614d2d615413565b60200101906001600160f81b03191690815f1a905350600101614cdc565b50600281604051614d5c9190615605565b602060405180830381855afa158015614d77573d5f803e3d5ffd5b5050506040513d601f19601f82011682018060405250810190614d9a919061528a565b94909350915050565b6141196140d0565b614db36140d0565b80355f80516020615be683398151915290815560208201357fe92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb01556014614dff6080840160608501615a44565b60ff161115614e6c5760405162461bcd60e51b815260206004820152603360248201527f56616c696461746f724d616e616765723a206d6178696d756d20636875726e206044820152720e0cae4c6cadce8c2ceca40e8dede40d0d2ced606b1b606482015260840161068a565b5f614e7d6080840160608501615a44565b60ff1611614ee55760405162461bcd60e51b815260206004820152602f60248201527f56616c696461746f724d616e616765723a207a65726f206d6178696d756d206360448201526e6875726e2070657263656e7461676560881b606482015260840161068a565b614ef56080830160608401615a44565b60028201805460ff92909216600160401b0260ff60401b19909216919091179055614f266060830160408401615173565b600291909101805467ffffffffffffffff19166001600160401b0390921691909117905550565b612af86140d0565b508054614f61906156e7565b5f825580601f10614f70575050565b601f0160209004905f5260205f20908101906128549190614fc8565b6040805160e08101909152805f81525f6020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b5b80821115614fdc575f8155600101614fc9565b5090565b8015158114612854575f80fd5b803563ffffffff8116811461215e575f80fd5b5f805f60608486031215615012575f80fd5b83359250602084013561502481614fe0565b915061503260408501614fed565b90509250925092565b5f6020828403121561504b575f80fd5b5035919050565b5f6101408284031215615063575f80fd5b50919050565b803561ffff8116811461215e575f80fd5b80356001600160401b038116811461215e575f80fd5b5f805f606084860312156150a2575f80fd5b83356001600160401b038111156150b7575f80fd5b8401606081870312156150c8575f80fd5b92506150d660208501615069565b91506150326040850161507a565b5f602082840312156150f4575f80fd5b610cb182614fed565b5f806040838503121561510e575f80fd5b61511783614fed565b946020939093013593505050565b5f8060408385031215615136575f80fd5b82356001600160401b0381111561514b575f80fd5b83016080818603121561515c575f80fd5b915061516a60208401614fed565b90509250929050565b5f60208284031215615183575f80fd5b610cb18261507a565b634e487b7160e01b5f52602160045260245ffd5b815160e0820190600681106151c357634e487b7160e01b5f52602160045260245ffd5b80835250602083015160208301526001600160401b03604084015116604083015260608301516151fe60608401826001600160401b03169052565b50608083015161521960808401826001600160401b03169052565b5060a083015161523460a08401826001600160401b03169052565b5060c083015161524f60c08401826001600160401b03169052565b5092915050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0382811682821603908082111561524f5761524f615256565b5f6020828403121561529a575f80fd5b5051919050565b5f5b838110156152bb5781810151838201526020016152a3565b50505f910152565b602081525f82518060208401526152e18160408501602087016152a1565b601f01601f19169190910160400192915050565b5f8261530f57634e487b7160e01b5f52601260045260245ffd5b500490565b60208082526022908201527f506f5356616c696461746f724d616e616765723a20696e76616c6964206e6f6e604082015261636560f01b606082015260800190565b60208082526029908201527f506f5356616c696461746f724d616e616765723a206e6f6e636520646f6573206040820152680dcdee840dac2e8c6d60bb1b606082015260800190565b6001600160a01b0381168114612854575f80fd5b5f602082840312156153c3575f80fd5b8135610cb18161539f565b5f808335601e198436030181126153e3575f80fd5b8301803591506001600160401b038211156153fc575f80fd5b6020019150600581901b3603821315612617575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261543b575f80fd5b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b604051606081016001600160401b038111828210171561547b5761547b615445565b60405290565b604051601f8201601f191681016001600160401b03811182821017156154a9576154a9615445565b604052919050565b5f6001600160401b038211156154c9576154c9615445565b50601f01601f191660200190565b5f606082360312156154e7575f80fd5b6154ef615459565b82358152602061550081850161507a565b8183015260408401356001600160401b0381111561551c575f80fd5b840136601f82011261552c575f80fd5b803561553f61553a826154b1565b615481565b8181523684838501011115615552575f80fd5b81848401858301375f9181019093015250604082015292915050565b60208082526028908201527f56616c696461746f724d616e616765723a206e6f646520494420616c72656164604082015267792061637469766560c01b606082015260800190565b5f85516155c7818460208a016152a1565b80830190508581526001600160401b0360c01b8560c01b16602082015283516155f78160288401602088016152a1565b016028019695505050505050565b5f825161543b8184602087016152a1565b80820180821115610c7e57610c7e615256565b5f63ffffffff80831681810361564157615641615256565b6001019392505050565b8082028115828204841417610c7e57610c7e615256565b60208082526032908201527f506f5356616c696461746f724d616e616765723a2076616c696461746f72206e60408201527137ba1037bbb732b210313c9039b2b73232b960711b606082015260800190565b6001600160401b0381811683821601908082111561524f5761524f615256565b81810381811115610c7e57610c7e615256565b600181811c908216806156fb57607f821691505b60208210810361506357634e487b7160e01b5f52602260045260245ffd5b60208082526027908201527f56616c696461746f724d616e616765723a20696e76616c69642076616c6964616040820152661d1a5bdb88125160ca1b606082015260800190565b5f60208083525f8454615772816156e7565b806020870152604060018084165f811461579357600181146157af576157dc565b60ff19851660408a0152604084151560051b8a010195506157dc565b895f5260205f205f5b858110156157d35781548b82018601529083019088016157b8565b8a016040019650505b509398975050505050505050565b805161215e81614fe0565b5f8060408385031215615806575f80fd5b82516001600160401b038082111561581c575f80fd5b908401906060828703121561582f575f80fd5b615837615459565b8251815260208084015161584a8161539f565b8282015260408401518381111561585f575f80fd5b80850194505087601f850112615873575f80fd5b8351925061588361553a846154b1565b8381528882858701011115615896575f80fd5b6158a5848383018488016152a1565b806040840152508195506158ba8188016157ea565b9450505050509250929050565b6020808252602b908201527f506f5356616c696461746f724d616e616765723a20696e76616c69642064656c60408201526a65676174696f6e2066656560a81b606082015260800190565b60208082526029908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152680ceca40d8cadccee8d60bb1b606082015260800190565b60208082526023908201527f56616c696461746f724d657373616765733a20696e76616c696420636f64656360408201526208125160ea1b606082015260800190565b60208082526027908201527f56616c696461746f724d657373616765733a20696e76616c6964206d657373616040820152666765207479706560c81b606082015260800190565b6001600160401b03818116838216028082169190828114615a0857615a08615256565b505092915050565b5f6001600160401b0380831681810361564157615641615256565b5f60208284031215615a3b575f80fd5b610cb182615069565b5f60208284031215615a54575f80fd5b813560ff81168114610cb1575f80fd5b5f808335601e19843603018112615a79575f80fd5b8301803591506001600160401b03821115615a92575f80fd5b602001915036819003821315612617575f80fd5b601f82111561212d57805f5260205f20601f840160051c81016020851015615acb5750805b601f840160051c820191505b81811015610d51575f8155600101615ad7565b81516001600160401b03811115615b0357615b03615445565b615b1781615b1184546156e7565b84615aa6565b602080601f831160018114615b4a575f8415615b335750858301515b5f19600386901b1c1916600185901b178555612eee565b5f85815260208120601f198616915b82811015615b7857888601518255948401946001909101908401615b59565b5085821015615b9557878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fe4317713f7ecbdddd4bc99e95d903adedaa883b2e7c2551610bd13e2c7e473d00506f5356616c696461746f724d616e616765723a2064656c65676174696f6e20e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00e92546d698950ddd38910d2e15ed1d923cd0a7b3dde9e2a6a3f380565559cb08a164736f6c6343000819000a", + 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", } // NativeTokenStakingManagerABI is the input ABI used to generate the binding from. @@ -1023,12 +1023,14 @@ type NativeTokenStakingManagerDelegationEnded struct { DelegationID [32]byte ValidationID [32]byte Nonce uint64 + Rewards *big.Int + Fees *big.Int Raw types.Log // Blockchain specific contextual infos } -// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// FilterDelegationEnded is a free log retrieval operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDelegationEnded(opts *bind.FilterOpts, delegationID [][32]byte, validationID [][32]byte, nonce []uint64) (*NativeTokenStakingManagerDelegationEndedIterator, error) { var delegationIDRule []interface{} @@ -1051,9 +1053,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) FilterDeleg return &NativeTokenStakingManagerDelegationEndedIterator{contract: _NativeTokenStakingManager.contract, event: "DelegationEnded", logs: logs, sub: sub}, nil } -// WatchDelegationEnded is a free log subscription operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// WatchDelegationEnded is a free log subscription operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelegationEnded(opts *bind.WatchOpts, sink chan<- *NativeTokenStakingManagerDelegationEnded, delegationID [][32]byte, validationID [][32]byte, nonce []uint64) (event.Subscription, error) { var delegationIDRule []interface{} @@ -1101,9 +1103,9 @@ func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) WatchDelega }), nil } -// ParseDelegationEnded is a log parse operation binding the contract event 0x52e9b1eaef84d46cda83ccb9d427267bc4d04f756b4a32c8302722b79e5c65ab. +// ParseDelegationEnded is a log parse operation binding the contract event 0x9cc4dec6f77ce74cf7d565971195f01393686ba1a6df96b64f20d4ce571d5033. // -// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce) +// Solidity: event DelegationEnded(bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce, uint256 rewards, uint256 fees) func (_NativeTokenStakingManager *NativeTokenStakingManagerFilterer) ParseDelegationEnded(log types.Log) (*NativeTokenStakingManagerDelegationEnded, error) { event := new(NativeTokenStakingManagerDelegationEnded) if err := _NativeTokenStakingManager.contract.UnpackLog(event, "DelegationEnded", log); err != nil { diff --git a/contracts/staking/PoSValidatorManager.sol b/contracts/staking/PoSValidatorManager.sol index ee6af6395..f661d7c2c 100644 --- a/contracts/staking/PoSValidatorManager.sol +++ b/contracts/staking/PoSValidatorManager.sol @@ -528,12 +528,13 @@ abstract contract PoSValidatorManager is $._redeemableValidatorRewards[validationID] += validatorFees; // Reward the remaining tokens to the delegator. - _reward(delegator.owner, rewards - validatorFees); + uint256 delegatorRewards = rewards - validatorFees; + _reward(delegator.owner, delegatorRewards); // Unlock the delegator's stake. _unlock(delegator.owner, weightToValue(delegator.weight)); - emit DelegationEnded(delegationID, validationID, nonce); + emit DelegationEnded(delegationID, validationID, nonce, delegatorRewards, validatorFees); } function _reward(address account, uint256 amount) internal virtual; diff --git a/contracts/staking/interfaces/IPoSValidatorManager.sol b/contracts/staking/interfaces/IPoSValidatorManager.sol index b29225c0a..b4d8cefff 100644 --- a/contracts/staking/interfaces/IPoSValidatorManager.sol +++ b/contracts/staking/interfaces/IPoSValidatorManager.sol @@ -95,7 +95,11 @@ interface IPoSValidatorManager is IValidatorManager { * @param nonce The message nonce used to update the validator weight, as returned by the P-Chain */ event DelegationEnded( - bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce + bytes32 indexed delegationID, + bytes32 indexed validationID, + uint64 indexed nonce, + uint256 rewards, + uint256 fees ); /** diff --git a/contracts/staking/tests/PoSValidatorManagerTests.t.sol b/contracts/staking/tests/PoSValidatorManagerTests.t.sol index 7b8ee3778..0a6bd5d5a 100644 --- a/contracts/staking/tests/PoSValidatorManagerTests.t.sol +++ b/contracts/staking/tests/PoSValidatorManagerTests.t.sol @@ -71,7 +71,11 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { ); event DelegationEnded( - bytes32 indexed delegationID, bytes32 indexed validationID, uint64 indexed nonce + bytes32 indexed delegationID, + bytes32 indexed validationID, + uint64 indexed nonce, + uint256 rewards, + uint256 fees ); function testDelegationFeeBipsTooLow() public { @@ -548,8 +552,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { endSupply: 0 }); - uint256 expectedValidatorReward = expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000; - uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorReward; + uint256 expectedValidatorFees = expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000; + uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; _setUpCompleteEndDelegation({ validationID: validationID, @@ -557,6 +561,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { delegator: DEFAULT_DELEGATOR_ADDRESS, delegatorWeight: DEFAULT_DELEGATOR_WEIGHT, expectedReward: expectedDelegatorReward, + expectedFees: expectedValidatorFees, validatorWeight: DEFAULT_WEIGHT, expectedValidatorWeight: DEFAULT_WEIGHT, expectedNonce: 2 @@ -713,8 +718,8 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { endSupply: 0 }); - uint256 expectedValidatorReward = expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000; - uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorReward; + uint256 expectedValidatorFees = expectedTotalReward * DEFAULT_DELEGATION_FEE_BIPS / 10000; + uint256 expectedDelegatorReward = expectedTotalReward - expectedValidatorFees; // Complete delegation1 by delivering the weight update from nonce 4 (delegator2's nonce) _setUpCompleteEndDelegation({ @@ -723,6 +728,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { delegator: DEFAULT_DELEGATOR_ADDRESS, delegatorWeight: DEFAULT_DELEGATOR_WEIGHT, expectedReward: expectedDelegatorReward, + expectedFees: expectedValidatorFees, validatorWeight: DEFAULT_WEIGHT, expectedValidatorWeight: DEFAULT_WEIGHT, expectedNonce: 4 @@ -939,6 +945,7 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { address delegator, uint64 delegatorWeight, uint256 expectedReward, + uint256 expectedFees, uint64 validatorWeight, uint64 expectedValidatorWeight, uint64 expectedNonce @@ -949,7 +956,9 @@ abstract contract PoSValidatorManagerTest is ValidatorManagerTest { _mockGetVerifiedWarpMessage(weightUpdateMessage, true); vm.expectEmit(true, true, true, true, address(posValidatorManager)); - emit DelegationEnded(delegationID, validationID, expectedNonce); + emit DelegationEnded( + delegationID, validationID, expectedNonce, expectedReward, expectedFees + ); uint256 balanceBefore = _getStakeAssetBalance(delegator); _expectStakeUnlock(delegator, _weightToValue(delegatorWeight));