├── .babelrc ├── .gitignore ├── README.md ├── bin ├── compile-typings └── test ├── chai-bignumber.d.ts ├── contracts.d.ts ├── contracts ├── Migrations.sol └── SimpleSale.sol ├── ethpm.json ├── generate.ts ├── installed_contracts └── zeppelin │ ├── ethpm.json │ ├── lock.json │ └── lock.uri ├── migrations ├── 1_initial_migration.js └── 2_deploy_contracts.js ├── package.json ├── test └── SimpleSale.ts ├── truffle.d.ts ├── truffle.js ├── tsconfig.json ├── web3.d.ts └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2", "stage-3"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /build 3 | coverage.json 4 | coverage/ 5 | 6 | # Ignore our compiled js_test directory 7 | /js_test 8 | 9 | # Don't check in our installed ethpm dependency source. Just the lockfile details. 10 | installed_contracts/**/*.sol 11 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # TypeScript + Solidity 2 | 3 | * Run `yarn` then `./node_modules/.bin/truffle install` to get setup 4 | * `./node_modules/.bin/truffle compile` to make sure everything builds 5 | * `bin/compile-typings` to compile TypeScript typings from ABIs 6 | * `bin/test` to run test suite 7 | -------------------------------------------------------------------------------- /bin/compile-typings: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | compile_typings() { 4 | ./node_modules/.bin/ts-node generate.ts 5 | } 6 | 7 | format_typings() { 8 | ./node_modules/.bin/prettier 9 | } 10 | 11 | update_typings() { 12 | compile_typings | format_typings > contracts.d.ts 13 | } 14 | 15 | compile_solidity() { 16 | ./node_modules/.bin/truffle compile 17 | } 18 | 19 | compile_solidity 20 | update_typings 21 | -------------------------------------------------------------------------------- /bin/test: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Exit script as soon as a command fails. 4 | set -o errexit 5 | 6 | # Executes cleanup function at script exit. 7 | trap cleanup EXIT 8 | 9 | cleanup() { 10 | # Kill the testrpc instance that we started (if we started one and if it's still running). 11 | if descendant_testrpc_exists; then 12 | kill_descendant_testrpc "$background_pid" 13 | fi 14 | } 15 | 16 | if [ "$SOLIDITY_COVERAGE" = true ]; then 17 | testrpc_port=8555 18 | else 19 | testrpc_port=8545 20 | fi 21 | 22 | kill_descendant_testrpc() { 23 | local parent_pid="$1" 24 | 25 | # The `-P` flag only looks for processes that are a child of the provided 26 | # pid. This makes sure we don't kill other testrpc commands that might be running. 27 | # 28 | # The `-f` flag lets us match against arguments which is important because the 29 | # testrpc command looks like this: 30 | # 31 | # 32938 s002 S 0:03.05 node node_modules/.bin/testrpc --gasLimit 100000000 32 | # 33 | # where `node` is the process name and `testrpc` is just part of an argument 34 | pkill -P "$parent_pid" -f testrpc > /dev/null 35 | } 36 | 37 | descendant_testrpc_exists() { 38 | pgrep -f testrpc > /dev/null 39 | } 40 | 41 | testrpc_running() { 42 | nc -z localhost "$testrpc_port" 43 | } 44 | 45 | testrpc() { 46 | if [ "$SOLIDITY_COVERAGE" = true ]; then 47 | node_modules/.bin/testrpc-sc --gasLimit 0xfffffffffff --port "$testrpc_port" "$@" 48 | else 49 | node_modules/.bin/testrpc "$@" 50 | fi 51 | } 52 | 53 | remove_compiled_tests() { 54 | if [ -d ./js_test ]; then 55 | rm -r ./js_test 56 | fi 57 | } 58 | 59 | compile_tests() { 60 | remove_compiled_tests 61 | 62 | # Copy over files so we include things like mock contracts 63 | cp -r ./test ./js_test 64 | 65 | # Compile into the js_test directory 66 | node_modules/.bin/tsc 67 | } 68 | 69 | compiled_test_files() { 70 | # Return a list of compiled test files 71 | find js_test -type f 72 | } 73 | 74 | if testrpc_running; then 75 | echo "Using existing testrpc instance" 76 | else 77 | echo "Starting our own testrpc instance" 78 | testrpc --gasLimit 100000000 > /dev/null & 79 | background_pid="$!" 80 | fi 81 | 82 | if [ "$SOLIDITY_COVERAGE" = true ]; then 83 | node_modules/.bin/solidity-coverage 84 | else 85 | compile_tests 86 | compiled_test_files | xargs node_modules/.bin/truffle test "$@" 87 | fi 88 | -------------------------------------------------------------------------------- /chai-bignumber.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module "chai-bignumber" { 4 | function chaiBignumber(bignumber: any): (chai: any, utils: any) => void; 5 | 6 | namespace chaiBignumber { 7 | 8 | } 9 | 10 | export = chaiBignumber; 11 | } 12 | 13 | declare namespace Chai { 14 | // For BDD API 15 | interface Assertion extends LanguageChains, NumericComparison, TypeComparison { 16 | bignumber: Assertion; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts.d.ts: -------------------------------------------------------------------------------- 1 | import * as Web3 from "web3"; 2 | import * as BigNumber from "bignumber.js"; 3 | 4 | type Address = string; 5 | type TransactionOptions = Partial; 6 | type UInt = number | BigNumber.BigNumber; 7 | 8 | interface Transaction { 9 | hash: string; 10 | nonce: number; 11 | blockHash: string | null; 12 | blockNumber: number | null; 13 | transactionIndex: number | null; 14 | from: Address | ContractInstance; 15 | to: string | null; 16 | value: UInt; 17 | gasPrice: UInt; 18 | gas: number; 19 | input: string; 20 | } 21 | 22 | interface ContractInstance { 23 | address: string; 24 | sendTransaction(options?: TransactionOptions): Promise; 25 | } 26 | 27 | export interface BasicTokenInstance extends ContractInstance { 28 | totalSupply(options?: TransactionOptions): Promise; 29 | balanceOf( 30 | owner: Address, 31 | options?: TransactionOptions 32 | ): Promise; 33 | transfer( 34 | to: Address, 35 | value: UInt, 36 | options?: TransactionOptions 37 | ): Promise; 38 | } 39 | 40 | export interface CrowdsaleInstance extends ContractInstance { 41 | rate(options?: TransactionOptions): Promise; 42 | endTime(options?: TransactionOptions): Promise; 43 | weiRaised(options?: TransactionOptions): Promise; 44 | wallet(options?: TransactionOptions): Promise
; 45 | startTime(options?: TransactionOptions): Promise; 46 | buyTokens(beneficiary: Address, options?: TransactionOptions): Promise; 47 | hasEnded(options?: TransactionOptions): Promise; 48 | token(options?: TransactionOptions): Promise
; 49 | } 50 | 51 | export interface ERC20Instance extends ContractInstance { 52 | approve( 53 | spender: Address, 54 | value: UInt, 55 | options?: TransactionOptions 56 | ): Promise; 57 | totalSupply(options?: TransactionOptions): Promise; 58 | transferFrom( 59 | from: Address, 60 | to: Address, 61 | value: UInt, 62 | options?: TransactionOptions 63 | ): Promise; 64 | balanceOf( 65 | who: Address, 66 | options?: TransactionOptions 67 | ): Promise; 68 | transfer( 69 | to: Address, 70 | value: UInt, 71 | options?: TransactionOptions 72 | ): Promise; 73 | allowance( 74 | owner: Address, 75 | spender: Address, 76 | options?: TransactionOptions 77 | ): Promise; 78 | } 79 | 80 | export interface ERC20BasicInstance extends ContractInstance { 81 | totalSupply(options?: TransactionOptions): Promise; 82 | balanceOf( 83 | who: Address, 84 | options?: TransactionOptions 85 | ): Promise; 86 | transfer( 87 | to: Address, 88 | value: UInt, 89 | options?: TransactionOptions 90 | ): Promise; 91 | } 92 | 93 | export interface LimitedTransferTokenInstance extends ContractInstance { 94 | approve( 95 | spender: Address, 96 | value: UInt, 97 | options?: TransactionOptions 98 | ): Promise; 99 | totalSupply(options?: TransactionOptions): Promise; 100 | transferFrom( 101 | from: Address, 102 | to: Address, 103 | value: UInt, 104 | options?: TransactionOptions 105 | ): Promise; 106 | balanceOf( 107 | who: Address, 108 | options?: TransactionOptions 109 | ): Promise; 110 | transfer( 111 | to: Address, 112 | value: UInt, 113 | options?: TransactionOptions 114 | ): Promise; 115 | transferableTokens( 116 | holder: Address, 117 | time: UInt, 118 | options?: TransactionOptions 119 | ): Promise; 120 | allowance( 121 | owner: Address, 122 | spender: Address, 123 | options?: TransactionOptions 124 | ): Promise; 125 | } 126 | 127 | export interface MathInstance extends ContractInstance {} 128 | 129 | export interface MigrationsInstance extends ContractInstance { 130 | upgrade(new_address: Address, options?: TransactionOptions): Promise; 131 | last_completed_migration( 132 | options?: TransactionOptions 133 | ): Promise; 134 | owner(options?: TransactionOptions): Promise
; 135 | setCompleted(completed: UInt, options?: TransactionOptions): Promise; 136 | } 137 | 138 | export interface MintableTokenInstance extends ContractInstance { 139 | mintingFinished(options?: TransactionOptions): Promise; 140 | approve( 141 | spender: Address, 142 | value: UInt, 143 | options?: TransactionOptions 144 | ): Promise; 145 | totalSupply(options?: TransactionOptions): Promise; 146 | transferFrom( 147 | from: Address, 148 | to: Address, 149 | value: UInt, 150 | options?: TransactionOptions 151 | ): Promise; 152 | mint( 153 | to: Address, 154 | amount: UInt, 155 | options?: TransactionOptions 156 | ): Promise; 157 | decreaseApproval( 158 | spender: Address, 159 | subtractedValue: UInt, 160 | options?: TransactionOptions 161 | ): Promise; 162 | balanceOf( 163 | owner: Address, 164 | options?: TransactionOptions 165 | ): Promise; 166 | finishMinting(options?: TransactionOptions): Promise; 167 | owner(options?: TransactionOptions): Promise
; 168 | transfer( 169 | to: Address, 170 | value: UInt, 171 | options?: TransactionOptions 172 | ): Promise; 173 | increaseApproval( 174 | spender: Address, 175 | addedValue: UInt, 176 | options?: TransactionOptions 177 | ): Promise; 178 | allowance( 179 | owner: Address, 180 | spender: Address, 181 | options?: TransactionOptions 182 | ): Promise; 183 | transferOwnership( 184 | newOwner: Address, 185 | options?: TransactionOptions 186 | ): Promise; 187 | } 188 | 189 | export interface OwnableInstance extends ContractInstance { 190 | owner(options?: TransactionOptions): Promise
; 191 | transferOwnership( 192 | newOwner: Address, 193 | options?: TransactionOptions 194 | ): Promise; 195 | } 196 | 197 | export interface SafeMathInstance extends ContractInstance {} 198 | 199 | export interface SimpleSaleInstance extends ContractInstance { 200 | rate(options?: TransactionOptions): Promise; 201 | endTime(options?: TransactionOptions): Promise; 202 | weiRaised(options?: TransactionOptions): Promise; 203 | wallet(options?: TransactionOptions): Promise
; 204 | startTime(options?: TransactionOptions): Promise; 205 | buyTokens(beneficiary: Address, options?: TransactionOptions): Promise; 206 | hasEnded(options?: TransactionOptions): Promise; 207 | token(options?: TransactionOptions): Promise
; 208 | } 209 | 210 | export interface SimpleTokenInstance extends ContractInstance { 211 | mintingFinished(options?: TransactionOptions): Promise; 212 | approve( 213 | spender: Address, 214 | value: UInt, 215 | options?: TransactionOptions 216 | ): Promise; 217 | totalSupply(options?: TransactionOptions): Promise; 218 | transferFrom( 219 | from: Address, 220 | to: Address, 221 | value: UInt, 222 | options?: TransactionOptions 223 | ): Promise; 224 | mint( 225 | to: Address, 226 | amount: UInt, 227 | options?: TransactionOptions 228 | ): Promise; 229 | decreaseApproval( 230 | spender: Address, 231 | subtractedValue: UInt, 232 | options?: TransactionOptions 233 | ): Promise; 234 | balanceOf( 235 | owner: Address, 236 | options?: TransactionOptions 237 | ): Promise; 238 | finishMinting(options?: TransactionOptions): Promise; 239 | owner(options?: TransactionOptions): Promise
; 240 | transfer( 241 | to: Address, 242 | value: UInt, 243 | options?: TransactionOptions 244 | ): Promise; 245 | increaseApproval( 246 | spender: Address, 247 | addedValue: UInt, 248 | options?: TransactionOptions 249 | ): Promise; 250 | allowance( 251 | owner: Address, 252 | spender: Address, 253 | options?: TransactionOptions 254 | ): Promise; 255 | transferOwnership( 256 | newOwner: Address, 257 | options?: TransactionOptions 258 | ): Promise; 259 | } 260 | 261 | export interface StandardTokenInstance extends ContractInstance { 262 | approve( 263 | spender: Address, 264 | value: UInt, 265 | options?: TransactionOptions 266 | ): Promise; 267 | totalSupply(options?: TransactionOptions): Promise; 268 | transferFrom( 269 | from: Address, 270 | to: Address, 271 | value: UInt, 272 | options?: TransactionOptions 273 | ): Promise; 274 | decreaseApproval( 275 | spender: Address, 276 | subtractedValue: UInt, 277 | options?: TransactionOptions 278 | ): Promise; 279 | balanceOf( 280 | owner: Address, 281 | options?: TransactionOptions 282 | ): Promise; 283 | transfer( 284 | to: Address, 285 | value: UInt, 286 | options?: TransactionOptions 287 | ): Promise; 288 | increaseApproval( 289 | spender: Address, 290 | addedValue: UInt, 291 | options?: TransactionOptions 292 | ): Promise; 293 | allowance( 294 | owner: Address, 295 | spender: Address, 296 | options?: TransactionOptions 297 | ): Promise; 298 | } 299 | 300 | export interface VestedTokenInstance extends ContractInstance { 301 | tokenGrantsCount( 302 | holder: Address, 303 | options?: TransactionOptions 304 | ): Promise; 305 | approve( 306 | spender: Address, 307 | value: UInt, 308 | options?: TransactionOptions 309 | ): Promise; 310 | totalSupply(options?: TransactionOptions): Promise; 311 | transferFrom( 312 | from: Address, 313 | to: Address, 314 | value: UInt, 315 | options?: TransactionOptions 316 | ): Promise; 317 | grants( 318 | unnamed0: Address, 319 | unnamed1: UInt, 320 | options?: TransactionOptions 321 | ): Promise< 322 | [ 323 | Address, 324 | BigNumber.BigNumber, 325 | BigNumber.BigNumber, 326 | BigNumber.BigNumber, 327 | BigNumber.BigNumber, 328 | boolean, 329 | boolean 330 | ] 331 | >; 332 | tokenGrant( 333 | holder: Address, 334 | grantId: UInt, 335 | options?: TransactionOptions 336 | ): Promise< 337 | [ 338 | Address, 339 | BigNumber.BigNumber, 340 | BigNumber.BigNumber, 341 | BigNumber.BigNumber, 342 | BigNumber.BigNumber, 343 | BigNumber.BigNumber, 344 | boolean, 345 | boolean 346 | ] 347 | >; 348 | decreaseApproval( 349 | spender: Address, 350 | subtractedValue: UInt, 351 | options?: TransactionOptions 352 | ): Promise; 353 | lastTokenIsTransferableDate( 354 | holder: Address, 355 | options?: TransactionOptions 356 | ): Promise; 357 | balanceOf( 358 | owner: Address, 359 | options?: TransactionOptions 360 | ): Promise; 361 | grantVestedTokens( 362 | to: Address, 363 | value: UInt, 364 | start: UInt, 365 | cliff: UInt, 366 | vesting: UInt, 367 | revokable: boolean, 368 | burnsOnRevoke: boolean, 369 | options?: TransactionOptions 370 | ): Promise; 371 | transfer( 372 | to: Address, 373 | value: UInt, 374 | options?: TransactionOptions 375 | ): Promise; 376 | transferableTokens( 377 | holder: Address, 378 | time: UInt, 379 | options?: TransactionOptions 380 | ): Promise; 381 | increaseApproval( 382 | spender: Address, 383 | addedValue: UInt, 384 | options?: TransactionOptions 385 | ): Promise; 386 | allowance( 387 | owner: Address, 388 | spender: Address, 389 | options?: TransactionOptions 390 | ): Promise; 391 | calculateVestedTokens( 392 | tokens: UInt, 393 | time: UInt, 394 | start: UInt, 395 | cliff: UInt, 396 | vesting: UInt, 397 | options?: TransactionOptions 398 | ): Promise; 399 | revokeTokenGrant( 400 | holder: Address, 401 | grantId: UInt, 402 | options?: TransactionOptions 403 | ): Promise; 404 | } 405 | -------------------------------------------------------------------------------- /contracts/Migrations.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.4; 2 | 3 | contract Migrations { 4 | address public owner; 5 | uint public last_completed_migration; 6 | 7 | modifier restricted() { 8 | if (msg.sender == owner) _; 9 | } 10 | 11 | function Migrations() { 12 | owner = msg.sender; 13 | } 14 | 15 | function setCompleted(uint completed) restricted { 16 | last_completed_migration = completed; 17 | } 18 | 19 | function upgrade(address new_address) restricted { 20 | Migrations upgraded = Migrations(new_address); 21 | upgraded.setCompleted(last_completed_migration); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /contracts/SimpleSale.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.4.15; 2 | 3 | import "zeppelin/token/MintableToken.sol"; 4 | import "zeppelin/crowdsale/Crowdsale.sol"; 5 | 6 | contract SimpleToken is MintableToken { 7 | } 8 | 9 | contract SimpleSale is Crowdsale { 10 | function SimpleSale ( 11 | uint256 _startTime, 12 | uint256 _endTime, 13 | uint256 _rate, 14 | address _wallet 15 | ) 16 | Crowdsale(_startTime, _endTime, _rate, _wallet) 17 | { 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ethpm.json: -------------------------------------------------------------------------------- 1 | { 2 | "package_name": "sample-crowdsale", 3 | "version": "0.0.1", 4 | "description": "Sample crowdsale", 5 | "authors": ["John Backus "], 6 | "keywords": ["ethereum", "typescript"], 7 | "dependencies": { 8 | "zeppelin": "1.3.0" 9 | }, 10 | "license": "MIT" 11 | } 12 | -------------------------------------------------------------------------------- /generate.ts: -------------------------------------------------------------------------------- 1 | interface ConstructorMember { 2 | inputs: FunctionMemberInput[]; 3 | payable: false; 4 | type: "constructor"; 5 | } 6 | 7 | interface EventMember { 8 | inputs: FunctionMemberInput[]; 9 | name: string; 10 | type: "event"; 11 | } 12 | 13 | interface FunctionMember { 14 | inputs: FunctionMemberInput[]; 15 | outputs: FunctionMemberInput[]; 16 | name: string; 17 | constant: boolean; 18 | payable: boolean; 19 | type: "function"; 20 | } 21 | 22 | interface FallbackMember { 23 | type: "fallback"; 24 | payable: boolean; 25 | } 26 | 27 | interface UnknownMember { 28 | type: string; 29 | } 30 | 31 | type SolidityType = 32 | | "address" 33 | | "address[]" 34 | | "bool" 35 | | "bytes" 36 | | "string" 37 | | "uint8" 38 | | "uint64" 39 | | "uint256" 40 | | "uint256[]"; 41 | 42 | interface FunctionMemberInput { 43 | name: string; 44 | type: SolidityType; 45 | } 46 | 47 | type Member = ConstructorMember | EventMember | FunctionMember | FallbackMember; 48 | 49 | type Abi = (EventMember | FunctionMember)[]; 50 | 51 | interface Definition { 52 | contract_name: string; 53 | abi: Abi; 54 | } 55 | 56 | function generateHeader(): string { 57 | return ` 58 | import * as Web3 from "web3"; 59 | import * as BigNumber from "bignumber.js"; 60 | 61 | type Address = string; 62 | type TransactionOptions = Partial; 63 | type UInt = number | BigNumber.BigNumber; 64 | 65 | interface Transaction { 66 | hash: string; 67 | nonce: number; 68 | blockHash: string | null; 69 | blockNumber: number | null; 70 | transactionIndex: number | null; 71 | from: Address | ContractInstance; 72 | to: string | null; 73 | value: UInt; 74 | gasPrice: UInt; 75 | gas: number; 76 | input: string; 77 | } 78 | 79 | interface ContractInstance { 80 | address: string; 81 | sendTransaction(options?: TransactionOptions): Promise; 82 | } 83 | `; 84 | } 85 | 86 | function buildContract(definition: Definition) { 87 | return ` 88 | export interface ${definition.contract_name}Instance extends ContractInstance { 89 | ${buildMembers(definition.abi)} 90 | } 91 | `; 92 | } 93 | 94 | function buildMembers(abi: Abi): string { 95 | return abi.map(buildMember).join("\n"); 96 | } 97 | 98 | function buildMember(member: Member): string { 99 | switch (member.type) { 100 | case "function": 101 | return buildFunctionMember(member); 102 | case "event": 103 | return buildEventMember(member); 104 | case "constructor": 105 | return buildConstructorMember(member); 106 | case "fallback": 107 | return buildFallbackMember(member); 108 | default: 109 | throw "Exhaustiveness miss!"; 110 | } 111 | } 112 | 113 | function buildFunctionMember(member: FunctionMember) { 114 | let args = member.inputs.map(buildFunctionArgument).join(", "); 115 | 116 | if (args.length > 0) { 117 | args += ", "; 118 | } 119 | 120 | return `${member.name}(${args}options?: TransactionOptions): ${translateOutputs( 121 | member.outputs 122 | )};`; 123 | } 124 | 125 | function translateOutputs(outputs: FunctionMemberInput[]) { 126 | let valueType; 127 | if (outputs.length === 1) { 128 | valueType = translateOutput(outputs[0]); 129 | } else if (outputs.length === 0) { 130 | valueType = "void"; 131 | } else { 132 | valueType = `[${outputs.map(translateOutput).join(", ")}]`; 133 | } 134 | 135 | return `Promise<${valueType}>`; 136 | } 137 | 138 | function translateOutput(output: FunctionMemberInput) { 139 | return translateType(output.type, { UInt: "BigNumber.BigNumber" }); 140 | } 141 | 142 | let unnamedArgumentNumber = 0; 143 | 144 | function unnamedArgumentName(): string { 145 | return `unnamed${unnamedArgumentNumber++}`; 146 | } 147 | 148 | function buildFunctionArgument(input: FunctionMemberInput): string { 149 | let name = input.name; 150 | if (name[0] == "_") { 151 | name = name.slice(1); 152 | } 153 | const type = translateType(input.type); 154 | 155 | if (name.length === 0) { 156 | name = unnamedArgumentName(); 157 | } 158 | 159 | return `${name}: ${type}`; 160 | } 161 | 162 | function translateType(type: SolidityType, options = { UInt: "UInt" }): string { 163 | switch (type) { 164 | case "string": 165 | return "string"; 166 | case "address": 167 | return "Address"; 168 | case "address[]": 169 | return "Address[]"; 170 | case "bool": 171 | return "boolean"; 172 | case "bytes": 173 | return "string"; 174 | case "uint8": 175 | case "uint64": 176 | case "uint256": 177 | return options.UInt; 178 | case "uint256[]": 179 | return `${options.UInt}[]`; 180 | default: 181 | throw `Unexpected case! ${type}`; 182 | } 183 | } 184 | 185 | function buildEventMember(_member: Member) { 186 | return ""; 187 | } 188 | 189 | function buildConstructorMember(_member: Member) { 190 | return ""; 191 | } 192 | 193 | function buildFallbackMember(_member: Member) { 194 | return ""; 195 | } 196 | 197 | const glob = require("glob"); 198 | 199 | glob("./build/contracts/*.json", {}, (err: string, files: string[]) => { 200 | if (err) { 201 | console.log("Error!", err); 202 | return; 203 | } 204 | 205 | console.log(generateHeader()); 206 | 207 | files.forEach(file => { 208 | let definition: Definition = require(file); 209 | 210 | console.log(buildContract(definition)); 211 | }); 212 | }); 213 | -------------------------------------------------------------------------------- /installed_contracts/zeppelin/ethpm.json: -------------------------------------------------------------------------------- 1 | { 2 | "authors": [ 3 | "Manuel Araoz " 4 | ], 5 | "license": "MIT", 6 | "description": "Secure Smart Contract library for Solidity", 7 | "keywords": [ 8 | "solidity", 9 | "ethereum", 10 | "smart", 11 | "contracts", 12 | "security", 13 | "zeppelin" 14 | ], 15 | "links": {}, 16 | "sources": [ 17 | "./contracts/Bounty.sol", 18 | "./contracts/DayLimit.sol", 19 | "./contracts/ECRecovery.sol", 20 | "./contracts/LimitBalance.sol", 21 | "./contracts/MerkleProof.sol", 22 | "./contracts/ReentrancyGuard.sol", 23 | "./contracts/crowdsale/CappedCrowdsale.sol", 24 | "./contracts/crowdsale/Crowdsale.sol", 25 | "./contracts/crowdsale/FinalizableCrowdsale.sol", 26 | "./contracts/crowdsale/RefundableCrowdsale.sol", 27 | "./contracts/crowdsale/RefundVault.sol", 28 | "./contracts/examples/SampleCrowdsale.sol", 29 | "./contracts/examples/SimpleToken.sol", 30 | "./contracts/lifecycle/Destructible.sol", 31 | "./contracts/lifecycle/Migrations.sol", 32 | "./contracts/lifecycle/Pausable.sol", 33 | "./contracts/lifecycle/TokenDestructible.sol", 34 | "./contracts/math/Math.sol", 35 | "./contracts/math/SafeMath.sol", 36 | "./contracts/ownership/CanReclaimToken.sol", 37 | "./contracts/ownership/Claimable.sol", 38 | "./contracts/ownership/Contactable.sol", 39 | "./contracts/ownership/DelayedClaimable.sol", 40 | "./contracts/ownership/HasNoContracts.sol", 41 | "./contracts/ownership/HasNoEther.sol", 42 | "./contracts/ownership/HasNoTokens.sol", 43 | "./contracts/ownership/NoOwner.sol", 44 | "./contracts/ownership/Ownable.sol", 45 | "./contracts/payment/PullPayment.sol", 46 | "./contracts/token/BasicToken.sol", 47 | "./contracts/token/BurnableToken.sol", 48 | "./contracts/token/ERC20.sol", 49 | "./contracts/token/ERC20Basic.sol", 50 | "./contracts/token/LimitedTransferToken.sol", 51 | "./contracts/token/MintableToken.sol", 52 | "./contracts/token/PausableToken.sol", 53 | "./contracts/token/SafeERC20.sol", 54 | "./contracts/token/StandardToken.sol", 55 | "./contracts/token/TokenTimelock.sol", 56 | "./contracts/token/VestedToken.sol" 57 | ], 58 | "dependencies": {}, 59 | "manifest_version": 1, 60 | "package_name": "zeppelin", 61 | "version": "1.3.0" 62 | } -------------------------------------------------------------------------------- /installed_contracts/zeppelin/lock.json: -------------------------------------------------------------------------------- 1 | {"lockfile_version":"1","package_name":"zeppelin","meta":{"authors":["Manuel Araoz "],"license":"MIT","description":"Secure Smart Contract library for Solidity","keywords":["solidity","ethereum","smart","contracts","security","zeppelin"],"links":{}},"version":"1.3.0","contract_types":{"Bounty":{"contract_name":"Bounty","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"researchers","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"}],"name":"claim","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"createTarget","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"claimed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"createdAddress","type":"address"}],"name":"TargetCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Target":{"contract_name":"Target","bytecode":"0x","abi":[{"constant":false,"inputs":[],"name":"checkInvariant","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"}]},"DayLimit":{"contract_name":"DayLimit","bytecode":"0x6060604052341561000f57600080fd5b60405160208061016b833981016040528080519150505b60008190556100406401000000006100c861004a82021704565b6002555b50610059565b600062015180425b0490505b90565b610103806100686000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166367eeba0c811460505780636b0c932d146072578063f059cf2b146094575b600080fd5b3415605a57600080fd5b606060b6565b60405190815260200160405180910390f35b3415607c57600080fd5b606060bc565b60405190815260200160405180910390f35b3415609e57600080fd5b606060c2565b60405190815260200160405180910390f35b60005481565b60025481565b60015481565b600062015180425b0490505b905600a165627a7a723058206c890288d74e7b298c9f814cd374a059687dc07a0ae486041d4eb0e73d573b050029","abi":[{"constant":true,"inputs":[],"name":"dailyLimit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastDay","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"spentToday","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_limit","type":"uint256"}],"payable":false,"type":"constructor"}]},"ECRecovery":{"contract_name":"ECRecovery","bytecode":"0x6060604052341561000f57600080fd5b5b6101be8061001f6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166319045a25811461003d575b600080fd5b610088600480359060446024803590810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496506100b195505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60008060008084516041146100c95760009350610188565b6020850151925060408501519150606085015160001a9050601b8160ff1610156100f157601b015b8060ff16601b1415801561010957508060ff16601c14155b156101175760009350610188565b6001868285856040518060005260200160405260006040516020015260405193845260ff90921660208085019190915260408085019290925260608401929092526080909201915160208103908084039060008661646e5a03f1151561017c57600080fd5b50506020604051035193505b5b505050929150505600a165627a7a723058203738288d3b51ea575ef915c00868fae4d079ca560c0d0fd0f9b7cc548d23db8c0029","abi":[{"constant":true,"inputs":[{"name":"hash","type":"bytes32"},{"name":"sig","type":"bytes"}],"name":"recover","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"}]},"MerkleProof":{"contract_name":"MerkleProof","bytecode":"0x6060604052341561000f57600080fd5b5b61015e8061001f6000396000f300606060405263ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663101f13e2811461003d575b600080fd5b61008a60046024813581810190830135806020601f820181900481020160405190810160405281815292919060208401838380828437509496505084359460200135935061009e92505050565b604051901515815260200160405180910390f35b600080600080602087518115156100b157fe5b06156100c05760009350610128565b5083905060205b8651811161012257808701519250828210156100fd57818360405191825260208201526040908101905180910390209150610119565b8282604051918252602082015260409081019051809103902091505b5b6020016100c7565b81861493505b50505093925050505600a165627a7a72305820bf88301d5cd1ecb6e2d200dbc786ddc7bdc21448cee48e926099fa4f104f065d0029","abi":[{"constant":true,"inputs":[{"name":"_proof","type":"bytes"},{"name":"_root","type":"bytes32"},{"name":"_leaf","type":"bytes32"}],"name":"verifyProof","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"}]},"ReentrancyGuard":{"contract_name":"ReentrancyGuard","bytecode":"0x60606040526000805460ff191690553415601857600080fd5b5b60368060266000396000f30060606040525b600080fd00a165627a7a723058208a88889789ce730045be8a404984662f86d41fffff1402fe3a8ea0555f02ed7e0029","abi":[]},"LimitBalance":{"contract_name":"LimitBalance","bytecode":"0x60606040523415600e57600080fd5b6040516020806100cb833981016040528080519150505b60008190555b505b60908061003b6000396000f300606060405263ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663a4d66daf8114603c575b600080fd5b3415604657600080fd5b604c605e565b60405190815260200160405180910390f35b600054815600a165627a7a72305820b69b7938d320534ce690d99786a268b32409a33889e83c06e5104374354d0ee00029","abi":[{"constant":true,"inputs":[],"name":"limit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_limit","type":"uint256"}],"payable":false,"type":"constructor"}]},"SampleCrowdsaleToken":{"contract_name":"SampleCrowdsaleToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029","abi":[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"SampleCrowdsale":{"contract_name":"SampleCrowdsale","bytecode":"0x60606040526007805460a060020a60ff0219169055341561001f57600080fd5b60405160c080612aa38339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519150505b825b5b825b878787855b4284101561007057600080fd5b8383101561007d57600080fd5b6000821161008a57600080fd5b600160a060020a038116151561009f57600080fd5b6100b46401000000006108df6101b082021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b5050505060008111151561010657600080fd5b60068190555b5060078054600160a060020a03191633600160a060020a03161790555b6000811161013657600080fd5b600354600160a060020a031661014a6101d6565b600160a060020a039091168152602001604051809103906000f080151561017057600080fd5b60098054600160a060020a031916600160a060020a039290921691909117905560088190555b50818311156101a457600080fd5b5b5050505050506101f6565b60006101ba6101e6565b604051809103906000f08015156101d057600080fd5b90505b90565b60405161065b806117c783390190565b604051610c8180611e2283390190565b6115c2806102056000396000f300606060405236156100d55763ffffffff60e060020a6000350416632c4e722e81146100e75780633197cbb61461010c578063355274ea1461013157806340193883146101565780634042b66f1461017b5780634bb278f3146101a0578063521eb273146101b557806378e97925146101e45780637d3d6522146102095780638d4e4083146102305780638da5cb5b14610257578063b5545a3c14610286578063ec8ac4d81461029b578063ecb70fb7146102b1578063f2fde38b146102d8578063fbfa77cf146102f9578063fc0c546a14610328575b6100e55b6100e233610357565b5b565b005b34156100f257600080fd5b6100fa61048c565b60405190815260200160405180910390f35b341561011757600080fd5b6100fa610492565b60405190815260200160405180910390f35b341561013c57600080fd5b6100fa610498565b60405190815260200160405180910390f35b341561016157600080fd5b6100fa61049e565b60405190815260200160405180910390f35b341561018657600080fd5b6100fa6104a4565b60405190815260200160405180910390f35b34156101ab57600080fd5b6100e56104aa565b005b34156101c057600080fd5b6101c861054b565b604051600160a060020a03909116815260200160405180910390f35b34156101ef57600080fd5b6100fa61055a565b60405190815260200160405180910390f35b341561021457600080fd5b61021c610560565b604051901515815260200160405180910390f35b341561023b57600080fd5b61021c61056c565b604051901515815260200160405180910390f35b341561026257600080fd5b6101c861057c565b604051600160a060020a03909116815260200160405180910390f35b341561029157600080fd5b6100e561058b565b005b6100e5600160a060020a0360043516610357565b005b34156102bc57600080fd5b61021c61061c565b604051901515815260200160405180910390f35b34156102e357600080fd5b6100e5600160a060020a036004351661063f565b005b341561030457600080fd5b6101c86106d8565b604051600160a060020a03909116815260200160405180910390f35b341561033357600080fd5b6101c86106e7565b604051600160a060020a03909116815260200160405180910390f35b600080600160a060020a038316151561036f57600080fd5b6103776106f6565b151561038257600080fd5b60045434925061039990839063ffffffff61072d16565b6005549091506103af908363ffffffff61075c16565b60055560008054600160a060020a0316906340c10f1990859084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561041457600080fd5b6102c65a03f1151561042557600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a3610486610776565b5b505050565b60045481565b60025481565b60065481565b60085481565b60055481565b60075433600160a060020a039081169116146104c557600080fd5b60075460a060020a900460ff16156104dc57600080fd5b6104e461061c565b15156104ef57600080fd5b6104f76107de565b7f6823b073d48d6e3a7d385eeb601452d680e74bb46afe3255a7d778f3a9b1768160405160405180910390a16007805474ff0000000000000000000000000000000000000000191660a060020a1790555b5b565b600354600160a060020a031681565b60015481565b60085460055410155b90565b60075460a060020a900460ff1681565b600754600160a060020a031681565b60075460a060020a900460ff1615156105a357600080fd5b6105ab610560565b156105b557600080fd5b600954600160a060020a031663fa89401a3360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561060557600080fd5b6102c65a03f1151561048657600080fd5b5050505b565b6006546005546000919010156106306108a2565b806106385750805b91505b5090565b60075433600160a060020a0390811691161461065a57600080fd5b600160a060020a038116151561066f57600080fd5b600754600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36007805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600954600160a060020a031681565b600054600160a060020a031681565b6000806006546107113460055461075c90919063ffffffff16565b1115905061071d6108ab565b80156106385750805b91505b5090565b6000828202831580610749575082848281151561074657fe5b04145b151561075157fe5b8091505b5092915050565b60008282018381101561075157fe5b8091505b5092915050565b600954600160a060020a031663f340fa01343360405160e060020a63ffffffff8516028152600160a060020a0390911660048201526024016000604051808303818588803b15156107c657600080fd5b6125ee5a03f115156107d757600080fd5b505050505b565b6107e6610560565b1561084357600954600160a060020a03166343d726d66040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561082a57600080fd5b6102c65a03f1151561083b57600080fd5b505050610897565b600954600160a060020a0316638c52dc416040518163ffffffff1660e060020a028152600401600060405180830381600087803b151561088257600080fd5b6102c65a03f1151561089357600080fd5b5050505b6100e26100e2565b5b565b60025442115b90565b600080600060015442101580156108c457506002544211155b9150503415158180156108d45750805b92505b505090565b5b565b60006108e9610905565b604051809103906000f08015156108ff57600080fd5b90505b90565b604051610c818061091683390190560060606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029a165627a7a723058209f246a429fd326743f36778af6c5c8399a21ab7383195141ff1fe26197ed109f00296060604052341561000f57600080fd5b60405160208061065b833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038116151561005857600080fd5b60028054600160a060020a031916600160a060020a038316178082556000919060a060020a60ff02191674010000000000000000000000000000000000000000835b02179055505b505b6105aa806100b16000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009b578063521eb273146100b05780638c52dc41146100df5780638da5cb5b146100f4578063c19d93fb14610123578063cb13cddb1461015a578063f2fde38b1461018b578063f340fa01146101ac578063fa89401a146101c2575b600080fd5b34156100a657600080fd5b6100ae6101e3565b005b34156100bb57600080fd5b6100c36102b6565b604051600160a060020a03909116815260200160405180910390f35b34156100ea57600080fd5b6100ae6102c5565b005b34156100ff57600080fd5b6100c3610361565b604051600160a060020a03909116815260200160405180910390f35b341561012e57600080fd5b610136610370565b6040518082600281111561014657fe5b60ff16815260200191505060405180910390f35b341561016557600080fd5b610179600160a060020a0360043516610380565b60405190815260200160405180910390f35b341561019657600080fd5b6100ae600160a060020a0360043516610392565b005b6100ae600160a060020a036004351661042b565b005b34156101cd57600080fd5b6100ae600160a060020a03600435166104b2565b005b60005433600160a060020a039081169116146101fe57600080fd5b60005b6002805460a060020a900460ff169081111561021957fe5b1461022357600080fd5b60028054819074ff0000000000000000000000000000000000000000191660a060020a825b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156102b257600080fd5b5b5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102e057600080fd5b60005b6002805460a060020a900460ff16908111156102fb57fe5b1461030557600080fd5b600280546001919074ff0000000000000000000000000000000000000000191660a060020a835b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a15b5b565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a039081169116146103ad57600080fd5b600160a060020a03811615156103c257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a0390811691161461044657600080fd5b60005b6002805460a060020a900460ff169081111561046157fe5b1461046b57600080fd5b600160a060020a038116600090815260016020526040902054610494903463ffffffff61056416565b600160a060020a0382166000908152600160205260409020555b5b50565b600060015b6002805460a060020a900460ff16908111156104cf57fe5b146104d957600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f19350505050151561052257600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25b5050565b60008282018381101561057357fe5b8091505b50929150505600a165627a7a7230582003c9f36fbee00f417f341def39ddd971dd6f117a31fffcbc0ff74153557d91fd002960606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610c40806100416000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100e857806306fdde031461010f578063095ea7b31461019a57806318160ddd146101d057806323b872dd146101f5578063313ce5671461023157806340c10f191461025a578063661884631461029057806370a08231146102c65780637d64bcb4146102f75780638da5cb5b1461031e57806395d89b411461034d578063a9059cbb146103d8578063d73dd6231461040e578063dd62ed3e14610444578063f2fde38b1461047b575b600080fd5b34156100f357600080fd5b6100fb61049c565b604051901515815260200160405180910390f35b341561011a57600080fd5b6101226104bd565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101a557600080fd5b6100fb600160a060020a03600435166024356104f4565b604051901515815260200160405180910390f35b34156101db57600080fd5b6101e3610561565b60405190815260200160405180910390f35b341561020057600080fd5b6100fb600160a060020a0360043581169060243516604435610567565b604051901515815260200160405180910390f35b341561023c57600080fd5b610244610693565b60405160ff909116815260200160405180910390f35b341561026557600080fd5b6100fb600160a060020a0360043516602435610698565b604051901515815260200160405180910390f35b341561029b57600080fd5b6100fb600160a060020a03600435166024356107b9565b604051901515815260200160405180910390f35b34156102d157600080fd5b6101e3600160a060020a03600435166108b5565b60405190815260200160405180910390f35b341561030257600080fd5b6100fb6108d4565b604051901515815260200160405180910390f35b341561032957600080fd5b61033161095b565b604051600160a060020a03909116815260200160405180910390f35b341561035857600080fd5b61012261096a565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561015f5780820151818401525b602001610146565b50505050905090810190601f16801561018c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103e357600080fd5b6100fb600160a060020a03600435166024356109a1565b604051901515815260200160405180910390f35b341561041957600080fd5b6100fb600160a060020a0360043516602435610a78565b604051901515815260200160405180910390f35b341561044f57600080fd5b6101e3600160a060020a0360043581169060243516610b1d565b60405190815260200160405180910390f35b341561048657600080fd5b61049a600160a060020a0360043516610b4a565b005b60035474010000000000000000000000000000000000000000900460ff1681565b60408051908101604052601681527f53616d706c652043726f776473616c6520546f6b656e00000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561057f57600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546105c5908463ffffffff610be316565b600160a060020a0380871660009081526001602052604080822093909355908616815220546105fa908463ffffffff610bfa16565b600160a060020a038516600090815260016020526040902055610623818463ffffffff610be316565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b601281565b60035460009033600160a060020a039081169116146106b657600080fd5b60035474010000000000000000000000000000000000000000900460ff16156106de57600080fd5b6000546106f1908363ffffffff610bfa16565b6000908155600160a060020a03841681526001602052604090205461071c908363ffffffff610bfa16565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561081657600160a060020a03338116600090815260026020908152604080832093881683529290529081205561084d565b610826818463ffffffff610be316565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a039081169116146108f257600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b60408051908101604052600381527f5343540000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a03831615156109b857600080fd5b600160a060020a0333166000908152600160205260409020546109e1908363ffffffff610be316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610a16908363ffffffff610bfa16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610ab0908363ffffffff610bfa16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a03908116911614610b6557600080fd5b600160a060020a0381161515610b7a57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610bef57fe5b508082035b92915050565b600082820183811015610c0957fe5b8091505b50929150505600a165627a7a723058209658980abe5b6ef896acdca4a65e069845ffd50d665a7101da5791ed3afd03020029","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_goal","type":"uint256"},{"name":"_cap","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"SimpleToken":{"contract_name":"SimpleToken","bytecode":"0x6060604052341561000f57600080fd5b5b69021e19e0c9bab24000006000818155600160a060020a0333168152600160205260409020555b5b610902806100476000396000f300606060405236156100b75763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100bc578063095ea7b31461014757806318160ddd1461017d57806323b872dd146101a25780632ff2e9dc146101de578063313ce56714610203578063661884631461022c57806370a082311461026257806395d89b4114610293578063a9059cbb1461031e578063d73dd62314610354578063dd62ed3e1461038a575b600080fd5b34156100c757600080fd5b6100cf6103c1565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561015257600080fd5b610169600160a060020a03600435166024356103f8565b604051901515815260200160405180910390f35b341561018857600080fd5b610190610465565b60405190815260200160405180910390f35b34156101ad57600080fd5b610169600160a060020a036004358116906024351660443561046b565b604051901515815260200160405180910390f35b34156101e957600080fd5b610190610597565b60405190815260200160405180910390f35b341561020e57600080fd5b6102166105a5565b60405160ff909116815260200160405180910390f35b341561023757600080fd5b610169600160a060020a03600435166024356105aa565b604051901515815260200160405180910390f35b341561026d57600080fd5b610190600160a060020a03600435166106a6565b60405190815260200160405180910390f35b341561029e57600080fd5b6100cf6106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561010c5780820151818401525b6020016100f3565b50505050905090810190601f1680156101395780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561032957600080fd5b610169600160a060020a03600435166024356106fc565b604051901515815260200160405180910390f35b341561035f57600080fd5b610169600160a060020a03600435166024356107d3565b604051901515815260200160405180910390f35b341561039557600080fd5b610190600160a060020a0360043581169060243516610878565b60405190815260200160405180910390f35b60408051908101604052600b81527f53696d706c65546f6b656e000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a038416151561048357600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546104c9908463ffffffff6108a516565b600160a060020a0380871660009081526001602052604080822093909355908616815220546104fe908463ffffffff6108bc16565b600160a060020a038516600090815260016020526040902055610527818463ffffffff6108a516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b69021e19e0c9bab240000081565b601281565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561060757600160a060020a03338116600090815260026020908152604080832093881683529290529081205561063e565b610617818463ffffffff6108a516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60408051908101604052600381527f53494d0000000000000000000000000000000000000000000000000000000000602082015281565b6000600160a060020a038316151561071357600080fd5b600160a060020a03331660009081526001602052604090205461073c908363ffffffff6108a516565b600160a060020a033381166000908152600160205260408082209390935590851681522054610771908363ffffffff6108bc16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a03338116600090815260026020908152604080832093861683529290529081205461080b908363ffffffff6108bc16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b6000828211156108b157fe5b508082035b92915050565b6000828201838110156108cb57fe5b8091505b50929150505600a165627a7a723058209931cc9bede545d95130441b7d2c6102b5c413048d906e243d2baeae084eee4d0029","abi":[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"Math":{"contract_name":"Math","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a72305820b8899c9b2b5161622dd3db6537a052bdd2306f46e50f5662836ecdef0dd12a690029","abi":[]},"SafeMath":{"contract_name":"SafeMath","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a7230582097f6b5ecc0500486b668cba0db35d4271cae9c721508478c64da37d47b70dcb40029","abi":[]},"Destructible":{"contract_name":"Destructible","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b61020f806100336000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166383197ef0811461005e5780638da5cb5b14610073578063f2fde38b146100a2578063f5074f41146100c3575b600080fd5b341561006957600080fd5b6100716100e4565b005b341561007e57600080fd5b610086610110565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610071600160a060020a036004351661011f565b005b34156100ce57600080fd5b610071600160a060020a03600435166101b8565b005b60005433600160a060020a039081169116146100ff57600080fd5b600054600160a060020a0316ff5b5b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461013a57600080fd5b600160a060020a038116151561014f57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a039081169116146101d357600080fd5b80600160a060020a0316ff5b5b505600a165627a7a72305820d81f192eb82b751d3df1faffd08e406901be2f041a72d23981c67a074786a4750029","abi":[{"constant":false,"inputs":[],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_recipient","type":"address"}],"name":"destroyAndSend","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Migrations":{"contract_name":"Migrations","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6102b0806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630900f01081146100695780638da5cb5b1461008a578063f2fde38b146100b9578063fbdbad3c146100da578063fdacd576146100ff575b600080fd5b341561007457600080fd5b610088600160a060020a0360043516610117565b005b341561009557600080fd5b61009d6101b1565b604051600160a060020a03909116815260200160405180910390f35b34156100c457600080fd5b610088600160a060020a03600435166101c0565b005b34156100e557600080fd5b6100ed610259565b60405190815260200160405180910390f35b341561010a57600080fd5b61008860043561025f565b005b6000805433600160a060020a0390811691161461013357600080fd5b81905080600160a060020a031663fdacd5766001546040517c010000000000000000000000000000000000000000000000000000000063ffffffff84160281526004810191909152602401600060405180830381600087803b151561019757600080fd5b6102c65a03f115156101a857600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a039081169116146101db57600080fd5b600160a060020a03811615156101f057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60015481565b60005433600160a060020a0390811691161461027a57600080fd5b60018190555b5b505600a165627a7a72305820099c36a5c95df42a997285234bab79e8cb449523071711b2417b4a54c41225c90029","abi":[{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"lastCompletedMigration","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"completed","type":"uint256"}],"name":"setCompleted","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Pausable":{"contract_name":"Pausable","bytecode":"0x60606040526000805460a060020a60ff02191690555b60008054600160a060020a03191633600160a060020a03161790555b5b6102f7806100416000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633f4ba83a81146100695780635c975abb1461007e5780638456cb59146100a55780638da5cb5b146100ba578063f2fde38b146100e9575b600080fd5b341561007457600080fd5b61007c61010a565b005b341561008957600080fd5b61009161018c565b604051901515815260200160405180910390f35b34156100b057600080fd5b61007c61019c565b005b34156100c557600080fd5b6100cd610223565b604051600160a060020a03909116815260200160405180910390f35b34156100f457600080fd5b61007c600160a060020a0360043516610232565b005b60005433600160a060020a0390811691161461012557600080fd5b60005460a060020a900460ff16151561013d57600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60005460a060020a900460ff1681565b60005433600160a060020a039081169116146101b757600080fd5b60005460a060020a900460ff16156101ce57600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600054600160a060020a031681565b60005433600160a060020a0390811691161461024d57600080fd5b600160a060020a038116151561026257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820be7bb4e11b32d7807fd15f8563d708683a204873fa5ddfb5a14ff1b61f80f1710029","abi":[{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"TokenDestructible":{"contract_name":"TokenDestructible","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b5b5b610309806100336000396000f300606060405263ffffffff60e060020a6000350416638da5cb5b811461003a578063c6786e5a14610069578063f2fde38b146100ba575b600080fd5b341561004557600080fd5b61004d6100db565b604051600160a060020a03909116815260200160405180910390f35b341561007457600080fd5b6100b860046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506100ea95505050505050565b005b34156100c557600080fd5b6100b8600160a060020a0360043516610244565b005b600054600160a060020a031681565b600080548190819033600160a060020a0390811691161461010a57600080fd5b600092505b835183101561022f5783838151811061012457fe5b90602001906020020151915081600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561018757600080fd5b6102c65a03f1151561019857600080fd5b505050604051805160008054919350600160a060020a03808616935063a9059cbb92169084906040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561020857600080fd5b6102c65a03f1151561021957600080fd5b505050604051805150505b60019092019161010f565b600054600160a060020a0316ff5b5b50505050565b60005433600160a060020a0390811691161461025f57600080fd5b600160a060020a038116151561027457600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820a56d9c086f83cde55917629102cddd9d0c5348b0b33702297033c8ba5c5de9db0029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"tokens","type":"address[]"}],"name":"destroy","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"CanReclaimToken":{"contract_name":"CanReclaimToken","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6102bb806100316000396000f300606060405263ffffffff60e060020a60003504166317ffc320811461003a5780638da5cb5b1461005b578063f2fde38b1461008a575b600080fd5b341561004557600080fd5b610059600160a060020a03600435166100ab565b005b341561006657600080fd5b61006e610161565b604051600160a060020a03909116815260200160405180910390f35b341561009557600080fd5b610059600160a060020a0360043516610170565b005b6000805433600160a060020a039081169116146100c757600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561011e57600080fd5b6102c65a03f1151561012f57600080fd5b505050604051805160005490925061015b9150600160a060020a0384811691168363ffffffff61020916565b5b5b5050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461018b57600080fd5b600160a060020a03811615156101a057600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561026657600080fd5b6102c65a03f1151561027757600080fd5b50505060405180519050151561028957fe5b5b5050505600a165627a7a72305820b7afc758694e3a2ac9f47c14382f77b68475f01b9a38219bb058a0cf171717000029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Claimable":{"contract_name":"Claimable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610214806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634e71e0c8811461005e5780638da5cb5b14610073578063e30c3978146100a2578063f2fde38b146100d1575b600080fd5b341561006957600080fd5b6100716100f2565b005b341561007e57600080fd5b610086610182565b604051600160a060020a03909116815260200160405180910390f35b34156100ad57600080fd5b610086610191565b604051600160a060020a03909116815260200160405180910390f35b34156100dc57600080fd5b610071600160a060020a03600435166101a0565b005b60015433600160a060020a0390811691161461010d57600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b5b565b600054600160a060020a031681565b600154600160a060020a031681565b60005433600160a060020a039081169116146101bb57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582091ef39bfdd33d2858ba513f238457f2784da6a56d633ea1ee8c74b8f3b61942e0029","abi":[{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Contactable":{"contract_name":"Contactable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b6103d2806100316000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166336f7ab5e811461005e5780638da5cb5b146100e9578063b967a52e14610118578063f2fde38b1461016b575b600080fd5b341561006957600080fd5b61007161018c565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156100ae5780820151818401525b602001610095565b50505050905090810190601f1680156100db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156100f457600080fd5b6100fc61022a565b604051600160a060020a03909116815260200160405180910390f35b341561012357600080fd5b61016960046024813581810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061023995505050505050565b005b341561017657600080fd5b610169600160a060020a036004351661026d565b005b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102225780601f106101f757610100808354040283529160200191610222565b820191906000526020600020905b81548152906001019060200180831161020557829003601f168201915b505050505081565b600054600160a060020a031681565b60005433600160a060020a0390811691161461025457600080fd5b6001818051610267929160200190610306565b505b5b50565b60005433600160a060020a0390811691161461028857600080fd5b600160a060020a038116151561029d57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061034757805160ff1916838001178555610374565b82800160010185558215610374579182015b82811115610374578251825591602001919060010190610359565b5b50610381929150610385565b5090565b6103a391905b80821115610381576000815560010161038b565b5090565b905600a165627a7a72305820f0bad196126ef3892a6d977b07501fd036b98c3b879eb85d20f8d69ff91c84600029","abi":[{"constant":true,"inputs":[],"name":"contactInformation","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"info","type":"string"}],"name":"setContactInformation","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"DelayedClaimable":{"contract_name":"DelayedClaimable","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610308806100316000396000f300606060405236156100805763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416634e71e0c881146100855780638da5cb5b1461009a578063be9a6555146100c9578063c4590d3f146100ee578063e30c397814610109578063efbe1c1c14610138578063f2fde38b1461015d575b600080fd5b341561009057600080fd5b61009861017e565b005b34156100a557600080fd5b6100ad610232565b604051600160a060020a03909116815260200160405180910390f35b34156100d457600080fd5b6100dc610241565b60405190815260200160405180910390f35b34156100f957600080fd5b610098600435602435610247565b005b341561011457600080fd5b6100ad61027f565b604051600160a060020a03909116815260200160405180910390f35b341561014357600080fd5b6100dc61028e565b60405190815260200160405180910390f35b341561016857600080fd5b610098600160a060020a0360043516610294565b005b60015433600160a060020a0390811691161461019957600080fd5b60025443111580156101ad57506003544310155b15156101b857600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a0384161782559091169091556002555b5b565b600054600160a060020a031681565b60035481565b60005433600160a060020a0390811691161461026257600080fd5b8082111561026f57600080fd5b600281905560038290555b5b5050565b600154600160a060020a031681565b60025481565b60005433600160a060020a039081169116146102af57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820f72a91b5fc7409be1e1ae55a97d292835ee988d4512ea2cc52b276a047d94d3a0029","abi":[{"constant":false,"inputs":[],"name":"claimOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"start","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_start","type":"uint256"},{"name":"_end","type":"uint256"}],"name":"setLimits","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"pendingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoContracts":{"contract_name":"HasNoContracts","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b61023e806100316000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632aed7f3f81146100535780638da5cb5b14610074578063f2fde38b146100a3575b600080fd5b341561005e57600080fd5b610072600160a060020a03600435166100c4565b005b341561007f57600080fd5b61008761016a565b604051600160a060020a03909116815260200160405180910390f35b34156100ae57600080fd5b610072600160a060020a0360043516610179565b005b6000805433600160a060020a039081169116146100e057600080fd5b506000548190600160a060020a038083169163f2fde38b91166040517c010000000000000000000000000000000000000000000000000000000063ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561015057600080fd5b6102c65a03f1151561016157600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a0390811691161461019457600080fd5b600160a060020a03811615156101a957600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582017377e522ff53222ab399a901939ebe2a66463aee51606105092dc199cfdb6bc0029","abi":[{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoEther":{"contract_name":"HasNoEther","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b341561002d57600080fd5b5b5b6101f68061003e6000396000f300606060405236156100545763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416638da5cb5b81146100685780639f727c2714610097578063f2fde38b146100ac575b341561005f57600080fd5b6100665b5b565b005b341561007357600080fd5b61007b6100cd565b604051600160a060020a03909116815260200160405180910390f35b34156100a257600080fd5b6100666100dc565b005b34156100b757600080fd5b610066600160a060020a0360043516610131565b005b600054600160a060020a031681565b60005433600160a060020a039081169116146100f757600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561006357fe5b5b5b565b60005433600160a060020a0390811691161461014c57600080fd5b600160a060020a038116151561016157600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a7230582070e6c918d78faf899e134bca40c5a12586fc834fca2d5e46e70f883954941ad70029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":true,"type":"constructor"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"HasNoTokens":{"contract_name":"HasNoTokens","bytecode":"0x60606040525b60008054600160a060020a03191633600160a060020a03161790555b5b610302806100316000396000f300606060405263ffffffff60e060020a60003504166317ffc32081146100455780638da5cb5b14610066578063c0ee0b8a14610095578063f2fde38b146100c6575b600080fd5b341561005057600080fd5b610064600160a060020a03600435166100e7565b005b341561007157600080fd5b61007961019d565b604051600160a060020a03909116815260200160405180910390f35b34156100a057600080fd5b61006460048035600160a060020a0316906024803591604435918201910135610040565b005b34156100d157600080fd5b610064600160a060020a03600435166101b7565b005b6000805433600160a060020a0390811691161461010357600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561015a57600080fd5b6102c65a03f1151561016b57600080fd5b50505060405180516000549092506101979150600160a060020a0384811691168363ffffffff61025016565b5b5b5050565b600054600160a060020a031681565b600080fd5b50505050565b60005433600160a060020a039081169116146101d257600080fd5b600160a060020a03811615156101e757600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102ad57600080fd5b6102c65a03f115156102be57600080fd5b5050506040518051905015156102d057fe5b5b5050505600a165627a7a72305820767d59fecad075dccef3a05536660235de1e0953bf393fbd17bc81d4cf6bba200029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"NoOwner":{"contract_name":"NoOwner","bytecode":"0x60606040525b5b60008054600160a060020a03191633600160a060020a03161790555b341561002d57600080fd5b5b5b6104458061003e6000396000f3006060604052361561005c5763ffffffff60e060020a60003504166317ffc32081146100705780632aed7f3f146100915780638da5cb5b146100b25780639f727c27146100e1578063c0ee0b8a146100f6578063f2fde38b14610127575b341561006757600080fd5b61006e5b5b565b005b341561007b57600080fd5b61006e600160a060020a0360043516610148565b005b341561009c57600080fd5b61006e600160a060020a03600435166101fe565b005b34156100bd57600080fd5b6100c561028b565b604051600160a060020a03909116815260200160405180910390f35b34156100ec57600080fd5b61006e61029a565b005b341561010157600080fd5b61006e60048035600160a060020a03169060248035916044359182019101356102ef565b005b341561013257600080fd5b61006e600160a060020a03600435166102fa565b005b6000805433600160a060020a0390811691161461016457600080fd5b81600160a060020a03166370a082313060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101bb57600080fd5b6102c65a03f115156101cc57600080fd5b50505060405180516000549092506101f89150600160a060020a0384811691168363ffffffff61039316565b5b5b5050565b6000805433600160a060020a0390811691161461021a57600080fd5b506000548190600160a060020a038083169163f2fde38b911660405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b151561027157600080fd5b6102c65a03f1151561028257600080fd5b5050505b5b5050565b600054600160a060020a031681565b60005433600160a060020a039081169116146102b557600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f19350505050151561006b57fe5b5b5b565b600080fd5b50505050565b60005433600160a060020a0390811691161461031557600080fd5b600160a060020a038116151561032a57600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156103f057600080fd5b6102c65a03f1151561040157600080fd5b50505060405180519050151561041357fe5b5b5050505600a165627a7a72305820f4793e0dc66ec77ebbb7faab835bc596ca15089a43308bd54114ec92874f7cff0029","abi":[{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"reclaimToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"contractAddr","type":"address"}],"name":"reclaimContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"reclaimEther","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from_","type":"address"},{"name":"value_","type":"uint256"},{"name":"data_","type":"bytes"}],"name":"tokenFallback","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"payable":false,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"Ownable":{"contract_name":"Ownable","bytecode":"0x6060604052341561000f57600080fd5b5b60008054600160a060020a03191633600160a060020a03161790555b5b61016c8061003c6000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416638da5cb5b8114610048578063f2fde38b14610077575b600080fd5b341561005357600080fd5b61005b610098565b604051600160a060020a03909116815260200160405180910390f35b341561008257600080fd5b610096600160a060020a03600435166100a7565b005b600054600160a060020a031681565b60005433600160a060020a039081169116146100c257600080fd5b600160a060020a03811615156100d757600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b505600a165627a7a72305820b3f1626dde2341fa87a16a8d14916c7185cd0bc711eb58c172d814ec669c80ee0029","abi":[{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"BasicToken":{"contract_name":"BasicToken","bytecode":"0x6060604052341561000f57600080fd5b5b6102388061001f6000396000f300606060405263ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166318160ddd811461005357806370a0823114610078578063a9059cbb146100a9575b600080fd5b341561005e57600080fd5b6100666100df565b60405190815260200160405180910390f35b341561008357600080fd5b610066600160a060020a03600435166100e5565b60405190815260200160405180910390f35b34156100b457600080fd5b6100cb600160a060020a0360043516602435610104565b604051901515815260200160405180910390f35b60005481565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a038316151561011b57600080fd5b600160a060020a033316600090815260016020526040902054610144908363ffffffff6101db16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610179908363ffffffff6101f216565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b6000828211156101e757fe5b508082035b92915050565b60008282018381101561020157fe5b8091505b50929150505600a165627a7a7230582012c9c398953643ebfe8856386ecad730a70cd88a17ee4939d5b98e41a86f2d180029","abi":[{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"BurnableToken":{"contract_name":"BurnableToken","bytecode":"0x6060604052341561000f57600080fd5b5b6107b98061001f6000396000f300606060405236156100965763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009b57806318160ddd146100d157806323b872dd146100f657806342966c6814610132578063661884631461014a57806370a0823114610180578063a9059cbb146101b1578063d73dd623146101e7578063dd62ed3e1461021d575b600080fd5b34156100a657600080fd5b6100bd600160a060020a0360043516602435610254565b604051901515815260200160405180910390f35b34156100dc57600080fd5b6100e46102c1565b60405190815260200160405180910390f35b341561010157600080fd5b6100bd600160a060020a03600435811690602435166044356102c7565b604051901515815260200160405180910390f35b341561013d57600080fd5b6101486004356103f3565b005b341561015557600080fd5b6100bd600160a060020a0360043516602435610498565b604051901515815260200160405180910390f35b341561018b57600080fd5b6100e4600160a060020a0360043516610594565b60405190815260200160405180910390f35b34156101bc57600080fd5b6100bd600160a060020a03600435166024356105b3565b604051901515815260200160405180910390f35b34156101f257600080fd5b6100bd600160a060020a036004351660243561068a565b604051901515815260200160405180910390f35b341561022857600080fd5b6100e4600160a060020a036004358116906024351661072f565b60405190815260200160405180910390f35b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156102df57600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054610325908463ffffffff61075c16565b600160a060020a03808716600090815260016020526040808220939093559086168152205461035a908463ffffffff61077316565b600160a060020a038516600090815260016020526040902055610383818463ffffffff61075c16565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600080821161040157600080fd5b5033600160a060020a038116600090815260016020526040902054610426908361075c565b600160a060020a03821660009081526001602052604081209190915554610453908363ffffffff61075c16565b600055600160a060020a0381167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58360405190815260200160405180910390a25b5050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156104f557600160a060020a03338116600090815260026020908152604080832093881683529290529081205561052c565b610505818463ffffffff61075c16565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a03831615156105ca57600080fd5b600160a060020a0333166000908152600160205260409020546105f3908363ffffffff61075c16565b600160a060020a033381166000908152600160205260408082209390935590851681522054610628908363ffffffff61077316565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546106c2908363ffffffff61077316565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60008282111561076857fe5b508082035b92915050565b60008282018381101561078257fe5b8091505b50929150505600a165627a7a72305820c8ae888d656dea70503c4d4d596d472f0f5f09e90811f197b33d8673da14491e0029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"ERC20":{"contract_name":"ERC20","bytecode":"0x","abi":[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"ERC20Basic":{"contract_name":"ERC20Basic","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"LimitedTransferToken":{"contract_name":"LimitedTransferToken","bytecode":"0x","abi":[{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"MintableToken":{"contract_name":"MintableToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029","abi":[{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"PausableToken":{"contract_name":"PausableToken","bytecode":"0x60606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a72806100416000396000f300606060405236156100c25763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b381146100c757806318160ddd146100fd57806323b872dd146101225780633f4ba83a1461015e5780635c975abb14610173578063661884631461019a57806370a08231146101d05780638456cb59146102015780638da5cb5b14610216578063a9059cbb14610245578063d73dd6231461027b578063dd62ed3e146102b1578063f2fde38b146102e8575b600080fd5b34156100d257600080fd5b6100e9600160a060020a0360043516602435610309565b604051901515815260200160405180910390f35b341561010857600080fd5b610110610337565b60405190815260200160405180910390f35b341561012d57600080fd5b6100e9600160a060020a036004358116906024351660443561033d565b604051901515815260200160405180910390f35b341561016957600080fd5b61017161036d565b005b341561017e57600080fd5b6100e96103ef565b604051901515815260200160405180910390f35b34156101a557600080fd5b6100e9600160a060020a03600435166024356103ff565b604051901515815260200160405180910390f35b34156101db57600080fd5b610110600160a060020a036004351661042d565b60405190815260200160405180910390f35b341561020c57600080fd5b61017161044c565b005b341561022157600080fd5b6102296104d3565b604051600160a060020a03909116815260200160405180910390f35b341561025057600080fd5b6100e9600160a060020a03600435166024356104e2565b604051901515815260200160405180910390f35b341561028657600080fd5b6100e9600160a060020a0360043516602435610510565b604051901515815260200160405180910390f35b34156102bc57600080fd5b610110600160a060020a036004358116906024351661053e565b60405190815260200160405180910390f35b34156102f357600080fd5b610171600160a060020a036004351661056b565b005b60035460009060a060020a900460ff161561032357600080fd5b61032d8383610604565b90505b5b92915050565b60005481565b60035460009060a060020a900460ff161561035757600080fd5b610362848484610671565b90505b5b9392505050565b60035433600160a060020a0390811691161461038857600080fd5b60035460a060020a900460ff1615156103a057600080fd5b6003805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b5b565b60035460a060020a900460ff1681565b60035460009060a060020a900460ff161561041957600080fd5b61032d838361079d565b90505b5b92915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035433600160a060020a0390811691161461046757600080fd5b60035460a060020a900460ff161561047e57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b5b565b600354600160a060020a031681565b60035460009060a060020a900460ff16156104fc57600080fd5b61032d8383610899565b90505b5b92915050565b60035460009060a060020a900460ff161561052a57600080fd5b61032d8383610970565b90505b5b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461058657600080fd5b600160a060020a038116151561059b57600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600080600160a060020a038416151561068957600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546106cf908463ffffffff610a1516565b600160a060020a038087166000908152600160205260408082209390935590861681522054610704908463ffffffff610a2c16565b600160a060020a03851660009081526001602052604090205561072d818463ffffffff610a1516565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156107fa57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610831565b61080a818463ffffffff610a1516565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b6000600160a060020a03831615156108b057600080fd5b600160a060020a0333166000908152600160205260409020546108d9908363ffffffff610a1516565b600160a060020a03338116600090815260016020526040808220939093559085168152205461090e908363ffffffff610a2c16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546109a8908363ffffffff610a2c16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600082821115610a2157fe5b508082035b92915050565b600082820183811015610a3b57fe5b8091505b50929150505600a165627a7a723058209c3aa43df8e1a1001c443c4183b06b4828d8268d34e0a2b776aa51d05e6dc57b0029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"SafeERC20":{"contract_name":"SafeERC20","bytecode":"0x60606040523415600e57600080fd5b5b603680601c6000396000f30060606040525b600080fd00a165627a7a72305820a5c8a778d8321b7036364b8c31629716c5f64b25c934547cc7f85eb258eb27e20029","abi":[]},"StandardToken":{"contract_name":"StandardToken","bytecode":"0x6060604052341561000f57600080fd5b5b6106f18061001f6000396000f3006060604052361561008b5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663095ea7b3811461009057806318160ddd146100c657806323b872dd146100eb578063661884631461012757806370a082311461015d578063a9059cbb1461018e578063d73dd623146101c4578063dd62ed3e146101fa575b600080fd5b341561009b57600080fd5b6100b2600160a060020a0360043516602435610231565b604051901515815260200160405180910390f35b34156100d157600080fd5b6100d961029e565b60405190815260200160405180910390f35b34156100f657600080fd5b6100b2600160a060020a03600435811690602435166044356102a4565b604051901515815260200160405180910390f35b341561013257600080fd5b6100b2600160a060020a03600435166024356103d0565b604051901515815260200160405180910390f35b341561016857600080fd5b6100d9600160a060020a03600435166104cc565b60405190815260200160405180910390f35b341561019957600080fd5b6100b2600160a060020a03600435166024356104eb565b604051901515815260200160405180910390f35b34156101cf57600080fd5b6100b2600160a060020a03600435166024356105c2565b604051901515815260200160405180910390f35b341561020557600080fd5b6100d9600160a060020a0360043581169060243516610667565b60405190815260200160405180910390f35b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156102bc57600080fd5b50600160a060020a03808516600081815260026020908152604080832033909516835293815283822054928252600190529190912054610302908463ffffffff61069416565b600160a060020a038087166000908152600160205260408082209390935590861681522054610337908463ffffffff6106ab16565b600160a060020a038516600090815260016020526040902055610360818463ffffffff61069416565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561042d57600160a060020a033381166000908152600260209081526040808320938816835292905290812055610464565b61043d818463ffffffff61069416565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b6000600160a060020a038316151561050257600080fd5b600160a060020a03331660009081526001602052604090205461052b908363ffffffff61069416565b600160a060020a033381166000908152600160205260408082209390935590851681522054610560908363ffffffff6106ab16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546105fa908363ffffffff6106ab16565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b6000828211156106a057fe5b508082035b92915050565b6000828201838110156106ba57fe5b8091505b50929150505600a165627a7a723058204f6a8c528480157e04bac8b9f439b28416747b5afd3a4aca7babaf20d95c72e10029","abi":[{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"TokenTimelock":{"contract_name":"TokenTimelock","bytecode":"0x6060604052341561000f57600080fd5b6040516060806103c18339810160405280805191906020018051919060200180519150505b426001604060020a0382161161004957600080fd5b60008054600160a060020a03808616600160a060020a031992831617909255600180546001604060020a038516740100000000000000000000000000000000000000000260a060020a60e060020a03199487169190931617929092161790555b5050505b610305806100bc6000396000f300606060405263ffffffff60e060020a60003504166338af3eed81146100505780634e71d92d1461007f57806386d1a69f14610094578063b91d4001146100a9578063fc0c546a146100d9575b600080fd5b341561005b57600080fd5b610063610108565b604051600160a060020a03909116815260200160405180910390f35b341561008a57600080fd5b610092610117565b005b341561009f57600080fd5b61009261013d565b005b34156100b457600080fd5b6100bc61021c565b60405167ffffffffffffffff909116815260200160405180910390f35b34156100e457600080fd5b610063610244565b604051600160a060020a03909116815260200160405180910390f35b600154600160a060020a031681565b60015433600160a060020a0390811691161461013257600080fd5b61013a61013d565b5b565b60015460009074010000000000000000000000000000000000000000900467ffffffffffffffff1642101561017157600080fd5b60008054600160a060020a0316906370a082319030906040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b15156101cc57600080fd5b6102c65a03f115156101dd57600080fd5b5050506040518051915050600081116101f557600080fd5b60015460005461021891600160a060020a0391821691168363ffffffff61025316565b5b50565b60015474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b600054600160a060020a031681565b82600160a060020a031663a9059cbb838360006040516020015260405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102b057600080fd5b6102c65a03f115156102c157600080fd5b5050506040518051905015156102d357fe5b5b5050505600a165627a7a723058202d3d6dccd0b014b1e5401ab23a86e3117687ef9b231d4c58b36e3f63a2519fb70029","abi":[{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"release","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"releaseTime","outputs":[{"name":"","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_beneficiary","type":"address"},{"name":"_releaseTime","type":"uint64"}],"payable":false,"type":"constructor"}]},"VestedToken":{"contract_name":"VestedToken","bytecode":"0x60606040526014600355341561001457600080fd5b5b6116b5806100246000396000f300606060405236156100e35763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302a72a4c81146100e8578063095ea7b31461011957806318160ddd1461014f57806323b872dd146101745780632c71e60a146101b0578063600e85b71461022b57806366188463146102ac5780636c182e99146102e257806370a082311461031e5780639754a4d91461034f578063a9059cbb14610396578063d347c205146103cc578063d73dd6231461040a578063dd62ed3e14610440578063df3c211b14610477578063eb944e4c146104ab575b600080fd5b34156100f357600080fd5b610107600160a060020a03600435166104cf565b60405190815260200160405180910390f35b341561012457600080fd5b61013b600160a060020a03600435166024356104ee565b604051901515815260200160405180910390f35b341561015a57600080fd5b61010761055b565b60405190815260200160405180910390f35b341561017f57600080fd5b61013b600160a060020a0360043581169060243516604435610561565b604051901515815260200160405180910390f35b34156101bb57600080fd5b6101d2600160a060020a0360043516602435610593565b604051600160a060020a039097168752602087019590955267ffffffffffffffff93841660408088019190915292841660608701529216608085015290151560a084015290151560c083015260e0909101905180910390f35b341561023657600080fd5b61024d600160a060020a0360043516602435610619565b604051600160a060020a039098168852602088019690965260408088019590955267ffffffffffffffff9384166060880152918316608087015290911660a0850152151560c084015290151560e0830152610100909101905180910390f35b34156102b757600080fd5b61013b600160a060020a0360043516602435610766565b604051901515815260200160405180910390f35b34156102ed57600080fd5b610301600160a060020a0360043516610862565b60405167ffffffffffffffff909116815260200160405180910390f35b341561032957600080fd5b610107600160a060020a03600435166108f4565b60405190815260200160405180910390f35b341561035a57600080fd5b610394600160a060020a036004351660243567ffffffffffffffff6044358116906064358116906084351660a435151560c4351515610913565b005b34156103a157600080fd5b61013b600160a060020a0360043516602435610b9e565b604051901515815260200160405180910390f35b34156103d757600080fd5b610107600160a060020a036004351667ffffffffffffffff60243516610bce565b60405190815260200160405180910390f35b341561041557600080fd5b61013b600160a060020a0360043516602435610d1b565b604051901515815260200160405180910390f35b341561044b57600080fd5b610107600160a060020a0360043581169060243516610dc0565b60405190815260200160405180910390f35b341561048257600080fd5b610107600435602435604435606435608435610ded565b60405190815260200160405180910390f35b34156104b657600080fd5b610394600160a060020a0360043516602435610e45565b005b600160a060020a0381166000908152600460205260409020545b919050565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b6000838261056f8242610bce565b81111561057b57600080fd5b61058686868661126c565b92505b5b50509392505050565b6004602052816000526040600020818154811015156105ae57fe5b906000526020600020906003020160005b5080546001820154600290920154600160a060020a03909116935090915067ffffffffffffffff80821691680100000000000000008104821691608060020a8204169060ff60c060020a820481169160c860020a90041687565b6000806000806000806000806000600460008c600160a060020a0316600160a060020a031681526020019081526020016000208a81548110151561065957fe5b906000526020600020906003020160005b50805460018201546002830154600160a060020a039092169b50995067ffffffffffffffff608060020a820481169850808216975068010000000000000000820416955060ff60c060020a82048116955060c860020a90910416925090506107558160e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015242611398565b96505b509295985092959890939650565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054808311156107c357600160a060020a0333811660009081526002602090815260408083209388168352929052908120556107fa565b6107d3818463ffffffff6113e816565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a03811660009081526004602052604081205442915b818110156108ec57600160a060020a038416600090815260046020526040902080546108e19190839081106108af57fe5b906000526020600020906003020160005b506002015468010000000000000000900467ffffffffffffffff16846113ff565b92505b60010161087e565b5b5050919050565b600160a060020a0381166000908152600160205260409020545b919050565b60008567ffffffffffffffff168567ffffffffffffffff161015801561094d57508467ffffffffffffffff168467ffffffffffffffff1610155b151561095857600080fd5b600354610964896104cf565b1061096e57600080fd5b600160a060020a038816600090815260046020526040902080546001810161099683826115c1565b916000526020600020906003020160005b60e060405190810160405280876109bf5760006109c1565b335b600160a060020a03168152602081018c905267ffffffffffffffff808b16604083015289811660608301528b16608082015287151560a082015286151560c0909101529190508151815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039190911617815560208201518160010155604082015160028201805467ffffffffffffffff191667ffffffffffffffff9290921691909117905560608201518160020160086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160020160106101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a082015160028201805491151560c060020a0278ff0000000000000000000000000000000000000000000000001990921691909117905560c08201516002909101805491151560c860020a0279ff0000000000000000000000000000000000000000000000000019909216919091179055509050610b418888610b9e565b5087600160a060020a031633600160a060020a03167ff9565aecd648a0466ffb964a79eeccdf1120ad6276189c687a6e9fe73984d9bb896001850360405191825260208201526040908101905180910390a35b5050505050505050565b60003382610bac8242610bce565b811115610bb857600080fd5b610bc2858561142e565b92505b5b505092915050565b6000806000806000610bdf876104cf565b9350831515610bf957610bf28787611505565b9450610d11565b60009250600091505b83821015610ce757600160a060020a03871660009081526004602052604090208054610cd9918591610cd4919086908110610c3957fe5b906000526020600020906003020160005b5060e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015289611519565b611542565b92505b600190910190610c02565b610cf9610cf3886108f4565b846113e8565b9050610d0e81610d098989611505565b61155c565b94505b5050505092915050565b600160a060020a033381166000908152600260209081526040808320938616835292905290812054610d53908363ffffffff61154216565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60008083861015610e015760009150610e3b565b828610610e1057869150610e3b565b610e35610e2688610e2189896113e8565b611576565b610e3085886113e8565b6115a5565b90508091505b5095945050505050565b600160a060020a038216600090815260046020526040812080548291829185908110610e6d57fe5b906000526020600020906003020160005b50600281015490935060c060020a900460ff161515610e9c57600080fd5b825433600160a060020a03908116911614610eb657600080fd5b600283015460c860020a900460ff16610ecf5733610ed3565b61dead5b9150610f628360e060405190810160409081528254600160a060020a031682526001830154602083015260029092015467ffffffffffffffff8082169383019390935268010000000000000000810483166060830152608060020a8104909216608082015260ff60c060020a83048116151560a083015260c860020a909204909116151560c082015242611519565b600160a060020a038616600090815260046020526040902080549192509085908110610f8a57fe5b906000526020600020906003020160005b50805473ffffffffffffffffffffffffffffffffffffffff19168155600060018083018290556002909201805479ffffffffffffffffffffffffffffffffffffffffffffffffffff19169055600160a060020a038716815260046020526040902080549091611010919063ffffffff6113e816565b8154811061101a57fe5b906000526020600020906003020160005b50600160a060020a038616600090815260046020526040902080548690811061105057fe5b906000526020600020906003020160005b508154815473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03918216178255600180840154908301556002928301805493909201805467ffffffffffffffff191667ffffffffffffffff94851617808255835468010000000000000000908190048616026fffffffffffffffff000000000000000019909116178082558354608060020a9081900490951690940277ffffffffffffffff000000000000000000000000000000001990941693909317808455825460ff60c060020a918290048116151590910278ff0000000000000000000000000000000000000000000000001990921691909117808555925460c860020a9081900490911615150279ff00000000000000000000000000000000000000000000000000199092169190911790915585166000908152600460205260409020805460001901906111af90826115c1565b50600160a060020a0382166000908152600160205260409020546111d9908263ffffffff61154216565b600160a060020a03808416600090815260016020526040808220939093559087168152205461120e908263ffffffff6113e816565b600160a060020a038087166000818152600160205260409081902093909355908416917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a35b5050505050565b600080600160a060020a038416151561128457600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120546112ca908463ffffffff6113e816565b600160a060020a0380871660009081526001602052604080822093909355908616815220546112ff908463ffffffff61154216565b600160a060020a038516600090815260016020526040902055611328818463ffffffff6113e816565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60006113df83602001518367ffffffffffffffff16856080015167ffffffffffffffff16866040015167ffffffffffffffff16876060015167ffffffffffffffff16610ded565b90505b92915050565b6000828211156113f457fe5b508082035b92915050565b60008167ffffffffffffffff168367ffffffffffffffff16101561142357816113df565b825b90505b92915050565b6000600160a060020a038316151561144557600080fd5b600160a060020a03331660009081526001602052604090205461146e908363ffffffff6113e816565b600160a060020a0333811660009081526001602052604080822093909355908516815220546114a3908363ffffffff61154216565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b60006113df836108f4565b90505b92915050565b60006113df6115288484611398565b84602001519063ffffffff6113e816565b90505b92915050565b60008282018381101561155157fe5b8091505b5092915050565b600081831061142357816113df565b825b90505b92915050565b6000828202831580611592575082848281151561158f57fe5b04145b151561155157fe5b8091505b5092915050565b60008082848115156115b357fe5b0490508091505b5092915050565b8154818355818115116115ed576003028160030283600052602060002091820191016115ed9190611625565b5b505050565b8154818355818115116115ed576003028160030283600052602060002091820191016115ed9190611625565b5b505050565b61168691905b8082111561168257805473ffffffffffffffffffffffffffffffffffffffff191681556000600182015560028101805479ffffffffffffffffffffffffffffffffffffffffffffffffffff1916905560030161162b565b5090565b905600a165627a7a72305820c3bc2f77ee48d32056260cb35236d3395ee6d0875c39aec752d35f8ca1d268ea0029","abi":[{"constant":true,"inputs":[{"name":"_holder","type":"address"}],"name":"tokenGrantsCount","outputs":[{"name":"index","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"grants","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"start","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"tokenGrant","outputs":[{"name":"granter","type":"address"},{"name":"value","type":"uint256"},{"name":"vested","type":"uint256"},{"name":"start","type":"uint64"},{"name":"cliff","type":"uint64"},{"name":"vesting","type":"uint64"},{"name":"revokable","type":"bool"},{"name":"burnsOnRevoke","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"}],"name":"lastTokenIsTransferableDate","outputs":[{"name":"date","type":"uint64"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"},{"name":"_start","type":"uint64"},{"name":"_cliff","type":"uint64"},{"name":"_vesting","type":"uint64"},{"name":"_revokable","type":"bool"},{"name":"_burnsOnRevoke","type":"bool"}],"name":"grantVestedTokens","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"holder","type":"address"},{"name":"time","type":"uint64"}],"name":"transferableTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"tokens","type":"uint256"},{"name":"time","type":"uint256"},{"name":"start","type":"uint256"},{"name":"cliff","type":"uint256"},{"name":"vesting","type":"uint256"}],"name":"calculateVestedTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_holder","type":"address"},{"name":"_grantId","type":"uint256"}],"name":"revokeTokenGrant","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"grantId","type":"uint256"}],"name":"NewTokenGrant","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]},"PullPayment":{"contract_name":"PullPayment","bytecode":"0x6060604052341561000f57600080fd5b5b6101e68061001f6000396000f300606060405263ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416625b448781146100525780636103d70b14610077578063e2982c211461008c575b600080fd5b341561005d57600080fd5b6100656100ca565b60405190815260200160405180910390f35b341561008257600080fd5b61008a6100d0565b005b341561009757600080fd5b61006573ffffffffffffffffffffffffffffffffffffffff60043516610191565b60405190815260200160405180910390f35b60015481565b3373ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604090205480151561010357600080fd5b73ffffffffffffffffffffffffffffffffffffffff3016318190101561012857600080fd5b60015461013b908263ffffffff6101a316565b60015573ffffffffffffffffffffffffffffffffffffffff82166000818152602081905260408082209190915582156108fc0290839051600060405180830381858888f19350505050151561018c57fe5b5b5050565b60006020819052908152604090205481565b6000828211156101af57fe5b508082035b929150505600a165627a7a723058206fbb605a926c23d36f1098ae86f7e3e4e4d6110ef62977ed33fdec0a20c9c1420029","abi":[{"constant":true,"inputs":[],"name":"totalPayments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdrawPayments","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"payments","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"}]},"CappedCrowdsale":{"contract_name":"CappedCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_cap","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"Crowdsale":{"contract_name":"Crowdsale","bytecode":"0x6060604052341561000f57600080fd5b604051608080611ae1833981016040528080519190602001805191906020018051919060200180519150505b4284101561004857600080fd5b8383101561005557600080fd5b6000821161006257600080fd5b600160a060020a038116151561007757600080fd5b61008c64010000000061040a6100d482021704565b60008054600160a060020a0319908116600160a060020a0393841617909155600186905560028590556004849055600380549091169183169190911790555b5050505061010a565b60006100de6100fa565b604051809103906000f08015156100f457600080fd5b90505b90565b604051610aae8061103383390190565b610f1a806101196000396000f3006060604052361561008b5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e811461009d5780633197cbb6146100c25780634042b66f146100e7578063521eb2731461010c57806378e979251461013b578063ec8ac4d814610160578063ecb70fb714610176578063fc0c546a1461019d575b61009b5b610098336101cc565b5b565b005b34156100a857600080fd5b6100b061031a565b60405190815260200160405180910390f35b34156100cd57600080fd5b6100b0610320565b60405190815260200160405180910390f35b34156100f257600080fd5b6100b0610326565b60405190815260200160405180910390f35b341561011757600080fd5b61011f61032c565b604051600160a060020a03909116815260200160405180910390f35b341561014657600080fd5b6100b061033b565b60405190815260200160405180910390f35b61009b600160a060020a03600435166101cc565b005b341561018157600080fd5b610189610341565b604051901515815260200160405180910390f35b34156101a857600080fd5b61011f61034a565b604051600160a060020a03909116815260200160405180910390f35b600080600160a060020a03831615156101e457600080fd5b6101ec610359565b15156101f757600080fd5b60045434925061020e90839063ffffffff61038a16565b600554909150610224908363ffffffff6103b916565b60055560008054600160a060020a0316906340c10f199085908490604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b15156102a257600080fd5b6102c65a03f115156102b357600080fd5b505050604051805190505082600160a060020a031633600160a060020a03167f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18848460405191825260208201526040908101905180910390a36103146103d3565b5b505050565b60045481565b60025481565b60055481565b600354600160a060020a031681565b60015481565b60025442115b90565b600054600160a060020a031681565b6000806000600154421015801561037257506002544211155b9150503415158180156103825750805b92505b505090565b60008282028315806103a657508284828115156103a357fe5b04145b15156103ae57fe5b8091505b5092915050565b6000828201838110156103ae57fe5b8091505b5092915050565b600354600160a060020a03163480156108fc0290604051600060405180830381858888f19350505050151561009857600080fd5b5b565b6000610414610430565b604051809103906000f080151561042a57600080fd5b90505b90565b604051610aae8061044183390190560060606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029a165627a7a7230582018dab90c9dce4733c40cf376e466c77509d49019c7d01f0d2ac8968646e45e0e002960606040526003805460a060020a60ff02191690555b60038054600160a060020a03191633600160a060020a03161790555b5b610a6d806100416000396000f300606060405236156100c25763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146100c7578063095ea7b3146100ee57806318160ddd1461012457806323b872dd1461014957806340c10f191461018557806366188463146101bb57806370a08231146101f15780637d64bcb4146102225780638da5cb5b14610249578063a9059cbb14610278578063d73dd623146102ae578063dd62ed3e146102e4578063f2fde38b1461031b575b600080fd5b34156100d257600080fd5b6100da61033c565b604051901515815260200160405180910390f35b34156100f957600080fd5b6100da600160a060020a036004351660243561035d565b604051901515815260200160405180910390f35b341561012f57600080fd5b6101376103ca565b60405190815260200160405180910390f35b341561015457600080fd5b6100da600160a060020a03600435811690602435166044356103d0565b604051901515815260200160405180910390f35b341561019057600080fd5b6100da600160a060020a03600435166024356104fc565b604051901515815260200160405180910390f35b34156101c657600080fd5b6100da600160a060020a036004351660243561061d565b604051901515815260200160405180910390f35b34156101fc57600080fd5b610137600160a060020a0360043516610719565b60405190815260200160405180910390f35b341561022d57600080fd5b6100da610738565b604051901515815260200160405180910390f35b341561025457600080fd5b61025c6107bf565b604051600160a060020a03909116815260200160405180910390f35b341561028357600080fd5b6100da600160a060020a03600435166024356107ce565b604051901515815260200160405180910390f35b34156102b957600080fd5b6100da600160a060020a03600435166024356108a5565b604051901515815260200160405180910390f35b34156102ef57600080fd5b610137600160a060020a036004358116906024351661094a565b60405190815260200160405180910390f35b341561032657600080fd5b61033a600160a060020a0360043516610977565b005b60035474010000000000000000000000000000000000000000900460ff1681565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60005481565b600080600160a060020a03841615156103e857600080fd5b50600160a060020a0380851660008181526002602090815260408083203390951683529381528382205492825260019052919091205461042e908463ffffffff610a1016565b600160a060020a038087166000908152600160205260408082209390935590861681522054610463908463ffffffff610a2716565b600160a060020a03851660009081526001602052604090205561048c818463ffffffff610a1016565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3600191505b509392505050565b60035460009033600160a060020a0390811691161461051a57600080fd5b60035474010000000000000000000000000000000000000000900460ff161561054257600080fd5b600054610555908363ffffffff610a2716565b6000908155600160a060020a038416815260016020526040902054610580908363ffffffff610a2716565b600160a060020a0384166000818152600160205260409081902092909255907f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968859084905190815260200160405180910390a282600160a060020a031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405190815260200160405180910390a35060015b5b5b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120548083111561067a57600160a060020a0333811660009081526002602090815260408083209388168352929052908120556106b1565b61068a818463ffffffff610a1016565b600160a060020a033381166000908152600260209081526040808320938916835292905220555b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020547f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925915190815260200160405180910390a3600191505b5092915050565b600160a060020a0381166000908152600160205260409020545b919050565b60035460009033600160a060020a0390811691161461075657600080fd5b6003805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790557fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a15060015b5b90565b600354600160a060020a031681565b6000600160a060020a03831615156107e557600080fd5b600160a060020a03331660009081526001602052604090205461080e908363ffffffff610a1016565b600160a060020a033381166000908152600160205260408082209390935590851681522054610843908363ffffffff610a2716565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060015b92915050565b600160a060020a0333811660009081526002602090815260408083209386168352929052908120546108dd908363ffffffff610a2716565b600160a060020a0333811660008181526002602090815260408083209489168084529490915290819020849055919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591905190815260200160405180910390a35060015b92915050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a0390811691161461099257600080fd5b600160a060020a03811615156109a757600080fd5b600354600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600082821115610a1c57fe5b508082035b92915050565b600082820183811015610a3657fe5b8091505b50929150505600a165627a7a723058203bd32e77debf4781e7203d19c1b7ff116cb97c8ff79278744304dcd255487d020029","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_startTime","type":"uint256"},{"name":"_endTime","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"FinalizableCrowdsale":{"contract_name":"FinalizableCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]},"RefundVault":{"contract_name":"RefundVault","bytecode":"0x6060604052341561000f57600080fd5b60405160208061065b833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b600160a060020a038116151561005857600080fd5b60028054600160a060020a031916600160a060020a038316178082556000919060a060020a60ff02191674010000000000000000000000000000000000000000835b02179055505b505b6105aa806100b16000396000f300606060405236156100965763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166343d726d6811461009b578063521eb273146100b05780638c52dc41146100df5780638da5cb5b146100f4578063c19d93fb14610123578063cb13cddb1461015a578063f2fde38b1461018b578063f340fa01146101ac578063fa89401a146101c2575b600080fd5b34156100a657600080fd5b6100ae6101e3565b005b34156100bb57600080fd5b6100c36102b6565b604051600160a060020a03909116815260200160405180910390f35b34156100ea57600080fd5b6100ae6102c5565b005b34156100ff57600080fd5b6100c3610361565b604051600160a060020a03909116815260200160405180910390f35b341561012e57600080fd5b610136610370565b6040518082600281111561014657fe5b60ff16815260200191505060405180910390f35b341561016557600080fd5b610179600160a060020a0360043516610380565b60405190815260200160405180910390f35b341561019657600080fd5b6100ae600160a060020a0360043516610392565b005b6100ae600160a060020a036004351661042b565b005b34156101cd57600080fd5b6100ae600160a060020a03600435166104b2565b005b60005433600160a060020a039081169116146101fe57600080fd5b60005b6002805460a060020a900460ff169081111561021957fe5b1461022357600080fd5b60028054819074ff0000000000000000000000000000000000000000191660a060020a825b02179055507f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1600254600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156102b257600080fd5b5b5b565b600254600160a060020a031681565b60005433600160a060020a039081169116146102e057600080fd5b60005b6002805460a060020a900460ff16908111156102fb57fe5b1461030557600080fd5b600280546001919074ff0000000000000000000000000000000000000000191660a060020a835b02179055507f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8960405160405180910390a15b5b565b600054600160a060020a031681565b60025460a060020a900460ff1681565b60016020526000908152604090205481565b60005433600160a060020a039081169116146103ad57600080fd5b600160a060020a03811615156103c257600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a0390811691161461044657600080fd5b60005b6002805460a060020a900460ff169081111561046157fe5b1461046b57600080fd5b600160a060020a038116600090815260016020526040902054610494903463ffffffff61056416565b600160a060020a0382166000908152600160205260409020555b5b50565b600060015b6002805460a060020a900460ff16908111156104cf57fe5b146104d957600080fd5b50600160a060020a038116600081815260016020526040808220805492905590919082156108fc0290839051600060405180830381858888f19350505050151561052257600080fd5b81600160a060020a03167fd7dee2702d63ad89917b6a4da9981c90c4d24f8c2bdfd64c604ecae57d8d06518260405190815260200160405180910390a25b5050565b60008282018381101561057357fe5b8091505b50929150505600a165627a7a7230582003c9f36fbee00f417f341def39ddd971dd6f117a31fffcbc0ff74153557d91fd0029","abi":[{"constant":false,"inputs":[],"name":"close","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"enableRefunds","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"deposited","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"deposit","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"investor","type":"address"}],"name":"refund","outputs":[],"payable":false,"type":"function"},{"inputs":[{"name":"_wallet","type":"address"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[],"name":"Closed","type":"event"},{"anonymous":false,"inputs":[],"name":"RefundsEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"weiAmount","type":"uint256"}],"name":"Refunded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]},"RefundableCrowdsale":{"contract_name":"RefundableCrowdsale","bytecode":"0x","abi":[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isFinalized","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"claimRefund","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"hasEnded","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"vault","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_goal","type":"uint256"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"}]}},"deployments":{},"sources":{"./contracts/Bounty.sol":"ipfs://QmRiCydHy8w3p7ie52bMzpmWA7GM6xDe1msiPfHGobT2g7","./contracts/DayLimit.sol":"ipfs://QmPjDKsBGpVHvDkTn9e48BRFqgaWXaZ7qG6oxhXQ6Spu1W","./contracts/ECRecovery.sol":"ipfs://QmYtjCA79ihdm3Kpb68zUT9tgQpBE6DsBYJF5j6yoU3MCf","./contracts/LimitBalance.sol":"ipfs://QmXQYms1cA4TFqQeFBVBKW29YeB5ZNTh1GF8bbwwFrEisg","./contracts/MerkleProof.sol":"ipfs://QmTKnQjjzvWozgEzg5EDP3SbXQrXEaj5DWXQfFjTK4yHjx","./contracts/ReentrancyGuard.sol":"ipfs://QmcHLaefT7wigDGRB6Q5DK5DBFjZTccp6rQHB13ZAkjeNK","./contracts/crowdsale/CappedCrowdsale.sol":"ipfs://QmbmLMWU5xke4EkRNTMmTFEpxFV2PZo8DqwAHFgKWNm2ig","./contracts/crowdsale/Crowdsale.sol":"ipfs://QmWrBYUiP8K5yopAmwY7Cmv3aLTXyxR8SrgD4ZNs7edf2u","./contracts/crowdsale/FinalizableCrowdsale.sol":"ipfs://QmassyvMwRpUgboKW64ATvcWreGKL7mS4G3cBsa1e5ZrZp","./contracts/crowdsale/RefundableCrowdsale.sol":"ipfs://QmPbCTwPv1DJ5mEksGwnNGFmuCRgJq7Cv8bofrMpKAmgqt","./contracts/crowdsale/RefundVault.sol":"ipfs://QmXFWnSyuyatfyvtxLpxxqnXtj22V4ZSz5raD1RMkphY9j","./contracts/examples/SampleCrowdsale.sol":"ipfs://QmfRuKTv1EgbqzVnVF69NqCWvbCnaqv7Pv6uLhKBdS35sA","./contracts/examples/SimpleToken.sol":"ipfs://QmRF8KRcEpBeLZm1pXppK58K2cBdGuJqqawaYU8ruUPTCx","./contracts/lifecycle/Destructible.sol":"ipfs://QmeCpEXsb2ei4NPCuyxzDRZd2mnmVcvUGxJDqD2VpVs2BV","./contracts/lifecycle/Migrations.sol":"ipfs://QmRYsztCjqfqSTFrgsGziiqVo8R9ta4HHo8CEDsfxbuEeP","./contracts/lifecycle/Pausable.sol":"ipfs://QmNpxBtAvm2uWZ6QKnXtftPRs7qBqspfBBAFMy8zBmFLcr","./contracts/lifecycle/TokenDestructible.sol":"ipfs://QmQR68UDarf2c6nKtfe9yPxR5yad6pWgW9akHSgELPnMXm","./contracts/math/Math.sol":"ipfs://QmW92S9h4kwXpMs8q5AR5fkkbiKG4228oTAXSYYo5T3A2C","./contracts/math/SafeMath.sol":"ipfs://QmWSLu5rYhKC3hu2vHxmgm999kFfiH9o5iZYZc2j7ZUZNX","./contracts/ownership/CanReclaimToken.sol":"ipfs://QmT9WiRVsCHVmTUnrj36C9HYbMXCtwwLZrJo5isA9bmvEk","./contracts/ownership/Claimable.sol":"ipfs://QmUMkFKoP4e4XVrfAJhNUJTKd9V63fNNPHiYgFs1P8C4AJ","./contracts/ownership/Contactable.sol":"ipfs://QmeYkxqQh378Yku9o9Ct9E4yzJFPCCwCf9z2wFRqTHugte","./contracts/ownership/DelayedClaimable.sol":"ipfs://QmXN1cu7Ew8jnUdwvTdTgN3BgptSB3SDEZmKmDWMmMtXMd","./contracts/ownership/HasNoContracts.sol":"ipfs://QmZ1pyaFkJE3JJy3u7dmeWDRuQKsJ9FGbMt9Rxw7Tze4Mt","./contracts/ownership/HasNoEther.sol":"ipfs://Qmd6SKzwWqnttCffjb6t895jgHY9LnGyP76qWGJ3HY5QzP","./contracts/ownership/HasNoTokens.sol":"ipfs://QmWaLfpsneTADa8ht6Pbeqfaqdj6UbcT6X1pbsCjNH34mV","./contracts/ownership/NoOwner.sol":"ipfs://QmeW92BEe8WJFi8vm19284QY8xh5Kn3Fe2BGAdo91YBG7X","./contracts/ownership/Ownable.sol":"ipfs://QmYP2is6EYQLf85jD9k6R1WTYqa5CKLvz3g8dPjZC27b9x","./contracts/payment/PullPayment.sol":"ipfs://QmTNECEe6K6GSPccm9pGzpUWhucy7j9qjKGx6WgA9Ur8bV","./contracts/token/BasicToken.sol":"ipfs://QmTewjoDJ5PS4bdPTXvVMRTFjMiBgJMm4YyjdEPCXk9Lny","./contracts/token/BurnableToken.sol":"ipfs://Qmb7RV7pbTrjFFxg1GKGtDrP52scNusDJiKNby1Ei3CitP","./contracts/token/ERC20.sol":"ipfs://QmcFFg2KzuFrQ9QGdKYoL5h4Kh5dgzA6roqRboobnzQHGc","./contracts/token/ERC20Basic.sol":"ipfs://QmRtyoNm35awHN1bHD7RFpBrSQ8u6BGoRu2FH9mYmoEjPF","./contracts/token/LimitedTransferToken.sol":"ipfs://QmYPMFtSTs8ANew5F3pkSvRSHoJgzUT4Uw1WZKbr6EXiep","./contracts/token/MintableToken.sol":"ipfs://QmVT3q5gNJNjhM8S5YMi1r7hNS9VQSoWxGYRAaSRXSmXTw","./contracts/token/PausableToken.sol":"ipfs://QmQwHWwnqFLeFi9JB4iy4prka1AELqjFVL7qH3Lw7JNPtJ","./contracts/token/SafeERC20.sol":"ipfs://QmfZ7ZdEbp97f4CsC8kL6VehwZ2k8usirVbbDDD8hQd9Sx","./contracts/token/StandardToken.sol":"ipfs://QmNUzFReiMn6pvpWxLka7emEUjmcACHK9bF4Dz1CGTdd7i","./contracts/token/TokenTimelock.sol":"ipfs://QmULfAyT7E1zVT9hFtQuJgiWQAwQw3RxxuP4ZXs7wGxJGA","./contracts/token/VestedToken.sol":"ipfs://QmQmmCNVpASWLD4WVowiVsCSS6u2L5MCipxQ54xzRZMaQh"},"build_dependencies":{}} -------------------------------------------------------------------------------- /installed_contracts/zeppelin/lock.uri: -------------------------------------------------------------------------------- 1 | ipfs://QmaCaDgbXgTJXdt8JRU46R59sH4UwnDHiAopdbndEDGqxV -------------------------------------------------------------------------------- /migrations/1_initial_migration.js: -------------------------------------------------------------------------------- 1 | var Migrations = artifacts.require("./Migrations.sol"); 2 | 3 | module.exports = function(deployer) { 4 | deployer.deploy(Migrations); 5 | }; 6 | -------------------------------------------------------------------------------- /migrations/2_deploy_contracts.js: -------------------------------------------------------------------------------- 1 | module.exports = function(deployer) {}; 2 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sample-crowdsale", 3 | "version": "1.0.0", 4 | "main": "truffle.js", 5 | "author": "John Backus ", 6 | "license": "MIT", 7 | "scripts": { 8 | "test": "bin/test" 9 | }, 10 | "dependencies": { 11 | "minimetoken": "^0.1.7", 12 | "truffle": "^3.4.9" 13 | }, 14 | "devDependencies": { 15 | "@types/bignumber.js": "^4.0.3", 16 | "@types/chai": "^4.0.4", 17 | "@types/chai-as-promised": "^0.0.31", 18 | "@types/mocha": "^2.2.42", 19 | "@types/node": "^8.0.26", 20 | "babel-polyfill": "^6.26.0", 21 | "babel-preset-es2015": "^6.18.0", 22 | "babel-preset-stage-2": "^6.18.0", 23 | "babel-preset-stage-3": "^6.17.0", 24 | "babel-register": "^6.26.0", 25 | "chai": "^4.1.1", 26 | "chai-as-promised": "^7.1.1", 27 | "chai-bignumber": "^2.0.1", 28 | "ethereumjs-testrpc": "^4.1.1", 29 | "prettier": "^1.6.1", 30 | "solidity-coverage": "^0.2.2", 31 | "truffle-hdwallet-provider": "^0.0.3", 32 | "ts-node": "^3.3.0", 33 | "typescript": "^2.5.2" 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /test/SimpleSale.ts: -------------------------------------------------------------------------------- 1 | import * as chai from "chai"; 2 | 3 | const chaiBignumber = require("chai-bignumber"); 4 | 5 | chai.use(chaiBignumber(web3.BigNumber)).should(); 6 | 7 | const SimpleSale = artifacts.require("SimpleSale"); 8 | const SimpleToken = artifacts.require("SimpleToken"); 9 | 10 | contract("SimpleSale", function([_, buyer, wallet, donor, recipient]) { 11 | function latestBlockTime() { 12 | return latestBlock().timestamp; 13 | } 14 | 15 | function latestBlock() { 16 | const latestBlock = web3.eth.getBlock("latest"); 17 | 18 | if (latestBlock && latestBlock.number && latestBlock.timestamp) { 19 | return { 20 | number: latestBlock.number, 21 | timestamp: latestBlock.timestamp 22 | }; 23 | } else { 24 | throw `Expected web3.eth.getBlock to return a block object but got ${latestBlock}`; 25 | } 26 | } 27 | 28 | it("allows user to purchase", async () => { 29 | const sale = await SimpleSale.new( 30 | latestBlockTime() + 1, 31 | latestBlockTime() + 10, 32 | 50, 33 | wallet 34 | ); 35 | 36 | const token = SimpleToken.at(await sale.token()); 37 | 38 | const balanceBefore = await token.balanceOf(buyer); 39 | await sale.sendTransaction({ 40 | value: 50, 41 | from: buyer 42 | }); 43 | const balanceAfter = await token.balanceOf(buyer); 44 | 45 | balanceBefore.should.be.bignumber.equal(0); 46 | balanceAfter.should.be.bignumber.equal(2500); 47 | }); 48 | 49 | it("allows user to buy tokens for another user", async () => { 50 | const sale = await SimpleSale.new( 51 | latestBlockTime() + 1, 52 | latestBlockTime() + 10, 53 | 50, 54 | wallet 55 | ); 56 | 57 | const token = SimpleToken.at(await sale.token()); 58 | 59 | const recipientBalanceBefore = await token.balanceOf(recipient); 60 | const donorBalanceBefore = await token.balanceOf(donor); 61 | 62 | await sale.buyTokens(recipient, { 63 | value: 50, 64 | from: donor 65 | }); 66 | 67 | const recipientBalanceAfter = await token.balanceOf(recipient); 68 | const donorBalanceAfter = await token.balanceOf(donor); 69 | 70 | recipientBalanceBefore.should.be.bignumber.equal(0); 71 | recipientBalanceAfter.should.be.bignumber.equal(2500); 72 | donorBalanceBefore.should.be.bignumber.equal(0); 73 | donorBalanceAfter.should.be.bignumber.equal(0); 74 | }); 75 | }); 76 | -------------------------------------------------------------------------------- /truffle.d.ts: -------------------------------------------------------------------------------- 1 | import * as Web3 from "web3"; 2 | import { SimpleSaleInstance, SimpleTokenInstance } from "./contracts"; 3 | 4 | declare global { 5 | function contract(name: string, test: ContractTest): void; 6 | var artifacts: Artifacts; 7 | var web3: Web3; 8 | var assert: Chai.AssertStatic; 9 | } 10 | 11 | declare type ContractTest = (accounts: string[]) => void; 12 | 13 | interface Contract { 14 | "new"(...args: any[]): Promise; 15 | deployed(): Promise; 16 | at(address: string): T; 17 | } 18 | 19 | interface Artifacts { 20 | require(name: "SimpleSale"): Contract; 21 | require(name: "SimpleToken"): Contract; 22 | } 23 | -------------------------------------------------------------------------------- /truffle.js: -------------------------------------------------------------------------------- 1 | require("babel-register"); 2 | require("babel-polyfill"); 3 | 4 | module.exports = { 5 | networks: { 6 | development: { 7 | host: "localhost", 8 | port: 8545, 9 | network_id: "*", // Match any network id 10 | gas: 1e7 11 | }, 12 | test: { 13 | provider: require("ethereumjs-testrpc").provider({ gasLimit: 1e7 }), 14 | network_id: "*" 15 | } 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "noUnusedParameters": true, 5 | "noImplicitReturns": true, 6 | "noUnusedLocals": true, 7 | "strictNullChecks": true, 8 | "outDir": "js_test", 9 | "module": "commonjs", 10 | "lib": ["es6", "es2017", "dom"], 11 | "target": "es5" 12 | }, 13 | "include": [ 14 | "./truffle.d.ts", 15 | "./web3.d.ts", 16 | "./chai-bignumber.d.ts", 17 | "test/**/*.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /web3.d.ts: -------------------------------------------------------------------------------- 1 | // Slightly modified typings from https://github.com/0xProject/web3-typescript-typings 2 | 3 | declare module "web3" { 4 | import * as BigNumber from "bignumber.js"; 5 | 6 | type MixedData = string | number | object | any[] | BigNumber.BigNumber; 7 | 8 | class Web3 { 9 | public BigNumber: typeof BigNumber; 10 | 11 | public static providers: typeof providers; 12 | public currentProvider: Web3.Provider; 13 | 14 | public eth: Web3.EthApi; 15 | public personal: Web3.PersonalApi | undefined; 16 | public version: Web3.VersionApi; 17 | public net: Web3.NetApi; 18 | 19 | public constructor(provider?: Web3.Provider); 20 | 21 | public isConnected(): boolean; 22 | public setProvider(provider: Web3.Provider): void; 23 | public reset(keepIsSyncing: boolean): void; 24 | public toHex(data: MixedData): string; 25 | public toAscii(hex: string): string; 26 | public fromAscii(ascii: string, padding?: number): string; 27 | public toDecimal(hex: string): number; 28 | public fromDecimal(value: number | string): string; 29 | public fromWei(value: number | string, unit: Web3.Unit): string; 30 | public fromWei( 31 | value: BigNumber.BigNumber, 32 | unit: Web3.Unit 33 | ): BigNumber.BigNumber; 34 | public toWei(amount: number | string, unit: Web3.Unit): string; 35 | public toWei( 36 | amount: BigNumber.BigNumber, 37 | unit: Web3.Unit 38 | ): BigNumber.BigNumber; 39 | public toBigNumber(value: number | string): BigNumber.BigNumber; 40 | public isAddress(address: string): boolean; 41 | public isChecksumAddress(address: string): boolean; 42 | public sha3(value: string, options?: Web3.Sha3Options): string; 43 | } 44 | 45 | namespace providers { 46 | class HttpProvider implements Web3.Provider { 47 | constructor( 48 | url?: string, 49 | timeout?: number, 50 | username?: string, 51 | password?: string 52 | ); 53 | sendAsync( 54 | payload: Web3.JSONRPCRequestPayload, 55 | callback: (err: Error, result: Web3.JSONRPCResponsePayload) => void 56 | ): void; 57 | } 58 | } 59 | 60 | namespace Web3 { 61 | type ContractAbi = AbiDefinition[]; 62 | 63 | type AbiDefinition = FunctionAbi | EventAbi; 64 | 65 | type FunctionAbi = MethodAbi | ConstructorAbi | FallbackAbi; 66 | 67 | interface MethodAbi { 68 | type: "function"; 69 | name: string; 70 | inputs: FunctionParameter[]; 71 | outputs: FunctionParameter[]; 72 | constant: boolean; 73 | payable: boolean; 74 | } 75 | 76 | interface ConstructorAbi { 77 | type: "constructor"; 78 | inputs: FunctionParameter[]; 79 | payable: boolean; 80 | } 81 | 82 | interface FallbackAbi { 83 | type: "fallback"; 84 | payable: boolean; 85 | } 86 | 87 | interface EventParameter { 88 | name: string; 89 | type: string; 90 | indexed: boolean; 91 | } 92 | 93 | interface EventAbi { 94 | type: "event"; 95 | name: string; 96 | inputs: EventParameter[]; 97 | anonymous: boolean; 98 | } 99 | 100 | interface FunctionParameter { 101 | name: string; 102 | type: string; 103 | } 104 | 105 | interface ContractInstance { 106 | address: string; 107 | abi: Web3.ContractAbi; 108 | [name: string]: any; 109 | } 110 | 111 | interface Contract { 112 | at(address: string): A; 113 | } 114 | 115 | interface FilterObject { 116 | fromBlock: number | string; 117 | toBlock: number | string; 118 | address: string; 119 | topics: string[]; 120 | } 121 | 122 | interface SolidityEvent { 123 | event: string; 124 | address: string; 125 | args: A; 126 | } 127 | 128 | interface FilterResult { 129 | get(callback: () => void): void; 130 | watch(callback: (err: Error, result: SolidityEvent) => void): void; 131 | stopWatching(callback: () => void): void; 132 | } 133 | 134 | export interface JSONRPCRequestPayload { 135 | params?: any[]; 136 | method: string; 137 | id: number; 138 | jsonrpc: string; 139 | } 140 | 141 | export interface JSONRPCResponsePayload { 142 | result: any; 143 | id: number; 144 | jsonrpc: string; 145 | } 146 | 147 | interface Provider { 148 | sendAsync( 149 | payload: JSONRPCRequestPayload, 150 | callback: (err: Error, result: JSONRPCResponsePayload) => void 151 | ): void; 152 | } 153 | 154 | interface Sha3Options { 155 | encoding: "hex"; 156 | } 157 | 158 | interface EthApi { 159 | coinbase: string; 160 | mining: boolean; 161 | hashrate: number; 162 | gasPrice: BigNumber.BigNumber; 163 | accounts: string[]; 164 | blockNumber: number; 165 | defaultAccount: string; 166 | defaultBlock: Web3.BlockParam; 167 | syncing: Web3.SyncingResult; 168 | compile: { 169 | solidity( 170 | sourceString: string, 171 | cb?: (err: Error, result: any) => void 172 | ): object; 173 | }; 174 | getMining(cd: (err: Error, mining: boolean) => void): void; 175 | getHashrate(cd: (err: Error, hashrate: number) => void): void; 176 | getGasPrice( 177 | cd: (err: Error, gasPrice: BigNumber.BigNumber) => void 178 | ): void; 179 | getAccounts(cd: (err: Error, accounts: string[]) => void): void; 180 | getBlockNumber(callback: (err: Error, blockNumber: number) => void): void; 181 | getSyncing(cd: (err: Error, syncing: Web3.SyncingResult) => void): void; 182 | isSyncing( 183 | cb: ( 184 | err: Error, 185 | isSyncing: boolean, 186 | syncingState: Web3.SyncingState 187 | ) => void 188 | ): Web3.IsSyncing; 189 | 190 | getBlock( 191 | hashStringOrBlockNumber: string | Web3.BlockParam 192 | ): Web3.BlockWithoutTransactionData; 193 | getBlock( 194 | hashStringOrBlockNumber: string | Web3.BlockParam, 195 | callback: ( 196 | err: Error, 197 | blockObj: Web3.BlockWithoutTransactionData 198 | ) => void 199 | ): void; 200 | getBlock( 201 | hashStringOrBlockNumber: string | Web3.BlockParam, 202 | returnTransactionObjects: true 203 | ): Web3.BlockWithTransactionData; 204 | getBlock( 205 | hashStringOrBlockNumber: string | Web3.BlockParam, 206 | returnTransactionObjects: true, 207 | callback: (err: Error, blockObj: Web3.BlockWithTransactionData) => void 208 | ): void; 209 | 210 | getBlockTransactionCount( 211 | hashStringOrBlockNumber: string | Web3.BlockParam 212 | ): number; 213 | getBlockTransactionCount( 214 | hashStringOrBlockNumber: string | Web3.BlockParam, 215 | callback: (err: Error, blockTransactionCount: number) => void 216 | ): void; 217 | 218 | // TODO returnTransactionObjects 219 | getUncle( 220 | hashStringOrBlockNumber: string | Web3.BlockParam, 221 | uncleNumber: number 222 | ): Web3.BlockWithoutTransactionData; 223 | getUncle( 224 | hashStringOrBlockNumber: string | Web3.BlockParam, 225 | uncleNumber: number, 226 | callback: (err: Error, uncle: Web3.BlockWithoutTransactionData) => void 227 | ): void; 228 | 229 | getTransaction(transactionHash: string): Web3.Transaction; 230 | getTransaction( 231 | transactionHash: string, 232 | callback: (err: Error, transaction: Web3.Transaction) => void 233 | ): void; 234 | 235 | getTransactionFromBlock( 236 | hashStringOrBlockNumber: string | Web3.BlockParam, 237 | indexNumber: number 238 | ): Web3.Transaction; 239 | getTransactionFromBlock( 240 | hashStringOrBlockNumber: string | Web3.BlockParam, 241 | indexNumber: number, 242 | callback: (err: Error, transaction: Web3.Transaction) => void 243 | ): void; 244 | 245 | contract(abi: Web3.AbiDefinition[]): Web3.Contract; 246 | 247 | // TODO block param 248 | getBalance(addressHexString: string): BigNumber.BigNumber; 249 | getBalance( 250 | addressHexString: string, 251 | callback: (err: Error, result: BigNumber.BigNumber) => void 252 | ): void; 253 | 254 | // TODO block param 255 | getStorageAt(address: string, position: number): string; 256 | getStorageAt( 257 | address: string, 258 | position: number, 259 | callback: (err: Error, storage: string) => void 260 | ): void; 261 | 262 | // TODO block param 263 | getCode(addressHexString: string): string; 264 | getCode( 265 | addressHexString: string, 266 | callback: (err: Error, code: string) => void 267 | ): void; 268 | 269 | filter(value: string | Web3.FilterObject): Web3.FilterResult; 270 | 271 | sendTransaction(txData: Web3.TxData): string; 272 | sendTransaction( 273 | txData: Web3.TxData, 274 | callback: (err: Error, value: string) => void 275 | ): void; 276 | 277 | sendRawTransaction(rawTxData: string): string; 278 | sendRawTransaction( 279 | rawTxData: string, 280 | callback: (err: Error, value: string) => void 281 | ): void; 282 | 283 | sign(address: string, data: string): string; 284 | sign( 285 | address: string, 286 | data: string, 287 | callback: (err: Error, signature: string) => void 288 | ): void; 289 | 290 | getTransactionReceipt(txHash: string): Web3.TransactionReceipt; 291 | getTransactionReceipt( 292 | txHash: string, 293 | callback: (err: Error, receipt: Web3.TransactionReceipt) => void 294 | ): void; 295 | 296 | // TODO block param 297 | call(callData: Web3.CallData): string; 298 | call( 299 | callData: Web3.CallData, 300 | callback: (err: Error, result: string) => void 301 | ): void; 302 | 303 | estimateGas(callData: Web3.CallData): number; 304 | estimateGas( 305 | callData: Web3.CallData, 306 | callback: (err: Error, gas: number) => void 307 | ): void; 308 | 309 | // TODO defaultBlock 310 | getTransactionCount(address: string): number; 311 | getTransactionCount( 312 | address: string, 313 | callback: (err: Error, count: number) => void 314 | ): void; 315 | } 316 | 317 | interface VersionApi { 318 | api: string; 319 | network: string; 320 | node: string; 321 | ethereum: string; 322 | whisper: string; 323 | getNetwork(cd: (err: Error, networkId: string) => void): void; 324 | getNode(cd: (err: Error, nodeVersion: string) => void): void; 325 | getEthereum(cd: (err: Error, ethereum: string) => void): void; 326 | getWhisper(cd: (err: Error, whisper: string) => void): void; 327 | } 328 | 329 | interface PersonalApi { 330 | listAccounts: string[] | undefined; 331 | newAccount(password?: string): string; 332 | unlockAccount( 333 | address: string, 334 | password?: string, 335 | duration?: number 336 | ): boolean; 337 | lockAccount(address: string): boolean; 338 | sign(message: string, account: string, password: string): string; 339 | } 340 | 341 | interface NetApi { 342 | listening: boolean; 343 | peerCount: boolean; 344 | getListening(cd: (err: Error, listening: boolean) => void): void; 345 | getPeerCount(cd: (err: Error, peerCount: number) => void): void; 346 | } 347 | 348 | type BlockParam = number | "earliest" | "latest" | "pending"; 349 | 350 | type Unit = 351 | | "kwei" 352 | | "ada" 353 | | "mwei" 354 | | "babbage" 355 | | "gwei" 356 | | "shannon" 357 | | "szabo" 358 | | "finney" 359 | | "ether" 360 | | "kether" 361 | | "grand" 362 | | "einstein" 363 | | "mether" 364 | | "gether" 365 | | "tether"; 366 | 367 | interface SyncingState { 368 | startingBlock: number; 369 | currentBlock: number; 370 | highestBlock: number; 371 | } 372 | type SyncingResult = false | SyncingState; 373 | 374 | interface IsSyncing { 375 | addCallback( 376 | cb: (err: Error, isSyncing: boolean, syncingState: SyncingState) => void 377 | ): void; 378 | stopWatching(): void; 379 | } 380 | 381 | interface AbstractBlock { 382 | number: number | null; 383 | hash: string | null; 384 | parentHash: string; 385 | nonce: string | null; 386 | sha3Uncles: string; 387 | logsBloom: string | null; 388 | transactionsRoot: string; 389 | stateRoot: string; 390 | miner: string; 391 | difficulty: BigNumber.BigNumber; 392 | totalDifficulty: BigNumber.BigNumber; 393 | extraData: string; 394 | size: number; 395 | gasLimit: number; 396 | gasUser: number; 397 | timestamp: number; 398 | uncles: string[]; 399 | } 400 | interface BlockWithoutTransactionData extends AbstractBlock { 401 | transactions: string[]; 402 | } 403 | interface BlockWithTransactionData extends AbstractBlock { 404 | transactions: Transaction[]; 405 | } 406 | 407 | interface Transaction { 408 | hash: string; 409 | nonce: number; 410 | blockHash: string | null; 411 | blockNumber: number | null; 412 | transactionIndex: number | null; 413 | from: string; 414 | to: string | null; 415 | value: BigNumber.BigNumber; 416 | gasPrice: BigNumber.BigNumber; 417 | gas: number; 418 | input: string; 419 | } 420 | 421 | interface CallTxDataBase { 422 | to?: string; 423 | value?: number | string | BigNumber.BigNumber; 424 | gas?: number | string | BigNumber.BigNumber; 425 | gasPrice?: number | string | BigNumber.BigNumber; 426 | data?: string; 427 | nonce?: number; 428 | } 429 | 430 | interface TxData extends CallTxDataBase { 431 | from: string; 432 | } 433 | 434 | interface CallData extends CallTxDataBase { 435 | from?: string; 436 | } 437 | 438 | interface TransactionReceipt { 439 | blockHash: string; 440 | blockNumber: number; 441 | transactionHash: string; 442 | transactionIndex: number; 443 | from: string; 444 | to: string; 445 | cumulativeGasUsed: number; 446 | gasUsed: number; 447 | contractAddress: string | null; 448 | logs: LogEntry[]; 449 | } 450 | 451 | interface LogEntry { 452 | logIndex: number | null; 453 | transactionIndex: number; 454 | transactionHash: string; 455 | blockHash: string | null; 456 | blockNumber: number | null; 457 | address: string; 458 | data: string; 459 | topics: string[]; 460 | } 461 | } 462 | /* tslint:disable */ 463 | export = Web3; 464 | /* tslint:enable */ 465 | } 466 | --------------------------------------------------------------------------------