0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61128f8061007e6000396000f3fe6080604052600436106100a55760003560e01c806384276d811161006157806384276d81146101965780638da5cb5b146101b65780639e8c708e146101de578063a1db9782146101fe578063f2fde38b1461021e578063f8b2cb4f1461023e57005b80632b68b9c6146100e6578063338b5dea146100fb5780635a54db861461011b578063715018a61461013057806379da456f1461014557806380a003ff1461015857005b366100e457604080513381523460208201527f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874910160405180910390a1005b005b3480156100f257600080fd5b506100e461026c565b34801561010757600080fd5b506100e4610116366004610cc0565b610283565b34801561012757600080fd5b506100e4610390565b34801561013c57600080fd5b506100e46103c7565b6100e4610153366004610dee565b6103db565b34801561016457600080fd5b50610178610173366004610f3f565b6107bb565b6040516001600160e01b031990911681526020015b60405180910390f35b3480156101a257600080fd5b506100e46101b1366004610fb1565b6107dd565b3480156101c257600080fd5b506000546040516001600160a01b03909116815260200161018d565b3480156101ea57600080fd5b506100e46101f9366004610fca565b610862565b34801561020a57600080fd5b506100e4610219366004610cc0565b610901565b34801561022a57600080fd5b506100e4610239366004610fca565b61095d565b34801561024a57600080fd5b5061025e610259366004610fca565b6109d3565b60405190815260200161018d565b610274610a53565b6000546001600160a01b031680ff5b60405163095ea7b360e01b8152306004820152602481018290526001600160a01b0383169063095ea7b390604401602060405180830381600087803b1580156102cb57600080fd5b505af11580156102df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103039190610fec565b506040516323b872dd60e01b8152336004820152306024820152604481018290526001600160a01b038316906323b872dd906064015b602060405180830381600087803b15801561035357600080fd5b505af1158015610367573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038b9190610fec565b505050565b610398610a53565b60405133904780156108fc02916000818181858888f193505050501580156103c4573d6000803e3d6000fd5b50565b6103cf610a53565b6103d96000610aad565b565b6103e3610a53565b6000815167ffffffffffffffff8111156103ff576103ff610cea565b60405190808252806020026020018201604052801561045857816020015b6040805160a08101825260008082526060602080840182905293830182905282018190526080820152825260001990920191018161041d5790505b50604080516002808252606082018352929350600092909160208301908036833701905050905060008060005b855181101561077c576104d28682815181106104a3576104a361100e565b6020026020010151606001518783815181106104c1576104c161100e565b602002602001015160400151610afd565b6000808783815181106104e7576104e761100e565b6020026020010151604001516001600160a01b031688848151811061050e5761050e61100e565b6020026020010151608001516040516105279190611054565b6000604051808303816000865af19150503d8060008114610564576040519150601f19603f3d011682016040523d82523d6000602084013e610569565b606091505b50915091508181906105975760405162461bcd60e51b815260040161058e919061109c565b60405180910390fd5b508783815181106105aa576105aa61100e565b60200260200101516000015162ffffff166000141561060757808060200190518101906105d791906110af565b955085600187516105e89190611156565b815181106105f8576105f861100e565b60200260200101519350610698565b8783815181106106195761061961100e565b60200260200101516000015162ffffff16600114156106505780806020019051810190610646919061116d565b9450849350610698565b60405162461bcd60e51b815260206004820152601960248201527f6465785f747970655f6964206e6f7420737570706f7274656400000000000000604482015260640161058e565b6040518060a001604052808985815181106106b5576106b561100e565b60200260200101516000015162ffffff1681526020018985815181106106dd576106dd61100e565b60200260200101516020015181526020018985815181106107005761070061100e565b6020026020010151604001516001600160a01b0316815260200189858151811061072c5761072c61100e565b6020026020010151606001516001600160a01b031681526020018581525087848151811061075c5761075c61100e565b60200260200101819052505050808061077490611186565b915050610485565b507fe84d804485c2be6ad9ce22e4c39087a271deac90b0dd5a69ca12941b1696dd3e846040516107ac91906111a1565b60405180910390a15050505050565b600082826040516107cd929190611249565b6040518091039020905092915050565b6107e5610a53565b600047116108255760405162461bcd60e51b815260206004820152600d60248201526c454d5054595f42414c414e434560981b604482015260640161058e565b600080546040516001600160a01b039091169183156108fc02918491818181858888f1935050505015801561085e573d6000803e3d6000fd5b5050565b61086a610a53565b806001600160a01b031663a9059cbb33610883846109d3565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156108c957600080fd5b505af11580156108dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061085e9190610fec565b610909610a53565b816001600160a01b031663a9059cbb61092a6000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401610339565b610965610a53565b6001600160a01b0381166109ca5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161058e565b6103c481610aad565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a082319060240160206040518083038186803b158015610a1557600080fd5b505afa158015610a29573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4d919061116d565b92915050565b6000546001600160a01b031633146103d95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161058e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b604051636eb1769f60e11b81523060048201526001600160a01b0382811660248301526000919084169063dd62ed3e9060440160206040518083038186803b158015610b4857600080fd5b505afa158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b80919061116d565b905060001981101561038b5761038b83836000196040516001600160a01b03838116602483015260448201839052600091829186169063095ea7b360e01b9060640160408051601f198184030181529181526020820180516001600160e01b03166001600160e01b0319909416939093179092529051610c009190611054565b6000604051808303816000865af19150503d8060008114610c3d576040519150601f19603f3d011682016040523d82523d6000602084013e610c42565b606091505b5091509150818015610c6c575080511580610c6c575080806020019051810190610c6c9190610fec565b610c9d5760405162461bcd60e51b8152602060048201526002602482015261534160f01b604482015260640161058e565b5050505050565b80356001600160a01b0381168114610cbb57600080fd5b919050565b60008060408385031215610cd357600080fd5b610cdc83610ca4565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610d2357610d23610cea565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d5257610d52610cea565b604052919050565b600067ffffffffffffffff821115610d7457610d74610cea565b5060051b60200190565b600082601f830112610d8f57600080fd5b813567ffffffffffffffff811115610da957610da9610cea565b610dbc601f8201601f1916602001610d29565b818152846020838601011115610dd157600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215610e0157600080fd5b823567ffffffffffffffff80821115610e1957600080fd5b818501915085601f830112610e2d57600080fd5b8135610e40610e3b82610d5a565b610d29565b81815260059190911b83018401908481019088831115610e5f57600080fd5b8585015b83811015610f3257803585811115610e7b5760008081fd5b860160a0818c03601f1901811315610e935760008081fd5b610e9b610d00565b8983013562ffffff81168114610eb15760008081fd5b815260408381013589811115610ec75760008081fd5b610ed58f8d83880101610d7e565b8c840152506060610ee7818601610ca4565b8284015260809150610efa828601610ca4565b90830152918301359188831115610f115760008081fd5b610f1f8e8c85870101610d7e565b9082015285525050918601918601610e63565b5098975050505050505050565b60008060208385031215610f5257600080fd5b823567ffffffffffffffff80821115610f6a57600080fd5b818501915085601f830112610f7e57600080fd5b813581811115610f8d57600080fd5b866020828501011115610f9f57600080fd5b60209290920196919550909350505050565b600060208284031215610fc357600080fd5b5035919050565b600060208284031215610fdc57600080fd5b610fe582610ca4565b9392505050565b600060208284031215610ffe57600080fd5b81518015158114610fe557600080fd5b634e487b7160e01b600052603260045260246000fd5b60005b8381101561103f578181015183820152602001611027565b8381111561104e576000848401525b50505050565b60008251611066818460208701611024565b9190910192915050565b60008151808452611088816020860160208601611024565b601f01601f19169290920160200192915050565b602081526000610fe56020830184611070565b600060208083850312156110c257600080fd5b825167ffffffffffffffff8111156110d957600080fd5b8301601f810185136110ea57600080fd5b80516110f8610e3b82610d5a565b81815260059190911b8201830190838101908783111561111757600080fd5b928401925b828410156111355783518252928401929084019061111c565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b60008282101561116857611168611140565b500390565b60006020828403121561117f57600080fd5b5051919050565b600060001982141561119a5761119a611140565b5060010190565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561123b57603f19898403018552815160a062ffffff825116855288820151818a8701526111fb82870182611070565b838a01516001600160a01b03908116888c0152606080860151909116908801526080938401519390960192909252505093860193908601906001016111c8565b509098975050505050505050565b818382376000910190815291905056fea26469706673582212206f46101cd05c0546cf8a5f4a4c73f068c9969bcfc951efe00ad739ba5940f8e364736f6c63430008090033