0x60806040526004361061026e5760003560e01c8063766f286e11610153578063a5cdee05116100cb578063d82849161161007f578063e30c397811610064578063e30c3978146106cb578063f2fde38b146106e9578063fa92ab7d1461070957600080fd5b8063d828491614610666578063dd62ed3e1461068557600080fd5b8063c9567bf9116100b0578063c9567bf914610628578063ca9ec19914610630578063d15ab09c1461064657600080fd5b8063a5cdee05146105e8578063a9059cbb1461060857600080fd5b8063878f8ff7116101225780638f9a55c0116101075780638f9a55c0146105bc57806395d89b411461027a578063a42d70ae146105d257600080fd5b8063878f8ff7146105745780638da5cb5b1461059e57600080fd5b8063766f286e1461050457806379ba5097146105345780637d1db4a51461054957806382bcedb51461055f57600080fd5b80633da858b5116101e657806352f7c988116101b557806370a082311161019a57806370a0823114610499578063715018a6146104cf57806372333356146104e457600080fd5b806352f7c9881461046357806368ec19bf1461048357600080fd5b80633da858b51461040157806342012bb81461041857806342a110951461043857806351bc3c851461044e57600080fd5b806323b872dd1161023d578063313ce56711610222578063313ce567146103b35780633582ad23146103c757806337e294d5146103e157600080fd5b806323b872dd146103615780632d1fff6c1461038157600080fd5b806306fdde031461027a578063095ea7b3146102cf57806311a63e17146102ff57806318160ddd1461033e57600080fd5b3661027557005b600080fd5b34801561028657600080fd5b50604080518082018252600781527f53686962616b6900000000000000000000000000000000000000000000000000602082015290516102c69190611ff7565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea366004612061565b610723565b60405190151581526020016102c6565b34801561030b57600080fd5b5060085461032690630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561034a57600080fd5b5061035361073a565b6040519081526020016102c6565b34801561036d57600080fd5b506102ef61037c36600461208d565b61075a565b34801561038d57600080fd5b506008546103a19062010000900460ff1681565b60405160ff90911681526020016102c6565b3480156103bf57600080fd5b5060096103a1565b3480156103d357600080fd5b50600e546102ef9060ff1681565b3480156103ed57600080fd5b50600954610326906001600160a01b031681565b34801561040d57600080fd5b506104166107c3565b005b34801561042457600080fd5b506104166104333660046120dc565b610885565b34801561044457600080fd5b5061035360065481565b34801561045a57600080fd5b50610416610961565b34801561046f57600080fd5b5061041661047e366004612115565b610a45565b34801561048f57600080fd5b50610353600d5481565b3480156104a557600080fd5b506103536104b4366004612137565b6001600160a01b031660009081526004602052604090205490565b3480156104db57600080fd5b50610416610bc7565b3480156104f057600080fd5b506104166104ff366004612115565b610bdb565b34801561051057600080fd5b506102ef61051f366004612137565b600f6020526000908152604090205460ff1681565b34801561054057600080fd5b50610416610df8565b34801561055557600080fd5b50610353600a5481565b34801561056b57600080fd5b50610416610e86565b34801561058057600080fd5b50610589610f63565b604080519283526020830191909152016102c6565b3480156105aa57600080fd5b506000546001600160a01b0316610326565b3480156105c857600080fd5b50610353600b5481565b3480156105de57600080fd5b50610353600c5481565b3480156105f457600080fd5b50610416610603366004612154565b610fac565b34801561061457600080fd5b506102ef610623366004612061565b611070565b61041661107d565b34801561063c57600080fd5b5061035360075481565b34801561065257600080fd5b50610416610661366004612137565b61135f565b34801561067257600080fd5b506008546103a190610100900460ff1681565b34801561069157600080fd5b506103536106a0366004612171565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106d757600080fd5b506001546001600160a01b0316610326565b3480156106f557600080fd5b50610416610704366004612137565b61157b565b34801561071557600080fd5b506008546102ef9060ff1681565b6000610730338484611669565b5060015b92915050565b60006107486009600a612299565b61075590620f42406122a8565b905090565b60006107678484846117c1565b6107b984336107b485604051806060016040528060288152602001612421602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611cdc565b611669565b5060019392505050565b6000546001600160a01b03163314806107ed5750600854630100000090046001600160a01b031633145b8061080257506009546001600160a01b031633145b6108795760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e000000000060648201526084015b60405180910390fd5b6008805460ff19169055565b6000546001600160a01b03163314806108af5750600854630100000090046001600160a01b031633145b806108c457506009546001600160a01b031633145b6109365760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633148061098b5750600854630100000090046001600160a01b031633145b806109a057506009546001600160a01b031633145b610a125760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b306000908152600460205260409020548015610a3157610a3181611d08565b478015610a4157610a4181611ea6565b5050565b6000546001600160a01b0316331480610a6f5750600854630100000090046001600160a01b031633145b80610a8457506009546001600160a01b031633145b610af65760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60085460ff16610b485760405162461bcd60e51b815260206004820152601b60248201527f53657420666565206e6f7420656e61626c656420616e796d6f726500000000006044820152606401610870565b6063821115610b825760405162461bcd60e51b81526020600482015260066024820152650727240dac2f60d31b6044820152606401610870565b6063811115610bbc5760405162461bcd60e51b81526020600482015260066024820152650727240dac2f60d31b6044820152606401610870565b600691909155600755565b610bcf611f3e565b610bd96000611f98565b565b6000546001600160a01b0316331480610c055750600854630100000090046001600160a01b031633145b80610c1a57506009546001600160a01b031633145b610c8c5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b600654821115610cde5760405162461bcd60e51b815260206004820152601b60248201527f42757920746178206f6e6c792063616e206265207265647563656400000000006044820152606401610870565b600754811115610d305760405162461bcd60e51b815260206004820152601c60248201527f53656c6c20746178206f6e6c792063616e2062652072656475636564000000006044820152606401610870565b6001821015610d815760405162461bcd60e51b815260206004820181905260248201527f427579207461782063616e206e6f74206265206c6f776572207468616e2031256044820152606401610870565b6001811015610bbc5760405162461bcd60e51b815260206004820152602160248201527f53656c6c207461782063616e206e6f74206265206c6f776572207468616e203160448201527f25000000000000000000000000000000000000000000000000000000000000006064820152608401610870565b60015433906001600160a01b03168114610e7a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610870565b610e8381611f98565b50565b6000546001600160a01b0316331480610eb05750600854630100000090046001600160a01b031633145b80610ec557506009546001600160a01b031633145b610f375760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60405133904780156108fc02916000818181858888f19350505050158015610e83573d6000803e3d6000fd5b6012546001600160a01b03166000908152600460205260408120548190610f95600c54826115f990919063ffffffff16565b600d54610fa39083906115f9565b92509250509091565b6000546001600160a01b0316331480610fd65750600854630100000090046001600160a01b031633145b80610feb57506009546001600160a01b031633145b61105d5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b600e805460ff1916911515919091179055565b60006107303384846117c1565b6000546001600160a01b03163314806110a75750600854630100000090046001600160a01b031633145b806110bc57506009546001600160a01b031633145b61112e5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60125474010000000000000000000000000000000000000000900460ff16156111995760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610870565b6010546001600160a01b031663f305d71934306111cb816001600160a01b031660009081526004602052604090205490565b6000806111e06000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611260573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061128591906122c7565b50506012546010546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b91906122f5565b50601280547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff16760100010000000000000000000000000000000000000000179055565b6000546001600160a01b03163314806113895750600854630100000090046001600160a01b031633145b8061139e57506009546001600160a01b031633145b6114105760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b6001600160a01b0381163014156114695760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e20756e737475636b20746865206f776e20746f6b656e0000006044820152606401610870565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190612312565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4191906122f5565b611583611f3e565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556115c16000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611605828461232b565b9392505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166116e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166117605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661183d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166118b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610870565b6000811161192f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166000908152600f602052604081205460ff1615801561197157506001600160a01b0384166000908152600f602052604090205460ff16155b15611c1357600e5460ff1615611a84576012546001600160a01b03848116911614611a84576001600160a01b038316600090815260046020526040902054600b546119bc848361234d565b1115611a305760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610870565b600a54831115611a825760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610870565b505b6012546001600160a01b0385811691161415611abd57611aba6064611ab460065485611fbe90919063ffffffff16565b906115f9565b90505b6012546001600160a01b0384811691161415611af057611aed6064611ab460075485611fbe90919063ffffffff16565b90505b600080611afb610f63565b3060009081526004602052604090205460125492945090925090600160a81b900460ff16158015611b3957506012546001600160a01b038781169116145b8015611b615750601254760100000000000000000000000000000000000000000000900460ff165b8015611b6c57508281115b15611b9557611b83611b7e8284611fca565b611d08565b478015611b9357611b9347611ea6565b505b8315611c0f5730600090815260046020526040902054611bb59085611fdf565b30600081815260046020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c069088815260200190565b60405180910390a35b5050505b6001600160a01b038416600090815260046020526040902054611c369083611feb565b6001600160a01b038516600090815260046020526040902055611c7b611c5c8383611feb565b6001600160a01b03851660009081526004602052604090205490611fdf565b6001600160a01b0380851660008181526004602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cc58585611feb565b60405190815260200160405180910390a350505050565b60008184841115611d005760405162461bcd60e51b81526004016108709190611ff7565b505050900390565b6012805460ff60a81b1916600160a81b17905580611d2557611e96565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5a57611d5a612365565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df0919061237b565b81600181518110611e0357611e03612365565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790611e62908590600090869030904290600401612398565b600060405180830381600087803b158015611e7c57600080fd5b505af1158015611e90573d6000803e3d6000fd5b50505050505b506012805460ff60a81b19169055565b600854600090630100000081046001600160a01b0316906108fc90611edb90606490611ab4908790610100900460ff16611fbe565b6040518115909202916000818181858888f16009546008549196506001600160a01b031694506108fc9350611f23925060649150611ab490879062010000900460ff16611fbe565b6040518115909202916000818181858888f150505050505050565b6000546001600160a01b03163314610bd95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610870565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055610e838161160c565b600061160582846122a8565b6000818311611fd95782611605565b50919050565b6000611605828461234d565b60006116058284612409565b600060208083528351808285015260005b8181101561202457858101830151858201604001528201612008565b81811115612036576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e8357600080fd5b6000806040838503121561207457600080fd5b823561207f8161204c565b946020939093013593505050565b6000806000606084860312156120a257600080fd5b83356120ad8161204c565b925060208401356120bd8161204c565b929592945050506040919091013590565b8015158114610e8357600080fd5b600080604083850312156120ef57600080fd5b82356120fa8161204c565b9150602083013561210a816120ce565b809150509250929050565b6000806040838503121561212857600080fd5b50508035926020909101359150565b60006020828403121561214957600080fd5b81356116058161204c565b60006020828403121561216657600080fd5b8135611605816120ce565b6000806040838503121561218457600080fd5b823561218f8161204c565b9150602083013561210a8161204c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121f05781600019048211156121d6576121d661219f565b808516156121e357918102915b93841c93908002906121ba565b509250929050565b60008261220757506001610734565b8161221457506000610734565b816001811461222a576002811461223457612250565b6001915050610734565b60ff8411156122455761224561219f565b50506001821b610734565b5060208310610133831016604e8410600b8410161715612273575081810a610734565b61227d83836121b5565b80600019048211156122915761229161219f565b029392505050565b600061160560ff8416836121f8565b60008160001904831182151516156122c2576122c261219f565b500290565b6000806000606084860312156122dc57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561230757600080fd5b8151611605816120ce565b60006020828403121561232457600080fd5b5051919050565b60008261234857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123605761236061219f565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561238d57600080fd5b81516116058161204c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123e85784516001600160a01b0316835293830193918301916001016123c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008282101561241b5761241b61219f565b50039056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220389f32e88db7e13864a60c3bd42b26631c22960d44ee2a10065bfc1c05299d2864736f6c634300080c0033
0x60806040526002805461dead6001600160a01b031991821617909155600380549091169055601460065560506007556008805462ffffff191662501401179055620000766064620000536009600a620006b7565b6200006290620f4240620006c8565b620003e760201b620015f91790919060201c565b600a556200008f60326009600a620000539190620006b7565b600b5560c8600c556064600d55600e805460ff19166001179055601180546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556012805461ffff60a81b19169055348015620000ea57600080fd5b50620000f633620003fe565b6008805476936a644bd49e5e0e756bf1b735459fdd374363cf0000006301000000600160b81b0319909116179055600980546001600160a01b03191673884784f869346f9955fe222b4aa09c42126dac251781556200015790600a620006b7565b6200016690620f4240620006c8565b33600090815260046020908152604080832093909355600f90528181208054600160ff1991821681179092556008546001600160a01b036301000000909104811684528484208054831684179055600954811684528484208054831684179055308085529490932080549091169091179055601154620001eb92911660001962000428565b601154601080546001600160a01b0319166001600160a01b0390921691821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000248573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200026e9190620006ea565b6001600160a01b031663c9c6539630601060009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f79190620006ea565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036b9190620006ea565b601280546001600160a01b0319166001600160a01b0392831617905560098054909116906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620003c190600a620006b7565b620003d090620f4240620006c8565b60405190815260200160405180910390a36200073f565b6000620003f582846200071c565b90505b92915050565b600180546001600160a01b0319169055620004258162000554602090811b6200160c17901c565b50565b6001600160a01b038316620004905760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004f35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000487565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620005fb578160001904821115620005df57620005df620005a4565b80851615620005ed57918102915b93841c9390800290620005bf565b509250929050565b6000826200061457506001620003f8565b816200062357506000620003f8565b81600181146200063c5760028114620006475762000667565b6001915050620003f8565b60ff8411156200065b576200065b620005a4565b50506001821b620003f8565b5060208310610133831016604e8410600b84101617156200068c575081810a620003f8565b620006988383620005ba565b8060001904821115620006af57620006af620005a4565b029392505050565b6000620003f560ff84168362000603565b6000816000190483118215151615620006e557620006e5620005a4565b500290565b600060208284031215620006fd57600080fd5b81516001600160a01b03811681146200071557600080fd5b9392505050565b6000826200073a57634e487b7160e01b600052601260045260246000fd5b500490565b61247e806200074f6000396000f3fe60806040526004361061026e5760003560e01c8063766f286e11610153578063a5cdee05116100cb578063d82849161161007f578063e30c397811610064578063e30c3978146106cb578063f2fde38b146106e9578063fa92ab7d1461070957600080fd5b8063d828491614610666578063dd62ed3e1461068557600080fd5b8063c9567bf9116100b0578063c9567bf914610628578063ca9ec19914610630578063d15ab09c1461064657600080fd5b8063a5cdee05146105e8578063a9059cbb1461060857600080fd5b8063878f8ff7116101225780638f9a55c0116101075780638f9a55c0146105bc57806395d89b411461027a578063a42d70ae146105d257600080fd5b8063878f8ff7146105745780638da5cb5b1461059e57600080fd5b8063766f286e1461050457806379ba5097146105345780637d1db4a51461054957806382bcedb51461055f57600080fd5b80633da858b5116101e657806352f7c988116101b557806370a082311161019a57806370a0823114610499578063715018a6146104cf57806372333356146104e457600080fd5b806352f7c9881461046357806368ec19bf1461048357600080fd5b80633da858b51461040157806342012bb81461041857806342a110951461043857806351bc3c851461044e57600080fd5b806323b872dd1161023d578063313ce56711610222578063313ce567146103b35780633582ad23146103c757806337e294d5146103e157600080fd5b806323b872dd146103615780632d1fff6c1461038157600080fd5b806306fdde031461027a578063095ea7b3146102cf57806311a63e17146102ff57806318160ddd1461033e57600080fd5b3661027557005b600080fd5b34801561028657600080fd5b50604080518082018252600781527f53686962616b6900000000000000000000000000000000000000000000000000602082015290516102c69190611ff7565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea366004612061565b610723565b60405190151581526020016102c6565b34801561030b57600080fd5b5060085461032690630100000090046001600160a01b031681565b6040516001600160a01b0390911681526020016102c6565b34801561034a57600080fd5b5061035361073a565b6040519081526020016102c6565b34801561036d57600080fd5b506102ef61037c36600461208d565b61075a565b34801561038d57600080fd5b506008546103a19062010000900460ff1681565b60405160ff90911681526020016102c6565b3480156103bf57600080fd5b5060096103a1565b3480156103d357600080fd5b50600e546102ef9060ff1681565b3480156103ed57600080fd5b50600954610326906001600160a01b031681565b34801561040d57600080fd5b506104166107c3565b005b34801561042457600080fd5b506104166104333660046120dc565b610885565b34801561044457600080fd5b5061035360065481565b34801561045a57600080fd5b50610416610961565b34801561046f57600080fd5b5061041661047e366004612115565b610a45565b34801561048f57600080fd5b50610353600d5481565b3480156104a557600080fd5b506103536104b4366004612137565b6001600160a01b031660009081526004602052604090205490565b3480156104db57600080fd5b50610416610bc7565b3480156104f057600080fd5b506104166104ff366004612115565b610bdb565b34801561051057600080fd5b506102ef61051f366004612137565b600f6020526000908152604090205460ff1681565b34801561054057600080fd5b50610416610df8565b34801561055557600080fd5b50610353600a5481565b34801561056b57600080fd5b50610416610e86565b34801561058057600080fd5b50610589610f63565b604080519283526020830191909152016102c6565b3480156105aa57600080fd5b506000546001600160a01b0316610326565b3480156105c857600080fd5b50610353600b5481565b3480156105de57600080fd5b50610353600c5481565b3480156105f457600080fd5b50610416610603366004612154565b610fac565b34801561061457600080fd5b506102ef610623366004612061565b611070565b61041661107d565b34801561063c57600080fd5b5061035360075481565b34801561065257600080fd5b50610416610661366004612137565b61135f565b34801561067257600080fd5b506008546103a190610100900460ff1681565b34801561069157600080fd5b506103536106a0366004612171565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b3480156106d757600080fd5b506001546001600160a01b0316610326565b3480156106f557600080fd5b50610416610704366004612137565b61157b565b34801561071557600080fd5b506008546102ef9060ff1681565b6000610730338484611669565b5060015b92915050565b60006107486009600a612299565b61075590620f42406122a8565b905090565b60006107678484846117c1565b6107b984336107b485604051806060016040528060288152602001612421602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190611cdc565b611669565b5060019392505050565b6000546001600160a01b03163314806107ed5750600854630100000090046001600160a01b031633145b8061080257506009546001600160a01b031633145b6108795760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e000000000060648201526084015b60405180910390fd5b6008805460ff19169055565b6000546001600160a01b03163314806108af5750600854630100000090046001600160a01b031633145b806108c457506009546001600160a01b031633145b6109365760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b031633148061098b5750600854630100000090046001600160a01b031633145b806109a057506009546001600160a01b031633145b610a125760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b306000908152600460205260409020548015610a3157610a3181611d08565b478015610a4157610a4181611ea6565b5050565b6000546001600160a01b0316331480610a6f5750600854630100000090046001600160a01b031633145b80610a8457506009546001600160a01b031633145b610af65760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60085460ff16610b485760405162461bcd60e51b815260206004820152601b60248201527f53657420666565206e6f7420656e61626c656420616e796d6f726500000000006044820152606401610870565b6063821115610b825760405162461bcd60e51b81526020600482015260066024820152650727240dac2f60d31b6044820152606401610870565b6063811115610bbc5760405162461bcd60e51b81526020600482015260066024820152650727240dac2f60d31b6044820152606401610870565b600691909155600755565b610bcf611f3e565b610bd96000611f98565b565b6000546001600160a01b0316331480610c055750600854630100000090046001600160a01b031633145b80610c1a57506009546001600160a01b031633145b610c8c5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b600654821115610cde5760405162461bcd60e51b815260206004820152601b60248201527f42757920746178206f6e6c792063616e206265207265647563656400000000006044820152606401610870565b600754811115610d305760405162461bcd60e51b815260206004820152601c60248201527f53656c6c20746178206f6e6c792063616e2062652072656475636564000000006044820152606401610870565b6001821015610d815760405162461bcd60e51b815260206004820181905260248201527f427579207461782063616e206e6f74206265206c6f776572207468616e2031256044820152606401610870565b6001811015610bbc5760405162461bcd60e51b815260206004820152602160248201527f53656c6c207461782063616e206e6f74206265206c6f776572207468616e203160448201527f25000000000000000000000000000000000000000000000000000000000000006064820152608401610870565b60015433906001600160a01b03168114610e7a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610870565b610e8381611f98565b50565b6000546001600160a01b0316331480610eb05750600854630100000090046001600160a01b031633145b80610ec557506009546001600160a01b031633145b610f375760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60405133904780156108fc02916000818181858888f19350505050158015610e83573d6000803e3d6000fd5b6012546001600160a01b03166000908152600460205260408120548190610f95600c54826115f990919063ffffffff16565b600d54610fa39083906115f9565b92509250509091565b6000546001600160a01b0316331480610fd65750600854630100000090046001600160a01b031633145b80610feb57506009546001600160a01b031633145b61105d5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b600e805460ff1916911515919091179055565b60006107303384846117c1565b6000546001600160a01b03163314806110a75750600854630100000090046001600160a01b031633145b806110bc57506009546001600160a01b031633145b61112e5760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b60125474010000000000000000000000000000000000000000900460ff16156111995760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610870565b6010546001600160a01b031663f305d71934306111cb816001600160a01b031660009081526004602052604090205490565b6000806111e06000546001600160a01b031690565b60405160e088901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611260573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061128591906122c7565b50506012546010546040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260001960248201529116915063095ea7b3906044016020604051808303816000875af11580156112f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131b91906122f5565b50601280547fffffffffffffffffff00ff00ffffffffffffffffffffffffffffffffffffffff16760100010000000000000000000000000000000000000000179055565b6000546001600160a01b03163314806113895750600854630100000090046001600160a01b031633145b8061139e57506009546001600160a01b031633145b6114105760405162461bcd60e51b815260206004820152603b60248201527f4f6e6c79206f776e65722c206465762077616c6c6574206f72207465616d207760448201527f616c6c65742063616e2075736520746869732066756e6374696f6e00000000006064820152608401610870565b6001600160a01b0381163014156114695760405162461bcd60e51b815260206004820152601d60248201527f596f752063616e20756e737475636b20746865206f776e20746f6b656e0000006044820152606401610870565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa1580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190612312565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015611557573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4191906122f5565b611583611f3e565b600180546001600160a01b03831673ffffffffffffffffffffffffffffffffffffffff1990911681179091556115c16000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6000611605828461232b565b9392505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0383166116e45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166117605760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661183d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166118b95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610870565b6000811161192f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610870565b6001600160a01b0382166000908152600f602052604081205460ff1615801561197157506001600160a01b0384166000908152600f602052604090205460ff16155b15611c1357600e5460ff1615611a84576012546001600160a01b03848116911614611a84576001600160a01b038316600090815260046020526040902054600b546119bc848361234d565b1115611a305760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610870565b600a54831115611a825760405162461bcd60e51b815260206004820152601160248201527f5458204c696d69742045786365656465640000000000000000000000000000006044820152606401610870565b505b6012546001600160a01b0385811691161415611abd57611aba6064611ab460065485611fbe90919063ffffffff16565b906115f9565b90505b6012546001600160a01b0384811691161415611af057611aed6064611ab460075485611fbe90919063ffffffff16565b90505b600080611afb610f63565b3060009081526004602052604090205460125492945090925090600160a81b900460ff16158015611b3957506012546001600160a01b038781169116145b8015611b615750601254760100000000000000000000000000000000000000000000900460ff165b8015611b6c57508281115b15611b9557611b83611b7e8284611fca565b611d08565b478015611b9357611b9347611ea6565b505b8315611c0f5730600090815260046020526040902054611bb59085611fdf565b30600081815260046020526040908190209290925590516001600160a01b038916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611c069088815260200190565b60405180910390a35b5050505b6001600160a01b038416600090815260046020526040902054611c369083611feb565b6001600160a01b038516600090815260046020526040902055611c7b611c5c8383611feb565b6001600160a01b03851660009081526004602052604090205490611fdf565b6001600160a01b0380851660008181526004602052604090209290925585167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cc58585611feb565b60405190815260200160405180910390a350505050565b60008184841115611d005760405162461bcd60e51b81526004016108709190611ff7565b505050900390565b6012805460ff60a81b1916600160a81b17905580611d2557611e96565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611d5a57611d5a612365565b6001600160a01b03928316602091820292909201810191909152601054604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015611dcc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df0919061237b565b81600181518110611e0357611e03612365565b6001600160a01b0392831660209182029290920101526010546040517f791ac94700000000000000000000000000000000000000000000000000000000815291169063791ac94790611e62908590600090869030904290600401612398565b600060405180830381600087803b158015611e7c57600080fd5b505af1158015611e90573d6000803e3d6000fd5b50505050505b506012805460ff60a81b19169055565b600854600090630100000081046001600160a01b0316906108fc90611edb90606490611ab4908790610100900460ff16611fbe565b6040518115909202916000818181858888f16009546008549196506001600160a01b031694506108fc9350611f23925060649150611ab490879062010000900460ff16611fbe565b6040518115909202916000818181858888f150505050505050565b6000546001600160a01b03163314610bd95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610870565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055610e838161160c565b600061160582846122a8565b6000818311611fd95782611605565b50919050565b6000611605828461234d565b60006116058284612409565b600060208083528351808285015260005b8181101561202457858101830151858201604001528201612008565b81811115612036576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114610e8357600080fd5b6000806040838503121561207457600080fd5b823561207f8161204c565b946020939093013593505050565b6000806000606084860312156120a257600080fd5b83356120ad8161204c565b925060208401356120bd8161204c565b929592945050506040919091013590565b8015158114610e8357600080fd5b600080604083850312156120ef57600080fd5b82356120fa8161204c565b9150602083013561210a816120ce565b809150509250929050565b6000806040838503121561212857600080fd5b50508035926020909101359150565b60006020828403121561214957600080fd5b81356116058161204c565b60006020828403121561216657600080fd5b8135611605816120ce565b6000806040838503121561218457600080fd5b823561218f8161204c565b9150602083013561210a8161204c565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156121f05781600019048211156121d6576121d661219f565b808516156121e357918102915b93841c93908002906121ba565b509250929050565b60008261220757506001610734565b8161221457506000610734565b816001811461222a576002811461223457612250565b6001915050610734565b60ff8411156122455761224561219f565b50506001821b610734565b5060208310610133831016604e8410600b8410161715612273575081810a610734565b61227d83836121b5565b80600019048211156122915761229161219f565b029392505050565b600061160560ff8416836121f8565b60008160001904831182151516156122c2576122c261219f565b500290565b6000806000606084860312156122dc57600080fd5b8351925060208401519150604084015190509250925092565b60006020828403121561230757600080fd5b8151611605816120ce565b60006020828403121561232457600080fd5b5051919050565b60008261234857634e487b7160e01b600052601260045260246000fd5b500490565b600082198211156123605761236061219f565b500190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561238d57600080fd5b81516116058161204c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123e85784516001600160a01b0316835293830193918301916001016123c3565b50506001600160a01b03969096166060850152505050608001529392505050565b60008282101561241b5761241b61219f565b50039056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220389f32e88db7e13864a60c3bd42b26631c22960d44ee2a10065bfc1c05299d2864736f6c634300080c0033