0x608060405234801561001057600080fd5b50610faf806100206000396000f3fe6080604052600436106100745760003560e01c806362c067671161004e57806362c067671461016f578063c4d66de81461018f578063f2d5d56b146101af578063ffa1ad74146101cf576100bc565b80630c340a24146100fb57806316f0115b1461012d5780634ddaf8f21461014d576100bc565b366100bc5760405162461bcd60e51b81526020600482015260136024820152721c9958d95a5d994b5b9bdd0b585b1b1bddd959606a1b60448201526064015b60405180910390fd5b60405162461bcd60e51b815260206004820152601460248201527319985b1b189858dacb5b9bdd0b585b1b1bddd95960621b60448201526064016100b3565b34801561010757600080fd5b5061011061020d565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561013957600080fd5b50600254610110906001600160a01b031681565b34801561015957600080fd5b5061016d610168366004610ca4565b61028f565b005b34801561017b57600080fd5b5061016d61018a366004610cc1565b6104a2565b34801561019b57600080fd5b5061016d6101aa366004610ca4565b6104db565b3480156101bb57600080fd5b5061016d6101ca366004610d02565b610559565b3480156101db57600080fd5b50610200604051806040016040528060058152602001640312e302e360dc1b81525081565b6040516101249190610d5a565b6002546040805163030d028960e21b815290516000926001600160a01b031691630c340a24916004808301926020929190829003018186803b15801561025257600080fd5b505afa158015610266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028a9190610d9d565b905090565b6002546001600160a01b031633146102d45760405162461bcd60e51b81526020600482015260086024820152671b9bdd0b5c1bdbdb60c21b60448201526064016100b3565b6002546040805163fb01600d60e01b815290516000926001600160a01b03169163fb01600d9160048083019286929190829003018186803b15801561031857600080fd5b505afa15801561032c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103549190810190610dd0565b805190915060005b8181101561049c57600083828151811061037857610378610e95565b60200260200101516001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156103b857600080fd5b505afa1580156103cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103f09190610d9d565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a082319060240160206040518083038186803b15801561043557600080fd5b505afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d9190610eab565b90508015610489576104896001600160a01b038316878361073b565b50508061049590610ec4565b905061035c565b50505050565b6104aa61078d565b6001600160a01b0383166104c7576104c282826107e6565b505050565b6104c26001600160a01b038416838361073b565b600054610100900460ff16806104f4575060005460ff16155b6105105760405162461bcd60e51b81526004016100b390610eed565b600054610100900460ff16158015610532576000805461ffff19166101011790555b61053a6108ff565b6105438261096f565b8015610555576000805461ff00191690555b5050565b600260015414156105ac5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016100b3565b6002600181905554604051633af5be4760e01b81523360048201526001600160a01b0390911690633af5be479060240160206040518083038186803b1580156105f457600080fd5b505afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190610f3b565b61066c5760405162461bcd60e51b81526020600482015260116024820152703737ba16b232b837b9b4ba16ba37b5b2b760791b60448201526064016100b3565b600081116106ad5760405162461bcd60e51b815260206004820152600e60248201526d616d6f756e742d69732d7a65726f60901b60448201526064016100b3565b6107338282336001600160a01b0316636f307dc36040518163ffffffff1660e01b815260040160206040518083038186803b1580156106eb57600080fd5b505afa1580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190610d9d565b6001600160a01b0316919061073b565b505060018055565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526104c2908490610a43565b61079561020d565b6001600160a01b0316336001600160a01b0316146107e45760405162461bcd60e51b815260206004820152600c60248201526b3737ba16b3b7bb32b93737b960a11b60448201526064016100b3565b565b804710156108365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016100b3565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610883576040519150601f19603f3d011682016040523d82523d6000602084013e610888565b606091505b50509050806104c25760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016100b3565b600054610100900460ff1680610918575060005460ff16155b6109345760405162461bcd60e51b81526004016100b390610eed565b600054610100900460ff16158015610956576000805461ffff19166101011790555b60018055801561096c576000805461ff00191690555b50565b600054610100900460ff1680610988575060005460ff16155b6109a45760405162461bcd60e51b81526004016100b390610eed565b600054610100900460ff161580156109c6576000805461ffff19166101011790555b6001600160a01b038216610a135760405162461bcd60e51b8152602060048201526014602482015273706f6f6c2d616464726573732d69732d7a65726f60601b60448201526064016100b3565b600280546001600160a01b0319166001600160a01b0384161790558015610555576000805461ff00191690555050565b6000610a98826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b159092919063ffffffff16565b8051909150156104c25780806020019051810190610ab69190610f3b565b6104c25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016100b3565b6060610b248484600085610b2e565b90505b9392505050565b606082471015610b8f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016100b3565b843b610bdd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016100b3565b600080866001600160a01b03168587604051610bf99190610f5d565b60006040518083038185875af1925050503d8060008114610c36576040519150601f19603f3d011682016040523d82523d6000602084013e610c3b565b606091505b5091509150610c4b828286610c56565b979650505050505050565b60608315610c65575081610b27565b825115610c755782518084602001fd5b8160405162461bcd60e51b81526004016100b39190610d5a565b6001600160a01b038116811461096c57600080fd5b600060208284031215610cb657600080fd5b8135610b2781610c8f565b600080600060608486031215610cd657600080fd5b8335610ce181610c8f565b92506020840135610cf181610c8f565b929592945050506040919091013590565b60008060408385031215610d1557600080fd5b8235610d2081610c8f565b946020939093013593505050565b60005b83811015610d49578181015183820152602001610d31565b8381111561049c5750506000910152565b6020815260008251806020840152610d79816040850160208701610d2e565b601f01601f19169190910160400192915050565b8051610d9881610c8f565b919050565b600060208284031215610daf57600080fd5b8151610b2781610c8f565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215610de357600080fd5b825167ffffffffffffffff80821115610dfb57600080fd5b818501915085601f830112610e0f57600080fd5b815181811115610e2157610e21610dba565b8060051b604051601f19603f83011681018181108582111715610e4657610e46610dba565b604052918252848201925083810185019188831115610e6457600080fd5b938501935b82851015610e8957610e7a85610d8d565b84529385019392850192610e69565b98975050505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610ebd57600080fd5b5051919050565b6000600019821415610ee657634e487b7160e01b600052601160045260246000fd5b5060010190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b600060208284031215610f4d57600080fd5b81518015158114610b2757600080fd5b60008251610f6f818460208701610d2e565b919091019291505056fea26469706673582212208e010320968c19c4df37ceda7a4dad7b1b25d4654199bd85e0b8de6e13cc209e64736f6c63430008090033