0x608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5cb5b11610104578063c8f33c91116100a2578063ebe2b12b11610071578063ebe2b12b146103fa578063f0c51bbb14610402578063f2fde38b1461040a578063f9217ab214610430576101d9565b8063c8f33c91146103da578063cd3daf9d146103e2578063df136d65146103ea578063e9fad8ee146103f2576101d9565b8063a694fc3a116100de578063a694fc3a14610372578063ab7573dd1461038f578063b211ad9b146103b5578063c0ed00c9146103bd576101d9565b80638da5cb5b1461032a5780638f32d59b1461034e5780639c907b581461036a576101d9565b80633d18b9121161017c5780637b0a47ee1161014b5780637b0a47ee146102ec57806380faa57d146102f45780638b876347146102fc5780638da5889714610322576101d9565b80633d18b912146102ae5780635e42b455146102b657806370a08231146102be578063715018a6146102e4576101d9565b806318160ddd116101b857806318160ddd146102645780631be052891461026c5780632e1a7d4d146102745780633c6b16ab14610291576101d9565b80628cc262146101de5780630700037d146102165780630d68b7611461023c575b600080fd5b610204600480360360208110156101f457600080fd5b50356001600160a01b0316610438565b60408051918252519081900360200190f35b6102046004803603602081101561022c57600080fd5b50356001600160a01b03166104be565b6102626004803603602081101561025257600080fd5b50356001600160a01b03166104d0565b005b610204610539565b610204610540565b6102626004803603602081101561028a57600080fd5b5035610546565b610262600480360360208110156102a757600080fd5b50356106c4565b6102626108b3565b610204610abb565b610204600480360360208110156102d457600080fd5b50356001600160a01b0316610b37565b610262610b52565b610204610be3565b610204610be9565b6102046004803603602081101561031257600080fd5b50356001600160a01b0316610bfc565b610204610c0e565b610332610c14565b604080516001600160a01b039092168252519081900360200190f35b610356610c23565b604080519115158252519081900360200190f35b610204610c49565b6102626004803603602081101561038857600080fd5b5035610c4f565b610204600480360360208110156103a557600080fd5b50356001600160a01b0316610d75565b610332610d87565b610262600480360360208110156103d357600080fd5b5035610d96565b610204610de2565b610204610de8565b610204610e3c565b610262610e42565b610204610e55565b610332610e5b565b6102626004803603602081101561042057600080fd5b50356001600160a01b0316610e6a565b610332610eba565b6001600160a01b0381166000908152600f6020908152604080832054600e9092528220546104b891906104ac90670de0b6b3a7640000906104a09061048b9061047f610de8565b9063ffffffff610ec916565b61049488610b37565b9063ffffffff610f1216565b9063ffffffff610f6b16565b9063ffffffff610fad16565b92915050565b600f6020526000908152604090205481565b6104d8610c23565b610517576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001545b90565b60075481565b3361054f610de8565b600d5561055a610be9565b600c556001600160a01b038116156105a15761057581610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b60095442116105e3576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b6000821161062c576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b8161063633610b37565b1015610681576040805162461bcd60e51b8152602060048201526015602482015274496e73756666696369656e742062616c616e63652160581b604482015290519081900360640190fd5b61068a82611007565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b600654604080516bffffffffffffffffffffffff19606093841b16602080830191909152825180830360140181526034830184528051908201203390941b605483015282516048818403018152606890920190925280519101201461075a5760405162461bcd60e51b81526004018080602001828103825260248152602001806113a46024913960400191505060405180910390fd5b6008819055610767610de8565b600d55610772610be9565b600c5560095442111561084757600a5442106107a45760075461079c90829063ffffffff610f6b16565b600b556107f3565b600a546000906107ba904263ffffffff610ec916565b905060006107d3600b5483610f1290919063ffffffff16565b6007549091506107ed906104a0858463ffffffff610fad16565b600b5550505b42600c81905560075461080c919063ffffffff610fad16565b600a556040805182815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a16108b0565b60075461085b90829063ffffffff610f6b16565b600b55600954600c819055600754610879919063ffffffff610fad16565b600a556040805182815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15b50565b336108bc610de8565b600d556108c7610be9565b600c556001600160a01b0381161561090e576108e281610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b6009544211610950576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60095442906203f4809061096b90839063ffffffff610ec916565b10156109a85760405162461bcd60e51b815260040180806020018281038252602b815260200180611379602b913960400191505060405180910390fd5b60006109b333610438565b90508015610ab657336000818152600f60209081526040808320839055600554815163a9059cbb60e01b815260048101959095526024850186905290516001600160a01b039091169363a9059cbb9360448083019493928390030190829087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b505050506040513d6020811015610a4a57600080fd5b505033600090815260106020526040902054610a6c908263ffffffff610fad16565b33600081815260106020908152604091829020939093558051848152905191927fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692918290030190a25b505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6020811015610b3057600080fd5b5051905090565b6001600160a01b031660009081526002602052604090205490565b610b5a610c23565b610b99576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b5481565b6000610bf742600a546110cb565b905090565b600e6020526000908152604090205481565b60095481565b6003546001600160a01b031690565b6003546000906001600160a01b0316610c3a6110e1565b6001600160a01b031614905090565b60085481565b33610c58610de8565b600d55610c63610be9565b600c556001600160a01b03811615610caa57610c7e81610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b6009544211610cec576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610d32576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b610d3b826110e5565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60106020526000908152604090205481565b6005546001600160a01b031681565b610d9e610c23565b610ddd576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b600755565b600c5481565b6000610df2610539565b610dff5750600d5461053d565b610bf7610e2d610e0d610539565b6104a0670de0b6b3a7640000610494600b54610494600c5461047f610be9565b600d549063ffffffff610fad16565b600d5481565b610e53610e4e33610b37565b610546565b565b600a5481565b6000546001600160a01b031681565b610e72610c23565b610eb1576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b6108b0816111b5565b6006546001600160a01b031681565b6000610f0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611256565b9392505050565b600082610f21575060006104b8565b82820282848281610f2e57fe5b0414610f0b5760405162461bcd60e51b81526004018080602001828103825260218152602001806113c86021913960400191505060405180910390fd5b6000610f0b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112ed565b600082820183811015610f0b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60015461101a908263ffffffff610ec916565b6001553360009081526002602052604090205461103d908263ffffffff610ec916565b336000818152600260209081526040808320949094558154845163a9059cbb60e01b815260048101949094526024840186905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b1580156110a157600080fd5b505af11580156110b5573d6000803e3d6000fd5b505050506040513d6020811015610ab657600080fd5b60008183106110da5781610f0b565b5090919050565b3390565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b505050506040513d602081101561116a57600080fd5b505060015461117f908263ffffffff610fad16565b600155336000908152600260205260409020546111a2908263ffffffff610fad16565b3360009081526002602052604090205550565b6001600160a01b0381166111fa5760405162461bcd60e51b81526004018080602001828103825260268152602001806113536026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156112e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112aa578181015183820152602001611292565b50505050905090810190601f1680156112d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361133c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112aa578181015183820152602001611292565b50600083858161134857fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373596f752063616e2067657420726577617264203320646179732061667465722073746172742074696d6521496e76616c696420707573642072657761726420636f6e74726163742061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a7231582084cc51d4aea5b7a07cd2d4b1f4370bf373fbf56504400b82b4e05908657ed1c564736f6c63430005110032
0x6080604052620151806007556000600855635ffa438060095563608c9a00600a556000600b5534801561003157600080fd5b506040516115ea3803806115ea833981810160405260a081101561005457600080fd5b508051602082015160408301516060840151608090940151929391929091906100846001600160e01b0361013916565b600380546001600160a01b0319166001600160a01b0392831617908190556040519116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600982905560078190556100ef828261013d602090811b610fad17901c565b600a555050600580546001600160a01b039384166001600160a01b03199182161790915560068054928416928216929092179091556000805493909216921691909117905561019e565b3390565b600082820183811015610197576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b61143d806101ad6000396000f3fe608060405234801561001057600080fd5b50600436106101d95760003560e01c80638da5cb5b11610104578063c8f33c91116100a2578063ebe2b12b11610071578063ebe2b12b146103fa578063f0c51bbb14610402578063f2fde38b1461040a578063f9217ab214610430576101d9565b8063c8f33c91146103da578063cd3daf9d146103e2578063df136d65146103ea578063e9fad8ee146103f2576101d9565b8063a694fc3a116100de578063a694fc3a14610372578063ab7573dd1461038f578063b211ad9b146103b5578063c0ed00c9146103bd576101d9565b80638da5cb5b1461032a5780638f32d59b1461034e5780639c907b581461036a576101d9565b80633d18b9121161017c5780637b0a47ee1161014b5780637b0a47ee146102ec57806380faa57d146102f45780638b876347146102fc5780638da5889714610322576101d9565b80633d18b912146102ae5780635e42b455146102b657806370a08231146102be578063715018a6146102e4576101d9565b806318160ddd116101b857806318160ddd146102645780631be052891461026c5780632e1a7d4d146102745780633c6b16ab14610291576101d9565b80628cc262146101de5780630700037d146102165780630d68b7611461023c575b600080fd5b610204600480360360208110156101f457600080fd5b50356001600160a01b0316610438565b60408051918252519081900360200190f35b6102046004803603602081101561022c57600080fd5b50356001600160a01b03166104be565b6102626004803603602081101561025257600080fd5b50356001600160a01b03166104d0565b005b610204610539565b610204610540565b6102626004803603602081101561028a57600080fd5b5035610546565b610262600480360360208110156102a757600080fd5b50356106c4565b6102626108b3565b610204610abb565b610204600480360360208110156102d457600080fd5b50356001600160a01b0316610b37565b610262610b52565b610204610be3565b610204610be9565b6102046004803603602081101561031257600080fd5b50356001600160a01b0316610bfc565b610204610c0e565b610332610c14565b604080516001600160a01b039092168252519081900360200190f35b610356610c23565b604080519115158252519081900360200190f35b610204610c49565b6102626004803603602081101561038857600080fd5b5035610c4f565b610204600480360360208110156103a557600080fd5b50356001600160a01b0316610d75565b610332610d87565b610262600480360360208110156103d357600080fd5b5035610d96565b610204610de2565b610204610de8565b610204610e3c565b610262610e42565b610204610e55565b610332610e5b565b6102626004803603602081101561042057600080fd5b50356001600160a01b0316610e6a565b610332610eba565b6001600160a01b0381166000908152600f6020908152604080832054600e9092528220546104b891906104ac90670de0b6b3a7640000906104a09061048b9061047f610de8565b9063ffffffff610ec916565b61049488610b37565b9063ffffffff610f1216565b9063ffffffff610f6b16565b9063ffffffff610fad16565b92915050565b600f6020526000908152604090205481565b6104d8610c23565b610517576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001545b90565b60075481565b3361054f610de8565b600d5561055a610be9565b600c556001600160a01b038116156105a15761057581610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b60095442116105e3576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b6000821161062c576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b8161063633610b37565b1015610681576040805162461bcd60e51b8152602060048201526015602482015274496e73756666696369656e742062616c616e63652160581b604482015290519081900360640190fd5b61068a82611007565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b600654604080516bffffffffffffffffffffffff19606093841b16602080830191909152825180830360140181526034830184528051908201203390941b605483015282516048818403018152606890920190925280519101201461075a5760405162461bcd60e51b81526004018080602001828103825260248152602001806113a46024913960400191505060405180910390fd5b6008819055610767610de8565b600d55610772610be9565b600c5560095442111561084757600a5442106107a45760075461079c90829063ffffffff610f6b16565b600b556107f3565b600a546000906107ba904263ffffffff610ec916565b905060006107d3600b5483610f1290919063ffffffff16565b6007549091506107ed906104a0858463ffffffff610fad16565b600b5550505b42600c81905560075461080c919063ffffffff610fad16565b600a556040805182815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a16108b0565b60075461085b90829063ffffffff610f6b16565b600b55600954600c819055600754610879919063ffffffff610fad16565b600a556040805182815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15b50565b336108bc610de8565b600d556108c7610be9565b600c556001600160a01b0381161561090e576108e281610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b6009544211610950576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60095442906203f4809061096b90839063ffffffff610ec916565b10156109a85760405162461bcd60e51b815260040180806020018281038252602b815260200180611379602b913960400191505060405180910390fd5b60006109b333610438565b90508015610ab657336000818152600f60209081526040808320839055600554815163a9059cbb60e01b815260048101959095526024850186905290516001600160a01b039091169363a9059cbb9360448083019493928390030190829087803b158015610a2057600080fd5b505af1158015610a34573d6000803e3d6000fd5b505050506040513d6020811015610a4a57600080fd5b505033600090815260106020526040902054610a6c908263ffffffff610fad16565b33600081815260106020908152604091829020939093558051848152905191927fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692918290030190a25b505050565b600554604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610b0657600080fd5b505afa158015610b1a573d6000803e3d6000fd5b505050506040513d6020811015610b3057600080fd5b5051905090565b6001600160a01b031660009081526002602052604090205490565b610b5a610c23565b610b99576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b6003546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600380546001600160a01b0319169055565b600b5481565b6000610bf742600a546110cb565b905090565b600e6020526000908152604090205481565b60095481565b6003546001600160a01b031690565b6003546000906001600160a01b0316610c3a6110e1565b6001600160a01b031614905090565b60085481565b33610c58610de8565b600d55610c63610be9565b600c556001600160a01b03811615610caa57610c7e81610438565b6001600160a01b0382166000908152600f6020908152604080832093909355600d54600e909152919020555b6009544211610cec576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610d32576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b610d3b826110e5565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60106020526000908152604090205481565b6005546001600160a01b031681565b610d9e610c23565b610ddd576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b600755565b600c5481565b6000610df2610539565b610dff5750600d5461053d565b610bf7610e2d610e0d610539565b6104a0670de0b6b3a7640000610494600b54610494600c5461047f610be9565b600d549063ffffffff610fad16565b600d5481565b610e53610e4e33610b37565b610546565b565b600a5481565b6000546001600160a01b031681565b610e72610c23565b610eb1576040805162461bcd60e51b815260206004820181905260248201526000805160206113e9833981519152604482015290519081900360640190fd5b6108b0816111b5565b6006546001600160a01b031681565b6000610f0b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611256565b9392505050565b600082610f21575060006104b8565b82820282848281610f2e57fe5b0414610f0b5760405162461bcd60e51b81526004018080602001828103825260218152602001806113c86021913960400191505060405180910390fd5b6000610f0b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506112ed565b600082820183811015610f0b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60015461101a908263ffffffff610ec916565b6001553360009081526002602052604090205461103d908263ffffffff610ec916565b336000818152600260209081526040808320949094558154845163a9059cbb60e01b815260048101949094526024840186905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b1580156110a157600080fd5b505af11580156110b5573d6000803e3d6000fd5b505050506040513d6020811015610ab657600080fd5b60008183106110da5781610f0b565b5090919050565b3390565b60008054604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216926323b872dd926064808401936020939083900390910190829087803b15801561114057600080fd5b505af1158015611154573d6000803e3d6000fd5b505050506040513d602081101561116a57600080fd5b505060015461117f908263ffffffff610fad16565b600155336000908152600260205260409020546111a2908263ffffffff610fad16565b3360009081526002602052604090205550565b6001600160a01b0381166111fa5760405162461bcd60e51b81526004018080602001828103825260268152602001806113536026913960400191505060405180910390fd5b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b600081848411156112e55760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112aa578181015183820152602001611292565b50505050905090810190601f1680156112d75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361133c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156112aa578181015183820152602001611292565b50600083858161134857fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373596f752063616e2067657420726577617264203320646179732061667465722073746172742074696d6521496e76616c696420707573642072657761726420636f6e74726163742061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a7231582084cc51d4aea5b7a07cd2d4b1f4370bf373fbf56504400b82b4e05908657ed1c564736f6c6343000511003200000000000000000000000088bd6efe33bc82860278c044efa33364c6285032000000000000000000000000412e5a36bde71aa2c38e1c0e26baaf7f2f0bc24a00000000000000000000000079fc23472a42e1229d5b45ad2fdd233c01091fe0000000000000000000000000000000000000000000000000000000005ffa43800000000000000000000000000000000000000000000000000000000000015180