UNPKG

@daostack/arc-experimental

Version:

A platform for building DAOs

821 lines 65.9 kB
{ "contractName": "ContributionReward", "abi": [ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_intVoteInterface", "type": "address" }, { "indexed": false, "internalType": "string", "name": "_descriptionHash", "type": "string" }, { "indexed": false, "internalType": "int256", "name": "_reputationChange", "type": "int256" }, { "indexed": false, "internalType": "uint256[5]", "name": "_rewards", "type": "uint256[5]" }, { "indexed": false, "internalType": "contract IERC20", "name": "_externalToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "_beneficiary", "type": "address" } ], "name": "NewContributionProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": false, "internalType": "int256", "name": "_param", "type": "int256" } ], "name": "ProposalExecuted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "RedeemEther", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "RedeemExternalToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "RedeemNativeToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_avatar", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "_beneficiary", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "_amount", "type": "int256" } ], "name": "RedeemReputation", "type": "event" }, { "inputs": [], "name": "avatar", "outputs": [ { "internalType": "contract Avatar", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_stakingToken", "type": "address" }, { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "balanceOfStakingToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "burnReputation", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "int256", "name": "_decision", "type": "int256" } ], "name": "executeProposal", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "uint256", "name": "_redeemType", "type": "uint256" } ], "name": "getPeriodsToPay", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalEthReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalExecutionTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalExternalToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getProposalExternalTokenReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "uint256", "name": "_redeemType", "type": "uint256" } ], "name": "getRedeemedPeriods", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "getTotalReputationSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract Avatar", "name": "_avatar", "type": "address" }, { "internalType": "contract IntVoteInterface", "name": "_votingMachine", "type": "address" }, { "internalType": "uint256[11]", "name": "_votingParams", "type": "uint256[11]" }, { "internalType": "address", "name": "_voteOnBehalf", "type": "address" }, { "internalType": "bytes32", "name": "_voteParamsHash", "type": "bytes32" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "mintReputation", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "organizationProposals", "outputs": [ { "internalType": "uint256", "name": "nativeTokenReward", "type": "uint256" }, { "internalType": "int256", "name": "reputationChange", "type": "int256" }, { "internalType": "uint256", "name": "ethReward", "type": "uint256" }, { "internalType": "contract IERC20", "name": "externalToken", "type": "address" }, { "internalType": "uint256", "name": "externalTokenReward", "type": "uint256" }, { "internalType": "address payable", "name": "beneficiary", "type": "address" }, { "internalType": "uint256", "name": "periodLength", "type": "uint256" }, { "internalType": "uint256", "name": "numberOfPeriods", "type": "uint256" }, { "internalType": "uint256", "name": "executionTime", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "proposalsBlockNumber", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "_descriptionHash", "type": "string" }, { "internalType": "int256", "name": "_reputationChange", "type": "int256" }, { "internalType": "uint256[5]", "name": "_rewards", "type": "uint256[5]" }, { "internalType": "contract IERC20", "name": "_externalToken", "type": "address" }, { "internalType": "address payable", "name": "_beneficiary", "type": "address" } ], "name": "proposeContributionReward", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" }, { "internalType": "bool[4]", "name": "_whatToRedeem", "type": "bool[4]" } ], "name": "redeem", "outputs": [ { "internalType": "int256", "name": "reputationReward", "type": "int256" }, { "internalType": "uint256", "name": "nativeTokenReward", "type": "uint256" }, { "internalType": "uint256", "name": "etherReward", "type": "uint256" }, { "internalType": "uint256", "name": "externalTokenReward", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "redeemEther", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "redeemExternalToken", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "redeemNativeToken", "outputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "redeemReputation", "outputs": [ { "internalType": "int256", "name": "reputation", "type": "int256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_owner", "type": "address" }, { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "reputationOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "contract IERC20", "name": "_stakingToken", "type": "address" }, { "internalType": "address", "name": "_beneficiary", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "bytes32", "name": "_proposalId", "type": "bytes32" } ], "name": "stakingTokenTransfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "voteParamsHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "votingMachine", "outputs": [ { "internalType": "contract IntVoteInterface", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b50612eb9806100206000396000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80635d353bef116100de5780639f874c9911610097578063c7916cf911610071578063c7916cf914610587578063d29b5d2f146105a4578063d8145e2d146105d6578063f81f8bf61461064757610173565b80639f874c9914610511578063b551c3731461052e578063bea75f281461054b57610173565b80635d353bef1461042b5780636b8eb403146104485780637a5cb92c146104745780637e078b55146104915780639588378e146104ae5780639d4c162d146104da57610173565b80633edf7ca1116101305780633edf7ca1146103755780634ea2c7ec1461039957806352717a5e146103a1578063540fbeb3146103be57806358243213146104065780635aef7de61461042357610173565b806303e722d1146101785780630743ec07146102795780632108d7a71461029c57806334f24352146102bf5780633a0284ff146102dc5780633c2163dc14610358575b600080fd5b610267600480360361012081101561018f57600080fd5b8101906020810181356401000000008111156101aa57600080fd5b8201836020820111156101bc57600080fd5b803590602001918460018302840111640100000000831117156101de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805160a081810190925293968535969095909460c0820194509250602001906005908390839080828437600092019190915250919450505080356001600160a01b03908116925060209091013516610679565b60408051918252519081900360200190f35b6102676004803603604081101561028f57600080fd5b5080359060200135610ac6565b610267600480360360408110156102b257600080fd5b5080359060200135610c8b565b610267600480360360208110156102d557600080fd5b5035610cb0565b610332600480360360a08110156102f257600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610f7d9350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6102676004803603602081101561036e57600080fd5b5035610fe5565b61037d6112ed565b604080516001600160a01b039092168252519081900360200190f35b6102676112fc565b610267600480360360208110156103b757600080fd5b5035611302565b61040460048036036101e08110156103d557600080fd5b506001600160a01b038135811691602081013582169160408201916101a0810135909116906101c00135611317565b005b6102676004803603602081101561041c57600080fd5b50356113f5565b61037d6116cc565b6102676004803603602081101561044157600080fd5b50356116db565b6102676004803603604081101561045e57600080fd5b506001600160a01b0381351690602001356116f0565b6102676004803603602081101561048a57600080fd5b50356117ca565b61037d600480360360208110156104a757600080fd5b50356117dc565b610267600480360360408110156104c457600080fd5b506001600160a01b0381351690602001356117fa565b6104fd600480360360408110156104f057600080fd5b508035906020013561192b565b604080519115158252519081900360200190f35b6102676004803603602081101561052757600080fd5b5035611a30565b6102676004803603602081101561054457600080fd5b5035611a45565b6104fd6004803603608081101561056157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611cdc565b6102676004803603602081101561059d57600080fd5b5035611e40565b6104fd600480360360608110156105ba57600080fd5b508035906001600160a01b03602082013516906040013561222f565b6105f3600480360360208110156105ec57600080fd5b503561238a565b60408051998a5260208a0198909852888801969096526001600160a01b0394851660608901526080880193909352921660a086015260c085019190915260e084015261010083015251908190036101200190f35b6104fd6004803603606081101561065d57600080fd5b508035906001600160a01b0360208201351690604001356123e1565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561073257600080fd5b505afa158015610746573d6000803e3d6000fd5b505050506040513d602081101561075c57600080fd5b50516107aa576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b6107b48585612507565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b505050506040513d602081101561084957600080fd5b50519050826001600160a01b03811661085f5750335b610867612c16565b60408051610140810182528851815260208082018b9052890151818301526001600160a01b03888116606080840191909152928a01516080830152841660a08201529088015160c082015260e08101886004602090810291909101518252600082820181905260408051608080820183528382528185018490528183018490526060808301859052958301919091528883526037845291819020855181559285015160018401558401516002830155918301516003820180546001600160a01b039283166001600160a01b0319918216179091559284015160048084019190915560a085015160058401805491909316941693909317905560c0830151600682015560e08301516007820155610100830151600882015561012083015192935083929091610999916009840191612c80565b505060345460335460408051602081018d90526001600160a01b0393841694508793909216917fcbdcbf9aaeb1e9eff0f75d74e1c1e044bc87110164baec7d18d825b0450d97df918e918e918e918e918b9190819081018560a080838360005b83811015610a115781810151838201526020016109f9565b50505050905001846001600160a01b03168152602001836001600160a01b03168152602001828103825287818151815260200191508051906020019080838360005b83811015610a6b578181015183820152602001610a53565b50505050905090810190601f168015610a985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505060008181526036602052604090204390559695505050505050565b60006003821115610b085760405162461bcd60e51b8152600401808060200182810382526026815260200180612e2a6026913960400191505060405180910390fd5b610b10612c16565b6000848152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b815481526020019060010190808311610bb057505050505081525050905080610100015160001415610be6576000915050610c85565b60c081015160009015610c145760c0820151610100830151610c099042906126f8565b81610c1057fe5b0490505b60008260c0015160001480610c2d57508260e001518210155b15610c5d57610c568361012001518660048110610c4657fe5b602002015160e0850151906126f8565b9050610c80565b610c7d8361012001518660048110610c7157fe5b602002015183906126f8565b90505b925050505b92915050565b60008281526037602052604081206009018260048110610ca757fe5b01549392505050565b6000610cba612c16565b6000838152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b815481526020019060010190808311610d5a57505050919092525050506000848152603760205260409020600881015491925090610ddb576040805162461bcd60e51b81526020600482015260196024820152781c1c9bdc1bdcd85b081b9bdd08195e1958dd5d1959081e595d603a1b604482015290519081900360640190fd5b6000610de8856001610ac6565b600083558351909150610dfc908290612741565b93508315610f7357603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d6020811015610e7c57600080fd5b505160a084015160408051630218b66560e31b8152600481018890526001600160a01b039283166024820152905191909216916310c5b3289160448083019260209291908290030181600087803b158015610ed657600080fd5b505af1158015610eea573d6000803e3d6000fd5b505050506040513d6020811015610f0057600080fd5b5051610f0b57600080fd5b610f1e816009840160015b01549061279a565b600983016001015560a08301516033546040805187815290516001600160a01b0393841693899316917f13f7471cab9806ac4ff5d80ae879babfbf1081e240d05c4450b75f69c626cb2e919081900360200190a45b5090519055919050565b60008080808481602002015115610f9a57610f9786611e40565b93505b602085015115610fb057610fad86610cb0565b92505b604085015115610fc657610fc3866113f5565b91505b606085015115610fdc57610fd986610fe5565b90505b92959194509250565b6000610fef612c16565b6000838152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b81548152602001906001019080831161108f57505050919092525050506000848152603760205260409020600881015491925090611110576040805162461bcd60e51b81526020600482015260196024820152781c1c9bdc1bdcd85b081b9bdd08195e1958dd5d1959081e595d603a1b604482015290519081900360640190fd5b600061111d856003610ac6565b6000600484015560038301549091506001600160a01b031615801590611147575060008360800151115b156112db57608083015161115c908290612741565b935083156112db57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d60208110156111dc57600080fd5b5051606084015160a08501516040805163dab0efff60e01b81526001600160a01b03938416600482015291831660248301526044820188905251919092169163dab0efff9160648083019260209291908290030181600087803b15801561124257600080fd5b505af1158015611256573d6000803e3d6000fd5b505050506040513d602081101561126c57600080fd5b505161127757600080fd5b61128681600984016003610f16565b600983016003015560a08301516033546040805187815290516001600160a01b0393841693899316917f5a66e28cdcd3bc22082d9f07be2b6bed5f50f349e5d89f655d750ecdd1988374919081900360200190a45b50608090910151600490910155919050565b6034546001600160a01b031681565b60355481565b60009081526037602052604090206004015490565b600054610100900460ff168061133057506113306127f4565b8061133e575060005460ff16155b6113795760405162461bcd60e51b815260040180806020018281038252602e815260200180612dcb602e913960400191505060405180910390fd5b600054610100900460ff161580156113a4576000805460ff1961ff0019909116610100171660011790555b6113db86868487600b806020026040519081016040528092919082600b602002808284376000920191909152508991506127fa9050565b80156113ed576000805461ff00191690555b505050505050565b60006113ff612c16565b6000838152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b81548152602001906001019080831161149f57505050919092525050506000848152603760205260409020600881015491925090611520576040805162461bcd60e51b81526020600482015260196024820152781c1c9bdc1bdcd85b081b9bdd08195e1958dd5d1959081e595d603a1b604482015290519081900360640190fd5b600061152d856002610ac6565b600060028401556040840151909150611547908290612741565b935083156116ba57603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561159d57600080fd5b505afa1580156115b1573d6000803e3d6000fd5b505050506040513d60208110156115c757600080fd5b505160a08401516040805163658b6a5160e11b8152600481018890526001600160a01b0392831660248201529051919092169163cb16d4a29160448083019260209291908290030181600087803b15801561162157600080fd5b505af1158015611635573d6000803e3d6000fd5b505050506040513d602081101561164b57600080fd5b505161165657600080fd5b61166581600984016002610f16565b600983016002015560a08301516033546040805187815290516001600160a01b0393841693899316917f7dd55ea53ce2c347b544c257b778e1dd6638f232fa6b94320e740440e72b4b87919081900360200190a45b50604090910151600290910155919050565b6033546001600160a01b031681565b60009081526037602052604090206008015490565b60345460009082906001600160a01b03163314611749576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603354604080516370a0823160e01b81526001600160a01b0392831660048201529051918616916370a0823191602480820192602092909190829003018186803b15801561179657600080fd5b505afa1580156117aa573d6000803e3d6000fd5b505050506040513d60208110156117c057600080fd5b5051949350505050565b60366020526000908152604090205481565b6000908152603760205260409020600301546001600160a01b031690565b60345460009082906001600160a01b03163314611853576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b1580156118a157600080fd5b505afa1580156118b5573d6000803e3d6000fd5b505050506040513d60208110156118cb57600080fd5b505160008481526036602090815260409182902054825163277166bf60e11b81526001600160a01b03898116600483015260248201929092529251931692634ee2cd7e926044808201939291829003018186803b15801561179657600080fd5b60345460009083906001600160a01b03163314611984576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b600084815260376020526040902060080154156119a057600080fd5b6000848152603760205260409020600501546001600160a01b03166119c457600080fd5b82600114156119e3576000848152603760205260409020426008909101555b60335460408051858152905186926001600160a01b0316917fd2632e80f5364f02aded1c64e8a04637b7c8bb9c2db2bedf4b6ac47c013acbc0919081900360200190a35060019392505050565b60009081526037602052604090206002015490565b60345460009082906001600160a01b03163314611a9e576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611aec57600080fd5b505afa158015611b00573d6000803e3d6000fd5b505050506040513d6020811015611b1657600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b158015611b6057600080fd5b505afa158015611b74573d6000803e3d6000fd5b505050506040513d6020811015611b8a57600080fd5b5051611bd8576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b03166389ae1c906040518163ffffffff1660e01b815260040160206040518083038186803b158015611c2657600080fd5b505afa158015611c3a573d6000803e3d6000fd5b505050506040513d6020811015611c5057600080fd5b5051600084815260366020908152604091829020548251630981b24d60e41b8152600481019190915291516001600160a01b039093169263981b24d0926024808201939291829003018186803b158015611ca957600080fd5b505afa158015611cbd573d6000803e3d6000fd5b505050506040513d6020811015611cd357600080fd5b50519392505050565b60345460009082906001600160a01b03163314611d35576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d8357600080fd5b505afa158015611d97573d6000803e3d6000fd5b505050506040513d6020811015611dad57600080fd5b50516040805163dab0efff60e01b81526001600160a01b0389811660048301528881166024830152604482018890529151919092169163dab0efff9160648083019260209291908290030181600087803b158015611e0a57600080fd5b505af1158015611e1e573d6000803e3d6000fd5b505050506040513d6020811015611e3457600080fd5b50519695505050505050565b6000611e4a612c16565b6000838152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b815481526020019060010190808311611eea57505050919092525050506000848152603760205260409020600881015491925090611f6b576040805162461bcd60e51b81526020600482015260196024820152781c1c9bdc1bdcd85b081b9bdd08195e1958dd5d1959081e595d603a1b604482015290519081900360640190fd5b6000611f78856000610ac6565b6000600184018190556020850151820295509091508413156120a057603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fe257600080fd5b505afa158015611ff6573d6000803e3d6000fd5b505050506040513d602081101561200c57600080fd5b505160a08401516040805163dea9e24d60e01b8152600481018890526001600160a01b0392831660248201529051919092169163dea9e24d9160448083019260209291908290030181600087803b15801561206657600080fd5b505af115801561207a573d6000803e3d6000fd5b505050506040513d602081101561209057600080fd5b505161209b57600080fd5b6121b3565b60008412156121b357603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156120f757600080fd5b505afa15801561210b573d6000803e3d6000fd5b505050506040513d602081101561212157600080fd5b505160a08401516040805163ddbfcc6b60e01b8152600088810360048301526001600160a01b0393841660248301529151929093169263ddbfcc6b9260448083019360209383900390910190829087803b15801561217e57600080fd5b505af1158015612192573d6000803e3d6000fd5b505050506040513d60208110156121a857600080fd5b50516121b357600080fd5b831561221d576121c881600984016000610f16565b600983016000015560a08301516033546040805187815290516001600160a01b0393841693899316917feab8bc4bf2fd6ce5634b8e75023e0e48367e68249ce2aa2c0ef7c0efe5648bee919081900360200190a45b50602090910151600190910155919050565b60345460009082906001600160a01b03163314612288576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156122d657600080fd5b505afa1580156122ea573d6000803e3d6000fd5b505050506040513d602081101561230057600080fd5b50516040805163dea9e24d60e01b8152600481018890526001600160a01b0387811660248301529151919092169163dea9e24d9160448083019260209291908290030181600087803b15801561235557600080fd5b505af1158015612369573d6000803e3d6000fd5b505050506040513d602081101561237f57600080fd5b505195945050505050565b6037602052600090815260409020805460018201546002830154600384015460048501546005860154600687015460078801546008909801549697959694956001600160a01b039485169593949092169290919089565b60345460009082906001600160a01b0316331461243a576040805162461bcd60e51b81526020600482015260126024820152716f6e6c7920566f74696e674d616368696e6560701b604482015290519081900360640190fd5b603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561248857600080fd5b505afa15801561249c573d6000803e3d6000fd5b505050506040513d60208110156124b257600080fd5b50516040805163ddbfcc6b60e01b8152600481018890526001600160a01b0387811660248301529151919092169163ddbfcc6b9160448083019260209291908290030181600087803b15801561235557600080fd5b606081015115158061251d575060808101516001145b6125585760405162461bcd60e51b8152600401808060200182810382526034815260200180612cf26034913960400191505060405180910390fd5b6080810151156126f457608081015160001914801561257a575081600160ff1b145b156125b65760405162461bcd60e51b8152600401808060200182810382526031815260200180612df96031913960400191505060405180910390fd5b60808101518290808202816125c757fe5b05146126045760405162461bcd60e51b8152600401808060200182810382526030815260200180612d516030913960400191505060405180910390fd5b805160808201518082028161261557fe5b04146126525760405162461bcd60e51b815260040180806020018281038252602b815260200180612d26602b913960400191505060405180910390fd5b602081015160808201518082028161266657fe5b04146126a35760405162461bcd60e51b8152600401808060200182810382526029815260200180612d816029913960400191505060405180910390fd5b60408101516080820151808202816126b757fe5b04146126f45760405162461bcd60e51b8152600401808060200182810382526034815260200180612e506034913960400191505060405180910390fd5b5050565b600061273a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612a67565b9392505050565b60008261275057506000610c85565b8282028284828161275d57fe5b041461273a5760405162461bcd60e51b8152600401808060200182810382526021815260200180612daa6021913960400191505060405180910390fd5b60008282018381101561273a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b303b1590565b6001600160a01b038416612855576040805162461bcd60e51b815260206004820152601c60248201527f766f74696e674d616368696e652063616e6e6f74206265207a65726f00000000604482015290519081900360640190fd5b61285e85612afe565b603480546001600160a01b0319166001600160a01b03861617905582612a5a576040516307b4e1e360e01b815284906001600160a01b038216906307b4e1e39085908590600401808361016080838360005b838110156128c85781810151838201526020016128b0565b50505050905001826001600160a01b031681526020019250505060206040518083038186803b1580156128fa57600080fd5b505afa15801561290e573d6000803e3d6000fd5b505050506040513d602081101561292457600080fd5b505160358190556040805162941a0160e21b81526004810192909252516000916001600160a01b038416916302506804916024808201926101a092909190829003018186803b15801561297657600080fd5b505afa15801561298a573d6000803e3d6000fd5b505050506040513d6101a08110156129a157600080fd5b5051905080612a5357604051638894c41b60e01b81526001600160a01b03831690638894c41b9086908690600401808361016080838360005b838110156129f25781810151838201526020016129da565b50505050905001826001600160a01b0316815260200192505050602060405180830381600087803b158015612a2657600080fd5b505af1158015612a3a573d6000803e3d6000fd5b505050506040513d6020811015612a5057600080fd5b50505b5050612a60565b60358390555b5050505050565b60008184841115612af65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612abb578181015183820152602001612aa3565b50505050905090810190601f168015612ae85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600054610100900460ff1680612b175750612b176127f4565b80612b25575060005460ff16155b612b605760405162461bcd60e51b815260040180806020018281038252602e815260200180612dcb602e913960400191505060405180910390fd5b600054610100900460ff16158015612b8b576000805460ff1961ff0019909116610100171660011790555b6001600160a01b038216612be6576040805162461bcd60e51b815260206004820152601760248201527f536368656d65206d757374206861766520617661746172000000000000000000604482015290519081900360640190fd5b603380546001600160a01b0319166001600160a01b03841617905580156126f4576000805461ff00191690555050565b60405180610140016040528060008152602001600081526020016000815260200160006001600160a01b031681526020016000815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001612c7b612cbe565b905290565b8260048101928215612cae579160200282015b82811115612cae578251825591602001919060010190612c93565b50612cba929150612cdc565b5090565b60405180608001604052806004906020820280368337509192915050565b5b80821115612cba5760008155600101612cdd56fe706572696f644c656e67746820657175616c20302072657175697265206e756d6265724f66506572696f647320746f20626520316e756d6265724f66506572696f6473202a20746f6b656e5265776172642077696c6c206f766572666c6f776e756d6265724f66506572696f6473202a2072657075746174696f6e4368616e67652077696c6c206f766572666c6f776e756d6265724f66506572696f6473202a206574685265776172642077696c6c206f766572666c6f77536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a65646e756d6265724f66506572696f6473202a205f72657075746174696f6e4368616e67652077696c6c206f766572666c6f7773686f756c6420626520696e207468652072656465656d6564506572696f64732072616e67656e756d6265724f66506572696f6473202a207465787465726e616c546f6b656e5265776172642077696c6c206f766572666c6f77a264697066735822122019c20f62955b19d7fd3bbc9fa9773a73d0dfcebe9bc015211017e06ba885068264736f6c634300060c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101735760003560e01c80635d353bef116100de5780639f874c9911610097578063c7916cf911610071578063c7916cf914610587578063d29b5d2f146105a4578063d8145e2d146105d6578063f81f8bf61461064757610173565b80639f874c9914610511578063b551c3731461052e578063bea75f281461054b57610173565b80635d353bef1461042b5780636b8eb403146104485780637a5cb92c146104745780637e078b55146104915780639588378e146104ae5780639d4c162d146104da57610173565b80633edf7ca1116101305780633edf7ca1146103755780634ea2c7ec1461039957806352717a5e146103a1578063540fbeb3146103be57806358243213146104065780635aef7de61461042357610173565b806303e722d1146101785780630743ec07146102795780632108d7a71461029c57806334f24352146102bf5780633a0284ff146102dc5780633c2163dc14610358575b600080fd5b610267600480360361012081101561018f57600080fd5b8101906020810181356401000000008111156101aa57600080fd5b8201836020820111156101bc57600080fd5b803590602001918460018302840111640100000000831117156101de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040805160a081810190925293968535969095909460c0820194509250602001906005908390839080828437600092019190915250919450505080356001600160a01b03908116925060209091013516610679565b60408051918252519081900360200190f35b6102676004803603604081101561028f57600080fd5b5080359060200135610ac6565b610267600480360360408110156102b257600080fd5b5080359060200135610c8b565b610267600480360360208110156102d557600080fd5b5035610cb0565b610332600480360360a08110156102f257600080fd5b604080516080818101909252833593928301929160a08301919060208401906004908390839080828437600092019190915250919450610f7d9350505050565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6102676004803603602081101561036e57600080fd5b5035610fe5565b61037d6112ed565b604080516001600160a01b039092168252519081900360200190f35b6102676112fc565b610267600480360360208110156103b757600080fd5b5035611302565b61040460048036036101e08110156103d557600080fd5b506001600160a01b038135811691602081013582169160408201916101a0810135909116906101c00135611317565b005b6102676004803603602081101561041c57600080fd5b50356113f5565b61037d6116cc565b6102676004803603602081101561044157600080fd5b50356116db565b6102676004803603604081101561045e57600080fd5b506001600160a01b0381351690602001356116f0565b6102676004803603602081101561048a57600080fd5b50356117ca565b61037d600480360360208110156104a757600080fd5b50356117dc565b610267600480360360408110156104c457600080fd5b506001600160a01b0381351690602001356117fa565b6104fd600480360360408110156104f057600080fd5b508035906020013561192b565b604080519115158252519081900360200190f35b6102676004803603602081101561052757600080fd5b5035611a30565b6102676004803603602081101561054457600080fd5b5035611a45565b6104fd6004803603608081101561056157600080fd5b506001600160a01b03813581169160208101359091169060408101359060600135611cdc565b6102676004803603602081101561059d57600080fd5b5035611e40565b6104fd600480360360608110156105ba57600080fd5b508035906001600160a01b03602082013516906040013561222f565b6105f3600480360360208110156105ec57600080fd5b503561238a565b60408051998a5260208a0198909852888801969096526001600160a01b0394851660608901526080880193909352921660a086015260c085019190915260e084015261010083015251908190036101200190f35b6104fd6004803603606081101561065d57600080fd5b508035906001600160a01b0360208201351690604001356123e1565b60335460408051638da5cb5b60e01b815290516000926001600160a01b031691638da5cb5b916004808301926020929190829003018186803b1580156106be57600080fd5b505afa1580156106d2573d6000803e3d6000fd5b505050506040513d60208110156106e857600080fd5b505160408051632074193160e21b815230600482015290516001600160a01b03909216916381d064c491602480820192602092909190829003018186803b15801561073257600080fd5b505afa158015610746573d6000803e3d6000fd5b505050506040513d602081101561075c57600080fd5b50516107aa576040805162461bcd60e51b81526020600482015260186024820152771cd8da195b59481a5cc81b9bdd081c9959da5cdd195c995960421b604482015290519081900360640190fd5b6107b48585612507565b60345460355460335460408051634439bdaf60e11b81526002600482015260248101939093523360448401526001600160a01b0391821660648401525160009391909116916388737b5e91608480830192602092919082900301818787803b15801561081f57600080fd5b505af1158015610833573d6000803e3d6000fd5b505050506040513d602081101561084957600080fd5b50519050826001600160a01b03811661085f5750335b610867612c16565b60408051610140810182528851815260208082018b9052890151818301526001600160a01b03888116606080840191909152928a01516080830152841660a08201529088015160c082015260e08101886004602090810291909101518252600082820181905260408051608080820183528382528185018490528183018490526060808301859052958301919091528883526037845291819020855181559285015160018401558401516002830155918301516003820180546001600160a01b039283166001600160a01b0319918216179091559284015160048084019190915560a085015160058401805491909316941693909317905560c0830151600682015560e08301516007820155610100830151600882015561012083015192935083929091610999916009840191612c80565b505060345460335460408051602081018d90526001600160a01b0393841694508793909216917fcbdcbf9aaeb1e9eff0f75d74e1c1e044bc87110164baec7d18d825b0450d97df918e918e918e918e918b9190819081018560a080838360005b83811015610a115781810151838201526020016109f9565b50505050905001846001600160a01b03168152602001836001600160a01b03168152602001828103825287818151815260200191508051906020019080838360005b83811015610a6b578181015183820152602001610a53565b50505050905090810190601f168015610a985780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505060008181526036602052604090204390559695505050505050565b60006003821115610b085760405162461bcd60e51b8152600401808060200182810382526026815260200180612e2a6026913960400191505060405180910390fd5b610b10612c16565b6000848152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b815481526020019060010190808311610bb057505050505081525050905080610100015160001415610be6576000915050610c85565b60c081015160009015610c145760c0820151610100830151610c099042906126f8565b81610c1057fe5b0490505b60008260c0015160001480610c2d57508260e001518210155b15610c5d57610c568361012001518660048110610c4657fe5b602002015160e0850151906126f8565b9050610c80565b610c7d8361012001518660048110610c7157fe5b602002015183906126f8565b90505b925050505b92915050565b60008281526037602052604081206009018260048110610ca757fe5b01549392505050565b6000610cba612c16565b6000838152603760209081526040918290208251610140810184528154815260018201549281019290925260028101548284015260038101546001600160a01b039081166060840152600480830154608080860191909152600584015490921660a0850152600683015460c0850152600783015460e085015260088301546101008501528451918201948590529293919261012085019260098501919082845b815481526020019060010190808311610d5a57505050919092525050506000848152603760205260409020600881015491925090610ddb576040805162461bcd60e51b81526020600482015260196024820152781c1c9bdc1bdcd85b081b9bdd08195e1958dd5d1959081e595d603a1b604482015290519081900360640190fd5b6000610de8856001610ac6565b600083558351909150610dfc908290612741565b93508315610f7357603360009054906101000a90046001600160a01b03166001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d6020811015610e7c57600080fd5b505160a084015160408051630218b66560e31b8152600481018890526001600160a01b039283166024820152905191909216916310c5b3289160448083019260209291908290030181600087803b158015610ed657600080fd5b505af1158015610eea573d6000803e3d6000fd5b505050506040513d6020811015610f0057600080fd5b5051610f0b57600080fd5b610f1e816009840160015b01549061279a565b600983016001015560a08301516033546040805187815290516001600160a01b0393841693899316917f13f7471cab9806ac4ff5d80ae879babfbf1081e240d05c4450b75f69c626cb2e919081900360200190a45b5090519055919050565b60008080808481602002015115610f9a57610f9786611e40565b93505b602085015115610fb057610fad86610cb0565b92505b604085015115