UNPKG

@gooddollar/goodprotocol

Version:
683 lines (682 loc) 49.1 kB
{ "_format": "hh-sol-artifact-1", "contractName": "StakingMockFixedAPY", "sourceName": "contracts/mocks/StakingMockFixedAPY.sol", "abi": [ { "inputs": [ { "internalType": "uint128", "name": "_interestRatePerBlock", "type": "uint128" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "PRECISION", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SHARE_DECIMALS", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SHARE_PRECISION", "outputs": [ { "internalType": "uint128", "name": "", "type": "uint128" } ], "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": "uint256", "name": "_amount", "type": "uint256" } ], "name": "amountToShares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "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": "compound", "outputs": [ { "internalType": "uint256", "name": "compoundedSavings", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "compoundNextBlock", "outputs": [ { "internalType": "uint256", "name": "compoundedSavings", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "earnedRewards", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardsDebt", "outputs": [ { "internalType": "uint256", "name": "debt", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "getSavings", "outputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "interestRatePerBlockX64", "outputs": [ { "internalType": "int128", "name": "", "type": "int128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "lastSharePrice", "outputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "principle", "outputs": [ { "internalType": "uint256", "name": "deposited", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint128", "name": "_interestRatePerBlock", "type": "uint128" } ], "name": "setAPY", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sharePrice", "outputs": [ { "internalType": "uint256", "name": "price", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "sharesOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sharesSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "stakersInfo", "outputs": [ { "internalType": "uint128", "name": "lastSharePrice", "type": "uint128" }, { "internalType": "uint128", "name": "rewardsPaid", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stats", "outputs": [ { "internalType": "uint128", "name": "lastUpdateBlock", "type": "uint128" }, { "internalType": "uint128", "name": "totalStaked", "type": "uint128" }, { "internalType": "uint128", "name": "totalRewardsPaid", "type": "uint128" }, { "internalType": "uint256", "name": "savings", "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": "amount", "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": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_to", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "undoReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "depositComponent", "type": "uint256" }, { "internalType": "uint256", "name": "rewardComponent", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_from", "type": "address" }, { "internalType": "uint256", "name": "_shares", "type": "uint256" } ], "name": "withdrawAndUndo", "outputs": [ { "internalType": "uint256", "name": "depositComponent", "type": "uint256" }, { "internalType": "uint256", "name": "rewardComponent", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b506040516200263f3803806200263f833981016040819052620000349162000622565b6040518060400160405280600f81526020016e472420536176696e6773204d6f636b60881b815250604051806040016040528060088152602001671b5bd8dadcdd91c960c21b81525081600390816200008e9190620006f2565b5060046200009d8282620006f2565b505050620000b181620000b860201b60201c565b506200080c565b620000c262000102565b620000df6001600160801b038216670de0b6b3a76400006200012c565b600980546001600160801b0319166001600160801b039290921691909117905550565b6200010c62000173565b600755600580546001600160801b031916436001600160801b0316179055565b6000816000036200013c57600080fd5b60006200014a8484620001e7565b905060016001607f1b036001600160801b03821611156200016a57600080fd5b90505b92915050565b60075460009015806200019057506005546001600160801b031643145b156200019d575060075490565b600554600090620001ca90620001bd906001600160801b031643620007be565b600954600f0b9062000365565b600754909150620001e190600f83900b90620005b2565b91505090565b600081600003620001f757600080fd5b60006001600160c01b038411620002275782604085901b816200021e576200021e620007e0565b04905062000350565b60c084811c640100000000811062000241576020918201911c5b62010000811062000254576010918201911c5b610100811062000266576008918201911c5b6010811062000277576004918201911c5b6004811062000288576002918201911c5b6002811062000298576001820191505b60bf820360018603901c6001018260ff0387901b81620002bc57620002bc620007e0565b0492506001600160801b03831115620002d457600080fd5b608085901c83026001600160801b038616840260c088901c604089901b8281101562000301576001820391505b608084901b9290038281101562000319576001820391505b829003608084901c8214620003325762000332620007f6565b888181620003445762000344620007e0565b04870196505050505050505b6001600160801b038111156200016a57600080fd5b600080600084600f0b1280156200037f5750826001166001145b905060008085600f0b126200039557846200039a565b846000035b6001600160801b03169050600160801b6801000000000000000082116200043c57603f82901b91505b841562000433576001851615620003da578102607f1c5b908002607f1c906002851615620003f1578102607f1c5b908002607f1c90600485161562000408578102607f1c5b908002607f1c9060088516156200041f578102607f1c5b60049490941c93908002607f1c90620003c3565b60401c62000568565b603f6c01000000000000000000000000831015620004605760209290921b91601f19015b600160701b831015620004795760109290921b91600f19015b600160781b831015620004925760089290921b91600719015b6001607c1b831015620004ab5760049290921b91600319015b6001607e1b831015620004c45760029290921b91600119015b6001607f1b831015620004dd5760019290921b91600019015b60005b8615620005505760408210620004f557600080fd5b60018716156200051d57918302607f1c918101600160801b8311156200051d57600192831c92015b928002607f1c9260019190911b90600160801b84106200054357600193841c9391909101905b600187901c9650620004e0565b604081106200055e57600080fd5b6040039190911c90505b6000836200057757816200057c565b816000035b905060016001607f1b031981128015906200059e575060016001607f1b038113155b620005a857600080fd5b9695505050505050565b600081600003620005c6575060006200016d565b600083600f0b1215620005d857600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b038111156200060857600080fd5b60401b81198111156200061a57600080fd5b019392505050565b6000602082840312156200063557600080fd5b81516001600160801b03811681146200016a57600080fd5b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200067857607f821691505b6020821081036200069957634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620006ed57600081815260208120601f850160051c81016020861015620006c85750805b601f850160051c820191505b81811015620006e957828155600101620006d4565b5050505b505050565b81516001600160401b038111156200070e576200070e6200064d565b62000726816200071f845462000663565b846200069f565b602080601f8311600181146200075e5760008415620007455750858301515b600019600386901b1c1916600185901b178555620006e9565b600085815260208120601f198616915b828110156200078f578886015182559484019460019091019084016200076e565b5085821015620007ae5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b818103818111156200016d57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052600160045260246000fd5b611e23806200081c6000396000f3fe608060405234801561001057600080fd5b506004361061018a5760003560e01c80628cc2621461018f57806306fdde03146101b5578063095ea7b3146101ca57806317397115146101ed57806318160ddd146102155780631fce37091461021d57806322022a291461023257806323b872dd1461023a578063313ce5671461024d57806336de95f61461025c578063395093511461026f5780634a174a0b14610282578063576ce9fd1461028a5780635fc5e0201461029d57806370a08231146102c45780637282e23b146102d7578063777d6641146102ea578063872697291461030a57806395d89b4114610312578063a457c2d71461031a578063a9059cbb1461032d578063aa32582114610340578063aaf5eb681461029d578063aba78c1614610353578063adc9772e146103a7578063b811540e146103ba578063ceb8b01c146103cd578063d80528ae146103d5578063d853365f14610434578063dd62ed3e1461043d578063f3fef3a314610450578063f5eb42dc14610463578063f69e204614610476575b600080fd5b6101a261019d366004611b3c565b61047e565b6040519081526020015b60405180910390f35b6101bd6104f0565b6040516101ac9190611b57565b6101dd6101d8366004611ba5565b610582565b60405190151581526020016101ac565b6102006101fb366004611ba5565b61059c565b604080519283526020830191909152016101ac565b6002546101a2565b61023061022b366004611bcf565b6105bf565b005b6101a26105cb565b6101dd610248366004611bf8565b6105db565b604051601281526020016101ac565b6101a261026a366004611b3c565b6105ff565b6101dd61027d366004611ba5565b610630565b6101a2610652565b6101a2610298366004611b3c565b6106c9565b6102ac670de0b6b3a764000081565b6040516001600160801b0390911681526020016101ac565b6101a26102d2366004611b3c565b6106ed565b6102306102e5366004611ba5565b610708565b6009546102f790600f0b81565b604051600f9190910b81526020016101ac565b6101a2610725565b6101bd610783565b6101dd610328366004611ba5565b610792565b6101dd61033b366004611ba5565b610812565b6101a261034e366004611b3c565b610820565b610387610361366004611b3c565b6008602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016101ac565b6102306103b5366004611ba5565b61083c565b6101a26103c8366004611c34565b610848565b6101a2610886565b6005546006546007546103ff926001600160801b0380821693600160801b90920481169291169084565b6040516101ac94939291906001600160801b039485168152928416602084015292166040820152606081019190915260800190565b6102ac61271081565b6101a261044b366004611c4d565b6108ca565b61020061045e366004611ba5565b6108f5565b6101a2610471366004611b3c565b610911565b6101a261091c565b60008061048a83610911565b90506000610496610725565b905060006104a3856106c9565b90508181116104b257806104b4565b815b9050670de0b6b3a76400006104c98483611c96565b6104d38585611c96565b6104dd9190611cad565b6104e79190611cd6565b95945050505050565b6060600380546104ff90611cf8565b80601f016020809104026020016040519081016040528092919081815260200182805461052b90611cf8565b80156105785780601f1061054d57610100808354040283529160200191610578565b820191906000526020600020905b81548152906001019060200180831161055b57829003601f168201915b5050505050905090565b600033610590818585610926565b60019150505b92915050565b6000806105a984846108f5565b90925090506105b88482610708565b9250929050565b6105c881610a4a565b50565b60006105d660025490565b905090565b6000336105e9858285610a90565b6105f4858585610b0a565b506001949350505050565b6000670de0b6b3a764000061061383610911565b61061c846106c9565b6106269190611c96565b6105969190611cd6565b60003361059081858561064383836108ca565b61064d9190611d32565b610926565b600754600090158061066e57506005546001600160801b031643145b1561067a575060075490565b6005546000906106ae906001600160801b0316610698436001611d32565b6106a29190611cad565b600954600f0b90610c9c565b6007549091506106c390600f83900b90610ebf565b91505090565b6001600160a01b03166000908152600860205260409020546001600160801b031690565b6001600160a01b031660009081526020819052604090205490565b60006107148383610f2a565b90506107208382611146565b505050565b6000806107306111f3565b905061073a6105cb565b1561077b57670de0b6b3a76400006107506105cb565b61075a9190611c96565b61076c670de0b6b3a764000083611c96565b6107769190611cd6565b6106c3565b600091505090565b6060600480546104ff90611cf8565b600033816107a082866108ca565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6105f48286868403610926565b600033610590818585610b0a565b6000670de0b6b3a764000061083483610911565b61061c610725565b60006107148383611238565b6000610596610855610725565b61271061086a670de0b6b3a764000086611c96565b6108749190611c96565b61087e9190611cd6565b61271061145f565b6005546000906108af90670de0b6b3a764000090600160801b90046001600160801b0316611d45565b6001600160801b03166108c06111f3565b6105d69190611cad565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000806109028484611489565b90925090506105b8848461183a565b6000610596826106ed565b60006105d66111f3565b6001600160a01b0383166109885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fc565b6001600160a01b0382166109e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610a5261195a565b610a6d816001600160801b0316670de0b6b3a7640000611982565b600980546001600160801b0319166001600160801b039290921691909117905550565b6000610a9c84846108ca565b90506000198114610b045781811015610af75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107fc565b610b048484848403610926565b50505050565b6001600160a01b038316610b6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107fc565b6001600160a01b038216610bd05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107fc565b6001600160a01b03831660009081526020819052604090205481811015610c485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fc565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611dce833981519152910160405180910390a3610b04565b600080600084600f0b128015610cb55750826001166001145b905060008085600f0b12610cc95784610cce565b846000035b6001600160801b03169050600160801b600160401b8211610d6357603f82901b91505b8415610d5b576001851615610d06578102607f1c5b908002607f1c906002851615610d1c578102607f1c5b908002607f1c906004851615610d32578102607f1c5b908002607f1c906008851615610d48578102607f1c5b60049490941c93908002607f1c90610cf1565b60401c610e79565b603f600160601b831015610d7d5760209290921b91601f19015b600160701b831015610d955760109290921b91600f19015b600160781b831015610dad5760089290921b91600719015b6001607c1b831015610dc55760049290921b91600319015b6001607e1b831015610ddd5760029290921b91600119015b6001607f1b831015610df55760019290921b91600019015b60005b8615610e625760408210610e0b57600080fd5b6001871615610e3157918302607f1c918101600160801b831115610e3157600192831c92015b928002607f1c9260019190911b90600160801b8410610e5657600193841c9391909101905b600187901c9650610df8565b60408110610e6f57600080fd5b6040039190911c90505b600083610e865781610e8b565b816000035b905060016001607f1b03198112801590610eac575060016001607f1b038113155b610eb557600080fd5b9695505050505050565b600081600003610ed157506000610596565b600083600f0b1215610ee257600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115610f1157600080fd5b60401b8119811115610f2257600080fd5b019392505050565b600081600003610f3c57506000610596565b6000610f466105cb565b11610f5c57610f5761271083611c96565b610f80565b610f64610725565b610f76670de0b6b3a764000084611c96565b610f809190611cd6565b600680549192508391600090610fa09084906001600160801b0316611d70565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682610fe19190611c96565b60078054600090610ff3908490611d32565b90915550506001600160a01b03831660009081526008602052604090208054839190601090611033908490600160801b90046001600160801b0316611d70565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038516600090815260086020526040902054161590506105965760008161108085610911565b61108a9190611d32565b61109c670de0b6b3a764000085611c96565b6110a69190611cd6565b6001600160a01b0385166000908152600860205260409020549091506001600160801b0316811015611104576001600160a01b0384166000908152600860205260409020546110ff9082906001600160801b0316611cad565b611107565b60005b6001600160a01b038516600090815260086020526040902080546001600160801b03929092166001600160801b03199092169190911790555092915050565b6001600160a01b03821661119c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107fc565b80600260008282546111ae9190611d32565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611dce833981519152910160405180910390a35050565b600754600090158061120f57506005546001600160801b031643145b1561121b575060075490565b6005546000906106ae906106a2906001600160801b031643611cad565b600061124261195a565b600082116112835760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b60448201526064016107fc565b600061128d6105cb565b116112a35761129e61271083611c96565b6112c7565b6112ab610725565b6112bd670de0b6b3a764000084611c96565b6112c79190611cd6565b9050600081116113135760405162461bcd60e51b81526020600482015260176024820152766d696e207374616b65203120736861726520707269636560481b60448201526064016107fc565b61131c83610911565b15611395578061132b84610911565b6113359190611d32565b61133d610725565b6113479083611c96565b6001600160a01b0385166000908152600860205260409020546001600160801b031661137286610911565b61137c9190611c96565b6113869190611d32565b6113909190611cd6565b6113b2565b806113a8670de0b6b3a764000084611c96565b6113b29190611cd6565b6001600160a01b038416600090815260086020526040902080546001600160801b0319166001600160801b03928316179055600580548492601091611400918591600160801b900416611d97565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826114419190611c96565b60078054600090611453908490611d32565b90915550909392505050565b600081600161146e8286611d32565b6114789190611cad565b6114829190611cd6565b9392505050565b60008061149461195a565b600061149f85610911565b90506000841180156114b15750808411155b6114ea5760405162461bcd60e51b815260206004820152600a6024820152696e6f2062616c616e636560b01b60448201526064016107fc565b6000670de0b6b3a7640000856114fe610725565b6115089190611c96565b6115129190611cd6565b9050600061151f8761047e565b90508181101561152f5780611531565b815b935083821161154157600061154b565b61154b8483611cad565b600554909550600160801b90046001600160801b03168511156115ad5760055460009061158890600160801b90046001600160801b031687611cad565b90506115948186611d32565b600554600160801b90046001600160801b031696509450505b600082116115fd5760405162461bcd60e51b815260206004820152601f60248201527f6d696e207368617265732077697468647261772076616c75653a20312067640060448201526064016107fc565b61160f670de0b6b3a764000083611c96565b60078054600090611621908490611cad565b90915550506005805486919060109061164b908490600160801b90046001600160801b0316611d70565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555083600560010160008282829054906101000a90046001600160801b03166116969190611d97565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0389166000908152600860205260409020805487935090916010916116eb918591600160801b900416611d97565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008661171a6105cb565b6117249190611cad565b90506000811561176557611740670de0b6b3a764000083611c96565b60075461175690670de0b6b3a764000090611c96565b6117609190611cd6565b611768565b60005b9050600087118061177857508286145b80611781575081155b156117bc576001600160a01b038916600090815260086020526040902080546001600160801b0319166001600160801b03831617905561182e565b6117c68886611cad565b670de0b6b3a76400006117d98886611cad565b6117e39190611c96565b6117ed9190611cd6565b6117f79082611cad565b6001600160a01b038a16600090815260086020526040902080546001600160801b0319166001600160801b03929092169190911790555b50505050509250929050565b6001600160a01b03821661189a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107fc565b6001600160a01b0382166000908152602081905260409020548181101561190e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107fc565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020611dce833981519152910160405180910390a3505050565b6119626111f3565b600755600580546001600160801b031916436001600160801b0316179055565b60008160000361199157600080fd5b600061199d84846119bc565b905060016001607f1b036001600160801b038216111561148257600080fd5b6000816000036119cb57600080fd5b60006001600160c01b0384116119f65782604085901b816119ee576119ee611cc0565b049050611b0c565b60c084811c600160201b8110611a0e576020918201911c5b620100008110611a20576010918201911c5b6101008110611a31576008918201911c5b60108110611a41576004918201911c5b60048110611a51576002918201911c5b60028110611a60576001820191505b60bf820360018603901c6001018260ff0387901b81611a8157611a81611cc0565b0492506001600160801b03831115611a9857600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015611ac4576001820391505b608084901b92900382811015611adb576001820391505b829003608084901c8214611af157611af1611db7565b888181611b0057611b00611cc0565b04870196505050505050505b6001600160801b0381111561148257600080fd5b80356001600160a01b0381168114611b3757600080fd5b919050565b600060208284031215611b4e57600080fd5b61148282611b20565b600060208083528351808285015260005b81811015611b8457858101830151858201604001528201611b68565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611bb857600080fd5b611bc183611b20565b946020939093013593505050565b600060208284031215611be157600080fd5b81356001600160801b038116811461148257600080fd5b600080600060608486031215611c0d57600080fd5b611c1684611b20565b9250611c2460208501611b20565b9150604084013590509250925092565b600060208284031215611c4657600080fd5b5035919050565b60008060408385031215611c6057600080fd5b611c6983611b20565b9150611c7760208401611b20565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761059657610596611c80565b8181038181111561059657610596611c80565b634e487b7160e01b600052601260045260246000fd5b600082611cf357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680611d0c57607f821691505b602082108103611d2c57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561059657610596611c80565b6001600160801b03818116838216028082169190828114611d6857611d68611c80565b505092915050565b6001600160801b03828116828216039080821115611d9057611d90611c80565b5092915050565b6001600160801b03818116838216019080821115611d9057611d90611c80565b634e487b7160e01b600052600160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f43c3b887beb6f621074f8a84366bbf5621df3768a13a006ee4f5e413b0e2f6964736f6c63430008130033", "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018a5760003560e01c80628cc2621461018f57806306fdde03146101b5578063095ea7b3146101ca57806317397115146101ed57806318160ddd146102155780631fce37091461021d57806322022a291461023257806323b872dd1461023a578063313ce5671461024d57806336de95f61461025c578063395093511461026f5780634a174a0b14610282578063576ce9fd1461028a5780635fc5e0201461029d57806370a08231146102c45780637282e23b146102d7578063777d6641146102ea578063872697291461030a57806395d89b4114610312578063a457c2d71461031a578063a9059cbb1461032d578063aa32582114610340578063aaf5eb681461029d578063aba78c1614610353578063adc9772e146103a7578063b811540e146103ba578063ceb8b01c146103cd578063d80528ae146103d5578063d853365f14610434578063dd62ed3e1461043d578063f3fef3a314610450578063f5eb42dc14610463578063f69e204614610476575b600080fd5b6101a261019d366004611b3c565b61047e565b6040519081526020015b60405180910390f35b6101bd6104f0565b6040516101ac9190611b57565b6101dd6101d8366004611ba5565b610582565b60405190151581526020016101ac565b6102006101fb366004611ba5565b61059c565b604080519283526020830191909152016101ac565b6002546101a2565b61023061022b366004611bcf565b6105bf565b005b6101a26105cb565b6101dd610248366004611bf8565b6105db565b604051601281526020016101ac565b6101a261026a366004611b3c565b6105ff565b6101dd61027d366004611ba5565b610630565b6101a2610652565b6101a2610298366004611b3c565b6106c9565b6102ac670de0b6b3a764000081565b6040516001600160801b0390911681526020016101ac565b6101a26102d2366004611b3c565b6106ed565b6102306102e5366004611ba5565b610708565b6009546102f790600f0b81565b604051600f9190910b81526020016101ac565b6101a2610725565b6101bd610783565b6101dd610328366004611ba5565b610792565b6101dd61033b366004611ba5565b610812565b6101a261034e366004611b3c565b610820565b610387610361366004611b3c565b6008602052600090815260409020546001600160801b0380821691600160801b90041682565b604080516001600160801b039384168152929091166020830152016101ac565b6102306103b5366004611ba5565b61083c565b6101a26103c8366004611c34565b610848565b6101a2610886565b6005546006546007546103ff926001600160801b0380821693600160801b90920481169291169084565b6040516101ac94939291906001600160801b039485168152928416602084015292166040820152606081019190915260800190565b6102ac61271081565b6101a261044b366004611c4d565b6108ca565b61020061045e366004611ba5565b6108f5565b6101a2610471366004611b3c565b610911565b6101a261091c565b60008061048a83610911565b90506000610496610725565b905060006104a3856106c9565b90508181116104b257806104b4565b815b9050670de0b6b3a76400006104c98483611c96565b6104d38585611c96565b6104dd9190611cad565b6104e79190611cd6565b95945050505050565b6060600380546104ff90611cf8565b80601f016020809104026020016040519081016040528092919081815260200182805461052b90611cf8565b80156105785780601f1061054d57610100808354040283529160200191610578565b820191906000526020600020905b81548152906001019060200180831161055b57829003601f168201915b5050505050905090565b600033610590818585610926565b60019150505b92915050565b6000806105a984846108f5565b90925090506105b88482610708565b9250929050565b6105c881610a4a565b50565b60006105d660025490565b905090565b6000336105e9858285610a90565b6105f4858585610b0a565b506001949350505050565b6000670de0b6b3a764000061061383610911565b61061c846106c9565b6106269190611c96565b6105969190611cd6565b60003361059081858561064383836108ca565b61064d9190611d32565b610926565b600754600090158061066e57506005546001600160801b031643145b1561067a575060075490565b6005546000906106ae906001600160801b0316610698436001611d32565b6106a29190611cad565b600954600f0b90610c9c565b6007549091506106c390600f83900b90610ebf565b91505090565b6001600160a01b03166000908152600860205260409020546001600160801b031690565b6001600160a01b031660009081526020819052604090205490565b60006107148383610f2a565b90506107208382611146565b505050565b6000806107306111f3565b905061073a6105cb565b1561077b57670de0b6b3a76400006107506105cb565b61075a9190611c96565b61076c670de0b6b3a764000083611c96565b6107769190611cd6565b6106c3565b600091505090565b6060600480546104ff90611cf8565b600033816107a082866108ca565b9050838110156108055760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6105f48286868403610926565b600033610590818585610b0a565b6000670de0b6b3a764000061083483610911565b61061c610725565b60006107148383611238565b6000610596610855610725565b61271061086a670de0b6b3a764000086611c96565b6108749190611c96565b61087e9190611cd6565b61271061145f565b6005546000906108af90670de0b6b3a764000090600160801b90046001600160801b0316611d45565b6001600160801b03166108c06111f3565b6105d69190611cad565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000806109028484611489565b90925090506105b8848461183a565b6000610596826106ed565b60006105d66111f3565b6001600160a01b0383166109885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107fc565b6001600160a01b0382166109e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107fc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b610a5261195a565b610a6d816001600160801b0316670de0b6b3a7640000611982565b600980546001600160801b0319166001600160801b039290921691909117905550565b6000610a9c84846108ca565b90506000198114610b045781811015610af75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107fc565b610b048484848403610926565b50505050565b6001600160a01b038316610b6e5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107fc565b6001600160a01b038216610bd05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107fc565b6001600160a01b03831660009081526020819052604090205481811015610c485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107fc565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611dce833981519152910160405180910390a3610b04565b600080600084600f0b128015610cb55750826001166001145b905060008085600f0b12610cc95784610cce565b846000035b6001600160801b03169050600160801b600160401b8211610d6357603f82901b91505b8415610d5b576001851615610d06578102607f1c5b908002607f1c906002851615610d1c578102607f1c5b908002607f1c906004851615610d32578102607f1c5b908002607f1c906008851615610d48578102607f1c5b60049490941c93908002607f1c90610cf1565b60401c610e79565b603f600160601b831015610d7d5760209290921b91601f19015b600160701b831015610d955760109290921b91600f19015b600160781b831015610dad5760089290921b91600719015b6001607c1b831015610dc55760049290921b91600319015b6001607e1b831015610ddd5760029290921b91600119015b6001607f1b831015610df55760019290921b91600019015b60005b8615610e625760408210610e0b57600080fd5b6001871615610e3157918302607f1c918101600160801b831115610e3157600192831c92015b928002607f1c9260019190911b90600160801b8410610e5657600193841c9391909101905b600187901c9650610df8565b60408110610e6f57600080fd5b6040039190911c90505b600083610e865781610e8b565b816000035b905060016001607f1b03198112801590610eac575060016001607f1b038113155b610eb557600080fd5b9695505050505050565b600081600003610ed157506000610596565b600083600f0b1215610ee257600080fd5b600f83900b6001600160801b038316810260401c90608084901c026001600160c01b03811115610f1157600080fd5b60401b8119811115610f2257600080fd5b019392505050565b600081600003610f3c57506000610596565b6000610f466105cb565b11610f5c57610f5761271083611c96565b610f80565b610f64610725565b610f76670de0b6b3a764000084611c96565b610f809190611cd6565b600680549192508391600090610fa09084906001600160801b0316611d70565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b031682610fe19190611c96565b60078054600090610ff3908490611d32565b90915550506001600160a01b03831660009081526008602052604090208054839190601090611033908490600160801b90046001600160801b0316611d70565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b038516600090815260086020526040902054161590506105965760008161108085610911565b61108a9190611d32565b61109c670de0b6b3a764000085611c96565b6110a69190611cd6565b6001600160a01b0385166000908152600860205260409020549091506001600160801b0316811015611104576001600160a01b0384166000908152600860205260409020546110ff9082906001600160801b0316611cad565b611107565b60005b6001600160a01b038516600090815260086020526040902080546001600160801b03929092166001600160801b03199092169190911790555092915050565b6001600160a01b03821661119c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107fc565b80600260008282546111ae9190611d32565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611dce833981519152910160405180910390a35050565b600754600090158061120f57506005546001600160801b031643145b1561121b575060075490565b6005546000906106ae906106a2906001600160801b031643611cad565b600061124261195a565b600082116112835760405162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b60448201526064016107fc565b600061128d6105cb565b116112a35761129e61271083611c96565b6112c7565b6112ab610725565b6112bd670de0b6b3a764000084611c96565b6112c79190611cd6565b9050600081116113135760405162461bcd60e51b81526020600482015260176024820152766d696e207374616b65203120736861726520707269636560481b60448201526064016107fc565b61131c83610911565b15611395578061132b84610911565b6113359190611d32565b61133d610725565b6113479083611c96565b6001600160a01b0385166000908152600860205260409020546001600160801b031661137286610911565b61137c9190611c96565b6113869190611d32565b6113909190611cd6565b6113b2565b806113a8670de0b6b3a764000084611c96565b6113b29190611cd6565b6001600160a01b038416600090815260086020526040902080546001600160801b0319166001600160801b03928316179055600580548492601091611400918591600160801b900416611d97565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550670de0b6b3a76400006001600160801b0316826114419190611c96565b60078054600090611453908490611d32565b90915550909392505050565b600081600161146e8286611d32565b6114789190611cad565b6114829190611cd6565b9392505050565b60008061149461195a565b600061149f85610911565b90506000841180156114b15750808411155b6114ea5760405162461bcd60e51b815260206004820152600a6024820152696e6f2062616c616e636560b01b60448201526064016107fc565b6000670de0b6b3a7640000856114fe610725565b6115089190611c96565b6115129190611cd6565b9050600061151f8761047e565b90508181101561152f5780611531565b815b935083821161154157600061154b565b61154b8483611cad565b600554909550600160801b90046001600160801b03168511156115ad5760055460009061158890600160801b90046001600160801b031687611cad565b90506115948186611d32565b600554600160801b90046001600160801b031696509450505b600082116115fd5760405162461bcd60e51b815260206004820152601f60248201527f6d696e207368617265732077697468647261772076616c75653a20312067640060448201526064016107fc565b61160f670de0b6b3a764000083611c96565b60078054600090611621908490611cad565b90915550506005805486919060109061164b908490600160801b90046001600160801b0316611d70565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555083600560010160008282829054906101000a90046001600160801b03166116969190611d97565b82546101009290920a6001600160801b038181021990931691831602179091556001600160a01b0389166000908152600860205260409020805487935090916010916116eb918591600160801b900416611d97565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555060008661171a6105cb565b6117249190611cad565b90506000811561176557611740670de0b6b3a764000083611c96565b60075461175690670de0b6b3a764000090611c96565b6117609190611cd6565b611768565b60005b9050600087118061177857508286145b80611781575081155b156117bc576001600160a01b038916600090815260086020526040902080546001600160801b0319166001600160801b03831617905561182e565b6117c68886611cad565b670de0b6b3a76400006117d98886611cad565b6117e39190611c96565b6117ed9190611cd6565b6117f79082611cad565b6001600160a01b038a16600090815260086020526040902080546001600160801b0319166001600160801b03929092169190911790555b50505050509250929050565b6001600160a01b03821661189a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107fc565b6001600160a01b0382166000908152602081905260409020548181101561190e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107fc565b6001600160a01b038316600081815260208181526040808320868603905560028054879003905551858152919291600080516020611dce833981519152910160405180910390a3505050565b6119626111f3565b600755600580546001600160801b031916436001600160801b0316179055565b60008160000361199157600080fd5b600061199d84846119bc565b905060016001607f1b036001600160801b038216111561148257600080fd5b6000816000036119cb57600080fd5b60006001600160c01b0384116119f65782604085901b816119ee576119ee611cc0565b049050611b0c565b60c084811c600160201b8110611a0e576020918201911c5b620100008110611a20576010918201911c5b6101008110611a31576008918201911c5b60108110611a41576004918201911c5b60048110611a51576002918201911c5b60028110611a60576001820191505b60bf820360018603901c6001018260ff0387901b81611a8157611a81611cc0565b0492506001600160801b03831115611a9857600080fd5b608085901c83026001600160801b038616840260c088901c604089901b82811015611ac4576001820391505b608084901b92900382811015611adb576001820391505b829003608084901c8214611af157611af1611db7565b888181611b0057611b00611cc0565b04870196505050505050505b6001600160801b0381111561148257600080fd5b80356001600160a01b0381168114611b3757600080fd5b919050565b600060208284031215611b4e57600080fd5b61148282611b20565b600060208083528351808285015260005b81811015611b8457858101830151858201604001528201611b68565b506000604082860101526040601f19601f8301168501019250505092915050565b60008060408385031215611bb857600080fd5b611bc183611b20565b946020939093013593505050565b600060208284031215611be157600080fd5b81356001600160801b038116811461148257600080fd5b600080600060608486031215611c0d57600080fd5b611c1684611b20565b9250611c2460208501611b20565b9150604084013590509250925092565b600060208284031215611c4657600080fd5b5035919050565b60008060408385031215611c6057600080fd5b611c6983611b20565b9150611c7760208401611b20565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761059657610596611c80565b8181038181111561059657610596611c80565b634e487b7160e01b600052601260045260246000fd5b600082611cf357634e487b7160e01b600052601260045260246000fd5b500490565b600181811c90821680611d0c57607f821691505b602082108103611d2c57634e487b7160e01b600052602260045260246000fd5b50919050565b8082018082111561059657610596611c80565b6001600160801b03818116838216028082169190828114611d6857611d68611c80565b505092915050565b6001600160801b03828116828216039080821115611d9057611d90611c80565b5092915050565b6001600160801b03818116838216019080821115611d9057611d90611c80565b634e487b7160e01b600052600160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220f43c3b887beb6f621074f8a84366bbf5621df3768a13a006ee4f5e413b0e2f6964736f6c63430008130033", "linkReferences": {}, "deployedLinkReferences": {} }