[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "lock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "name": "Restaked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "lock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Staked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "lock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "apr", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "minStake", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "maxStake", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalMaxStakeAmount", "type": "uint256" }, { "indexed": false, "internalType": "bool", "name": "active", "type": "bool" } ], "name": "StakingPoolCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "lock", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "rewards", "type": "uint256" } ], "name": "Unstaked", "type": "event" }, { "inputs": [], "name": "VMINT", "outputs": [ { "internalType": "contract IERC20Metadata", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "staker", "type": "address" }, { "internalType": "uint256", "name": "lock", "type": "uint256" } ], "name": "calculateReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "contractState", "outputs": [ { "internalType": "enum VoluMintStaking.ContractState", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "lock", "type": "uint256" } ], "name": "emergencyUnstake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lock", "type": "uint256" } ], "name": "restake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newState", "type": "uint256" } ], "name": "setContractState", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lock", "type": "uint256" }, { "internalType": "uint256", "name": "apr", "type": "uint256" }, { "internalType": "uint256", "name": "minStake", "type": "uint256" }, { "internalType": "uint256", "name": "maxStake", "type": "uint256" }, { "internalType": "uint256", "name": "totalMaxStakeAmount", "type": "uint256" }, { "internalType": "bool", "name": "active", "type": "bool" } ], "name": "setStakingPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_VMINT", "type": "address" } ], "name": "setVMINT", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lock", "type": "uint256" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "stakes", "outputs": [ { "internalType": "uint256", "name": "totalStaked", "type": "uint256" }, { "internalType": "uint256", "name": "stakeTimestamp", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "stakingPools", "outputs": [ { "internalType": "uint256", "name": "apr", "type": "uint256" }, { "internalType": "uint256", "name": "minStake", "type": "uint256" }, { "internalType": "uint256", "name": "maxStake", "type": "uint256" }, { "internalType": "uint256", "name": "totalMaxStakeAmount", "type": "uint256" }, { "internalType": "uint256", "name": "totalStaked", "type": "uint256" }, { "internalType": "uint256", "name": "totalStakers", "type": "uint256" }, { "internalType": "bool", "name": "active", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "tokensClaimed", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "lock", "type": "uint256" } ], "name": "unstake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawEther", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040526001600960146101000a81548160ff0219169083600181111561002a57610029610206565b5b021790555034801561003a575f80fd5b506040518060400160405280600681526020017f78564d494e5400000000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f78564d494e5400000000000000000000000000000000000000000000000000008152506100c36100b861013e60201b60201c565b61014560201b60201c565b81600490816100d2919061046d565b5080600590816100e2919061046d565b505050739b160965a14b4670429fe2434feb1c63b6a38f6a60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061053c565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102ae57607f821691505b6020821081036102c1576102c061026a565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103237fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102e8565b61032d86836102e8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61037161036c61036784610345565b61034e565b610345565b9050919050565b5f819050919050565b61038a83610357565b61039e61039682610378565b8484546102f4565b825550505050565b5f90565b6103b26103a6565b6103bd818484610381565b505050565b5b818110156103e0576103d55f826103aa565b6001810190506103c3565b5050565b601f821115610425576103f6816102c7565b6103ff846102d9565b8101602085101561040e578190505b61042261041a856102d9565b8301826103c2565b50505b505050565b5f82821c905092915050565b5f6104455f198460080261042a565b1980831691505092915050565b5f61045d8383610436565b9150826002028217905092915050565b61047682610233565b67ffffffffffffffff81111561048f5761048e61023d565b5b6104998254610297565b6104a48282856103e4565b5f60209050601f8311600181146104d5575f84156104c3578287015190505b6104cd8582610452565b865550610534565b601f1984166104e3866102c7565b5f5b8281101561050a578489015182556001820191506020850194506020810190506104e5565b868310156105275784890151610523601f891682610436565b8355505b6001600288020188555050505b505050505050565b613971806105495f395ff3fe608060405234801561000f575f80fd5b50600436106101a7575f3560e01c8063624601b6116100f7578063a9059cbb11610095578063d3884ca51161006f578063d3884ca5146104d3578063dd62ed3e146104ef578063f2fde38b1461051f578063fb7265ff1461053b576101a7565b8063a9059cbb1461046b578063bce1b5201461049b578063ca3c782c146104b7576101a7565b80637b0472f0116100d15780637b0472f0146103f557806385209ee0146104115780638da5cb5b1461042f57806395d89b411461044d576101a7565b8063624601b61461038b57806370a08231146103bb578063715018a6146103eb576101a7565b8063313ce567116101645780634268121e1161013e5780634268121e146102eb578063522f681514610307578063584b62a1146103235780635aad6cf014610355576101a7565b8063313ce56714610293578063389db7b0146102b15780633ccdbb28146102cf576101a7565b806306fdde03146101ab578063095ea7b3146101c957806318160ddd146101f95780631852e8d91461021757806323b872dd146102475780632e17de7814610277575b5f80fd5b6101b3610557565b6040516101c091906125d0565b60405180910390f35b6101e360048036038101906101de9190612681565b6105e7565b6040516101f091906126d9565b60405180910390f35b610201610609565b60405161020e9190612701565b60405180910390f35b610231600480360381019061022c9190612681565b610612565b60405161023e9190612701565b60405180910390f35b610261600480360381019061025c919061271a565b61070e565b60405161026e91906126d9565b60405180910390f35b610291600480360381019061028c919061276a565b61073c565b005b61029b610a7d565b6040516102a891906127b0565b60405180910390f35b6102b9610a85565b6040516102c69190612824565b60405180910390f35b6102e960048036038101906102e4919061283d565b610aaa565b005b61030560048036038101906103009190612681565b610c8f565b005b610321600480360381019061031c9190612681565b610f26565b005b61033d60048036038101906103389190612681565b611097565b60405161034c9392919061288d565b60405180910390f35b61036f600480360381019061036a919061276a565b6110d4565b60405161038297969594939291906128c2565b60405180910390f35b6103a560048036038101906103a0919061292f565b61111e565b6040516103b29190612701565b60405180910390f35b6103d560048036038101906103d0919061292f565b611133565b6040516103e29190612701565b60405180910390f35b6103f3611179565b005b61040f600480360381019061040a919061295a565b61118c565b005b6104196115fc565b6040516104269190612a0b565b60405180910390f35b61043761160f565b6040516104449190612a33565b60405180910390f35b610455611636565b60405161046291906125d0565b60405180910390f35b61048560048036038101906104809190612681565b6116c6565b60405161049291906126d9565b60405180910390f35b6104b560048036038101906104b0919061276a565b6116e8565b005b6104d160048036038101906104cc9190612a76565b611a08565b005b6104ed60048036038101906104e8919061292f565b611bc4565b005b61050960048036038101906105049190612aff565b611c0f565b6040516105169190612701565b60405180910390f35b6105396004803603810190610534919061292f565b611c91565b005b6105556004803603810190610550919061276a565b611d13565b005b60606004805461056690612b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461059290612b6a565b80156105dd5780601f106105b4576101008083540402835291602001916105dd565b820191905f5260205f20905b8154815290600101906020018083116105c057829003601f168201915b5050505050905090565b5f806105f1611d9d565b90506105fe818585611da4565b600191505092915050565b5f600354905090565b5f8060075f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20600101544261066f9190612bc7565b90506301e133808161271060065f8781526020019081526020015f205f015460075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8881526020019081526020015f205f01546106e79190612bfa565b6106f19190612c68565b6106fb9190612bfa565b6107059190612c68565b91505092915050565b5f80610718611d9d565b9050610725858285611db6565b610730858585611e48565b60019150509392505050565b600180600181111561075157610750612998565b5b600960149054906101000a900460ff16600181111561077357610772612998565b5b146107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612d08565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f209050806002015f9054906101000a900460ff16610852576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084990612d70565b60405180910390fd5b5f60065f8581526020019081526020015f20905062015180846108759190612bfa565b82600101546108849190612d8e565b4210156108c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108bd90612e0b565b60405180910390fd5b5f825f015490505f6108d83387610612565b90508060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109269190612d8e565b9250508190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610989929190612e29565b6020604051808303815f875af11580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c99190612e64565b505f846002015f6101000a81548160ff02191690831515021790555081836004015f8282546109f89190612bc7565b925050819055506001836005015f828254610a139190612bc7565b92505081905550610a243383611f38565b853373ffffffffffffffffffffffffffffffffffffffff167f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de008484604051610a6d929190612e8f565b60405180910390a3505050505050565b5f6012905090565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610ab2611fb7565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790612f00565b60405180910390fd5b5f8211610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5990612f68565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc790612fd0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610c0b929190612e29565b6020604051808303815f875af1158015610c27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4b9190612e64565b610c8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8190613038565b60405180910390fd5b505050565b610c97611fb7565b5f60075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f209050806002015f9054906101000a900460ff16610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90612d70565b60405180910390fd5b5f60065f8481526020019081526020015f2090505f825f0154905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610dad929190612e29565b6020604051808303815f875af1158015610dc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ded9190612e64565b505f6201518085610dfe9190612bfa565b8460010154610e0d9190612d8e565b4210610e7357610e1d3386610612565b90508060085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e6b9190612d8e565b925050819055505b5f846002015f6101000a81548160ff02191690831515021790555081836004015f828254610ea19190612bc7565b925050819055506001836005015f828254610ebc9190612bc7565b92505081905550610ecd8683611f38565b848673ffffffffffffffffffffffffffffffffffffffff167f204fccf0d92ed8d48f204adb39b2e81e92bad0dedb93f5716ca9478cfb57de008484604051610f16929190612e8f565b60405180910390a3505050505050565b610f2e611fb7565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9390612f00565b60405180910390fd5b5f81118015610fab5750804710155b610fea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe190612f68565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161100f90613083565b5f6040518083038185875af1925050503d805f8114611049576040519150601f19603f3d011682016040523d82523d5f602084013e61104e565b606091505b5050905080611092576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611089906130e1565b60405180910390fd5b505050565b6007602052815f5260405f20602052805f5260405f205f9150915050805f015490806001015490806002015f9054906101000a900460ff16905083565b6006602052805f5260405f205f91509050805f015490806001015490806002015490806003015490806004015490806005015490806006015f9054906101000a900460ff16905087565b6008602052805f5260405f205f915090505481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611181611fb7565b61118a5f612035565b565b60018060018111156111a1576111a0612998565b5b600960149054906101000a900460ff1660018111156111c3576111c2612998565b5b14611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa90612d08565b60405180910390fd5b5f60065f8581526020019081526020015f2090505f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f209050816006015f9054906101000a900460ff166112b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ad90613149565b60405180910390fd5b816001015460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8781526020019081526020015f205f0154856113159190612d8e565b1015611356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134d906131d7565b60405180910390fd5b816002015460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8781526020019081526020015f205f0154856113b59190612d8e565b11156113f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ed9061323f565b60405180910390fd5b816003015484836004015461140b9190612d8e565b111561144c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611443906132cd565b60405180910390fd5b806002015f9054906101000a900460ff161561149d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114949061335b565b60405180910390fd5b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b81526004016114fb93929190613379565b6020604051808303815f875af1158015611517573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153b9190612e64565b5083815f01819055504281600101819055506001816002015f6101000a81548160ff02191690831515021790555083826004015f82825461157c9190612d8e565b92505081905550816005015f815480929190611597906133ae565b91905055506115a633856120f6565b843373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90866040516115ed9190612701565b60405180910390a35050505050565b600960149054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461164590612b6a565b80601f016020809104026020016040519081016040528092919081815260200182805461167190612b6a565b80156116bc5780601f10611693576101008083540402835291602001916116bc565b820191905f5260205f20905b81548152906001019060200180831161169f57829003601f168201915b5050505050905090565b5f806116d0611d9d565b90506116dd818585611e48565b600191505092915050565b60018060018111156116fd576116fc612998565b5b600960149054906101000a900460ff16600181111561171f5761171e612998565b5b1461175f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175690612d08565b60405180910390fd5b5f60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f209050806002015f9054906101000a900460ff166117fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f590612d70565b60405180910390fd5b5f60065f8581526020019081526020015f20905062015180846118219190612bfa565b82600101546118309190612d8e565b421015611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186990612e0b565b60405180910390fd5b5f825f015490505f6118843387610612565b90505f81836118939190612d8e565b905083600101548110156118dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d390613465565b60405180910390fd5b8360020154811115611923576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191a906134f3565b60405180910390fd5b83600301548285600401546119389190612d8e565b1115611979576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611970906132cd565b60405180910390fd5b80855f018190555042856001018190555081846004015f82825461199d9190612d8e565b925050819055506119ae33836120f6565b863373ffffffffffffffffffffffffffffffffffffffff167f63acdca311ce77b458c1dde8cdea3e282508af05da37a4f52a915b7784c37c4885856040516119f7929190612e8f565b60405180910390a350505050505050565b611a10611fb7565b5f85118015611a2157506127108511155b611a60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a579061355b565b60405180910390fd5b5f8411611aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a99906135e9565b60405180910390fd5b83831015611ae5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adc90613677565b60405180910390fd5b82821015611b28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1f9061372b565b60405180910390fd5b5f60065f8881526020019081526020015f20905085815f018190555084816001018190555083816002018190555082816003018190555081816006015f6101000a81548160ff0219169083151502179055507f497768b3d65a26bbe0117804b6c1f7dbfd9bfd4e4a4d9af2aec5f9f64b268101878787878787604051611bb396959493929190613749565b60405180910390a150505050505050565b611bcc611fb7565b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611c99611fb7565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe90613818565b60405180910390fd5b611d1081612035565b50565b611d1b611fb7565b60028110611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590613880565b60405180910390fd5b806001811115611d7157611d70612998565b5b600960146101000a81548160ff02191690836001811115611d9557611d94612998565b5b021790555050565b5f33905090565b611db18383836001612175565b505050565b5f611dc18484611c0f565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611e425781811015611e33578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401611e2a9392919061389e565b60405180910390fd5b611e4184848484035f612175565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb8575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611eaf9190612a33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f28575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401611f1f9190612a33565b60405180910390fd5b611f33838383612344565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fa8575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401611f9f9190612a33565b60405180910390fd5b611fb3825f83612344565b5050565b611fbf611d9d565b73ffffffffffffffffffffffffffffffffffffffff16611fdd61160f565b73ffffffffffffffffffffffffffffffffffffffff1614612033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202a9061391d565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612166575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161215d9190612a33565b60405180910390fd5b6121715f8383612344565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036121e5575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016121dc9190612a33565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612255575f6040517f94280d6200000000000000000000000000000000000000000000000000000000815260040161224c9190612a33565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550801561233e578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516123359190612701565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612394578060035f8282546123889190612d8e565b92505081905550612464565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508181101561241e578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016124159392919061389e565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036124ab578060035f82825403925050819055506124f6565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125539190612701565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6125a282612560565b6125ac818561256a565b93506125bc81856020860161257a565b6125c581612588565b840191505092915050565b5f6020820190508181035f8301526125e88184612598565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61261d826125f4565b9050919050565b61262d81612613565b8114612637575f80fd5b50565b5f8135905061264881612624565b92915050565b5f819050919050565b6126608161264e565b811461266a575f80fd5b50565b5f8135905061267b81612657565b92915050565b5f8060408385031215612697576126966125f0565b5b5f6126a48582860161263a565b92505060206126b58582860161266d565b9150509250929050565b5f8115159050919050565b6126d3816126bf565b82525050565b5f6020820190506126ec5f8301846126ca565b92915050565b6126fb8161264e565b82525050565b5f6020820190506127145f8301846126f2565b92915050565b5f805f60608486031215612731576127306125f0565b5b5f61273e8682870161263a565b935050602061274f8682870161263a565b92505060406127608682870161266d565b9150509250925092565b5f6020828403121561277f5761277e6125f0565b5b5f61278c8482850161266d565b91505092915050565b5f60ff82169050919050565b6127aa81612795565b82525050565b5f6020820190506127c35f8301846127a1565b92915050565b5f819050919050565b5f6127ec6127e76127e2846125f4565b6127c9565b6125f4565b9050919050565b5f6127fd826127d2565b9050919050565b5f61280e826127f3565b9050919050565b61281e81612804565b82525050565b5f6020820190506128375f830184612815565b92915050565b5f805f60608486031215612854576128536125f0565b5b5f6128618682870161263a565b93505060206128728682870161266d565b92505060406128838682870161263a565b9150509250925092565b5f6060820190506128a05f8301866126f2565b6128ad60208301856126f2565b6128ba60408301846126ca565b949350505050565b5f60e0820190506128d55f83018a6126f2565b6128e260208301896126f2565b6128ef60408301886126f2565b6128fc60608301876126f2565b61290960808301866126f2565b61291660a08301856126f2565b61292360c08301846126ca565b98975050505050505050565b5f60208284031215612944576129436125f0565b5b5f6129518482850161263a565b91505092915050565b5f80604083850312156129705761296f6125f0565b5b5f61297d8582860161266d565b925050602061298e8582860161266d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b600281106129d6576129d5612998565b5b50565b5f8190506129e6826129c5565b919050565b5f6129f5826129d9565b9050919050565b612a05816129eb565b82525050565b5f602082019050612a1e5f8301846129fc565b92915050565b612a2d81612613565b82525050565b5f602082019050612a465f830184612a24565b92915050565b612a55816126bf565b8114612a5f575f80fd5b50565b5f81359050612a7081612a4c565b92915050565b5f805f805f8060c08789031215612a9057612a8f6125f0565b5b5f612a9d89828a0161266d565b9650506020612aae89828a0161266d565b9550506040612abf89828a0161266d565b9450506060612ad089828a0161266d565b9350506080612ae189828a0161266d565b92505060a0612af289828a01612a62565b9150509295509295509295565b5f8060408385031215612b1557612b146125f0565b5b5f612b228582860161263a565b9250506020612b338582860161263a565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612b8157607f821691505b602082108103612b9457612b93612b3d565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612bd18261264e565b9150612bdc8361264e565b9250828203905081811115612bf457612bf3612b9a565b5b92915050565b5f612c048261264e565b9150612c0f8361264e565b9250828202612c1d8161264e565b91508282048414831517612c3457612c33612b9a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612c728261264e565b9150612c7d8361264e565b925082612c8d57612c8c612c3b565b5b828204905092915050565b7f436f6e7472616374206973206e6f7420696e20746865207265717569726564205f8201527f7374617465000000000000000000000000000000000000000000000000000000602082015250565b5f612cf260258361256a565b9150612cfd82612c98565b604082019050919050565b5f6020820190508181035f830152612d1f81612ce6565b9050919050565b7f4e6f20616374697665207374616b6520666f756e6400000000000000000000005f82015250565b5f612d5a60158361256a565b9150612d6582612d26565b602082019050919050565b5f6020820190508181035f830152612d8781612d4e565b9050919050565b5f612d988261264e565b9150612da38361264e565b9250828201905080821115612dbb57612dba612b9a565b5b92915050565b7f4c6f636b20706572696f6420686173206e6f74207061737365640000000000005f82015250565b5f612df5601a8361256a565b9150612e0082612dc1565b602082019050919050565b5f6020820190508181035f830152612e2281612de9565b9050919050565b5f604082019050612e3c5f830185612a24565b612e4960208301846126f2565b9392505050565b5f81519050612e5e81612a4c565b92915050565b5f60208284031215612e7957612e786125f0565b5b5f612e8684828501612e50565b91505092915050565b5f604082019050612ea25f8301856126f2565b612eaf60208301846126f2565b9392505050565b7f496e76616c6964204164647265737321000000000000000000000000000000005f82015250565b5f612eea60108361256a565b9150612ef582612eb6565b602082019050919050565b5f6020820190508181035f830152612f1781612ede565b9050919050565b7f496e76616c696420416d6f756e742100000000000000000000000000000000005f82015250565b5f612f52600f8361256a565b9150612f5d82612f1e565b602082019050919050565b5f6020820190508181035f830152612f7f81612f46565b9050919050565b7f496e76616c696420546f6b656e210000000000000000000000000000000000005f82015250565b5f612fba600e8361256a565b9150612fc582612f86565b602082019050919050565b5f6020820190508181035f830152612fe781612fae565b9050919050565b7f556e7375636365737366756c205472616e7366657221000000000000000000005f82015250565b5f61302260168361256a565b915061302d82612fee565b602082019050919050565b5f6020820190508181035f83015261304f81613016565b9050919050565b5f81905092915050565b50565b5f61306e5f83613056565b915061307982613060565b5f82019050919050565b5f61308d82613063565b9150819050919050565b7f4661696c656420746f2073656e642045746865720000000000000000000000005f82015250565b5f6130cb60148361256a565b91506130d682613097565b602082019050919050565b5f6020820190508181035f8301526130f8816130bf565b9050919050565b7f5374616b696e6720706f6f6c206973206e6f74206163746976650000000000005f82015250565b5f613133601a8361256a565b915061313e826130ff565b602082019050919050565b5f6020820190508181035f83015261316081613127565b9050919050565b7f416d6f756e74206973206c657373207468616e206d696e696d756d207374616b5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131c160218361256a565b91506131cc82613167565b604082019050919050565b5f6020820190508181035f8301526131ee816131b5565b9050919050565b7f416d6f756e742065786365656473206d6178696d756d207374616b65000000005f82015250565b5f613229601c8361256a565b9150613234826131f5565b602082019050919050565b5f6020820190508181035f8301526132568161321d565b9050919050565b7f4578636565647320746f74616c206d6178696d756d207374616b6520616d6f755f8201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132b760228361256a565b91506132c28261325d565b604082019050919050565b5f6020820190508181035f8301526132e4816132ab565b9050919050565b7f5573657220616c72656164792068617320616e20616374697665207374616b655f8201527f20696e207468697320706f6f6c00000000000000000000000000000000000000602082015250565b5f613345602d8361256a565b9150613350826132eb565b604082019050919050565b5f6020820190508181035f83015261337281613339565b9050919050565b5f60608201905061338c5f830186612a24565b6133996020830185612a24565b6133a660408301846126f2565b949350505050565b5f6133b88261264e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133ea576133e9612b9a565b5b600182019050919050565b7f52657374616b6520616d6f756e74206973206c657373207468616e206d696e695f8201527f6d756d207374616b650000000000000000000000000000000000000000000000602082015250565b5f61344f60298361256a565b915061345a826133f5565b604082019050919050565b5f6020820190508181035f83015261347c81613443565b9050919050565b7f52657374616b6520616d6f756e742065786365656473206d6178696d756d20735f8201527f74616b6500000000000000000000000000000000000000000000000000000000602082015250565b5f6134dd60248361256a565b91506134e882613483565b604082019050919050565b5f6020820190508181035f83015261350a816134d1565b9050919050565b7f415052206d757374206265206265747765656e203120616e64203130300000005f82015250565b5f613545601d8361256a565b915061355082613511565b602082019050919050565b5f6020820190508181035f83015261357281613539565b9050919050565b7f4d696e696d756d207374616b65206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f6135d360248361256a565b91506135de82613579565b604082019050919050565b5f6020820190508181035f830152613600816135c7565b9050919050565b7f4d6178696d756d207374616b65206d75737420626520677265617465722074685f8201527f616e206f7220657175616c20746f206d696e696d756d207374616b6500000000602082015250565b5f613661603c8361256a565b915061366c82613607565b604082019050919050565b5f6020820190508181035f83015261368e81613655565b9050919050565b7f546f74616c206d6178696d756d207374616b6520616d6f756e74206d757374205f8201527f62652067726561746572207468616e206f7220657175616c20746f206d61786960208201527f6d756d207374616b650000000000000000000000000000000000000000000000604082015250565b5f61371560498361256a565b915061372082613695565b606082019050919050565b5f6020820190508181035f83015261374281613709565b9050919050565b5f60c08201905061375c5f8301896126f2565b61376960208301886126f2565b61377660408301876126f2565b61378360608301866126f2565b61379060808301856126f2565b61379d60a08301846126ca565b979650505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61380260268361256a565b915061380d826137a8565b604082019050919050565b5f6020820190508181035f83015261382f816137f6565b9050919050565b7f496e76616c6964205374617465210000000000000000000000000000000000005f82015250565b5f61386a600e8361256a565b915061387582613836565b602082019050919050565b5f6020820190508181035f8301526138978161385e565b9050919050565b5f6060820190506138b15f830186612a24565b6138be60208301856126f2565b6138cb60408301846126f2565b949350505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61390760208361256a565b9150613912826138d3565b602082019050919050565b5f6020820190508181035f830152613934816138fb565b905091905056fea2646970667358221220be3e5473c6cab785111935a47002a09d7a7c3c3a4c12bb276c1ef2ef15f6859c64736f6c634300081a0033