0x60806040523480156200001157600080fd5b506200001d33620001ec565b604080518082019091526007808252664d454d4520414960c81b60209092019182526200004d916009916200023c565b50604080518082019091526004808252634d454d4560e01b60209092019182526200007b91600a916200023c565b50600780546001600160a01b031990811690915560088054909116905560408051600481526024810182526020810180516001600160e01b031663e1e0936360e01b179052905160009173465ac96336507f5e37aae42325873415b373464391620000e79190620002e2565b6000604051808303816000865af19150503d806000811462000126576040519150601f19603f3d011682016040523d82523d6000602084013e6200012b565b606091505b509150508080602001905181019062000145919062000320565b600b80546001600160a01b0319166001600160a01b03929092169190911790556200017a6c0c9f2c9cd04674edea4000000090565b60016000336001600160a01b03168152602081019190915260400160002055336001600160a01b031660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea4000000060405190815260200160405180910390a3506200038f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280546200024a9062000352565b90600052602060002090601f0160209004810192826200026e5760008555620002b9565b82601f106200028957805160ff1916838001178555620002b9565b82800160010185558215620002b9579182015b82811115620002b95782518255916020019190600101906200029c565b50620002c7929150620002cb565b5090565b5b80821115620002c75760008155600101620002cc565b6000825160005b81811015620003055760208186018101518583015201620002e9565b8181111562000315576000828501525b509190910192915050565b6000602082840312156200033357600080fd5b81516001600160a01b03811681146200034b57600080fd5b9392505050565b600181811c908216806200036757607f821691505b602082108114156200038957634e487b7160e01b600052602260045260246000fd5b50919050565b611789806200039f6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806370a08231116100f9578063a9059cbb11610097578063dd62ed3e11610071578063dd62ed3e146103e9578063e7a324dc14610422578063f1127ed814610449578063f2fde38b146104b157600080fd5b8063a9059cbb146103b0578063a9373b7b146103c3578063c3cda520146103d657600080fd5b80637ecebe00116100d35780637ecebe00146103645780638da5cb5b1461038457806395d89b4114610395578063a457c2d71461039d57600080fd5b806370a0823114610336578063715018a61461034957806375f7b3a31461035157600080fd5b8063271a452911610166578063488d4a5111610140578063488d4a51146102aa578063587cde1e146102bf5780635c19a95c146102e85780636fcfff45146102fb57600080fd5b8063271a45291461025d578063313ce56714610288578063395093511461029757600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806312280ba8146101ef578063178896331461021a57806318160ddd1461022d57806323b872dd1461024a575b600080fd5b6101b66104c4565b6040516101c391906113c3565b60405180910390f35b6101df6101da366004611412565b610556565b60405190151581526020016101c3565b600754610202906001600160a01b031681565b6040516001600160a01b0390911681526020016101c3565b600854610202906001600160a01b031681565b6c0c9f2c9cd04674edea400000005b6040519081526020016101c3565b6101df61025836600461143c565b61056d565b61027061026b366004611478565b610642565b6040516001600160e01b0390911681526020016101c3565b604051601281526020016101c3565b6101df6102a5366004611412565b61090c565b6102bd6102b83660046114b8565b610948565b005b6102026102cd3660046114b8565b6003602052600090815260409020546001600160a01b031681565b6102bd6102f63660046114b8565b6109d3565b6103216103093660046114b8565b60056020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101c3565b61023c6103443660046114b8565b6109e0565b6102bd610a4f565b6102bd61035f3660046114da565b610a85565b61023c6103723660046114b8565b60046020526000908152604090205481565b6000546001600160a01b0316610202565b6101b6610b3d565b6101df6103ab366004611412565b610b4c565b6101df6103be366004611412565b610c1c565b6102bd6103d13660046114b8565b610c29565b6102bd6103e4366004611566565b610cad565b61023c6103f73660046115c6565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61023c7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b61048d610457366004611478565b600660209081526000928352604080842090915290825290205463ffffffff81169064010000000090046001600160e01b031682565b6040805163ffffffff90931683526001600160e01b039091166020830152016101c3565b6102bd6104bf3660046114b8565b610fcb565b6060600980546104d3906115f9565b80601f01602080910402602001604051908101604052809291908181526020018280546104ff906115f9565b801561054c5780601f106105215761010080835404028352916020019161054c565b820191906000526020600020905b81548152906001019060200180831161052f57829003601f168201915b5050505050905090565b6000610563338484611063565b5060015b92915050565b600061057a8484846111bc565b6001600160a01b03841660009081526002602090815260408083203384529091529020548281101561062a5760405162461bcd60e51b815260206004820152604860248201527f4d454d453a7472616e7366657246726f6d3a414c4c4f57414e43455f4558434560448201527f454445443a205472616e7366657220616d6f756e74206578636565647320616c6064820152673637bbb0b731b29760c11b608482015260a4015b60405180910390fd5b6106378533858403611063565b506001949350505050565b6000438263ffffffff16106106d55760405162461bcd60e51b815260206004820152604d60248201527f4d454d453a676574566f7465734174426c6f636b3a4655545552455f424c4f4360448201527f4b3a2043616e6e6f742067657420766f746573206174206120626c6f636b206960648201526c37103a343290333aba3ab9329760991b608482015260a401610621565b6001600160a01b03831660009081526005602052604090205463ffffffff1680610703576000915050610567565b6001600160a01b038416600090815260066020526040812063ffffffff85169161072e60018561164a565b63ffffffff908116825260208201929092526040016000205416116107a2576001600160a01b03841660009081526006602052604081209061077160018461164a565b63ffffffff16815260208101919091526040016000205464010000000090046001600160e01b031691506105679050565b6001600160a01b038416600090815260066020908152604080832083805290915290205463ffffffff808516911611156107e0576000915050610567565b6000806107ee60018461164a565b90505b8163ffffffff168163ffffffff1611156108c65760006002610813848461164a565b61081d919061166f565b610827908361164a565b6001600160a01b038816600090815260066020908152604080832063ffffffff8581168552908352928190208151808301909252548084168083526401000000009091046001600160e01b0316928201929092529293509088161415610897576020015194506105679350505050565b805163ffffffff808916911610156108b1578193506108bf565b6108bc60018361164a565b92505b50506107f1565b506001600160a01b038516600090815260066020908152604080832063ffffffff909416835292905220546001600160e01b036401000000009091041691505092915050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916105639185906109439086906116a0565b611063565b6000546001600160a01b031633146109725760405162461bcd60e51b8152600401610621906116b8565b600780546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527ed910c9481701ba32afe0c247572aaece27072f230c8ec769bf245fc0b38de691015b60405180910390a15050565b6109dd33826112ce565b50565b600b546040516370a0823160e01b81526001600160a01b03838116600483015260009216906370a0823190602401602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056791906116ed565b6000546001600160a01b03163314610a795760405162461bcd60e51b8152600401610621906116b8565b610a836000611347565b565b600081118015610a9f5750600b546001600160a01b031633145b610aa857600080fd5b60005b82811015610b3657838382818110610ac557610ac5611706565b9050602002016020810190610ada91906114b8565b6001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b1e91815260200190565b60405180910390a3610b2f8161171c565b9050610aab565b5050505050565b6060600a80546104d3906115f9565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610c055760405162461bcd60e51b815260206004820152605660248201527f4d454d453a6465637265617365416c6c6f77616e63653a414c4c4f57414e434560448201527f5f554e444552464c4f573a205375627472616374696f6e20726573756c74732060648201527534b71039bab116bd32b9379030b63637bbb0b731b29760511b608482015260a401610621565b610c123385858403611063565b5060019392505050565b60006105633384846111bc565b6000546001600160a01b03163314610c535760405162461bcd60e51b8152600401610621906116b8565b600880546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f1bf87992a35ee29395ab494f9adb9a500a7fa60c3082cba0ef02701bb35900d991016109c7565b600073465ac96336507f5e37aae42325873415b3734643610ccc6104c4565b8051602091820120604080516001600160a01b039485168185015280820192909252466060830152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c0840152938b1660e083015261010082018a90526101208083018a9052815180840390910181526101408301909152805192019190912061190160f01b610160830152610162820183905261018282018190529192506000906101a20160408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610dfe573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610e955760405162461bcd60e51b815260206004820152604560248201527f4d454d453a64656c656761746542795369673a494e56414c49445f5349474e4160448201527f545552453a205265636569766564207369676e61747572652077617320696e7660648201526430b634b21760d91b608482015260a401610621565b87421115610f195760405162461bcd60e51b815260206004820152604560248201527f4d454d453a64656c656761746542795369673a455850495245445f5349474e4160448201527f545552453a205265636569766564207369676e6174757265206861732065787060648201526434b932b21760d91b608482015260a401610621565b6001600160a01b0381166000908152600460205260408120805491610f3d8361171c565b919050558914610fb55760405162461bcd60e51b815260206004820152603d60248201527f4d454d453a64656c656761746542795369673a494e56414c49445f4e4f4e434560448201527f3a205265636569766564206e6f6e63652077617320696e76616c69642e0000006064820152608401610621565b610fbf818b6112ce565b50505050505050505050565b6000546001600160a01b03163314610ff55760405162461bcd60e51b8152600401610621906116b8565b6001600160a01b03811661105a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610621565b6109dd81611347565b6001600160a01b0383166110df5760405162461bcd60e51b815260206004820152603e60248201527f4d454d453a5f617070726f76653a4f574e45525f5a45524f3a2043616e6e6f7460448201527f20617070726f766520666f7220746865207a65726f20616464726573732e00006064820152608401610621565b6001600160a01b03821661115b5760405162461bcd60e51b815260206004820152603f60248201527f4d454d453a5f617070726f76653a5350454e4445525f5a45524f3a2043616e6e60448201527f6f7420617070726f766520746f20746865207a65726f20616464726573732e006064820152608401610621565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120191815260200190565b60405180910390a3600b54604080516001600160a01b038681166024830152858116604483015260648201859052336084808401919091528351808403909101815260a490920183526020820180516001600160e01b031663255e6c0360e21b179052915160009392909216916112789190611737565b6000604051808303816000865af19150503d80600081146112b5576040519150601f19603f3d011682016040523d82523d6000602084013e6112ba565b606091505b50509050806112c857600080fd5b50505050565b6001600160a01b0382811660008181526003602090815260409182902080548686166001600160a01b0319821681179092558351948552909416908301819052908201929092527f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9060600160405180910390a1505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b838110156113b257818101518382015260200161139a565b838111156112c85750506000910152565b60208152600082518060208401526113e2816040850160208701611397565b601f01601f19169190910160400192915050565b80356001600160a01b038116811461140d57600080fd5b919050565b6000806040838503121561142557600080fd5b61142e836113f6565b946020939093013593505050565b60008060006060848603121561145157600080fd5b61145a846113f6565b9250611468602085016113f6565b9150604084013590509250925092565b6000806040838503121561148b57600080fd5b611494836113f6565b9150602083013563ffffffff811681146114ad57600080fd5b809150509250929050565b6000602082840312156114ca57600080fd5b6114d3826113f6565b9392505050565b600080600080606085870312156114f057600080fd5b6114f9856113f6565b9350602085013567ffffffffffffffff8082111561151657600080fd5b818701915087601f83011261152a57600080fd5b81358181111561153957600080fd5b8860208260051b850101111561154e57600080fd5b95986020929092019750949560400135945092505050565b60008060008060008060c0878903121561157f57600080fd5b611588876113f6565b95506020870135945060408701359350606087013560ff811681146115ac57600080fd5b9598949750929560808101359460a0909101359350915050565b600080604083850312156115d957600080fd5b6115e2836113f6565b91506115f0602084016113f6565b90509250929050565b600181811c9082168061160d57607f821691505b6020821081141561162e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff8381169083168181101561166757611667611634565b039392505050565b600063ffffffff8084168061169457634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b600082198211156116b3576116b3611634565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156116ff57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060001982141561173057611730611634565b5060010190565b60008251611749818460208701611397565b919091019291505056fea2646970667358221220b89c9b80afc40c5ff73ea70a06c43225117b6b983bb9fba7c73fb54d67d72ba564736f6c634300080b0033