0x60a06040526002805460ff191690556000196003553480156200002157600080fd5b5060405162001a2238038062001a22833981016040819052620000449162000199565b6200004f336200012c565b6001600160a01b038216620000ab5760405162461bcd60e51b815260206004820152601360248201527f4d503a204e415449564520697320656d7074790000000000000000000000000060448201526064015b60405180910390fd5b6001600160a01b038116620001035760405162461bcd60e51b815260206004820152601760248201527f4d503a204c6971756964706f6f6c20697320656d7074790000000000000000006044820152606401620000a2565b6001600160a01b03918216608052600580546001600160a01b03191691909216179055620001d1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200019457600080fd5b919050565b60008060408385031215620001ad57600080fd5b620001b8836200017c565b9150620001c8602084016200017c565b90509250929050565b60805161180b62000217600039600081816102100152818161055c015281816105f9015281816108f101528181610b3d01528181610c5401526111dc015261180b6000f3fe6080604052600436106100eb5760003560e01c8063acf234e911610084578063eeb858b511610056578063eeb858b5146102cd578063f2fde38b146102ed578063f6a74ed71461030d578063fd9be5221461032d57005b8063acf234e914610252578063adc879e914610272578063b429afeb1461028d578063d039eff2146102ad57005b806378bbe8b6116100bd57806378bbe8b6146101b45780638da5cb5b146101e0578063a0cf0aea146101fe578063a7fc7a071461023257005b80630833bc9a146100f45780631b8b921d146101395780635e9252921461014c578063681b19ff1461018457005b366100f257005b005b34801561010057600080fd5b5061012461010f3660046113d0565b60009081526004602052604090205460ff1690565b60405190151581526020015b60405180910390f35b6100f261014736600461144e565b61034d565b34801561015857600080fd5b5060055461016c906001600160a01b031681565b6040516001600160a01b039091168152602001610130565b34801561019057600080fd5b5061012461019f3660046113d0565b60046020526000908152604090205460ff1681565b3480156101c057600080fd5b506002546101ce9060ff1681565b60405160ff9091168152602001610130565b3480156101ec57600080fd5b506000546001600160a01b031661016c565b34801561020a57600080fd5b5061016c7f000000000000000000000000000000000000000000000000000000000000000081565b34801561023e57600080fd5b506100f261024d3660046114a1565b61042c565b34801561025e57600080fd5b506100f261026d3660046114ca565b61050a565b34801561027e57600080fd5b50604051468152602001610130565b34801561029957600080fd5b506101246102a83660046114a1565b6107bc565b3480156102b957600080fd5b506100f26102c83660046114a1565b6107f7565b3480156102d957600080fd5b506100f26102e8366004611579565b610899565b3480156102f957600080fd5b506100f26103083660046114a1565b6109a6565b34801561031957600080fd5b506100f26103283660046114a1565b610a41565b34801561033957600080fd5b506100f26103483660046115bd565b610b16565b610356336107bc565b61037b5760405162461bcd60e51b8152600401610372906115e7565b60405180910390fd5b600080846001600160a01b0316348585604051610399929190611615565b60006040518083038185875af1925050503d80600081146103d6576040519150601f19603f3d011682016040523d82523d6000602084013e6103db565b606091505b5091509150846001600160a01b03167fbb9c4c4e98e306e63e340c78eed06da47fecfc0e2e0c6e88b42aca99dc5d52c334848460405161041d93929190611675565b60405180910390a25050505050565b6000546001600160a01b031633146104565760405162461bcd60e51b81526004016103729061169f565b6001600160a01b03811660009081526001602052604081205460ff16151590036104ca576001600160a01b03811660009081526001602081905260408220805460ff191690911790556002805460ff16916104b0836116ea565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f0a8bb31534c0ed46f380cb867bd5c803a189ced9a764e30b3a4991a9901d7474906020015b60405180910390a150565b610513336107bc565b61052f5760405162461bcd60e51b8152600401610372906115e7565b8561053989610c4f565b10156105575760405162461bcd60e51b815260040161037290611709565b8415157f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b0316141515146105ae5760405162461bcd60e51b815260040161037290611709565b806105ec5760405162461bcd60e51b815260206004820152600e60248201526d4d503a206461746120656d70747960901b6044820152606401610372565b6105f589610d08565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316149050806107415760055461064e906001600160a01b038b81169116308a610d7a565b604051636eb1769f60e11b81523060048201526001600160a01b0389811660248301528891908b169063dd62ed3e90604401602060405180830381865afa15801561069d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c19190611740565b10156107415760035460405163095ea7b360e01b81526001600160a01b038a811660048301526024820192909252908a169063095ea7b3906044016020604051808303816000875af115801561071b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073f9190611759565b505b600061075f8983610753576000610755565b895b8989898989610de5565b9050856001600160a01b03168b866001600160a01b03167fe849996be7e6e06728e1d82ed9c1147c36ff3f4052e8755855f081ad62a6ea7f846040516107a791815260200190565b60405180910390a45050505050505050505050565b600080546001600160a01b03838116911614806107f157506001600160a01b03821660009081526001602052604090205460ff165b92915050565b6000546001600160a01b031633146108215760405162461bcd60e51b81526004016103729061169f565b6001600160a01b0381166108775760405162461bcd60e51b815260206004820152601760248201527f4d503a204c6971756964706f6f6c20697320656d7074790000000000000000006044820152606401610372565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6108a2336107bc565b6108be5760405162461bcd60e51b8152600401610372906115e7565b6108c784610d08565b806108d184610c4f565b10156108ef5760405162461bcd60e51b815260040161037290611709565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610937576109328282610fb1565b610952565b600554610952906001600160a01b0385811691168484610d7a565b816001600160a01b031684846001600160a01b03167fe849996be7e6e06728e1d82ed9c1147c36ff3f4052e8755855f081ad62a6ea7f8460405161099891815260200190565b60405180910390a450505050565b6000546001600160a01b031633146109d05760405162461bcd60e51b81526004016103729061169f565b6001600160a01b038116610a355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610372565b610a3e81611082565b50565b6000546001600160a01b03163314610a6b5760405162461bcd60e51b81526004016103729061169f565b6001600160a01b03811660009081526001602081905260409091205460ff1615159003610add576001600160a01b0381166000908152600160205260408120805460ff191690556002805460ff1691610ac383611776565b91906101000a81548160ff021916908360ff160217905550505b6040516001600160a01b03821681527f33d83959be2573f5453b12eb9d43b3499bc57d96bd2f067ba44803c859e81113906020016104ff565b610b1f336107bc565b610b3b5760405162461bcd60e51b8152600401610372906115e7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610ba957476000828211610b845781610b86565b825b9050610ba3610b9d6000546001600160a01b031690565b82610fb1565b50505050565b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a0823190602401602060405180830381865afa158015610bf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c149190611740565b90506000828211610c255781610c27565b825b9050610ba3610c3e6000546001600160a01b031690565b6001600160a01b03861690836110d2565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603610c925750476107f1565b6005546040516370a0823160e01b81526001600160a01b039182166004820152908416906370a08231906024015b602060405180830381865afa158015610cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d019190611740565b9392505050565b60008181526004602052604090205460ff1615610d5f5760405162461bcd60e51b815260206004820152601560248201527413540e88185b1c9958591e4818dbdb5c1b195d1959605a1b6044820152606401610372565b6000908152600460205260409020805460ff19166001179055565b6040516001600160a01b0380851660248301528316604482015260648101829052610ba39085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611102565b600080610df1856111d7565b90508715610e7f57610e7984848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4d503a2063616c6c416e645472616e73666572206661696c656400000000000060208201526001600160a01b038e169392508c9150611246565b50610f00565b610efe84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601a81527f4d503a2063616c6c416e645472616e73666572206661696c656400000000000060208201526001600160a01b038e169392509050611323565b505b6000610f0b866111d7565b9050818111610f5c5760405162461bcd60e51b815260206004820152601e60248201527f4d503a2072656365697665722073686f756c64206765742061737365747300006044820152606401610372565b6000610f688383611793565b90506001600160a01b0388163014610fa3578815610f8f57610f8a8882610fb1565b610fa3565b610fa36001600160a01b03881689836110d2565b9a9950505050505050505050565b604080516000808252602082019092526001600160a01b038416908390604051610fdb91906117a6565b60006040518083038185875af1925050503d8060008114611018576040519150601f19603f3d011682016040523d82523d6000602084013e61101d565b606091505b505090508061107d5760405162461bcd60e51b815260206004820152602660248201527f5472616e7366657248656c7065723a204e41544956455f5452414e534645525f60448201526511905253115160d21b6064820152608401610372565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b03831660248201526044810182905261107d90849063a9059cbb60e01b90606401610dae565b6000611157826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113239092919063ffffffff16565b90508051600014806111785750808060200190518101906111789190611759565b61107d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610372565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03160361121a5750476107f1565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401610cc0565b6060824710156112a75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610372565b600080866001600160a01b031685876040516112c391906117a6565b60006040518083038185875af1925050503d8060008114611300576040519150601f19603f3d011682016040523d82523d6000602084013e611305565b606091505b509150915061131687838387611332565b925050505b949350505050565b606061131b8484600085611246565b606083156113a157825160000361139a576001600160a01b0385163b61139a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610372565b508161131b565b61131b83838151156113b65781518083602001fd5b8060405162461bcd60e51b815260040161037291906117c2565b6000602082840312156113e257600080fd5b5035919050565b80356001600160a01b038116811461140057600080fd5b919050565b60008083601f84011261141757600080fd5b50813567ffffffffffffffff81111561142f57600080fd5b60208301915083602082850101111561144757600080fd5b9250929050565b60008060006040848603121561146357600080fd5b61146c846113e9565b9250602084013567ffffffffffffffff81111561148857600080fd5b61149486828701611405565b9497909650939450505050565b6000602082840312156114b357600080fd5b610d01826113e9565b8015158114610a3e57600080fd5b60008060008060008060008060006101008a8c0312156114e957600080fd5b893598506114f960208b016113e9565b975061150760408b016113e9565b965060608a0135955060808a013561151e816114bc565b945061152c60a08b016113e9565b935061153a60c08b016113e9565b925060e08a013567ffffffffffffffff81111561155657600080fd5b6115628c828d01611405565b915080935050809150509295985092959850929598565b6000806000806080858703121561158f57600080fd5b8435935061159f602086016113e9565b92506115ad604086016113e9565b9396929550929360600135925050565b600080604083850312156115d057600080fd5b6115d9836113e9565b946020939093013593505050565b6020808252601490820152736e6f20636f6e74726f6c6c65722072696768747360601b604082015260600190565b8183823760009101908152919050565b60005b83811015611640578181015183820152602001611628565b50506000910152565b60008151808452611661816020860160208601611625565b601f01601f19169290920160200192915050565b83815282151560208201526060604082015260006116966060830184611649565b95945050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103611700576117006116d4565b60010192915050565b60208082526018908201527f4d503a20696e73756666696369656e742062616c616e63650000000000000000604082015260600190565b60006020828403121561175257600080fd5b5051919050565b60006020828403121561176b57600080fd5b8151610d01816114bc565b600060ff821680611789576117896116d4565b6000190192915050565b818103818111156107f1576107f16116d4565b600082516117b8818460208701611625565b9190910192915050565b602081526000610d01602083018461164956fea2646970667358221220b9106d96c88bbc36f00594aee681db139522d7a0f5bf12ad405c9bead525d7d464736f6c63430008130033000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000456325f2ac7067234dd71e01bebe032b0255e039