[ { "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" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "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": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Minted", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "Staked", "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": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "Unstaked", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "activeStakers", "outputs": [ { "internalType": "address", "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": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAllStakers", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" } ], "name": "getStakeHistory", "outputs": [ { "components": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bool", "name": "isStake", "type": "bool" } ], "internalType": "struct KSGEMS.StakeEvent[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getStakedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "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": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "stakeHistory", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "internalType": "bool", "name": "isStake", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "stakedBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "_amount", "type": "uint256" } ], "name": "unstake", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
608060405234801562000010575f80fd5b50336040518060400160405280600681526020017f4b5347454d5300000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4b5347000000000000000000000000000000000000000000000000000000000081525081600390816200008f919062000753565b508060049081620000a1919062000753565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000117575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016200010e91906200087a565b60405180910390fd5b62000128816200017660201b60201c565b5060016006819055506200017033620001466200023960201b60201c565b600a62000154919062000a1e565b620f424062000164919062000a6e565b6200024160201b60201c565b62000b59565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002b4575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401620002ab91906200087a565b60405180910390fd5b620002c75f8383620002cb60201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200031f578060025f82825462000312919062000ab8565b92505081905550620003f0565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015620003ab578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401620003a29392919062000b03565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000439578060025f828254039250508190555062000483565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620004e2919062000b3e565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200056b57607f821691505b60208210810362000581576200058062000526565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005e57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005a8565b620005f18683620005a8565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200063b620006356200062f8462000609565b62000612565b62000609565b9050919050565b5f819050919050565b62000656836200061b565b6200066e620006658262000642565b848454620005b4565b825550505050565b5f90565b6200068462000676565b620006918184846200064b565b505050565b5b81811015620006b857620006ac5f826200067a565b60018101905062000697565b5050565b601f8211156200070757620006d18162000587565b620006dc8462000599565b81016020851015620006ec578190505b62000704620006fb8562000599565b83018262000696565b50505b505050565b5f82821c905092915050565b5f620007295f19846008026200070c565b1980831691505092915050565b5f62000743838362000718565b9150826002028217905092915050565b6200075e82620004ef565b67ffffffffffffffff8111156200077a5762000779620004f9565b5b62000786825462000553565b62000793828285620006bc565b5f60209050601f831160018114620007c9575f8415620007b4578287015190505b620007c0858262000736565b8655506200082f565b601f198416620007d98662000587565b5f5b828110156200080257848901518255600182019150602085019450602081019050620007db565b868310156200082257848901516200081e601f89168262000718565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620008628262000837565b9050919050565b620008748162000856565b82525050565b5f6020820190506200088f5f83018462000869565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200091f57808604811115620008f757620008f662000895565b5b6001851615620009075780820291505b80810290506200091785620008c2565b9450620008d7565b94509492505050565b5f8262000939576001905062000a0b565b8162000948575f905062000a0b565b81600181146200096157600281146200096c57620009a2565b600191505062000a0b565b60ff84111562000981576200098062000895565b5b8360020a9150848211156200099b576200099a62000895565b5b5062000a0b565b5060208310610133831016604e8410600b8410161715620009dc5782820a905083811115620009d657620009d562000895565b5b62000a0b565b620009eb8484846001620008ce565b9250905081840481111562000a055762000a0462000895565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000a2a8262000609565b915062000a378362000a12565b925062000a667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000928565b905092915050565b5f62000a7a8262000609565b915062000a878362000609565b925082820262000a978162000609565b9150828204841483151762000ab15762000ab062000895565b5b5092915050565b5f62000ac48262000609565b915062000ad18362000609565b925082820190508082111562000aec5762000aeb62000895565b5b92915050565b62000afd8162000609565b82525050565b5f60608201905062000b185f83018662000869565b62000b27602083018562000af2565b62000b36604083018462000af2565b949350505050565b5f60208201905062000b535f83018462000af2565b92915050565b61233d8062000b675f395ff3fe608060405234801561000f575f80fd5b5060043610610135575f3560e01c80636e4f88c8116100b6578063a694fc3a1161007a578063a694fc3a1461034f578063a9059cbb1461036b578063a9b66fdb1461039b578063b66d8252146103cb578063dd62ed3e146103fd578063f2fde38b1461042d57610135565b80636e4f88c8146102bb57806370a08231146102d9578063715018a6146103095780638da5cb5b1461031357806395d89b411461033157610135565b80632e17de78116100fd5780632e17de7814610205578063313ce5671461022157806331b7f25d1461023f5780633a02a42d1461026f57806340c10f191461029f57610135565b806306fdde0314610139578063095ea7b3146101575780631460fa871461018757806318160ddd146101b757806323b872dd146101d5575b5f80fd5b610141610449565b60405161014e91906119a2565b60405180910390f35b610171600480360381019061016c9190611a53565b6104d9565b60405161017e9190611aab565b60405180910390f35b6101a1600480360381019061019c9190611ac4565b6104fb565b6040516101ae9190611afe565b60405180910390f35b6101bf610510565b6040516101cc9190611afe565b60405180910390f35b6101ef60048036038101906101ea9190611b17565b610519565b6040516101fc9190611aab565b60405180910390f35b61021f600480360381019061021a9190611b67565b610547565b005b61022961090d565b6040516102369190611bad565b60405180910390f35b61025960048036038101906102549190611b67565b610915565b6040516102669190611bd5565b60405180910390f35b61028960048036038101906102849190611ac4565b610950565b6040516102969190611afe565b60405180910390f35b6102b960048036038101906102b49190611a53565b610996565b005b6102c3610aaa565b6040516102d09190611ca5565b60405180910390f35b6102f360048036038101906102ee9190611ac4565b610b35565b6040516103009190611afe565b60405180910390f35b610311610b7a565b005b61031b610b8d565b6040516103289190611bd5565b60405180910390f35b610339610bb5565b60405161034691906119a2565b60405180910390f35b61036960048036038101906103649190611b67565b610c45565b005b61038560048036038101906103809190611a53565b610f39565b6040516103929190611aab565b60405180910390f35b6103b560048036038101906103b09190611ac4565b610f5b565b6040516103c29190611dcb565b60405180910390f35b6103e560048036038101906103e09190611a53565b611021565b6040516103f493929190611deb565b60405180910390f35b61041760048036038101906104129190611e20565b61106d565b6040516104249190611afe565b60405180910390f35b61044760048036038101906104429190611ac4565b6110ef565b005b60606003805461045890611e8b565b80601f016020809104026020016040519081016040528092919081815260200182805461048490611e8b565b80156104cf5780601f106104a6576101008083540402835291602001916104cf565b820191905f5260205f20905b8154815290600101906020018083116104b257829003601f168201915b5050505050905090565b5f806104e3611173565b90506104f081858561117a565b600191505092915050565b6008602052805f5260405f205f915090505481565b5f600254905090565b5f80610523611173565b905061053085828561118c565b61053b85858561121e565b60019150509392505050565b61054f61130e565b5f8111610591576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058890611f05565b60405180910390fd5b8061059b33610950565b10156105dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d390611f93565b60405180910390fd5b6105e730338361121e565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546106339190611fde565b925050819055505f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054036107ff575f5b6009805490508110156107fd573373ffffffffffffffffffffffffffffffffffffffff16600982815481106106b8576106b7612011565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036107ea576009600160098054905061070f9190611fde565b815481106107205761071f612011565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009828154811061075c5761075b612011565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060098054806107b3576107b261203e565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556107fd565b80806107f59061206b565b915050610680565b505b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060405180606001604052808381526020014281526020015f1515815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff02191690831515021790555050503373ffffffffffffffffffffffffffffffffffffffff167f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e82426040516108fa9291906120b2565b60405180910390a261090a61135d565b50565b5f6012905090565b60098181548110610924575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61099e611367565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0390612123565b60405180910390fd5b5f8111610a4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a45906121b1565b60405180910390fd5b610a5882826113ee565b8173ffffffffffffffffffffffffffffffffffffffff167f30385c845b448a36257a6a1716e6ad2e1bc2cbe333cde1e69fe849ad6511adfe82604051610a9e9190611afe565b60405180910390a25050565b60606009805480602002602001604051908101604052809291908181526020018280548015610b2b57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610ae2575b5050505050905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b82611367565b610b8b5f61146d565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610bc490611e8b565b80601f0160208091040260200160405190810160405280929190818152602001828054610bf090611e8b565b8015610c3b5780601f10610c1257610100808354040283529160200191610c3b565b820191905f5260205f20905b815481529060010190602001808311610c1e57829003601f168201915b5050505050905090565b5f8111610c87576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7e90611f05565b60405180910390fd5b80610c9133610b35565b1015610cd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc990612219565b60405180910390fd5b610cdd33308361121e565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d299190612237565b925050819055505f805b600980549050811015610dca573373ffffffffffffffffffffffffffffffffffffffff1660098281548110610d6b57610d6a612011565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610db75760019150610dca565b8080610dc29061206b565b915050610d33565b5080610e3157600933908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20604051806060016040528084815260200142815260200160011515815250908060018154018082558091505060019003905f5260205f2090600302015f909190919091505f820151815f0155602082015181600101556040820151816002015f6101000a81548160ff02191690831515021790555050503373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908342604051610f2d9291906120b2565b60405180910390a25050565b5f80610f43611173565b9050610f5081858561121e565b600191505092915050565b606060075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015611016578382905f5260205f2090600302016040518060600160405290815f820154815260200160018201548152602001600282015f9054906101000a900460ff16151515158152505081526020019060010190610fb9565b505050509050919050565b6007602052815f5260405f20818154811061103a575f80fd5b905f5260205f2090600302015f9150915050805f015490806001015490806002015f9054906101000a900460ff16905083565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6110f7611367565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611167575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161115e9190611bd5565b60405180910390fd5b6111708161146d565b50565b5f33905090565b6111878383836001611530565b505050565b5f611197848461106d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146112185781811015611209578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016112009392919061226a565b60405180910390fd5b61121784848484035f611530565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361128e575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016112859190611bd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112fe575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016112f59190611bd5565b60405180910390fd5b6113098383836116ff565b505050565b600260065403611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a906122e9565b60405180910390fd5b6002600681905550565b6001600681905550565b61136f611173565b73ffffffffffffffffffffffffffffffffffffffff1661138d610b8d565b73ffffffffffffffffffffffffffffffffffffffff16146113ec576113b0611173565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016113e39190611bd5565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361145e575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016114559190611bd5565b60405180910390fd5b6114695f83836116ff565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036115a0575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016115979190611bd5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611610575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116079190611bd5565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555080156116f9578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516116f09190611afe565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361174f578060025f8282546117439190612237565b9250508190555061181d565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156117d8578381836040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016117cf9392919061226a565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611864578060025f82825403925050819055506118ae565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161190b9190611afe565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561194f578082015181840152602081019050611934565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61197482611918565b61197e8185611922565b935061198e818560208601611932565b6119978161195a565b840191505092915050565b5f6020820190508181035f8301526119ba818461196a565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6119ef826119c6565b9050919050565b6119ff816119e5565b8114611a09575f80fd5b50565b5f81359050611a1a816119f6565b92915050565b5f819050919050565b611a3281611a20565b8114611a3c575f80fd5b50565b5f81359050611a4d81611a29565b92915050565b5f8060408385031215611a6957611a686119c2565b5b5f611a7685828601611a0c565b9250506020611a8785828601611a3f565b9150509250929050565b5f8115159050919050565b611aa581611a91565b82525050565b5f602082019050611abe5f830184611a9c565b92915050565b5f60208284031215611ad957611ad86119c2565b5b5f611ae684828501611a0c565b91505092915050565b611af881611a20565b82525050565b5f602082019050611b115f830184611aef565b92915050565b5f805f60608486031215611b2e57611b2d6119c2565b5b5f611b3b86828701611a0c565b9350506020611b4c86828701611a0c565b9250506040611b5d86828701611a3f565b9150509250925092565b5f60208284031215611b7c57611b7b6119c2565b5b5f611b8984828501611a3f565b91505092915050565b5f60ff82169050919050565b611ba781611b92565b82525050565b5f602082019050611bc05f830184611b9e565b92915050565b611bcf816119e5565b82525050565b5f602082019050611be85f830184611bc6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611c20816119e5565b82525050565b5f611c318383611c17565b60208301905092915050565b5f602082019050919050565b5f611c5382611bee565b611c5d8185611bf8565b9350611c6883611c08565b805f5b83811015611c98578151611c7f8882611c26565b9750611c8a83611c3d565b925050600181019050611c6b565b5085935050505092915050565b5f6020820190508181035f830152611cbd8184611c49565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611cf781611a20565b82525050565b611d0681611a91565b82525050565b606082015f820151611d205f850182611cee565b506020820151611d336020850182611cee565b506040820151611d466040850182611cfd565b50505050565b5f611d578383611d0c565b60608301905092915050565b5f602082019050919050565b5f611d7982611cc5565b611d838185611ccf565b9350611d8e83611cdf565b805f5b83811015611dbe578151611da58882611d4c565b9750611db083611d63565b925050600181019050611d91565b5085935050505092915050565b5f6020820190508181035f830152611de38184611d6f565b905092915050565b5f606082019050611dfe5f830186611aef565b611e0b6020830185611aef565b611e186040830184611a9c565b949350505050565b5f8060408385031215611e3657611e356119c2565b5b5f611e4385828601611a0c565b9250506020611e5485828601611a0c565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ea257607f821691505b602082108103611eb557611eb4611e5e565b5b50919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f611eef602083611922565b9150611efa82611ebb565b602082019050919050565b5f6020820190508181035f830152611f1c81611ee3565b9050919050565b7f43616e6e6f7420756e7374616b65206d6f7265207468616e207374616b6564205f8201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b5f611f7d602783611922565b9150611f8882611f23565b604082019050919050565b5f6020820190508181035f830152611faa81611f71565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611fe882611a20565b9150611ff383611a20565b925082820390508181111561200b5761200a611fb1565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f61207582611a20565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036120a7576120a6611fb1565b5b600182019050919050565b5f6040820190506120c55f830185611aef565b6120d26020830184611aef565b9392505050565b7f43616e6e6f74206d696e7420746f207a65726f206164647265737300000000005f82015250565b5f61210d601b83611922565b9150612118826120d9565b602082019050919050565b5f6020820190508181035f83015261213a81612101565b9050919050565b7f4d696e7420616d6f756e74206d7573742062652067726561746572207468616e5f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61219b602583611922565b91506121a682612141565b604082019050919050565b5f6020820190508181035f8301526121c88161218f565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f612203601483611922565b915061220e826121cf565b602082019050919050565b5f6020820190508181035f830152612230816121f7565b9050919050565b5f61224182611a20565b915061224c83611a20565b925082820190508082111561226457612263611fb1565b5b92915050565b5f60608201905061227d5f830186611bc6565b61228a6020830185611aef565b6122976040830184611aef565b949350505050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6122d3601f83611922565b91506122de8261229f565b602082019050919050565b5f6020820190508181035f830152612300816122c7565b905091905056fea2646970667358221220acb6675b17517555821b9010486bb5f2add7b8d49c26a0761e90f17f0f0975ce64736f6c63430008140033