tokenboost-solidity-erc20sale
Version:
Solidity contracts for TokenBoost (ERC20Sale)
766 lines • 493 kB
JSON
{
"contractName": "ERC20Sale",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "_interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfStrategies",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "activate",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "strategyAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "activated",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC165",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "started",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_ERC20Sale",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "whitepaperUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfActivatedStrategies",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "weiRaised",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "index",
"type": "uint256"
}
],
"name": "activatedStrategyAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "numberOfPurchasers",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "template",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "videoUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectDescription",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_template",
"type": "address"
},
{
"name": "_bytecode",
"type": "bytes"
}
],
"name": "addStrategy",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "owner",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_index",
"type": "uint256"
}
],
"name": "purchaserAt",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "logoUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectName",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "successful",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "projectSummary",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "websiteUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "claimRefund",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "finished",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "withdrawn",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_purchaser",
"type": "address"
}
],
"name": "paymentOf",
"outputs": [
{
"name": "weiAmount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Sale",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "coverImageUrl",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "InterfaceId_Contract",
"outputs": [
{
"name": "",
"type": "bytes4"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "token",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_projectName",
"type": "string"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_token",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "purchaser",
"type": "address"
},
{
"indexed": false,
"name": "weiAmount",
"type": "uint256"
},
{
"indexed": false,
"name": "tokenAmount",
"type": "uint256"
}
],
"name": "TokenPurchase",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
}
],
"name": "OwnershipRenounced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"constant": true,
"inputs": [
{
"name": "_purchaser",
"type": "address"
}
],
"name": "tokenAmountOf",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_projectName",
"type": "string"
},
{
"name": "_projectSummary",
"type": "string"
},
{
"name": "_projectDescription",
"type": "string"
},
{
"name": "_logoUrl",
"type": "string"
},
{
"name": "_coverImageUrl",
"type": "string"
},
{
"name": "_websiteUrl",
"type": "string"
},
{
"name": "_whitepaperUrl",
"type": "string"
},
{
"name": "_videoUrl",
"type": "string"
},
{
"name": "_name",
"type": "string"
}
],
"name": "update",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_projectName",
"type": "string"
},
{
"name": "_projectSummary",
"type": "string"
},
{
"name": "_projectDescription",
"type": "string"
},
{
"name": "_logoUrl",
"type": "string"
},
{
"name": "_coverImageUrl",
"type": "string"
},
{
"name": "_websiteUrl",
"type": "string"
},
{
"name": "_whitepaperUrl",
"type": "string"
},
{
"name": "_videoUrl",
"type": "string"
},
{
"name": "_name",
"type": "string"
},
{
"name": "_token",
"type": "address"
}
],
"name": "update",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_weiAmount",
"type": "uint256"
}
],
"name": "purchasable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_weiAmount",
"type": "uint256"
}
],
"name": "getTokenAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002608380380620026088339810160409081528151602083015191830151606084015160008054600160a060020a031916331790559193928301920190838383826200008b7f01ffc9a700000000000000000000000000000000000000000000000000000000640100000000620001d1810204565b600160a060020a0381161515620000a157600080fd5b6002805433600160a060020a03199182161790915560008054909116600160a060020a038316179055620000fe7f6125ede500000000000000000000000000000000000000000000000000000000640100000000620001d1810204565b5081516200011490600390602085019062000241565b5080516200012a90600b90602084019062000241565b506200015f7f5efbb02200000000000000000000000000000000000000000000000000000000640100000000620001d1810204565b505050600160a060020a03811615156200017857600080fd5b60138054600160a060020a031916600160a060020a038316179055620001c77f90e2f49400000000000000000000000000000000000000000000000000000000640100000000620001d1810204565b50505050620002e6565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200020157600080fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152600160208190526040909120805460ff19169091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200028457805160ff1916838001178555620002b4565b82800160010185558215620002b4579182015b82811115620002b457825182559160200191906001019062000297565b50620002c2929150620002c6565b5090565b620002e391905b80821115620002c25760008155600101620002cd565b90565b61231280620002f66000396000f3006080604052600436106101df5763ffffffff60e060020a60003504166301ffc9a781146102c357806306fdde031461030e5780630956e5a6146103985780630f15f4c0146103bf5780630fc8c0b6146103d4578063184efbb014610408578063186601ca1461065357806319fa8f50146106685780631f2698ab146106af57806327f6c75a146106c45780632c7a72f8146106d9578063334ff632146106ee5780633ccfd60b146107035780634042b66f146107185780635027a9161461072d578063580c2ae914610745578063655ded031461075a5780636f2ddd9314610772578063715018a61461078757806373c9fbe21461079c578063755f047b146107b15780637aeedf2a146107c65780638da5cb5b1461082057806391c62b791461083557806397b150ca1461084d578063993d77af1461086e5780639a33e300146108835780639a9e3fd8146108985780639ec318bf146108ad578063abb5ca09146108c2578063b5545a3c146108d7578063bef4876b146108ec578063c2507ac114610901578063c80ec52214610919578063cdd5fce51461092e578063cf7c2b3114610b82578063d04be2da14610ba3578063dea53c2014610bb8578063f2fde38b14610bcd578063fbf964eb14610bee578063fc0c546a14610c03575b6000806000600260149054906101000a900460ff1615156101ff57600080fd5b610207610c18565b1561021157600080fd5b610219610cf5565b151561022457600080fd5b61022d34610dd1565b151561023857600080fd5b3392506102458334610ebd565b61024e34610fe9565b915061025a83836110e5565b610264838361112e565b90506102708183611217565b151561027b57600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102cf57600080fd5b506102fa7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166112f5565b604080519115158252519081900360200190f35b34801561031a57600080fd5b50610323611329565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a457600080fd5b506103ad6113b7565b60408051918252519081900360200190f35b3480156103cb57600080fd5b506102fa6113be565b3480156103e057600080fd5b506103ec6004356114f9565b60408051600160a060020a039092168252519081900360200190f35b34801561041457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261065194369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115259650505050505050565b005b34801561065f57600080fd5b506102fa611612565b34801561067457600080fd5b5061067d611622565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156106bb57600080fd5b506102fa610cf5565b3480156106d057600080fd5b5061067d611646565b3480156106e557600080fd5b5061032361166a565b3480156106fa57600080fd5b506103ad6116c5565b34801561070f57600080fd5b506102fa6116cb565b34801561072457600080fd5b506103ad611774565b34801561073957600080fd5b506103ec60043561177a565b34801561075157600080fd5b506103ad61178b565b34801561076657600080fd5b506102fa600435610dd1565b34801561077e57600080fd5b506103ec611791565b34801561079357600080fd5b506106516117a0565b3480156107a857600080fd5b5061032361180c565b3480156107bd57600080fd5b50610323611867565b60408051602060046024803582810135601f8101859004850286018501909652858552610651958335600160a060020a03169536956044949193909101919081908401838280828437509497506118c29650505050505050565b34801561082c57600080fd5b506103ec611c35565b34801561084157600080fd5b506103ec600435611c44565b34801561085957600080fd5b506103ad600160a060020a0360043516611c55565b34801561087a57600080fd5b50610323611c70565b34801561088f57600080fd5b50610323611ccb565b3480156108a457600080fd5b506102fa611d26565b3480156108b957600080fd5b50610323611dfa565b3480156108ce57600080fd5b50610323611e55565b3480156108e357600080fd5b506102fa611eb0565b3480156108f857600080fd5b506102fa610c18565b34801561090d57600080fd5b506103ad600435610fe9565b34801561092557600080fd5b506102fa611f54565b34801561093a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261065194369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a03169350611f5d92505050565b348015610b8e57600080fd5b506103ad600160a060020a0360043516611fa6565b348015610baf57600080fd5b5061067d611fc1565b348015610bc457600080fd5b50610323611fe5565b348015610bd957600080fd5b50610651600160a060020a0360043516612040565b348015610bfa57600080fd5b5061067d612063565b348015610c0f57600080fd5b506103ec612087565b6000806000610c25610cf5565b1515610c345760009250610cf0565b5060009050805b600f54811015610cec578180610ce25750600f805482908110610c5a57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b50515b9150600101610c3b565b8192505b505090565b6000806000600260149054906101000a900460ff161515610d195760009250610cf0565b5060009050805b600f54811015610cec578180610dc75750600f805482908110610d3f57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b50515b9150600101610d20565b6000600181805b600f54821015610eb157600f805483908110610df057fe5b600091825260209091200154600160a060020a03169050828015610ea45750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b505050506040513d6020811015610ea157600080fd5b50515b9250600190910190610dd8565b8293505b505050919050565b6000610ec7610c18565b15610ed157600080fd5b610ed9610cf5565b1515610ee457600080fd5b600160a060020a038316600090815260106020526040902054610f0d908363ffffffff61209616565b600160a060020a038416600090815260106020526040902055600c54610f39908363ffffffff61209616565b600c555060005b601154811015610f8b5782600160a060020a0316601182815481101515610f6357fe5b600091825260209091200154600160a060020a03161415610f8357610fe4565b600101610f40565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f548310156110da57600f80548490811061100757fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b15801561108157600080fd5b505af1158015611095573d6000803e3d6000fd5b505050506040513d60208110156110ab57600080fd5b5051905060008111156110cf576110c8858263ffffffff6120a916565b9350610eb5565b600190920191610fef565b506000949350505050565b600160a060020a03821660009081526012602052604090205461110e908263ffffffff61209616565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561120b57600f80548390811061114b57fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b505050506040513d60208110156111f157600080fd5b5051156112005780925061120f565b600190910190611133565b8492505b505092915050565b600080805b600f548210156110da57600f80548390811061123457fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b505050506040513d60208110156112da57600080fd5b5051156112ea576001925061120f565b60019091019061121c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b820191906000526020600020905b81548152906001019060200180831161139257829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a031633146113da57600080fd5b600091505b600e548210156114ea57600e8054839081106113f757fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561145557600080fd5b505af1158015611469573d6000803e3d6000fd5b505050506040513d602081101561147f57600080fd5b5051156114df57600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b6001909101906113df565b6114f26120d2565b9250505090565b6000600e8281548110151561150a57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a0316331461153c57600080fd5b60025460a060020a900460ff161561155357600080fd5b88516115669060039060208c0190612258565b50875161157a9060049060208b0190612258565b50865161158e9060059060208a0190612258565b5085516115a2906006906020890190612258565b5084516115b6906007906020880190612258565b5083516115ca906008906020870190612258565b5082516115de906009906020860190612258565b5081516115f290600a906020850190612258565b50805161160690600b906020840190612258565b50505050505050505050565b60025460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b7f90e2f4940000000000000000000000000000000000000000000000000000000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b600f5490565b60008054600160a060020a031633146116e357600080fd5b60025460a060020a900460ff1615156116fb57600080fd5b600d5460ff161561170b57600080fd5b611713610c18565b151561171e57600080fd5b611726611d26565b151561173157600080fd5b600d805460ff19166001179055600c54604051339180156108fc02916000818181858888f1935050505015801561176c573d6000803e3d6000fd5b506001905090565b600c5481565b6000600f8281548110151561150a57fe5b60115490565b600254600160a060020a031681565b600054600160a060020a031633146117b757600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6000805460609190600160a060020a031633146118de57600080fd5b60025460a060020a900460ff16156118f557600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000080825260048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b505050506040513d602081101561198057600080fd5b5051151561198d57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b50511515611a4557600080fd5b611a4e846120fb565b1515611a5957600080fd5b60408051336020808301919091523082840152825180830384018152606083018085527f6535b4a500000000000000000000000000000000000000000000000000000000905260648301938452865160a48401528651909550600160a060020a03881693636535b4a593349389938993928392608482019260c4909201919087019080838360005b83811015611af9578181015183820152602001611ae1565b50505050905090810190601f168015611b265780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611b59578181015183820152602001611b41565b50505050905090810190601f168015611b865780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b158015611ba657600080fd5b505af1158015611bba573d6000803e3d6000fd5b50505050506040513d6020811015611bd157600080fd5b5051600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550505050565b600054600160a060020a031681565b600060118281548110151561150a57fe5b600160a060020a031660009081526012602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6000806000611d33610cf5565b1515611d425760009250610cf0565b5060009050805b600f54811015610cec578180611df05750600f805482908110611d6857fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316639a9e3fd86040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611dc357600080fd5b505af1158015611dd7573d6000803e3d6000fd5b505050506040513d6020811015611ded57600080fd5b50515b9150600101611d49565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b600254600090819060a060020a900460ff161515611ecd57600080fd5b611ed5610c18565b1515611ee057600080fd5b611ee8611d26565b15611ef257600080fd5b5033600090815260106020526040812054908111611f0f57600080fd5b336000818152601060205260408082208290555183156108fc0291849190818181858888f19350505050158015611f4a573d6000803e3d6000fd5b50600191505b5090565b600d5460ff1681565b611f6e8a8a8a8a8a8a8a8a8a611525565b6013805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055505050505050505050565b600160a060020a031660009081526010602052604090205490565b7f5efbb0220000000000000000000000000000000000000000000000000000000081565b6007805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b600054600160a060020a0316331461205757600080fd5b612060816121db565b50565b7f6125ede50000000000000000000000000000000000000000000000000000000081565b601354600160a060020a031681565b818101828110156120a357fe5b92915050565b60008215156120ba575060006120a3565b508181028183828115156120ca57fe5b04146120a357fe5b6002805474ff0000000000000000000000000000000000000000191660a060020a179055600190565b600080805b600e548210156121cf57600e80548390811061211857fe5b9060005260206000200160009054906101000a9004600160a060020a0316905083600160a060020a031681600160a060020a0316636f2ddd936040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561218057600080fd5b505af1158015612194573d6000803e3d6000fd5b505050506040513d60208110156121aa57600080fd5b5051600160a060020a031614156121c457600092506121d4565b600190910190612100565b600192505b5050919050565b600160a060020a03811615156121f057600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061229957805160ff19168380011785556122c6565b828001600101855582156122c6579182015b828111156122c65782518255916020019190600101906122ab565b50611f50926113bb9250905b80821115611f5057600081556001016122d25600a165627a7a72305820cbd5739f1c2b2f344e9fc6d51fc0c43b412f857feefe99b39356fbb825d0ddbe0029",
"deployedBytecode": "0x6080604052600436106101df5763ffffffff60e060020a60003504166301ffc9a781146102c357806306fdde031461030e5780630956e5a6146103985780630f15f4c0146103bf5780630fc8c0b6146103d4578063184efbb014610408578063186601ca1461065357806319fa8f50146106685780631f2698ab146106af57806327f6c75a146106c45780632c7a72f8146106d9578063334ff632146106ee5780633ccfd60b146107035780634042b66f146107185780635027a9161461072d578063580c2ae914610745578063655ded031461075a5780636f2ddd9314610772578063715018a61461078757806373c9fbe21461079c578063755f047b146107b15780637aeedf2a146107c65780638da5cb5b1461082057806391c62b791461083557806397b150ca1461084d578063993d77af1461086e5780639a33e300146108835780639a9e3fd8146108985780639ec318bf146108ad578063abb5ca09146108c2578063b5545a3c146108d7578063bef4876b146108ec578063c2507ac114610901578063c80ec52214610919578063cdd5fce51461092e578063cf7c2b3114610b82578063d04be2da14610ba3578063dea53c2014610bb8578063f2fde38b14610bcd578063fbf964eb14610bee578063fc0c546a14610c03575b6000806000600260149054906101000a900460ff1615156101ff57600080fd5b610207610c18565b1561021157600080fd5b610219610cf5565b151561022457600080fd5b61022d34610dd1565b151561023857600080fd5b3392506102458334610ebd565b61024e34610fe9565b915061025a83836110e5565b610264838361112e565b90506102708183611217565b151561027b57600080fd5b60408051348152602081018490528151600160a060020a038616927fcd60aa75dea3072fbc07ae6d7d856b5dc5f4eee88854f5b4abf7b680ef8bc50f928290030190a2505050005b3480156102cf57600080fd5b506102fa7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600435166112f5565b604080519115158252519081900360200190f35b34801561031a57600080fd5b50610323611329565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561035d578181015183820152602001610345565b50505050905090810190601f16801561038a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103a457600080fd5b506103ad6113b7565b60408051918252519081900360200190f35b3480156103cb57600080fd5b506102fa6113be565b3480156103e057600080fd5b506103ec6004356114f9565b60408051600160a060020a039092168252519081900360200190f35b34801561041457600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261065194369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a9998810197919650918201945092508291508401838280828437509497506115259650505050505050565b005b34801561065f57600080fd5b506102fa611612565b34801561067457600080fd5b5061067d611622565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff199092168252519081900360200190f35b3480156106bb57600080fd5b506102fa610cf5565b3480156106d057600080fd5b5061067d611646565b3480156106e557600080fd5b5061032361166a565b3480156106fa57600080fd5b506103ad6116c5565b34801561070f57600080fd5b506102fa6116cb565b34801561072457600080fd5b506103ad611774565b34801561073957600080fd5b506103ec60043561177a565b34801561075157600080fd5b506103ad61178b565b34801561076657600080fd5b506102fa600435610dd1565b34801561077e57600080fd5b506103ec611791565b34801561079357600080fd5b506106516117a0565b3480156107a857600080fd5b5061032361180c565b3480156107bd57600080fd5b50610323611867565b60408051602060046024803582810135601f8101859004850286018501909652858552610651958335600160a060020a03169536956044949193909101919081908401838280828437509497506118c29650505050505050565b34801561082c57600080fd5b506103ec611c35565b34801561084157600080fd5b506103ec600435611c44565b34801561085957600080fd5b506103ad600160a060020a0360043516611c55565b34801561087a57600080fd5b50610323611c70565b34801561088f57600080fd5b50610323611ccb565b3480156108a457600080fd5b506102fa611d26565b3480156108b957600080fd5b50610323611dfa565b3480156108ce57600080fd5b50610323611e55565b3480156108e357600080fd5b506102fa611eb0565b3480156108f857600080fd5b506102fa610c18565b34801561090d57600080fd5b506103ad600435610fe9565b34801561092557600080fd5b506102fa611f54565b34801561093a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261065194369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375094975050509235600160a060020a03169350611f5d92505050565b348015610b8e57600080fd5b506103ad600160a060020a0360043516611fa6565b348015610baf57600080fd5b5061067d611fc1565b348015610bc457600080fd5b50610323611fe5565b348015610bd957600080fd5b50610651600160a060020a0360043516612040565b348015610bfa57600080fd5b5061067d612063565b348015610c0f57600080fd5b506103ec612087565b6000806000610c25610cf5565b1515610c345760009250610cf0565b5060009050805b600f54811015610cec578180610ce25750600f805482908110610c5a57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a031663bef4876b6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610cb557600080fd5b505af1158015610cc9573d6000803e3d6000fd5b505050506040513d6020811015610cdf57600080fd5b50515b9150600101610c3b565b8192505b505090565b6000806000600260149054906101000a900460ff161515610d195760009250610cf0565b5060009050805b600f54811015610cec578180610dc75750600f805482908110610d3f57fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316631f2698ab6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610d9a57600080fd5b505af1158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b50515b9150600101610d20565b6000600181805b600f54821015610eb157600f805483908110610df057fe5b600091825260209091200154600160a060020a03169050828015610ea45750604080517f4f9a82d6000000000000000000000000000000000000000000000000000000008152336004820152602481018790529051600160a060020a03831691634f9a82d69160448083019260209291908290030181600087803b158015610e7757600080fd5b505af1158015610e8b573d6000803e3d6000fd5b505050506040513d6020811015610ea157600080fd5b50515b9250600190910190610dd8565b8293505b505050919050565b6000610ec7610c18565b15610ed157600080fd5b610ed9610cf5565b1515610ee457600080fd5b600160a060020a038316600090815260106020526040902054610f0d908363ffffffff61209616565b600160a060020a038416600090815260106020526040902055600c54610f39908363ffffffff61209616565b600c555060005b601154811015610f8b5782600160a060020a0316601182815481101515610f6357fe5b600091825260209091200154600160a060020a03161415610f8357610fe4565b600101610f40565b601180546001810182556000919091527f31ecc21a745e3968a04e9570e4425bc18fa8019c68028196b546d1669c200c6801805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0385161790555b505050565b60008080805b600f548310156110da57600f80548490811061100757fe5b6000918252602080832090910154604080517f5589530e000000000000000000000000000000000000000000000000000000008152336004820152602481018a90529051600160a060020a0390921695508593635589530e9360448084019491939192918390030190829087803b15801561108157600080fd5b505af1158015611095573d6000803e3d6000fd5b505050506040513d60208110156110ab57600080fd5b5051905060008111156110cf576110c8858263ffffffff6120a916565b9350610eb5565b600190920191610fef565b506000949350505050565b600160a060020a03821660009081526012602052604090205461110e908263ffffffff61209616565b600160a060020a0390921660009081526012602052604090209190915550565b600080805b600f5482101561120b57600f80548390811061114b57fe5b6000918252602080832090910154604080517fe67c8646000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363e67c864693604480850194919392918390030190829087803b1580156111c757600080fd5b505af11580156111db573d6000803e3d6000fd5b505050506040513d60208110156111f157600080fd5b5051156112005780925061120f565b600190910190611133565b8492505b505092915050565b600080805b600f548210156110da57600f80548390811061123457fe5b6000918252602080832090910154604080517f587775e8000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152602482018a90529151919092169450849363587775e893604480850194919392918390030190829087803b1580156112b057600080fd5b505af11580156112c4573d6000803e3d6000fd5b505050506040513d60208110156112da57600080fd5b5051156112ea576001925061120f565b60019091019061121c565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660009081526001602052604090205460ff1690565b600b805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b820191906000526020600020905b81548152906001019060200180831161139257829003601f168201915b505050505081565b600e545b90565b6000805481908190600160a060020a031633146113da57600080fd5b600091505b600e548210156114ea57600e8054839081106113f757fe5b9060005260206000200160009054906101000a9004600160a060020a0316905080600160a060020a031663186601ca6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561145557600080fd5b505af1158015611469573d6000803e3d6000fd5b505050506040513d602081101561147f57600080fd5b5051156114df57600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac80201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b6001909101906113df565b6114f26120d2565b9250505090565b6000600e8281548110151561150a57fe5b600091825260209091200154600160a060020a031692915050565b600054600160a060020a0316331461153c57600080fd5b60025460a060020a900460ff161561155357600080fd5b88516115669060039060208c0190612258565b50875161157a9060049060208b0190612258565b50865161158e9060059060208a0190612258565b5085516115a2906006906020890190612258565b5084516115b6906007906020880190612258565b5083516115ca906008906020870190612258565b5082516115de906009906020860190612258565b5081516115f290600a906020850190612258565b50805161160690600b906020840190612258565b50505050505050505050565b60025460a060020a900460ff1681565b7f01ffc9a70000000000000000000000000000000000000000000000000000000081565b7f90e2f4940000000000000000000000000000000000000000000000000000000081565b6009805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b600f5490565b60008054600160a060020a031633146116e357600080fd5b60025460a060020a900460ff1615156116fb57600080fd5b600d5460ff161561170b57600080fd5b611713610c18565b151561171e57600080fd5b611726611d26565b151561173157600080fd5b600d805460ff19166001179055600c54604051339180156108fc02916000818181858888f1935050505015801561176c573d6000803e3d6000fd5b506001905090565b600c5481565b6000600f8281548110151561150a57fe5b60115490565b600254600160a060020a031681565b600054600160a060020a031633146117b757600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b600a805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6000805460609190600160a060020a031633146118de57600080fd5b60025460a060020a900460ff16156118f557600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000080825260048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b15801561195657600080fd5b505af115801561196a573d6000803e3d6000fd5b505050506040513d602081101561198057600080fd5b5051151561198d57600080fd5b604080517f01ffc9a70000000000000000000000000000000000000000000000000000000081527fd48445ff0000000000000000000000000000000000000000000000000000000060048201529051600160a060020a038616916301ffc9a79160248083019260209291908290030181600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050506040513d6020811015611a3857600080fd5b50511515611a4557600080fd5b611a4e846120fb565b1515611a5957600080fd5b60408051336020808301919091523082840152825180830384018152606083018085527f6535b4a500000000000000000000000000000000000000000000000000000000905260648301938452865160a48401528651909550600160a060020a03881693636535b4a593349389938993928392608482019260c4909201919087019080838360005b83811015611af9578181015183820152602001611ae1565b50505050905090810190601f168015611b265780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611b59578181015183820152602001611b41565b50505050905090810190601f168015611b865780820380516001836020036101000a031916815260200191505b509450505050506020604051808303818588803b158015611ba657600080fd5b505af1158015611bba573d6000803e3d6000fd5b50505050506040513d6020811015611bd157600080fd5b5051600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd01805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0390921691909117905550505050565b600054600160a060020a031681565b600060118281548110151561150a57fe5b600160a060020a031660009081526012602052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6003805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6000806000611d33610cf5565b1515611d425760009250610cf0565b5060009050805b600f54811015610cec578180611df05750600f805482908110611d6857fe5b9060005260206000200160009054906101000a9004600160a060020a0316600160a060020a0316639a9e3fd86040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015611dc357600080fd5b505af1158015611dd7573d6000803e3d6000fd5b505050506040513d6020811015611ded57600080fd5b50515b9150600101611d49565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156113af5780601f10611384576101008083540402835291602001916113af565b600254600090819060a060020a900460ff161515611ecd57600080fd5b611ed5610c18565b1515611ee057