0x6080604052600436106100f5577c0100000000000000000000000000000000000000000000000000000000600035046305d1080181146100fa57806306fdde0314610126578063095ea7b3146101b057806318160ddd146101fd57806323b872dd14610224578063313ce56714610267578063395093511461029257806370a08231146102cb578063715018a6146102fe5780638397cc94146103135780638da5cb5b146103525780638f32d59b1461038357806395d89b4114610398578063a457c2d7146103ad578063a9059cbb146103e6578063aa9c87891461041f578063dd62ed3e14610434578063f2fde38b1461046f575b600080fd5b34801561010657600080fd5b506101246004803603602081101561011d57600080fd5b50356104a2565b005b34801561013257600080fd5b5061013b6105b0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017557818101518382015260200161015d565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101bc57600080fd5b506101e9600480360360408110156101d357600080fd5b50600160a060020a038135169060200135610646565b604080519115158252519081900360200190f35b34801561020957600080fd5b50610212610663565b60408051918252519081900360200190f35b34801561023057600080fd5b506101e96004803603606081101561024757600080fd5b50600160a060020a03813581169160208101359091169060400135610669565b34801561027357600080fd5b5061027c610748565b6040805160ff9092168252519081900360200190f35b34801561029e57600080fd5b506101e9600480360360408110156102b557600080fd5b50600160a060020a038135169060200135610751565b3480156102d757600080fd5b50610212600480360360208110156102ee57600080fd5b5035600160a060020a03166107a5565b34801561030a57600080fd5b506101246107c0565b34801561031f57600080fd5b506101246004803603606081101561033657600080fd5b50600160a060020a038135169060208101359060400135610875565b34801561035e57600080fd5b506103676108e7565b60408051600160a060020a039092168252519081900360200190f35b34801561038f57600080fd5b506101e96108f6565b3480156103a457600080fd5b5061013b61091c565b3480156103b957600080fd5b506101e9600480360360408110156103d057600080fd5b50600160a060020a03813516906020013561097c565b3480156103f257600080fd5b506101e96004803603604081101561040957600080fd5b50600160a060020a038135169060200135610a2e565b34801561042b57600080fd5b50610367610a42565b34801561044057600080fd5b506102126004803603604081101561045757600080fd5b50600160a060020a0381358116916020013516610a51565b34801561047b57600080fd5b506101246004803603602081101561049257600080fd5b5035600160a060020a0316610a7c565b6104b36104ad610ae6565b82610aea565b600754600160a060020a031663a9059cbb6104cc610ae6565b836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d602081101561056257600080fd5b5061056d9050610ae6565b600160a060020a03167feaf449319c042c9ba3474fa0c5329eb58cd1f23be110cdbf9d697b8d303dac15826040518082815260200191505060405180910390a250565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561063c5780601f106106115761010080835404028352916020019161063c565b820191906000526020600020905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b600061065a610653610ae6565b8484610c6b565b50600192915050565b60055490565b6000610676848484610dd8565b61073e84610682610ae6565b61073985606060405190810160405280602881526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206181526020017f6c6c6f77616e6365000000000000000000000000000000000000000000000000815250600460008b600160a060020a0316600160a060020a031681526020019081526020016000206000610712610ae6565b600160a060020a03168152602081019190915260400160002054919063ffffffff610ffc16565b610c6b565b5060019392505050565b60025460ff1690565b600061065a61075e610ae6565b84610739856004600061076f610ae6565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61109616565b600160a060020a031660009081526003602052604090205490565b6107c86108f6565b151561081e576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600654604051600091600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600754600160a060020a0316610889610ae6565b600160a060020a031614156108e2576108a283836110fa565b604080518381529051600160a060020a038516917f5cf069f6412972a6c15aa4f5d0a340bfc369c3118f4cf8960b568ffe7ae46213919081900360200190a25b505050565b600654600160a060020a031690565b600654600090600160a060020a031661090d610ae6565b600160a060020a031614905090565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561063c5780601f106106115761010080835404028352916020019161063c565b600061065a610989610ae6565b8461073985606060405190810160405280602581526020017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781526020017f207a65726f000000000000000000000000000000000000000000000000000000815250600460006109f7610ae6565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610ffc16565b600061065a610a3b610ae6565b8484610dd8565b600754600160a060020a031681565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b610a846108f6565b1515610ada576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610ae3816111f1565b50565b3390565b600160a060020a0382161515610b70576040805160e560020a62461bcd02815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408051606081018252602281527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e6020808301919091527f636500000000000000000000000000000000000000000000000000000000000082840152600160a060020a038516600090815260039091529190912054610bf791839063ffffffff610ffc16565b600160a060020a038316600090815260036020526040902055600554610c23908263ffffffff6112e016565b600555604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600160a060020a0383161515610cf0576040805160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610d76576040805160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383161515610e5e576040805160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610ee4576040805160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408051606081018252602681527f45524332303a207472616e7366657220616d6f756e74206578636565647320626020808301919091527f616c616e6365000000000000000000000000000000000000000000000000000082840152600160a060020a038616600090815260039091529190912054610f6b91839063ffffffff610ffc16565b600160a060020a038085166000908152600360205260408082209390935590841681522054610fa0908263ffffffff61109616565b600160a060020a0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561108e5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561105357818101518382015260200161103b565b50505050905090810190601f1680156110805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156110f3576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a038216151561115a576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60055461116d908263ffffffff61109616565b600555600160a060020a038216600090815260036020526040902054611199908263ffffffff61109616565b600160a060020a03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a0381161515611277576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006110f383836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ffc56fea165627a7a7230582061d8b0357038cfce3ffed1ab34b3c7c6a44a40ab00a84a430d78a4bc49e8e4cd0029
0x60806040523480156200001157600080fd5b5060405160208062001595833981018060405260208110156200003357600080fd5b505160408051606081018252602b81527f5772617070656420536d617274204164766572746973696e67205472616e736160208281019182527f6374696f6e20546f6b656e000000000000000000000000000000000000000000838501528351808501909452600584527f5753415454000000000000000000000000000000000000000000000000000000908401528151919291601291620000d9916000919062000195565b508151620000ef90600190602085019062000195565b506002805460ff191660ff9290921691909117905550600090506200011c64010000000062000190810204565b60068054600160a060020a031916600160a060020a038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060078054600160a060020a031916600160a060020a039290921691909117905562000237565b335b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001d857805160ff191683800117855562000208565b8280016001018555821562000208579182015b8281111562000208578251825591602001919060010190620001eb565b50620002169291506200021a565b5090565b6200019291905b8082111562000216576000815560010162000221565b61134e80620002476000396000f3fe6080604052600436106100f5577c0100000000000000000000000000000000000000000000000000000000600035046305d1080181146100fa57806306fdde0314610126578063095ea7b3146101b057806318160ddd146101fd57806323b872dd14610224578063313ce56714610267578063395093511461029257806370a08231146102cb578063715018a6146102fe5780638397cc94146103135780638da5cb5b146103525780638f32d59b1461038357806395d89b4114610398578063a457c2d7146103ad578063a9059cbb146103e6578063aa9c87891461041f578063dd62ed3e14610434578063f2fde38b1461046f575b600080fd5b34801561010657600080fd5b506101246004803603602081101561011d57600080fd5b50356104a2565b005b34801561013257600080fd5b5061013b6105b0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017557818101518382015260200161015d565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101bc57600080fd5b506101e9600480360360408110156101d357600080fd5b50600160a060020a038135169060200135610646565b604080519115158252519081900360200190f35b34801561020957600080fd5b50610212610663565b60408051918252519081900360200190f35b34801561023057600080fd5b506101e96004803603606081101561024757600080fd5b50600160a060020a03813581169160208101359091169060400135610669565b34801561027357600080fd5b5061027c610748565b6040805160ff9092168252519081900360200190f35b34801561029e57600080fd5b506101e9600480360360408110156102b557600080fd5b50600160a060020a038135169060200135610751565b3480156102d757600080fd5b50610212600480360360208110156102ee57600080fd5b5035600160a060020a03166107a5565b34801561030a57600080fd5b506101246107c0565b34801561031f57600080fd5b506101246004803603606081101561033657600080fd5b50600160a060020a038135169060208101359060400135610875565b34801561035e57600080fd5b506103676108e7565b60408051600160a060020a039092168252519081900360200190f35b34801561038f57600080fd5b506101e96108f6565b3480156103a457600080fd5b5061013b61091c565b3480156103b957600080fd5b506101e9600480360360408110156103d057600080fd5b50600160a060020a03813516906020013561097c565b3480156103f257600080fd5b506101e96004803603604081101561040957600080fd5b50600160a060020a038135169060200135610a2e565b34801561042b57600080fd5b50610367610a42565b34801561044057600080fd5b506102126004803603604081101561045757600080fd5b50600160a060020a0381358116916020013516610a51565b34801561047b57600080fd5b506101246004803603602081101561049257600080fd5b5035600160a060020a0316610a7c565b6104b36104ad610ae6565b82610aea565b600754600160a060020a031663a9059cbb6104cc610ae6565b836040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561053857600080fd5b505af115801561054c573d6000803e3d6000fd5b505050506040513d602081101561056257600080fd5b5061056d9050610ae6565b600160a060020a03167feaf449319c042c9ba3474fa0c5329eb58cd1f23be110cdbf9d697b8d303dac15826040518082815260200191505060405180910390a250565b60008054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561063c5780601f106106115761010080835404028352916020019161063c565b820191906000526020600020905b81548152906001019060200180831161061f57829003601f168201915b5050505050905090565b600061065a610653610ae6565b8484610c6b565b50600192915050565b60055490565b6000610676848484610dd8565b61073e84610682610ae6565b61073985606060405190810160405280602881526020017f45524332303a207472616e7366657220616d6f756e742065786365656473206181526020017f6c6c6f77616e6365000000000000000000000000000000000000000000000000815250600460008b600160a060020a0316600160a060020a031681526020019081526020016000206000610712610ae6565b600160a060020a03168152602081019190915260400160002054919063ffffffff610ffc16565b610c6b565b5060019392505050565b60025460ff1690565b600061065a61075e610ae6565b84610739856004600061076f610ae6565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff61109616565b600160a060020a031660009081526003602052604090205490565b6107c86108f6565b151561081e576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600654604051600091600160a060020a0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600754600160a060020a0316610889610ae6565b600160a060020a031614156108e2576108a283836110fa565b604080518381529051600160a060020a038516917f5cf069f6412972a6c15aa4f5d0a340bfc369c3118f4cf8960b568ffe7ae46213919081900360200190a25b505050565b600654600160a060020a031690565b600654600090600160a060020a031661090d610ae6565b600160a060020a031614905090565b60018054604080516020601f6002600019610100878916150201909516949094049384018190048102820181019092528281526060939092909183018282801561063c5780601f106106115761010080835404028352916020019161063c565b600061065a610989610ae6565b8461073985606060405190810160405280602581526020017f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7781526020017f207a65726f000000000000000000000000000000000000000000000000000000815250600460006109f7610ae6565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff610ffc16565b600061065a610a3b610ae6565b8484610dd8565b600754600160a060020a031681565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b610a846108f6565b1515610ada576040805160e560020a62461bcd02815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610ae3816111f1565b50565b3390565b600160a060020a0382161515610b70576040805160e560020a62461bcd02815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408051606081018252602281527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e6020808301919091527f636500000000000000000000000000000000000000000000000000000000000082840152600160a060020a038516600090815260039091529190912054610bf791839063ffffffff610ffc16565b600160a060020a038316600090815260036020526040902055600554610c23908263ffffffff6112e016565b600555604080518281529051600091600160a060020a038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600160a060020a0383161515610cf0576040805160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610d76576040805160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383161515610e5e576040805160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600160a060020a0382161515610ee4576040805160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60408051606081018252602681527f45524332303a207472616e7366657220616d6f756e74206578636565647320626020808301919091527f616c616e6365000000000000000000000000000000000000000000000000000082840152600160a060020a038616600090815260039091529190912054610f6b91839063ffffffff610ffc16565b600160a060020a038085166000908152600360205260408082209390935590841681522054610fa0908263ffffffff61109616565b600160a060020a0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561108e5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561105357818101518382015260200161103b565b50505050905090810190601f1680156110805780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156110f3576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600160a060020a038216151561115a576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b60055461116d908263ffffffff61109616565b600555600160a060020a038216600090815260036020526040902054611199908263ffffffff61109616565b600160a060020a03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600160a060020a0381161515611277576040805160e560020a62461bcd02815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b600654604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60006110f383836040805190810160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610ffc56fea165627a7a7230582061d8b0357038cfce3ffed1ab34b3c7c6a44a40ab00a84a430d78a4bc49e8e4cd0029000000000000000000000000df49c9f599a0a9049d97cff34d0c30e468987389