0x608060405234801561001057600080fd5b50600436106101425760003560e01c806375f12b21116100b8578063a3fbbaae1161007c578063a3fbbaae14610386578063a9059cbb146103ac578063be9a6555146103d8578063bf7e214f146103e0578063daea85c5146103e8578063dd62ed3e1461040e57610142565b806375f12b211461031c5780637a9e5e4b146103245780638da5cb5b1461034a57806395d89b41146103525780639dc29fac1461035a57610142565b806323b872dd1161010a57806323b872dd14610249578063313ce5671461027f57806342966c6814610287578063481c6a75146102a45780635431c94e146102c857806370a08231146102f657610142565b806306fdde031461014457806307da68f5146101c1578063095ea7b3146101c957806313af40351461020957806318160ddd1461022f575b005b61014c61043c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018657818101518382015260200161016e565b50505050905090810190601f1680156101b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610142610469565b6101f5600480360360408110156101df57600080fd5b506001600160a01b038135169060200135610543565b604080519115158252519081900360200190f35b6101426004803603602081101561021f57600080fd5b50356001600160a01b0316610602565b6102376106b0565b60408051918252519081900360200190f35b6101f56004803603606081101561025f57600080fd5b506001600160a01b038135811691602081013590911690604001356106b6565b6102376109ef565b6101426004803603602081101561029d57600080fd5b50356109f4565b6102ac610a01565b604080516001600160a01b039092168252519081900360200190f35b610142600480360360408110156102de57600080fd5b506001600160a01b0381358116916020013516610a10565b6102376004803603602081101561030c57600080fd5b50356001600160a01b0316610b6d565b6101f5610b88565b6101426004803603602081101561033a57600080fd5b50356001600160a01b0316610b98565b6102ac610c42565b61014c610c51565b6101426004803603604081101561037057600080fd5b506001600160a01b038135169060200135610c70565b6101426004803603602081101561039c57600080fd5b50356001600160a01b0316610ed0565b6101f5600480360360408110156103c257600080fd5b506001600160a01b038135169060200135610f09565b610142610f16565b6102ac610fea565b6101f5600480360360208110156103fe57600080fd5b50356001600160a01b0316610ff9565b6102376004803603604081101561042457600080fd5b506001600160a01b0381358116916020013516611007565b604051806040016040528060118152602001702227a9902732ba3bb7b935902a37b5b2b760791b81525081565b61047f336000356001600160e01b031916611032565b6104c7576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805460ff60a01b1916600160a01b17905550565b600154600090600160a01b900460ff161561059a576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b610618336000356001600160e01b031916611032565b610660576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60035490565b600154600090600160a01b900460ff161561070d576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205482111561077a576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b60025461078f906001600160a01b0316611119565b1561082d5760025460408051634a39314960e01b81526001600160a01b03878116600483015286811660248301526044820186905291519190921691634a3931499160648083019260209291908290030181600087803b1580156107f257600080fd5b505af1158015610806573d6000803e3d6000fd5b505050506040513d602081101561081c57600080fd5b505191508161082d575060006109e8565b6001600160a01b038416331480159061086b57506001600160a01b038416600090815260056020908152604080832033845290915290205460001914155b1561093b576001600160a01b03841660009081526005602090815260408083203384529091529020548211156108e8576040805162461bcd60e51b815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152600560209081526040808320338452909152902054610916908361111f565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6001600160a01b03841660009081526004602052604090205461095e908361111f565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461098d908361116f565b6001600160a01b0380851660008181526004602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b9392505050565b601281565b6109fe3382610c70565b50565b6002546001600160a01b031681565b610a26336000356001600160e01b031916611032565b610a6e576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6020811015610ae357600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b505050506040513d6020811015610b6557600080fd5b505050505050565b6001600160a01b031660009081526004602052604090205490565b600154600160a01b900460ff1681565b610bae336000356001600160e01b031916611032565b610bf6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60405180604001604052806003815260200162444f5360e81b81525081565b600154600160a01b900460ff1615610cc4576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b0382163314801590610d0257506001600160a01b038216600090815260056020908152604080832033845290915290205460001914155b15610dd2576001600160a01b0382166000908152600560209081526040808320338452909152902054811115610d7f576040805162461bcd60e51b815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600560209081526040808320338452909152902054610dad908261111f565b6001600160a01b03831660009081526005602090815260408083203384529091529020555b6001600160a01b038216600090815260046020526040902054811115610e3f576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054610e62908261111f565b6001600160a01b038316600090815260046020526040902055600354610e88908261111f565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6002546001600160a01b03163314610ee757600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006109e83384846106b6565b610f2c336000356001600160e01b031916611032565b610f74576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805460ff60a01b1916905550565b6000546001600160a01b031681565b60006105fc82600019610543565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60006001600160a01b03831630141561104d575060016105fc565b6001546001600160a01b038481169116141561106b575060016105fc565b6000546001600160a01b0316611083575060006105fc565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b505190506105fc565b3b151590565b808203828111156105fc576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b808201828110156105fc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea265627a7a72315820fa8f1c3d3d7103b02eb365a54bb2a13130d90215e763de81c880624bbda0466064736f6c63430005110032
0x60806040526b0311d253316c79d37600000060035534801561002057600080fd5b50600180546001600160a01b031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a2600280546001600160a01b03191633908117909155600354600082815260046020908152604080832084905580519384525191927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a36111f3806100cd6000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806375f12b21116100b8578063a3fbbaae1161007c578063a3fbbaae14610386578063a9059cbb146103ac578063be9a6555146103d8578063bf7e214f146103e0578063daea85c5146103e8578063dd62ed3e1461040e57610142565b806375f12b211461031c5780637a9e5e4b146103245780638da5cb5b1461034a57806395d89b41146103525780639dc29fac1461035a57610142565b806323b872dd1161010a57806323b872dd14610249578063313ce5671461027f57806342966c6814610287578063481c6a75146102a45780635431c94e146102c857806370a08231146102f657610142565b806306fdde031461014457806307da68f5146101c1578063095ea7b3146101c957806313af40351461020957806318160ddd1461022f575b005b61014c61043c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018657818101518382015260200161016e565b50505050905090810190601f1680156101b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610142610469565b6101f5600480360360408110156101df57600080fd5b506001600160a01b038135169060200135610543565b604080519115158252519081900360200190f35b6101426004803603602081101561021f57600080fd5b50356001600160a01b0316610602565b6102376106b0565b60408051918252519081900360200190f35b6101f56004803603606081101561025f57600080fd5b506001600160a01b038135811691602081013590911690604001356106b6565b6102376109ef565b6101426004803603602081101561029d57600080fd5b50356109f4565b6102ac610a01565b604080516001600160a01b039092168252519081900360200190f35b610142600480360360408110156102de57600080fd5b506001600160a01b0381358116916020013516610a10565b6102376004803603602081101561030c57600080fd5b50356001600160a01b0316610b6d565b6101f5610b88565b6101426004803603602081101561033a57600080fd5b50356001600160a01b0316610b98565b6102ac610c42565b61014c610c51565b6101426004803603604081101561037057600080fd5b506001600160a01b038135169060200135610c70565b6101426004803603602081101561039c57600080fd5b50356001600160a01b0316610ed0565b6101f5600480360360408110156103c257600080fd5b506001600160a01b038135169060200135610f09565b610142610f16565b6102ac610fea565b6101f5600480360360208110156103fe57600080fd5b50356001600160a01b0316610ff9565b6102376004803603604081101561042457600080fd5b506001600160a01b0381358116916020013516611007565b604051806040016040528060118152602001702227a9902732ba3bb7b935902a37b5b2b760791b81525081565b61047f336000356001600160e01b031916611032565b6104c7576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805460ff60a01b1916600160a01b17905550565b600154600090600160a01b900460ff161561059a576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b610618336000356001600160e01b031916611032565b610660576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60035490565b600154600090600160a01b900460ff161561070d576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b03841660009081526004602052604090205482111561077a576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b60025461078f906001600160a01b0316611119565b1561082d5760025460408051634a39314960e01b81526001600160a01b03878116600483015286811660248301526044820186905291519190921691634a3931499160648083019260209291908290030181600087803b1580156107f257600080fd5b505af1158015610806573d6000803e3d6000fd5b505050506040513d602081101561081c57600080fd5b505191508161082d575060006109e8565b6001600160a01b038416331480159061086b57506001600160a01b038416600090815260056020908152604080832033845290915290205460001914155b1561093b576001600160a01b03841660009081526005602090815260408083203384529091529020548211156108e8576040805162461bcd60e51b815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b6001600160a01b0384166000908152600560209081526040808320338452909152902054610916908361111f565b6001600160a01b03851660009081526005602090815260408083203384529091529020555b6001600160a01b03841660009081526004602052604090205461095e908361111f565b6001600160a01b03808616600090815260046020526040808220939093559085168152205461098d908361116f565b6001600160a01b0380851660008181526004602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060015b9392505050565b601281565b6109fe3382610c70565b50565b6002546001600160a01b031681565b610a26336000356001600160e01b031916611032565b610a6e576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905183916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610ab957600080fd5b505afa158015610acd573d6000803e3d6000fd5b505050506040513d6020811015610ae357600080fd5b50516040805163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610b3b57600080fd5b505af1158015610b4f573d6000803e3d6000fd5b505050506040513d6020811015610b6557600080fd5b505050505050565b6001600160a01b031660009081526004602052604090205490565b600154600160a01b900460ff1681565b610bae336000356001600160e01b031916611032565b610bf6576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b6001546001600160a01b031681565b60405180604001604052806003815260200162444f5360e81b81525081565b600154600160a01b900460ff1615610cc4576040805162461bcd60e51b8152602060048201526012602482015271191ccb5cdd1bdc0b5a5ccb5cdd1bdc1c195960721b604482015290519081900360640190fd5b6001600160a01b0382163314801590610d0257506001600160a01b038216600090815260056020908152604080832033845290915290205460001914155b15610dd2576001600160a01b0382166000908152600560209081526040808320338452909152902054811115610d7f576040805162461bcd60e51b815260206004820152601b60248201527f746f6b656e2d696e73756666696369656e742d617070726f76616c0000000000604482015290519081900360640190fd5b6001600160a01b0382166000908152600560209081526040808320338452909152902054610dad908261111f565b6001600160a01b03831660009081526005602090815260408083203384529091529020555b6001600160a01b038216600090815260046020526040902054811115610e3f576040805162461bcd60e51b815260206004820152601a60248201527f746f6b656e2d696e73756666696369656e742d62616c616e6365000000000000604482015290519081900360640190fd5b6001600160a01b038216600090815260046020526040902054610e62908261111f565b6001600160a01b038316600090815260046020526040902055600354610e88908261111f565b6003556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6002546001600160a01b03163314610ee757600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b60006109e83384846106b6565b610f2c336000356001600160e01b031916611032565b610f74576040805162461bcd60e51b8152602060048201526014602482015273191ccb585d5d1a0b5d5b985d5d1a1bdc9a5e995960621b604482015290519081900360640190fd5b604080513480825260208201838152369383018490526004359360243593849286923392600080356001600160e01b03191693889391929060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a450506001805460ff60a01b1916905550565b6000546001600160a01b031681565b60006105fc82600019610543565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60006001600160a01b03831630141561104d575060016105fc565b6001546001600160a01b038481169116141561106b575060016105fc565b6000546001600160a01b0316611083575060006105fc565b6000546040805163b700961360e01b81526001600160a01b0386811660048301523060248301526001600160e01b0319861660448301529151919092169163b7009613916064808301926020929190829003018186803b1580156110e657600080fd5b505afa1580156110fa573d6000803e3d6000fd5b505050506040513d602081101561111057600080fd5b505190506105fc565b3b151590565b808203828111156105fc576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b808201828110156105fc576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfea265627a7a72315820fa8f1c3d3d7103b02eb365a54bb2a13130d90215e763de81c880624bbda0466064736f6c63430005110032