//
0x60806040526006805462ffff001916620384001790556009805460ff1916905569065a4da25d3016c00000600a553480156200003a57600080fd5b506040518060400160405280600d81526020016c24a7aa1020b832902a37b5b2b760991b8152506040518060400160405280600381526020016241504560e81b81525060006200008f620001f160201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000ee9060049060208501906200036a565b508051620001049060059060208401906200036a565b50506006805460ff1916601217905550600d80546001600160a01b031916339081179091556040516000907f74da04524d50c64947f5dd5381ef1a4dca5cba8ed1d816243f9e48aa0b5617ed908290a3600d80546001600160a01b0390811660009081526007602090815260408083208054600160ff19918216811790925595549094168352600890915290208054909216179055620001af3369065a4da25d3016c00000620001f5565b620001c530693f870857a3e0e3800000620001f5565b600b80546001600160a01b031916737a69c468c4f9d335e1991689dd2bc76c45e65db117905562000474565b3390565b6001600160a01b038216620002515760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200026d816003546200030060201b620017851790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620002a29183906200178562000300821b17901c565b6001600160a01b0383166000818152600160205260409081902092909255905130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620002f49085815260200190565b60405180910390a35050565b6000806200030f838562000410565b905083811015620003635760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000248565b9392505050565b828054620003789062000437565b90600052602060002090601f0160209004810192826200039c5760008555620003e7565b82601f10620003b757805160ff1916838001178555620003e7565b82800160010185558215620003e7579182015b82811115620003e7578251825591602001919060010190620003ca565b50620003f5929150620003f9565b5090565b5b80821115620003f55760008155600101620003fa565b600082198211156200043257634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200044c57607f821691505b602082108114156200046e57634e487b7160e01b600052602260045260246000fd5b50919050565b6123bd80620004846000396000f3fe6080604052600436106101c45760003560e01c806306fdde03146101d0578063095ea7b3146101fb578063161b822c1461022b57806318160ddd146102585780631ad9339a1461027757806323b872dd146102a0578063269f534c146102c057806329605e77146102f9578063313ce5671461031b578063376c23911461033d578063395093511461035d5780633f07fce11461037d57806340c10f191461039d5780634a74bb02146103bd5780635342acb4146102c0578063570ca735146103d757806370a08231146103ec57806370b0a8431461040c578063715018a61461042c578063893d20e8146104415780638da5cb5b1461045657806395d89b411461046b5780639cd441da146104805780639d8f7706146104a05780639f9a4e7f146104c0578063a0712d68146104e0578063a11c6a8f14610500578063a392e67414610520578063a457c2d714610540578063a9059cbb14610560578063b28805f414610580578063b29ad50a146105a0578063b65d08b0146105b5578063d8248358146105d5578063dd62ed3e146105eb578063dd816c8714610631578063dfff9c9b14610651578063f2fde38b14610659578063fccc28131461067957600080fd5b366101cb57005b600080fd5b3480156101dc57600080fd5b506101e561068f565b6040516101f29190612062565b60405180910390f35b34801561020757600080fd5b5061021b610216366004611f61565b610721565b60405190151581526020016101f2565b34801561023757600080fd5b50600b5461024b906001600160a01b031681565b6040516101f2919061204e565b34801561026457600080fd5b506003545b6040519081526020016101f2565b34801561028357600080fd5b5061028d6103e881565b60405161ffff90911681526020016101f2565b3480156102ac57600080fd5b5061021b6102bb366004611eeb565b610738565b3480156102cc57600080fd5b5061021b6102db366004611e78565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561030557600080fd5b50610319610314366004611e78565b6107a1565b005b34801561032757600080fd5b5060065460405160ff90911681526020016101f2565b34801561034957600080fd5b50610319610358366004611fa8565b6107f6565b34801561036957600080fd5b5061021b610378366004611f61565b61091d565b34801561038957600080fd5b50610319610398366004611f2c565b610953565b3480156103a957600080fd5b506103196103b8366004611f61565b6109a8565b3480156103c957600080fd5b5060095461021b9060ff1681565b3480156103e357600080fd5b5061024b6109e5565b3480156103f857600080fd5b50610269610407366004611e78565b6109f4565b34801561041857600080fd5b50600d5461024b906001600160a01b031681565b34801561043857600080fd5b50610319610a0f565b34801561044d57600080fd5b5061024b610a76565b34801561046257600080fd5b5061024b610a85565b34801561047757600080fd5b506101e5610a94565b34801561048c57600080fd5b5061031961049b366004611ffe565b610aa3565b3480156104ac57600080fd5b506103196104bb366004611f2c565b610b7d565b3480156104cc57600080fd5b506103196104db366004611f8d565b610bd2565b3480156104ec57600080fd5b5061021b6104fb366004611fcc565b610c46565b34801561050c57600080fd5b5061031961051b366004611e78565b610c8a565b34801561052c57600080fd5b5061031961053b366004611fcc565b61103f565b34801561054c57600080fd5b5061021b61055b366004611f61565b6110ac565b34801561056c57600080fd5b5061021b61057b366004611f61565b6110fb565b34801561058c57600080fd5b5061031961059b366004611fcc565b611108565b3480156105ac57600080fd5b50610319611271565b3480156105c157600080fd5b5060065461028d90610100900461ffff1681565b3480156105e157600080fd5b50610269600a5481565b3480156105f757600080fd5b50610269610606366004611eb2565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561063d57600080fd5b50600c5461024b906001600160a01b031681565b6103196113e9565b34801561066557600080fd5b50610319610674366004611e78565b6116a8565b34801561068557600080fd5b5061024b61dead81565b60606004805461069e90612258565b80601f01602080910402602001604051908101604052809291908181526020018280546106ca90612258565b80156107175780601f106106ec57610100808354040283529160200191610717565b820191906000526020600020905b8154815290600101906020018083116106fa57829003601f168201915b5050505050905090565b600061072e3384846117e9565b5060015b92915050565b600061074584848461190e565b6107978433610792856040518060600160405280602881526020016122fb602891396001600160a01b038a1660009081526002602090815260408083203384529091529020549190611ab6565b6117e9565b5060019392505050565b600d546001600160a01b031633146107d45760405162461bcd60e51b81526004016107cb90612133565b60405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031633146108205760405162461bcd60e51b81526004016107cb90612133565b6103e861ffff821611156108b65760405162461bcd60e51b815260206004820152605160248201527f544f4b454e3a3a7570646174655472616e73666572546178526174653a20547260448201527f616e73666572207461782072617465206d757374206e6f7420657863656564206064820152703a34329036b0bc34b6bab6903930ba329760791b608482015260a4016107cb565b6006546040805161010090920461ffff90811683528316602083015233917fe9d5c8ee2a65d4fb859c680669d8f902172d53e3f15f9f11108a31bbada4b70b910160405180910390a26006805461ffff9092166101000262ffff0019909216919091179055565b3360008181526002602090815260408083206001600160a01b0387168452909152812054909161072e9185906107929086611785565b600d546001600160a01b0316331461097d5760405162461bcd60e51b81526004016107cb90612133565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b336109b1610a85565b6001600160a01b0316146109d75760405162461bcd60e51b81526004016107cb906120fe565b6109e18282611aed565b5050565b600d546001600160a01b031690565b6001600160a01b031660009081526001602052604090205490565b33610a18610a85565b6001600160a01b031614610a3e5760405162461bcd60e51b81526004016107cb906120fe565b600080546040516001600160a01b0390911690600080516020612323833981519152908390a3600080546001600160a01b0319169055565b6000610a80610a85565b905090565b6000546001600160a01b031690565b60606005805461069e90612258565b600b54610abb9030906001600160a01b0316846117e9565b600b546001600160a01b031663f305d719823085600080610ada6109e5565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b158015610b3d57600080fd5b505af1158015610b51573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b769190612020565b5050505050565b600d546001600160a01b03163314610ba75760405162461bcd60e51b81526004016107cb90612133565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314610bfc5760405162461bcd60e51b81526004016107cb90612133565b604051811515815233907f3ca65588b29182880283bc8778fea5f01b351e01d874839a39a99e1c281a21139060200160405180910390a26009805460ff1916911515919091179055565b600033610c51610a85565b6001600160a01b031614610c775760405162461bcd60e51b81526004016107cb906120fe565b610c813383611aed565b5060015b919050565b600d546001600160a01b03163314610cb45760405162461bcd60e51b81526004016107cb90612133565b600c80546001600160a01b0319166001600160a01b03831690811790915560408051630dfe168160e01b81529051309291630dfe1681916004808301926020929190829003018186803b158015610d0a57600080fd5b505afa158015610d1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d429190611e95565b6001600160a01b0316148015610e5e5750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610da157600080fd5b505afa158015610db5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd99190611e95565b6001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610e1b57600080fd5b505afa158015610e2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e539190611e95565b6001600160a01b0316145b80610ffb5750306001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015610ea757600080fd5b505afa158015610ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf9190611e95565b6001600160a01b0316148015610ffb5750600b60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f3e57600080fd5b505afa158015610f52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f769190611e95565b6001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb857600080fd5b505afa158015610fcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff09190611e95565b6001600160a01b0316145b61103c5760405162461bcd60e51b815260206004820152601260248201527104552524f523a206e6f742077657468206c760741b60448201526064016107cb565b50565b600d546001600160a01b031633146110695760405162461bcd60e51b81526004016107cb90612133565b600a54604080519182526020820183905233917f54c7a13ff01698e4ed3550a23216585f8472c7b1515a932eac98c9a6d48990c5910160405180910390a2600a55565b600061072e338461079285604051806060016040528060258152602001612363602591393360009081526002602090815260408083206001600160a01b038d1684529091529020549190611ab6565b600061072e33848461190e565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061113d5761113d6122a9565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561119157600080fd5b505afa1580156111a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c99190611e95565b816001815181106111dc576111dc6122a9565b6001600160a01b039283166020918202929092010152600b5461120291309116846117e9565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061123b908590600090869030904290600401612177565b600060405180830381600087803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b505050505050565b600c805460ff60a01b1916600160a01b1790556006805462ffff0019811690915561ffff6101009091041660006112a7306109f4565b9050600a54811061133b57600a5460006112c2826002611bc1565b905060006112d08383611c19565b9050476112dc83611108565b60006112e84783611c19565b90506112f48382610aa3565b60408051858152602081018390529081018490527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619060600160405180910390a150505050505b47156113bd57600061134b6109e5565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114611395576040519150601f19603f3d011682016040523d82523d6000602084013e61139a565b606091505b50509050806113bb5760405162461bcd60e51b81526004016107cb906120b7565b505b506006805461ffff9092166101000262ffff0019909216919091179055600c805460ff60a01b19169055565b60006113f36109e5565b6001600160a01b03163460405160006040518083038185875af1925050503d806000811461143d576040519150601f19603f3d011682016040523d82523d6000602084013e611442565b606091505b50509050806114635760405162461bcd60e51b81526004016107cb906120b7565b600b54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c4648916004808301926020929190829003018186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e09190611e95565b600c546040516370a0823160e01b81526001600160a01b03928316926370a08231926115119291169060040161204e565b60206040518083038186803b15801561152957600080fd5b505afa15801561153d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115619190611fe5565b600c5490915060009061157c906001600160a01b03166109f4565b600b54604051630153543560e21b815234600482015260248101859052604481018390529192506000916116259160649161161f91605a916001600160a01b039091169063054d50d49085015b60206040518083038186803b1580156115e157600080fd5b505afa1580156115f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116199190611fe5565b90611c75565b90611bc1565b30600090815260016020526040812080549293508392909190611649908490612241565b9091555050326000908152600160205260408120805483929061166d9084906121e8565b9091555050600c5460405182815232916001600160a01b0316906000805160206123438339815191529060200160405180910390a350505050565b336116b1610a85565b6001600160a01b0316146116d75760405162461bcd60e51b81526004016107cb906120fe565b6001600160a01b03811661173c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107cb565b600080546040516001600160a01b038085169392169160008051602061232383398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061179283856121e8565b9050838110156117e25760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b60448201526064016107cb565b9392505050565b6001600160a01b03831661184b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107cb565b6001600160a01b0382166118ac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107cb565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600c54839082906001600160a01b0316156119a857600c546040516370a0823160e01b815261195f9160649161161f9160059130916370a08231916115c9916001600160a01b03169060040161204e565b8111158061197c57503260009081526008602052604090205460ff165b8061199f57506001600160a01b03821660009081526008602052604090205460ff165b6119a857600080fd5b60095460ff16151560011480156119c95750600c54600160a01b900460ff16155b80156119df5750600b546001600160a01b031615155b80156119f95750600c546001600160a01b03868116911614155b8015611a1557503260009081526007602052604090205460ff16155b15611a2257611a22611271565b6001600160a01b03841661dead1480611a445750600654610100900461ffff16155b80611a5e57503260009081526007602052604090205460ff165b15611a7357611a6e858585611cf4565b610b76565b600654600090611a95906127109061161f908790610100900461ffff16611c75565b9050611aa2863083611cf4565b6112698686611ab18488612241565b611cf4565b60008184841115611ada5760405162461bcd60e51b81526004016107cb9190612062565b50611ae58385612241565b949350505050565b6001600160a01b038216611b435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107cb565b600354611b509082611785565b6003556001600160a01b038216600090815260016020526040902054611b769082611785565b6001600160a01b03831660008181526001602052604090819020929092559051309060008051602061234383398151915290611bb59085815260200190565b60405180910390a35050565b6000808211611c0f5760405162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b60448201526064016107cb565b6117e28284612200565b600082821115611c6b5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f77000060448201526064016107cb565b6117e28284612241565b600082611c8457506000610732565b6000611c908385612222565b905082611c9d8583612200565b146117e25760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107cb565b6001600160a01b038316611d585760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107cb565b6001600160a01b038216611dba5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107cb565b611df7816040518060600160405280602681526020016122d5602691396001600160a01b0386166000908152600160205260409020549190611ab6565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611e269082611785565b6001600160a01b038084166000818152600160205260409081902093909355915190851690600080516020612343833981519152906119019085815260200190565b80358015158114610c8557600080fd5b600060208284031215611e8a57600080fd5b81356117e2816122bf565b600060208284031215611ea757600080fd5b81516117e2816122bf565b60008060408385031215611ec557600080fd5b8235611ed0816122bf565b91506020830135611ee0816122bf565b809150509250929050565b600080600060608486031215611f0057600080fd5b8335611f0b816122bf565b92506020840135611f1b816122bf565b929592945050506040919091013590565b60008060408385031215611f3f57600080fd5b8235611f4a816122bf565b9150611f5860208401611e68565b90509250929050565b60008060408385031215611f7457600080fd5b8235611f7f816122bf565b946020939093013593505050565b600060208284031215611f9f57600080fd5b6117e282611e68565b600060208284031215611fba57600080fd5b813561ffff811681146117e257600080fd5b600060208284031215611fde57600080fd5b5035919050565b600060208284031215611ff757600080fd5b5051919050565b6000806040838503121561201157600080fd5b50508035926020909101359150565b60008060006060848603121561203557600080fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b600060208083528351808285015260005b8181101561208f57858101830151858201604001528201612073565b818111156120a1576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526027908201527f4661696c656420746f207472616e73666572207468652066756e64732c20616260408201526637b93a34b7339760c91b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526024908201527f6f70657261746f723a2063616c6c6572206973206e6f7420746865206f70657260408201526330ba37b960e11b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156121c75784516001600160a01b0316835293830193918301916001016121a2565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156121fb576121fb612293565b500190565b60008261221d57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561223c5761223c612293565b500290565b60008282101561225357612253612293565b500390565b600181811c9082168061226c57607f821691505b6020821081141561228d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461103c57600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220450dac2a25e7fb6065dbe7232295d0585410700d99c25cb35d7378c7baad819d64736f6c63430008070033