60806040526000805461ffff60a81b191661010160a81b179055600180546001600160a01b03167d0bb800000320000003200000000000000000000000000000000000000000179055600280546109c463ffffffff199091161790556107086004556200006f6012600a620004ce565b6200007e90627270e0620004e6565b6006556200008f6012600a620004ce565b6200009e9062989680620004e6565b600755620000af6012600a620004ce565b620000be90620f4240620004e6565b600855600c805461ffff60a01b1916600160a01b179055348015620000e257600080fd5b50604051620023e5380380620023e5833981016040819052620001059162000500565b620001103362000369565b600b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000176573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019c919062000500565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000210919062000500565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200025e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000284919062000500565b600c80546001600160a01b03199081166001600160a01b03938416179091556001805490911691841691909117815530600090815260036020526040808220805460ff199081168517909155338352912080549091169091179055620002ed6012600a620004ce565b620002fd90633b9aca00620004e6565b33600081815260096020526040812092909255907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620003406012600a620004ce565b6200035090633b9aca00620004e6565b60405190815260200160405180910390a350506200052b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000410578160001904821115620003f457620003f4620003b9565b808516156200040257918102915b93841c9390800290620003d4565b509250929050565b6000826200042957506001620004c8565b816200043857506000620004c8565b81600181146200045157600281146200045c576200047c565b6001915050620004c8565b60ff841115620004705762000470620003b9565b50506001821b620004c8565b5060208310610133831016604e8410600b8410161715620004a1575081810a620004c8565b620004ad8383620003cf565b8060001904821115620004c457620004c4620003b9565b0290505b92915050565b6000620004df60ff84168362000418565b9392505050565b8082028115828204841417620004c857620004c8620003b9565b6000602082840312156200051357600080fd5b81516001600160a01b0381168114620004df57600080fd5b611eaa806200053b6000396000f3fe6080604052600436106102275760003560e01c80638e26bbe411610122578063ba414b10116100a5578063dd62ed3e1161006c578063dd62ed3e146106f9578063e717fc301461073f578063f2fde38b14610755578063f4a2ebf714610775578063f5a27e861461079557005b8063ba414b1014610648578063bd186c4c14610668578063bd4f1dc614610688578063c9d9159d146106ac578063d11fcb85146106c957005b80639bfe8df7116100e95780639bfe8df7146105b1578063a1780c18146105d1578063a20adf86146105e6578063a9059cbb14610607578063ac9358341461062757005b80638e26bbe41461050f57806391d88b951461052f57806391f18b7c1461054557806395d89b411461056557806396418d4d1461059157005b806363126e17116101aa578063715018a611610171578063715018a6146104775780637971fca71461048c5780637aab5d9b146104b05780638bf67ad0146104d15780638da5cb5b146104f157005b806363126e17146103bd578063685e838e146103dd5780636ea79583146103f357806370a082311461042b57806370fbc7121461046157005b80633d21e5a2116101ee5780633d21e5a21461030357806349dc859c14610323578063581d30f8146103435780635bc05f3c146103635780636264300e1461038457005b806306fdde0314610230578063095ea7b31461027457806318160ddd146102a457806323b872dd146102c7578063313ce567146102e757005b3661022e57005b005b34801561023c57600080fd5b506040805180820190915260098152682a2aa3102a37b5b2b760b91b60208201525b60405161026b91906118a6565b60405180910390f35b34801561028057600080fd5b5061029461028f3660046118ee565b6107ab565b604051901515815260200161026b565b3480156102b057600080fd5b506102b96107c5565b60405190815260200161026b565b3480156102d357600080fd5b506102946102e236600461191a565b6107e6565b3480156102f357600080fd5b506040516012815260200161026b565b34801561030f57600080fd5b5061022e61031e36600461195b565b61080a565b34801561032f57600080fd5b5061022e61033e366004611978565b610834565b34801561034f57600080fd5b5061022e61035e3660046119ba565b6109ae565b34801561036f57600080fd5b5060005461029490600160b01b900460ff1681565b34801561039057600080fd5b506001546103a890600160c01b900463ffffffff1681565b60405163ffffffff909116815260200161026b565b3480156103c957600080fd5b5061022e6103d8366004611a39565b610a3f565b3480156103e957600080fd5b506102b960085481565b3480156103ff57600080fd5b50600154610413906001600160a01b031681565b6040516001600160a01b03909116815260200161026b565b34801561043757600080fd5b506102b961044636600461195b565b6001600160a01b031660009081526009602052604090205490565b34801561046d57600080fd5b506102b960065481565b34801561048357600080fd5b5061022e610ab4565b34801561049857600080fd5b506001546103a890600160a01b900463ffffffff1681565b3480156104bc57600080fd5b5060005461029490600160a01b900460ff1681565b3480156104dd57600080fd5b5061022e6104ec366004611a8d565b610ac8565b3480156104fd57600080fd5b506000546001600160a01b0316610413565b34801561051b57600080fd5b5061022e61052a366004611ac0565b610b0f565b34801561053b57600080fd5b506102b960045481565b34801561055157600080fd5b50600c54610413906001600160a01b031681565b34801561057157600080fd5b506040805180820190915260038152622a2aa360e91b602082015261025e565b34801561059d57600080fd5b5061022e6105ac366004611adb565b610b35565b3480156105bd57600080fd5b5061022e6105cc366004611af7565b610bd8565b3480156105dd57600080fd5b5061022e610c7c565b3480156105f257600080fd5b5060005461029490600160a81b900460ff1681565b34801561061357600080fd5b506102946106223660046118ee565b610c8c565b34801561063357600080fd5b50600c5461029490600160a01b900460ff1681565b34801561065457600080fd5b5061022e610663366004611b19565b610c9a565b34801561067457600080fd5b5061022e610683366004611ac0565b610d25565b34801561069457600080fd5b506001546103a890600160e01b900463ffffffff1681565b3480156106b857600080fd5b506002546103a89063ffffffff1681565b3480156106d557600080fd5b506102946106e436600461195b565b60036020526000908152604090205460ff1681565b34801561070557600080fd5b506102b9610714366004611b65565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b34801561074b57600080fd5b506102b960075481565b34801561076157600080fd5b5061022e61077036600461195b565b610d4b565b34801561078157600080fd5b5061022e610790366004611978565b610dc4565b3480156107a157600080fd5b506102b960055481565b6000336107b9818585610deb565b60019150505b92915050565b60006107d36012600a611c98565b6107e190633b9aca00611ca7565b905090565b6000336107f4858285610f0f565b6107ff858585610f9b565b506001949350505050565b610812611336565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b61083c611336565b60045460055461084c9190611cbe565b42116108965760405162461bcd60e51b81526020600482015260146024820152734275726e20636f6f6c646f776e2061637469766560601b60448201526064015b60405180910390fd5b600c546040516370a0823160e01b81526001600160a01b03909116600482015260009030906370a0823190602401602060405180830381865afa1580156108e1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109059190611cd1565b90506000610915826103e8611390565b905080831115610923578092505b42600555821561094657600c54610946906001600160a01b031661dead856113b0565b600c546040805160016209351760e01b0319815290516001600160a01b0390921691829163fff6cae991600480830192600092919082900301818387803b15801561099057600080fd5b505af11580156109a4573d6000803e3d6000fd5b5050505050505050565b6109b6611336565b610bb863ffffffff821611156109fd5760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b604482015260640161088d565b60008054921515600160b01b0260ff60b01b19909316929092179091556001805463ffffffff909216600160e01b026001600160e01b03909216919091179055565b610a47611336565b60005b82811015610aae578160036000868685818110610a6957610a69611cea565b9050602002016020810190610a7e919061195b565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055600101610a4a565b50505050565b610abc611336565b610ac66000611496565b565b610ad0611336565b6008929092556002805463ffffffff90921663ffffffff19909216919091179055600c8054911515600160a01b0260ff60a01b19909216919091179055565b610b17611336565b60008054911515600160a01b0260ff60a01b19909216919091179055565b610b3d611336565b610bb863ffffffff831611801590610b5d5750610bb863ffffffff821611155b610b985760405162461bcd60e51b815260206004820152600c60248201526b546f6f20686967682066656560a01b604482015260640161088d565b6001805467ffffffffffffffff60a01b1916600160a01b63ffffffff9485160263ffffffff60c01b191617600160c01b9290931691909102919091179055565b610be0611336565b60328210801590610bf2575060328110155b610c2c5760405162461bcd60e51b815260206004820152600b60248201526a0a8dede40d8deee40dac2f60ab1b604482015260640161088d565b610c4f610c3b6012600a611c98565b610c4990633b9aca00611ca7565b83611390565b600655610c75610c616012600a611c98565b610c6f90633b9aca00611ca7565b82611390565b6007555050565b610c84611336565b610ac66114e6565b6000336107b9818585610f9b565b610ca2611336565b600080546001600160a01b0316905b83811015610d1e576000858583818110610ccd57610ccd611cea565b9050602002016020810190610ce2919061195b565b90506001600160a01b038116610d0a5760405162461bcd60e51b815260040161088d90611d00565b610d158382866113b0565b50600101610cb1565b5050505050565b610d2d611336565b60008054911515600160a81b0260ff60a81b19909216919091179055565b610d53611336565b6001600160a01b038116610db85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088d565b610dc181611496565b50565b610dcc611336565b6000805460ff60a01b1916600a92909214600160a01b02919091179055565b6001600160a01b038316610e4d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161088d565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161088d565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600a60209081526040808320938616835292905220546000198114610aae5781811015610f8e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161088d565b610aae8484848403610deb565b6001600160a01b038316610fff5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161088d565b6001600160a01b0382166110255760405162461bcd60e51b815260040161088d90611d00565b600081116110875760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161088d565b6000546001600160a01b03848116911614806110b057506000546001600160a01b038381169116145b806110c357506001600160a01b03831630145b156110d8576110d38383836113b0565b505050565b600054600160a01b900460ff166111275760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81a5cc8191a5cd8589b1959606a1b604482015260640161088d565b600c546000906001600160a01b0385811691161480611148576111486114e6565b8015611191576001600160a01b03841660009081526003602052604090205460ff1661118c57600154611189908490600160a01b900463ffffffff16611390565b91505b6111fc565b6001600160a01b03851660009081526003602052604090205460ff166111fc576000546111f9908490600160b01b900460ff166111dd57600154600160c01b900463ffffffff166111ee565b600154600160e01b900463ffffffff165b63ffffffff16611390565b91505b818310156112415760405162461bcd60e51b815260206004820152601260248201527119995948195e18d959591cc8185b5bdd5b9d60721b604482015260640161088d565b6000549282900392600160a81b900460ff161561131a5760065483111561129b5760405162461bcd60e51b815260206004820152600e60248201526d13585e081516081c995858da195960921b604482015260640161088d565b600c546001600160a01b0385811691161461131a576007546001600160a01b0385166000908152600960205260409020546112d7908590611cbe565b111561131a5760405162461bcd60e51b815260206004820152601260248201527113585e081dd85b1b195d081c995858da195960721b604482015260640161088d565b811561132b5761132b8530846113b0565b610d1e8585856113b0565b6000546001600160a01b03163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161088d565b600061271061139f8385611ca7565b6113a99190611d43565b9392505050565b6001600160a01b038316600090815260096020526040902054818110156114285760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161088d565b6001600160a01b0380851660008181526009602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114889086815260200190565b60405180910390a350505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b30600090815260096020526040902054600854811080159081906115145750600c54600160a81b900460ff16155b80156115295750600c54600160a01b900460ff165b156115495761153960085461154d565b4780156110d3576110d34761172c565b5050565b600c805460ff60a81b1916600160a81b17905560025460009061157e9083906111ee9063ffffffff16612710611d65565b9050600061158c8284611d89565b604080516002808252606082018352929350479260009260208301908036833701905050905030816000815181106115c6576115c6611cea565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561161f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116439190611d9c565b8160018151811061165657611656611cea565b6001600160a01b039283166020918202929092010152600b5461167c9130911687610deb565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac947906116b5908790600090869030904290600401611db9565b600060405180830381600087803b1580156116cf57600080fd5b505af11580156116e3573d6000803e3d6000fd5b50505050600082476116f59190611d89565b60025490915061171790859061171290849063ffffffff16611390565b6117d8565b5050600c805460ff60a81b1916905550505050565b6001546040805160008082526020820192839052926001600160a01b031691849161175691611e2a565b60006040518083038185875af1925050503d8060008114611793576040519150601f19603f3d011682016040523d82523d6000602084013e611798565b606091505b50509050806115495760405162461bcd60e51b815260206004820152600c60248201526b151c985b9cd9995c91985a5b60a21b604482015260640161088d565b600b546117f09030906001600160a01b031684610deb565b600b5460405163f305d71960e01b8152306004820152602481018490526000604482018190526064820181905260848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af115801561185d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d1e9190611e46565b60005b8381101561189d578181015183820152602001611885565b50506000910152565b60208152600082518060208401526118c5816040850160208701611882565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610dc157600080fd5b6000806040838503121561190157600080fd5b823561190c816118d9565b946020939093013593505050565b60008060006060848603121561192f57600080fd5b833561193a816118d9565b9250602084013561194a816118d9565b929592945050506040919091013590565b60006020828403121561196d57600080fd5b81356113a9816118d9565b60006020828403121561198a57600080fd5b5035919050565b803580151581146119a157600080fd5b919050565b803563ffffffff811681146119a157600080fd5b600080604083850312156119cd57600080fd5b6119d683611991565b91506119e4602084016119a6565b90509250929050565b60008083601f8401126119ff57600080fd5b50813567ffffffffffffffff811115611a1757600080fd5b6020830191508360208260051b8501011115611a3257600080fd5b9250929050565b600080600060408486031215611a4e57600080fd5b833567ffffffffffffffff811115611a6557600080fd5b611a71868287016119ed565b9094509250611a84905060208501611991565b90509250925092565b600080600060608486031215611aa257600080fd5b83359250611ab2602085016119a6565b9150611a8460408501611991565b600060208284031215611ad257600080fd5b6113a982611991565b60008060408385031215611aee57600080fd5b6119d6836119a6565b60008060408385031215611b0a57600080fd5b50508035926020909101359150565b600080600060408486031215611b2e57600080fd5b833567ffffffffffffffff811115611b4557600080fd5b611b51868287016119ed565b909790965060209590950135949350505050565b60008060408385031215611b7857600080fd5b8235611b83816118d9565b91506020830135611b93816118d9565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611bef578160001904821115611bd557611bd5611b9e565b80851615611be257918102915b93841c9390800290611bb9565b509250929050565b600082611c06575060016107bf565b81611c13575060006107bf565b8160018114611c295760028114611c3357611c4f565b60019150506107bf565b60ff841115611c4457611c44611b9e565b50506001821b6107bf565b5060208310610133831016604e8410600b8410161715611c72575081810a6107bf565b611c7c8383611bb4565b8060001904821115611c9057611c90611b9e565b029392505050565b60006113a960ff841683611bf7565b80820281158282048414176107bf576107bf611b9e565b808201808211156107bf576107bf611b9e565b600060208284031215611ce357600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b600082611d6057634e487b7160e01b600052601260045260246000fd5b500490565b63ffffffff828116828216039080821115611d8257611d82611b9e565b5092915050565b818103818111156107bf576107bf611b9e565b600060208284031215611dae57600080fd5b81516113a9816118d9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611e095784516001600160a01b031683529383019391830191600101611de4565b50506001600160a01b03969096166060850152505050608001529392505050565b60008251611e3c818460208701611882565b9190910192915050565b600080600060608486031215611e5b57600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212204d6dcf02822f87318d6885cfd2e8a308d0b8e82c40be004391602794e312504364736f6c634300081100330000000000000000000000002af1ba1647471ece27f864eb8df36115e3931003