0x60a060405234801561001057600080fd5b5060405161132b38038061132b83398101604081905261002f916100be565b6001600160a01b0382166100565760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03811661007d5760405163e6c4247b60e01b815260040160405180910390fd5b600280546001600160a01b0319166001600160a01b03928316179055166080526100f1565b80516001600160a01b03811681146100b957600080fd5b919050565b600080604083850312156100d157600080fd5b6100da836100a2565b91506100e8602084016100a2565b90509250929050565b60805161120a610121600039600081816103050152818161087101528181610a8d0152610c76015261120a6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a4bb2920116100b2578063cc913a4111610081578063edc0975711610066578063edc097571461029c578063f3fef3a3146102a4578063f7e0d526146102b757600080fd5b8063cc913a4114610265578063dfadc7941461028957600080fd5b8063a4bb292014610210578063b5f680ae14610223578063bbac3b8d14610236578063c4b60ce71461025d57600080fd5b8063371abc95116100ee578063371abc95146101c2578063432604fa146101d55780639c1c6d60146101ea5780639ef3c2a0146101fd57600080fd5b8063063c7c2714610120578063113cd2a1146101505780631a169492146101655780631de416131461018d575b600080fd5b600154610133906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61016361015e36600461108e565b6102ca565b005b60005461017a90600160b81b900461ffff1681565b60405161ffff9091168152602001610147565b6101b47fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f681565b604051908152602001610147565b600054610133906001600160a01b031681565b60005461017a90600160a01b900461ffff1681565b6101636101f83660046110ce565b6105b5565b61016361020b36600461108e565b61065d565b61016361021e3660046110ce565b610760565b6101636102313660046110ce565b610836565b6101b47f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6881565b6101636109ac565b60005461027990600160b01b900460ff1681565b6040519015158152602001610147565b6101636102973660046110e9565b610a3e565b610163610bbc565b6101636102b236600461115e565b610c27565b600254610133906001600160a01b031681565b60405163e8ae2b6960e01b81527f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6860048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103789190611188565b6103c95760405162461bcd60e51b815260206004820152601260248201527f6f6e6c792061646d696e6973747261746f72000000000000000000000000000060448201526064015b60405180910390fd5b600054600160b01b900460ff166104225760405162461bcd60e51b815260206004820152600c60248201527f6e6f742070726f706f736564000000000000000000000000000000000000000060448201526064016103c0565b60005461ffff828116600160b81b90920416146104815760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964206e657720666565000000000000000000000000000000000060448201526064016103c0565b61ffff8116156104e3576001546001600160a01b03166104e35760405162461bcd60e51b815260206004820152601c60248201527f6d697373696e672073776974636878206665652072656365697665720000000060448201526064016103c0565b6000546001600160a01b031661053b5760405162461bcd60e51b815260206004820152601e60248201527f6d697373696e6720636f6d6d756e69747920666565207265636569766572000060448201526064016103c0565b600080547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b61ffff841690810262ffffff60b01b1916919091179091556040519081527f91c000bd4b73da243840e9ce4151f5f119a51d86529a5fb922ae9131493a7f77906020015b60405180910390a150565b6002546001600160a01b0316331461060f5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527ffac690777b4a5eed44435607f80a7bdd44a1020191d23110a6fe5a07cdf57418906020016105aa565b6002546001600160a01b031633146106b75760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6103e861ffff821611156106ca57600080fd5b60005461ffff828116600160b81b90920416148015906106fa575060005461ffff828116600160a01b9092041614155b61070357600080fd5b6000805461ffff8316600160b81b0262ffffff60b01b1990911617600160b01b1790556040517f4257f7514c82dfba8cc314bf1b5192f83aa6e58b9c966aaf0971b75c4c67c855906105aa90839061ffff91909116815260200190565b6002546001600160a01b031633146107ba5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6001600160a01b0381166107cd57600080fd5b6001546001600160a01b03908116908216036107e857600080fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f75bda8e1940ce7f561eaab4ce5cca241a9cc5a0c45315f3b865ad8d870afa68c906020016105aa565b60405163e8ae2b6960e01b81527f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6860048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190611188565b6109305760405162461bcd60e51b815260206004820152601260248201527f6f6e6c792061646d696e6973747261746f72000000000000000000000000000060448201526064016103c0565b6001600160a01b03811661094357600080fd5b6000546001600160a01b039081169082160361095e57600080fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f4db788b994a5908051d68a2340153f49870447185a244d2326861e60cc4186906020016105aa565b6002546001600160a01b03163314610a065760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6000805462ffffff60b01b191681556040517f5bb7b62432b6c6ba379dae9a137dc99ed67721324f96abceab41e3e2724f6ac49190a1565b6002546001600160a01b0316331480610b00575060405163e8ae2b6960e01b81527fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b009190611188565b610b3e5760405162461bcd60e51b815260206004820152600f60248201526e37b7363c903bb4ba34323930bbb2b960891b60448201526064016103c0565b8060008080610b4b610d4e565b92509250925060005b84811015610bb357610bab878783818110610b7157610b716111aa565b610b8792602060409092020190810191506110ce565b83898985818110610b9a57610b9a6111aa565b905060400201602001358787610e24565b600101610b54565b50505050505050565b6003546001600160a01b03163314610bd357600080fd5b60028054336001600160a01b031991821681179092556003805490911690556040519081527fa94b215723211a31264cbdf378f9c0c3687c71139a4ebbdf0b443f453c5cdfa49060200160405180910390a1565b6002546001600160a01b0316331480610ce9575060405163e8ae2b6960e01b81527fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f660048201523360248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611188565b610d275760405162461bcd60e51b815260206004820152600f60248201526e37b7363c903bb4ba34323930bbb2b960891b60448201526064016103c0565b6000806000610d34610d4e565b925092509250610d478582868686610e24565b5050505050565b60005460015461ffff600160a01b830416916001600160a01b0391821691168215610dc9576001600160a01b038216610dc95760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642073776974636878206665652072656365697665720000000060448201526064016103c0565b6001600160a01b038116610e1f5760405162461bcd60e51b815260206004820152601060248201527f696e76616c69642072656365697665720000000000000000000000000000000060448201526064016103c0565b909192565b8261ffff831615610eaa576000610e428261ffff86166103e8610f0a565b9050610e4e81836111c0565b9150610e5b878483610f8b565b826001600160a01b0316876001600160a01b03167feb3dbdda9a0093d3167e1c5d460b8705d1ca43f89a5dca58a9d40c146c7353b583604051610ea091815260200190565b60405180910390a3505b610eb5868683610f8b565b846001600160a01b0316866001600160a01b03167f7a629b77ef27ad337abe438773206187960a90abfb43607826bef77d650e84b983604051610efa91815260200190565b60405180910390a3505050505050565b6000831580610f2b57505082820282848281610f2857610f286111e7565b04145b15610f4c5760008211610f3d57600080fd5b81810490829006151501610f84565b610f57848484610ff5565b905060008280610f6957610f696111e7565b8486091115610f84576000198110610f8057600080fd5b6001015b9392505050565b600060405163a9059cbb60e01b6000526001600160a01b03841660045282602452602060006044600080895af19150813d1560203d146001600051141617169150806040525080610fef57604051637232c81f60e11b815260040160405180910390fd5b50505050565b6000838302816000198587098281108382030391505080841161101757600080fd5b8060000361102a57508290049050610f84565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000602082840312156110a057600080fd5b813561ffff81168114610f8457600080fd5b80356001600160a01b03811681146110c957600080fd5b919050565b6000602082840312156110e057600080fd5b610f84826110b2565b600080602083850312156110fc57600080fd5b823567ffffffffffffffff8082111561111457600080fd5b818501915085601f83011261112857600080fd5b81358181111561113757600080fd5b8660208260061b850101111561114c57600080fd5b60209290920196919550909350505050565b6000806040838503121561117157600080fd5b61117a836110b2565b946020939093013593505050565b60006020828403121561119a57600080fd5b81518015158114610f8457600080fd5b634e487b7160e01b600052603260045260246000fd5b818103818111156111e157634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000814000a000000000000000000000000ef72cbccf4a807dfa1fbecd61ddb488ff8a05fa3000000000000000000000000091fbb89e920444d79378df2879018f65733d692
0x608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a4bb2920116100b2578063cc913a4111610081578063edc0975711610066578063edc097571461029c578063f3fef3a3146102a4578063f7e0d526146102b757600080fd5b8063cc913a4114610265578063dfadc7941461028957600080fd5b8063a4bb292014610210578063b5f680ae14610223578063bbac3b8d14610236578063c4b60ce71461025d57600080fd5b8063371abc95116100ee578063371abc95146101c2578063432604fa146101d55780639c1c6d60146101ea5780639ef3c2a0146101fd57600080fd5b8063063c7c2714610120578063113cd2a1146101505780631a169492146101655780631de416131461018d575b600080fd5b600154610133906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61016361015e36600461108e565b6102ca565b005b60005461017a90600160b81b900461ffff1681565b60405161ffff9091168152602001610147565b6101b47fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f681565b604051908152602001610147565b600054610133906001600160a01b031681565b60005461017a90600160a01b900461ffff1681565b6101636101f83660046110ce565b6105b5565b61016361020b36600461108e565b61065d565b61016361021e3660046110ce565b610760565b6101636102313660046110ce565b610836565b6101b47f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6881565b6101636109ac565b60005461027990600160b01b900460ff1681565b6040519015158152602001610147565b6101636102973660046110e9565b610a3e565b610163610bbc565b6101636102b236600461115e565b610c27565b600254610133906001600160a01b031681565b60405163e8ae2b6960e01b81527f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6860048201523360248201527f000000000000000000000000ef72cbccf4a807dfa1fbecd61ddb488ff8a05fa36001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103789190611188565b6103c95760405162461bcd60e51b815260206004820152601260248201527f6f6e6c792061646d696e6973747261746f72000000000000000000000000000060448201526064015b60405180910390fd5b600054600160b01b900460ff166104225760405162461bcd60e51b815260206004820152600c60248201527f6e6f742070726f706f736564000000000000000000000000000000000000000060448201526064016103c0565b60005461ffff828116600160b81b90920416146104815760405162461bcd60e51b815260206004820152600f60248201527f696e76616c6964206e657720666565000000000000000000000000000000000060448201526064016103c0565b61ffff8116156104e3576001546001600160a01b03166104e35760405162461bcd60e51b815260206004820152601c60248201527f6d697373696e672073776974636878206665652072656365697665720000000060448201526064016103c0565b6000546001600160a01b031661053b5760405162461bcd60e51b815260206004820152601e60248201527f6d697373696e6720636f6d6d756e69747920666565207265636569766572000060448201526064016103c0565b600080547fffffffffffffff0000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b61ffff841690810262ffffff60b01b1916919091179091556040519081527f91c000bd4b73da243840e9ce4151f5f119a51d86529a5fb922ae9131493a7f77906020015b60405180910390a150565b6002546001600160a01b0316331461060f5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b600380546001600160a01b0319166001600160a01b0383169081179091556040519081527ffac690777b4a5eed44435607f80a7bdd44a1020191d23110a6fe5a07cdf57418906020016105aa565b6002546001600160a01b031633146106b75760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6103e861ffff821611156106ca57600080fd5b60005461ffff828116600160b81b90920416148015906106fa575060005461ffff828116600160a01b9092041614155b61070357600080fd5b6000805461ffff8316600160b81b0262ffffff60b01b1990911617600160b01b1790556040517f4257f7514c82dfba8cc314bf1b5192f83aa6e58b9c966aaf0971b75c4c67c855906105aa90839061ffff91909116815260200190565b6002546001600160a01b031633146107ba5760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6001600160a01b0381166107cd57600080fd5b6001546001600160a01b03908116908216036107e857600080fd5b600180546001600160a01b0319166001600160a01b0383169081179091556040519081527f75bda8e1940ce7f561eaab4ce5cca241a9cc5a0c45315f3b865ad8d870afa68c906020016105aa565b60405163e8ae2b6960e01b81527f63e58c34d94475ba3fc063e19800b940485850d84d09cd3c1f2c14192c559a6860048201523360248201527f000000000000000000000000ef72cbccf4a807dfa1fbecd61ddb488ff8a05fa36001600160a01b03169063e8ae2b6990604401602060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190611188565b6109305760405162461bcd60e51b815260206004820152601260248201527f6f6e6c792061646d696e6973747261746f72000000000000000000000000000060448201526064016103c0565b6001600160a01b03811661094357600080fd5b6000546001600160a01b039081169082160361095e57600080fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f2f4db788b994a5908051d68a2340153f49870447185a244d2326861e60cc4186906020016105aa565b6002546001600160a01b03163314610a065760405162461bcd60e51b815260206004820152601860248201527f6f6e6c79207377697463687820666565206d616e61676572000000000000000060448201526064016103c0565b6000805462ffffff60b01b191681556040517f5bb7b62432b6c6ba379dae9a137dc99ed67721324f96abceab41e3e2724f6ac49190a1565b6002546001600160a01b0316331480610b00575060405163e8ae2b6960e01b81527fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f660048201523360248201527f000000000000000000000000ef72cbccf4a807dfa1fbecd61ddb488ff8a05fa36001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610adc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b009190611188565b610b3e5760405162461bcd60e51b815260206004820152600f60248201526e37b7363c903bb4ba34323930bbb2b960891b60448201526064016103c0565b8060008080610b4b610d4e565b92509250925060005b84811015610bb357610bab878783818110610b7157610b716111aa565b610b8792602060409092020190810191506110ce565b83898985818110610b9a57610b9a6111aa565b905060400201602001358787610e24565b600101610b54565b50505050505050565b6003546001600160a01b03163314610bd357600080fd5b60028054336001600160a01b031991821681179092556003805490911690556040519081527fa94b215723211a31264cbdf378f9c0c3687c71139a4ebbdf0b443f453c5cdfa49060200160405180910390a1565b6002546001600160a01b0316331480610ce9575060405163e8ae2b6960e01b81527fb77a63f119f4dc2174dc6c76fc1a1565fa4f2b0dde50ed5c0465471cd9b331f660048201523360248201527f000000000000000000000000ef72cbccf4a807dfa1fbecd61ddb488ff8a05fa36001600160a01b03169063e8ae2b6990604401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce99190611188565b610d275760405162461bcd60e51b815260206004820152600f60248201526e37b7363c903bb4ba34323930bbb2b960891b60448201526064016103c0565b6000806000610d34610d4e565b925092509250610d478582868686610e24565b5050505050565b60005460015461ffff600160a01b830416916001600160a01b0391821691168215610dc9576001600160a01b038216610dc95760405162461bcd60e51b815260206004820152601c60248201527f696e76616c69642073776974636878206665652072656365697665720000000060448201526064016103c0565b6001600160a01b038116610e1f5760405162461bcd60e51b815260206004820152601060248201527f696e76616c69642072656365697665720000000000000000000000000000000060448201526064016103c0565b909192565b8261ffff831615610eaa576000610e428261ffff86166103e8610f0a565b9050610e4e81836111c0565b9150610e5b878483610f8b565b826001600160a01b0316876001600160a01b03167feb3dbdda9a0093d3167e1c5d460b8705d1ca43f89a5dca58a9d40c146c7353b583604051610ea091815260200190565b60405180910390a3505b610eb5868683610f8b565b846001600160a01b0316866001600160a01b03167f7a629b77ef27ad337abe438773206187960a90abfb43607826bef77d650e84b983604051610efa91815260200190565b60405180910390a3505050505050565b6000831580610f2b57505082820282848281610f2857610f286111e7565b04145b15610f4c5760008211610f3d57600080fd5b81810490829006151501610f84565b610f57848484610ff5565b905060008280610f6957610f696111e7565b8486091115610f84576000198110610f8057600080fd5b6001015b9392505050565b600060405163a9059cbb60e01b6000526001600160a01b03841660045282602452602060006044600080895af19150813d1560203d146001600051141617169150806040525080610fef57604051637232c81f60e11b815260040160405180910390fd5b50505050565b6000838302816000198587098281108382030391505080841161101757600080fd5b8060000361102a57508290049050610f84565b8385870960008581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6000602082840312156110a057600080fd5b813561ffff81168114610f8457600080fd5b80356001600160a01b03811681146110c957600080fd5b919050565b6000602082840312156110e057600080fd5b610f84826110b2565b600080602083850312156110fc57600080fd5b823567ffffffffffffffff8082111561111457600080fd5b818501915085601f83011261112857600080fd5b81358181111561113757600080fd5b8660208260061b850101111561114c57600080fd5b60209290920196919550909350505050565b6000806040838503121561117157600080fd5b61117a836110b2565b946020939093013593505050565b60006020828403121561119a57600080fd5b81518015158114610f8457600080fd5b634e487b7160e01b600052603260045260246000fd5b818103818111156111e157634e487b7160e01b600052601160045260246000fd5b92915050565b634e487b7160e01b600052601260045260246000fdfea164736f6c6343000814000a