0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063cc99a11711610066578063cc99a117146101dd578063ec68c54e146101f0578063f2fde38b146101f8578063fe50ae951461020b57600080fd5b80638da5cb5b146101465780638edf980114610161578063aecace721461017457600080fd5b80632d296bf1146100d45780636052715f146100e957806363bd98841461010f578063715018a61461011857806385ac022d146101205780638d01230014610133575b600080fd5b6100e76100e23660046110d6565b61021e565b005b6100fc6100f73660046110d6565b61046d565b6040519081526020015b60405180910390f35b6100fc60035481565b6100e761047e565b6100e761012e3660046110ef565b6104dc565b6100e76101413660046111bb565b610536565b6000546040516001600160a01b039091168152602001610106565b6100fc61016f3660046111bb565b610984565b6101bd6101823660046111bb565b8051602081830181018051600280835293830192909401919091209290528154600183015491830154600390930154909260ff909216919084565b604080519485529215156020850152918301526060820152608001610106565b6100e76101eb3660046111fe565b6109c2565b6100fc610af9565b6100e76102063660046110ef565b610b6b565b6100e76102193660046110d6565b610be4565b6002600154036102755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560035442101561029c5760405162461bcd60e51b815260040161026c90611269565b6005546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156102e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030891906112b2565b10156103705760405162461bcd60e51b815260206004820152603160248201527f4d61726b6574706c6163653a204e6f7420656e6f75676820746f6b656e20737560448201527070706c7920666f72207468652073616c6560781b606482015260840161026c565b33600061037c83610bf1565b90506103a8826103946000546001600160a01b031690565b6006546001600160a01b0316919084610c23565b60055460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af11580156103fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041f91906112cb565b5060408051848152602081018390526001600160a01b038416917fe7f8413b126669e3f36ba1cb6997fa52beb1f77c8716408b88b183d114ebab18910160405180910390a250506001805550565b600061047882610bf1565b92915050565b610486610c83565b60405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a206f776e6572736869702072656e6f756e6365206e6f7420616c6044820152641b1bddd95960da1b606482015260840161026c565b6104e4610c83565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fc76109f8a29d14e1a9f48b26ce2b140b6c364fc1379299d34ac8c0614e62aeb090600090a35050565b6002600154036105885760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026c565b60026001556003544210156105af5760405162461bcd60e51b815260040161026c90611269565b6007546001600160a01b031661062f576040805162461bcd60e51b81526020600482015260248101919091527f4d61726b6574706c6163653a206b616e6761504f532068617320746f2062652060448201527f736574206265666f7265206c756e6368696e6720746865204e46542073616c65606482015260840161026c565b60028160405161063f919061130c565b9081526040519081900360200190206001015460ff166106c75760405162461bcd60e51b815260206004820152603a60248201527f4d61726b6574706c6163653a20737065636966696564206d656d62657273686960448201527f702074797065204e4654206973206e6f7420666f722073616c65000000000000606482015260840161026c565b60006106d282610cdf565b116107455760405162461bcd60e51b815260206004820152603860248201527f4d61726b6574706c6163653a206e6f204e465420737570706c7920666f72207360448201527f7065636966696564206d656d6265727368697020747970650000000000000000606482015260840161026c565b6000339050600060028360405161075c919061130c565b90815260408051918290036020908101832060808401835280548452600181015460ff16151591840191909152600281015491830182905260030154606083015290915060006107b76107b0836013610d9b565b6014610dae565b905060006107c5828461133e565b60055460405163079cc67960e41b81526001600160a01b038881166004830152602482018690529293509116906379cc679090604401600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b50506005546007546040516323b872dd60e01b81526001600160a01b038a81166004830152918216602482015260448101869052911692506323b872dd91506064016020604051808303816000875af115801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae91906112cb565b50600480546060860151604051628598df60e41b815260009384936001600160a01b0316926308598df0926108e9928c928e9290910161137d565b60408051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b91906113b1565b91509150866001600160a01b03167fa040e17186a82dc5bdbbc43eaffbab8289b3adb86f05abfc0a7c94fef9cbf789838a848960405161096e94939291906113d5565b60405180910390a2505060018055505050505050565b6000600282604051610996919061130c565b9081526040519081900360200190206001015460ff16156109ba5761047882610cdf565b506000919050565b6109ca610c83565b8015806109d95750610e108110155b610a415760405162461bcd60e51b815260206004820152603360248201527f4d61726b6574706c6163653a204e46542076616c69646974792073686f756c646044820152721031329030ba103632b0b9ba1018903437bab960691b606482015260840161026c565b6040518060800160405280858152602001841515815260200183815260200182815250600286604051610a74919061130c565b9081526040805160209281900383018120845181559284015160018401805460ff19169115159190911790559083015160028301556060909201516003909101557f9bb54424844cfdd938d952a0f129a440349eae1ad87d32c061ce2e76d45b46e190610aea9087908790879087908790611401565b60405180910390a15050505050565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906112b2565b905090565b610b73610c83565b6001600160a01b038116610bd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161026c565b610be181610dba565b50565b610bec610c83565b600355565b6000610478610c18610c0a84610c05610e0a565b610d9b565b670de0b6b3a7640000610dae565b64e8d4a51000610dae565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c7d908590610eeb565b50505050565b6000546001600160a01b03163314610cdd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b565b6004805460405163390b451f60e01b815260009283926001600160a01b03169163390b451f91610d1191879101611438565b602060405180830381865afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5291906112b2565b90506000600284604051610d66919061130c565b908152604051908190036020019020549050818110610d9157610d89828261133e565b949350505050565b5060009392505050565b6000610da7828461144b565b9392505050565b6000610da78284611462565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316638a19c8bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8491906112b2565b905060018111610e9d57670de0b6b3a764000091505090565b610ea860018261133e565b610eb3906064611568565b610ebe60018361133e565b610ec9906069611568565b610edb90670de0b6b3a764000061144b565b610ee59190611462565b91505090565b6000610f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fc29092919063ffffffff16565b805190915015610fbd5780806020019051810190610f5e91906112cb565b610fbd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026c565b505050565b6060610d898484600085856001600160a01b0385163b6110245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026c565b600080866001600160a01b03168587604051611040919061130c565b60006040518083038185875af1925050503d806000811461107d576040519150601f19603f3d011682016040523d82523d6000602084013e611082565b606091505b509150915061109282828661109d565b979650505050505050565b606083156110ac575081610da7565b8251156110bc5782518084602001fd5b8160405162461bcd60e51b815260040161026c9190611438565b6000602082840312156110e857600080fd5b5035919050565b60006020828403121561110157600080fd5b81356001600160a01b0381168114610da757600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261113f57600080fd5b813567ffffffffffffffff8082111561115a5761115a611118565b604051601f8301601f19908116603f0116810190828211818310171561118257611182611118565b8160405283815286602085880101111561119b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156111cd57600080fd5b813567ffffffffffffffff8111156111e457600080fd5b610d898482850161112e565b8015158114610be157600080fd5b600080600080600060a0868803121561121657600080fd5b853567ffffffffffffffff81111561122d57600080fd5b6112398882890161112e565b955050602086013593506040860135611251816111f0565b94979396509394606081013594506080013592915050565b60208082526029908201527f4d61726b6574706c6163653a205468652073616c65206973206e6f7420756e6c6040820152681bd8dad959081e595d60ba1b606082015260800190565b6000602082840312156112c457600080fd5b5051919050565b6000602082840312156112dd57600080fd5b8151610da7816111f0565b60005b838110156113035781810151838201526020016112eb565b50506000910152565b6000825161131e8184602087016112e8565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561047857610478611328565b600081518084526113698160208601602086016112e8565b601f01601f19169290920160200192915050565b6001600160a01b03841681526060602082018190526000906113a190830185611351565b9050826040830152949350505050565b600080604083850312156113c457600080fd5b505080516020909101519092909150565b8481526080602082015260006113ee6080830186611351565b6040830194909452506060015292915050565b60a08152600061141460a0830188611351565b60208301969096525092151560408401526060830191909152608090910152919050565b602081526000610da76020830184611351565b808202811582820484141761047857610478611328565b60008261147f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156114bf5781600019048211156114a5576114a5611328565b808516156114b257918102915b93841c9390800290611489565b509250929050565b6000826114d657506001610478565b816114e357506000610478565b81600181146114f957600281146115035761151f565b6001915050610478565b60ff84111561151457611514611328565b50506001821b610478565b5060208310610133831016604e8410600b8410161715611542575081810a610478565b61154c8383611484565b806000190482111561156057611560611328565b029392505050565b6000610da783836114c756fea26469706673582212204c49d5edf3b95e84c14b12032d932f0f2bd39aa79193b99811c6f7471beebff764736f6c63430008110033
0x60806040526363983f106003553480156200001957600080fd5b50604051620016fd380380620016fd8339810160408190526200003c91620000f9565b62000047336200008c565b60018055600480546001600160a01b03199081166001600160a01b03948516179091556005805482169484169490941790935560068054909316911617905562000143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000f457600080fd5b919050565b6000806000606084860312156200010f57600080fd5b6200011a84620000dc565b92506200012a60208501620000dc565b91506200013a60408501620000dc565b90509250925092565b6115aa80620001536000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80638da5cb5b1161008c578063cc99a11711610066578063cc99a117146101dd578063ec68c54e146101f0578063f2fde38b146101f8578063fe50ae951461020b57600080fd5b80638da5cb5b146101465780638edf980114610161578063aecace721461017457600080fd5b80632d296bf1146100d45780636052715f146100e957806363bd98841461010f578063715018a61461011857806385ac022d146101205780638d01230014610133575b600080fd5b6100e76100e23660046110d6565b61021e565b005b6100fc6100f73660046110d6565b61046d565b6040519081526020015b60405180910390f35b6100fc60035481565b6100e761047e565b6100e761012e3660046110ef565b6104dc565b6100e76101413660046111bb565b610536565b6000546040516001600160a01b039091168152602001610106565b6100fc61016f3660046111bb565b610984565b6101bd6101823660046111bb565b8051602081830181018051600280835293830192909401919091209290528154600183015491830154600390930154909260ff909216919084565b604080519485529215156020850152918301526060820152608001610106565b6100e76101eb3660046111fe565b6109c2565b6100fc610af9565b6100e76102063660046110ef565b610b6b565b6100e76102193660046110d6565b610be4565b6002600154036102755760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260015560035442101561029c5760405162461bcd60e51b815260040161026c90611269565b6005546040516370a0823160e01b815230600482015282916001600160a01b0316906370a0823190602401602060405180830381865afa1580156102e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061030891906112b2565b10156103705760405162461bcd60e51b815260206004820152603160248201527f4d61726b6574706c6163653a204e6f7420656e6f75676820746f6b656e20737560448201527070706c7920666f72207468652073616c6560781b606482015260840161026c565b33600061037c83610bf1565b90506103a8826103946000546001600160a01b031690565b6006546001600160a01b0316919084610c23565b60055460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018690529091169063a9059cbb906044016020604051808303816000875af11580156103fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061041f91906112cb565b5060408051848152602081018390526001600160a01b038416917fe7f8413b126669e3f36ba1cb6997fa52beb1f77c8716408b88b183d114ebab18910160405180910390a250506001805550565b600061047882610bf1565b92915050565b610486610c83565b60405162461bcd60e51b815260206004820152602560248201527f546f6b656e3a206f776e6572736869702072656e6f756e6365206e6f7420616c6044820152641b1bddd95960da1b606482015260840161026c565b6104e4610c83565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907fc76109f8a29d14e1a9f48b26ce2b140b6c364fc1379299d34ac8c0614e62aeb090600090a35050565b6002600154036105885760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026c565b60026001556003544210156105af5760405162461bcd60e51b815260040161026c90611269565b6007546001600160a01b031661062f576040805162461bcd60e51b81526020600482015260248101919091527f4d61726b6574706c6163653a206b616e6761504f532068617320746f2062652060448201527f736574206265666f7265206c756e6368696e6720746865204e46542073616c65606482015260840161026c565b60028160405161063f919061130c565b9081526040519081900360200190206001015460ff166106c75760405162461bcd60e51b815260206004820152603a60248201527f4d61726b6574706c6163653a20737065636966696564206d656d62657273686960448201527f702074797065204e4654206973206e6f7420666f722073616c65000000000000606482015260840161026c565b60006106d282610cdf565b116107455760405162461bcd60e51b815260206004820152603860248201527f4d61726b6574706c6163653a206e6f204e465420737570706c7920666f72207360448201527f7065636966696564206d656d6265727368697020747970650000000000000000606482015260840161026c565b6000339050600060028360405161075c919061130c565b90815260408051918290036020908101832060808401835280548452600181015460ff16151591840191909152600281015491830182905260030154606083015290915060006107b76107b0836013610d9b565b6014610dae565b905060006107c5828461133e565b60055460405163079cc67960e41b81526001600160a01b038881166004830152602482018690529293509116906379cc679090604401600060405180830381600087803b15801561081557600080fd5b505af1158015610829573d6000803e3d6000fd5b50506005546007546040516323b872dd60e01b81526001600160a01b038a81166004830152918216602482015260448101869052911692506323b872dd91506064016020604051808303816000875af115801561088a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108ae91906112cb565b50600480546060860151604051628598df60e41b815260009384936001600160a01b0316926308598df0926108e9928c928e9290910161137d565b60408051808303816000875af1158015610907573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092b91906113b1565b91509150866001600160a01b03167fa040e17186a82dc5bdbbc43eaffbab8289b3adb86f05abfc0a7c94fef9cbf789838a848960405161096e94939291906113d5565b60405180910390a2505060018055505050505050565b6000600282604051610996919061130c565b9081526040519081900360200190206001015460ff16156109ba5761047882610cdf565b506000919050565b6109ca610c83565b8015806109d95750610e108110155b610a415760405162461bcd60e51b815260206004820152603360248201527f4d61726b6574706c6163653a204e46542076616c69646974792073686f756c646044820152721031329030ba103632b0b9ba1018903437bab960691b606482015260840161026c565b6040518060800160405280858152602001841515815260200183815260200182815250600286604051610a74919061130c565b9081526040805160209281900383018120845181559284015160018401805460ff19169115159190911790559083015160028301556060909201516003909101557f9bb54424844cfdd938d952a0f129a440349eae1ad87d32c061ce2e76d45b46e190610aea9087908790879087908790611401565b60405180910390a15050505050565b6005546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610b42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6691906112b2565b905090565b610b73610c83565b6001600160a01b038116610bd85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161026c565b610be181610dba565b50565b610bec610c83565b600355565b6000610478610c18610c0a84610c05610e0a565b610d9b565b670de0b6b3a7640000610dae565b64e8d4a51000610dae565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610c7d908590610eeb565b50505050565b6000546001600160a01b03163314610cdd5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b565b6004805460405163390b451f60e01b815260009283926001600160a01b03169163390b451f91610d1191879101611438565b602060405180830381865afa158015610d2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5291906112b2565b90506000600284604051610d66919061130c565b908152604051908190036020019020549050818110610d9157610d89828261133e565b949350505050565b5060009392505050565b6000610da7828461144b565b9392505050565b6000610da78284611462565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080600560009054906101000a90046001600160a01b03166001600160a01b0316638a19c8bc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8491906112b2565b905060018111610e9d57670de0b6b3a764000091505090565b610ea860018261133e565b610eb3906064611568565b610ebe60018361133e565b610ec9906069611568565b610edb90670de0b6b3a764000061144b565b610ee59190611462565b91505090565b6000610f40826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610fc29092919063ffffffff16565b805190915015610fbd5780806020019051810190610f5e91906112cb565b610fbd5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161026c565b505050565b6060610d898484600085856001600160a01b0385163b6110245760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161026c565b600080866001600160a01b03168587604051611040919061130c565b60006040518083038185875af1925050503d806000811461107d576040519150601f19603f3d011682016040523d82523d6000602084013e611082565b606091505b509150915061109282828661109d565b979650505050505050565b606083156110ac575081610da7565b8251156110bc5782518084602001fd5b8160405162461bcd60e51b815260040161026c9190611438565b6000602082840312156110e857600080fd5b5035919050565b60006020828403121561110157600080fd5b81356001600160a01b0381168114610da757600080fd5b634e487b7160e01b600052604160045260246000fd5b600082601f83011261113f57600080fd5b813567ffffffffffffffff8082111561115a5761115a611118565b604051601f8301601f19908116603f0116810190828211818310171561118257611182611118565b8160405283815286602085880101111561119b57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156111cd57600080fd5b813567ffffffffffffffff8111156111e457600080fd5b610d898482850161112e565b8015158114610be157600080fd5b600080600080600060a0868803121561121657600080fd5b853567ffffffffffffffff81111561122d57600080fd5b6112398882890161112e565b955050602086013593506040860135611251816111f0565b94979396509394606081013594506080013592915050565b60208082526029908201527f4d61726b6574706c6163653a205468652073616c65206973206e6f7420756e6c6040820152681bd8dad959081e595d60ba1b606082015260800190565b6000602082840312156112c457600080fd5b5051919050565b6000602082840312156112dd57600080fd5b8151610da7816111f0565b60005b838110156113035781810151838201526020016112eb565b50506000910152565b6000825161131e8184602087016112e8565b9190910192915050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561047857610478611328565b600081518084526113698160208601602086016112e8565b601f01601f19169290920160200192915050565b6001600160a01b03841681526060602082018190526000906113a190830185611351565b9050826040830152949350505050565b600080604083850312156113c457600080fd5b505080516020909101519092909150565b8481526080602082015260006113ee6080830186611351565b6040830194909452506060015292915050565b60a08152600061141460a0830188611351565b60208301969096525092151560408401526060830191909152608090910152919050565b602081526000610da76020830184611351565b808202811582820484141761047857610478611328565b60008261147f57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156114bf5781600019048211156114a5576114a5611328565b808516156114b257918102915b93841c9390800290611489565b509250929050565b6000826114d657506001610478565b816114e357506000610478565b81600181146114f957600281146115035761151f565b6001915050610478565b60ff84111561151457611514611328565b50506001821b610478565b5060208310610133831016604e8410600b8410161715611542575081810a610478565b61154c8383611484565b806000190482111561156057611560611328565b029392505050565b6000610da783836114c756fea26469706673582212204c49d5edf3b95e84c14b12032d932f0f2bd39aa79193b99811c6f7471beebff764736f6c63430008110033000000000000000000000000763a4c6ab1865e784ca0c4f5bb22ef453e6f727e000000000000000000000000ae0b9e0d1e91a12da214a3810b405368468a0907000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7