0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638cc0802511610081578063b391c5081161005b578063b391c508146101dd578063e63ea408146101f0578063f2fde38b1461020357600080fd5b80638cc08025146101885780638da5cb5b146101ab578063b38d9cad146101c657600080fd5b8063715018a6116100b2578063715018a61461015857806377d326791461016057806385040df31461017357600080fd5b806332d35616146100d95780634783f0ef146100ee5780635a78b30c14610101575b600080fd5b6100ec6100e7366004610e8d565b610216565b005b6100ec6100fc366004610e5d565b610280565b600454600554600654600754600854600954600a54604080519788526001600160a01b039096166020880152948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b6100ec6102df565b6100ec61016e366004610e5d565b610345565b61017b6103a4565b60405161014f9190610ee7565b61019b610196366004610d78565b610467565b604051901515815260200161014f565b6001546040516001600160a01b03909116815260200161014f565b6101cf60085481565b60405190815260200161014f565b6100ec6101eb366004610dcd565b61047a565b6100ec6101fe366004610d92565b610829565b6100ec610211366004610d78565b6109d6565b6001546001600160a01b031633146102755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600991909155600a55565b6001546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b600455565b6001546001600160a01b031633146103395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6103436000610ab8565b565b6001546001600160a01b0316331461039f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b600755565b60606103b06002610b22565b67ffffffffffffffff8111156103d657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156103ff578160200160208202803683370190505b50905060005b815181101561046357610419600282610b2c565b82828151811061043957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061045b81610f4c565b915050610405565b5090565b6000610474600283610b3f565b92915050565b600260005414156104cd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026c565b6002600055333b156105215760405162461bcd60e51b815260206004820152601960248201527f434f4e54524143545f43414c4c5f4e4f545f414c4c4f57454400000000000000604482015260640161026c565b60095433904210156105755760405162461bcd60e51b815260206004820152601160248201527f434c49414d5f4e4f545f53544152544544000000000000000000000000000000604482015260640161026c565b42600a5410156105c75760405162461bcd60e51b815260206004820152600e60248201527f434c41494d5f46494e4953484544000000000000000000000000000000000000604482015260640161026c565b6105d2600282610b3f565b1561061f5760405162461bcd60e51b815260206004820152600f60248201527f4455504c49434154455f434c41494d0000000000000000000000000000000000604482015260640161026c565b6007546006546008546106329190610f34565b11156106805760405162461bcd60e51b815260206004820152600e60248201527f434c41494d5f46494e4953484544000000000000000000000000000000000000604482015260640161026c565b61068b838383610b61565b6006546005546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190610e75565b10156107705760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f5641554c545f42414c414e4345000000000000604482015260640161026c565b61077b600282610c28565b50600654600860008282546107909190610f34565b909155505060055460065460405163a9059cbb60e01b81526001600160a01b038481166004830152602482019290925291169063a9059cbb90604401602060405180830381600087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081e9190610e3d565b505060016000555050565b6001546001600160a01b031633146108835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b03831661095457604080516000808252602082019092526001600160a01b0384169083906040516108bb9190610eae565b60006040518083038185875af1925050503d80600081146108f8576040519150601f19603f3d011682016040523d82523d6000602084013e6108fd565b606091505b505090508061094e5760405162461bcd60e51b815260206004820152601260248201527f4e435f5452414e534645525f4641494c45440000000000000000000000000000604482015260640161026c565b50505050565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e9190610e3d565b6001546001600160a01b03163314610a305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b038116610aac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026c565b610ab581610ab8565b50565b600180546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610474825490565b6000610b388383610c3d565b9392505050565b6001600160a01b03811660009081526001830160205260408120541515610b38565b6000610bd9848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506004546040516bffffffffffffffffffffffff19606089901b166020820152909250603401905060405160208183030381529060405280519060200120610c75565b90508061094e5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4d45524b4c455f50524f4f46000000000000000000000000604482015260640161026c565b6000610b38836001600160a01b038416610c8b565b6000826000018281548110610c6257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600082610c828584610cda565b14949350505050565b6000818152600183016020526040812054610cd257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b600081815b8451811015610d54576000858281518110610d0a57634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610d305760008381526020829052604090209250610d41565b600081815260208490526040902092505b5080610d4c81610f4c565b915050610cdf565b509392505050565b80356001600160a01b0381168114610d7357600080fd5b919050565b600060208284031215610d89578081fd5b610b3882610d5c565b600080600060608486031215610da6578182fd5b610daf84610d5c565b9250610dbd60208501610d5c565b9150604084013590509250925092565b60008060208385031215610ddf578182fd5b823567ffffffffffffffff80821115610df6578384fd5b818501915085601f830112610e09578384fd5b813581811115610e17578485fd5b8660208260051b8501011115610e2b578485fd5b60209290920196919550909350505050565b600060208284031215610e4e578081fd5b81518015158114610b38578182fd5b600060208284031215610e6e578081fd5b5035919050565b600060208284031215610e86578081fd5b5051919050565b60008060408385031215610e9f578182fd5b50508035926020909101359150565b60008251815b81811015610ece5760208186018101518583015201610eb4565b81811115610edc5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015610f285783516001600160a01b031683529284019291840191600101610f03565b50909695505050505050565b60008219821115610f4757610f47610f67565b500190565b6000600019821415610f6057610f60610f67565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212201c76d8dabf00139f287ff3fd99e9240016745fc42fee7040ae8a6493d089e26564736f6c63430008040033
0x608060405234801561001057600080fd5b506040516110f13803806110f183398101604081905261002f916100d2565b600160005561003d33610080565b600580546001600160a01b0319166001600160a01b0397909716969096179095556006939093556004939093556007556000600855600991909155600a5561012f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008060008060008060c087890312156100ea578182fd5b86516001600160a01b0381168114610100578283fd5b6020880151604089015160608a015160808b015160a0909b0151939c929b509099909850965090945092505050565b610fb38061013e6000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638cc0802511610081578063b391c5081161005b578063b391c508146101dd578063e63ea408146101f0578063f2fde38b1461020357600080fd5b80638cc08025146101885780638da5cb5b146101ab578063b38d9cad146101c657600080fd5b8063715018a6116100b2578063715018a61461015857806377d326791461016057806385040df31461017357600080fd5b806332d35616146100d95780634783f0ef146100ee5780635a78b30c14610101575b600080fd5b6100ec6100e7366004610e8d565b610216565b005b6100ec6100fc366004610e5d565b610280565b600454600554600654600754600854600954600a54604080519788526001600160a01b039096166020880152948601939093526060850191909152608084015260a083015260c082015260e0015b60405180910390f35b6100ec6102df565b6100ec61016e366004610e5d565b610345565b61017b6103a4565b60405161014f9190610ee7565b61019b610196366004610d78565b610467565b604051901515815260200161014f565b6001546040516001600160a01b03909116815260200161014f565b6101cf60085481565b60405190815260200161014f565b6100ec6101eb366004610dcd565b61047a565b6100ec6101fe366004610d92565b610829565b6100ec610211366004610d78565b6109d6565b6001546001600160a01b031633146102755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600991909155600a55565b6001546001600160a01b031633146102da5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b600455565b6001546001600160a01b031633146103395760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6103436000610ab8565b565b6001546001600160a01b0316331461039f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b600755565b60606103b06002610b22565b67ffffffffffffffff8111156103d657634e487b7160e01b600052604160045260246000fd5b6040519080825280602002602001820160405280156103ff578160200160208202803683370190505b50905060005b815181101561046357610419600282610b2c565b82828151811061043957634e487b7160e01b600052603260045260246000fd5b6001600160a01b03909216602092830291909101909101528061045b81610f4c565b915050610405565b5090565b6000610474600283610b3f565b92915050565b600260005414156104cd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161026c565b6002600055333b156105215760405162461bcd60e51b815260206004820152601960248201527f434f4e54524143545f43414c4c5f4e4f545f414c4c4f57454400000000000000604482015260640161026c565b60095433904210156105755760405162461bcd60e51b815260206004820152601160248201527f434c49414d5f4e4f545f53544152544544000000000000000000000000000000604482015260640161026c565b42600a5410156105c75760405162461bcd60e51b815260206004820152600e60248201527f434c41494d5f46494e4953484544000000000000000000000000000000000000604482015260640161026c565b6105d2600282610b3f565b1561061f5760405162461bcd60e51b815260206004820152600f60248201527f4455504c49434154455f434c41494d0000000000000000000000000000000000604482015260640161026c565b6007546006546008546106329190610f34565b11156106805760405162461bcd60e51b815260206004820152600e60248201527f434c41494d5f46494e4953484544000000000000000000000000000000000000604482015260640161026c565b61068b838383610b61565b6006546005546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03909116906370a082319060240160206040518083038186803b1580156106ea57600080fd5b505afa1580156106fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107229190610e75565b10156107705760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f5641554c545f42414c414e4345000000000000604482015260640161026c565b61077b600282610c28565b50600654600860008282546107909190610f34565b909155505060055460065460405163a9059cbb60e01b81526001600160a01b038481166004830152602482019290925291169063a9059cbb90604401602060405180830381600087803b1580156107e657600080fd5b505af11580156107fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081e9190610e3d565b505060016000555050565b6001546001600160a01b031633146108835760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b03831661095457604080516000808252602082019092526001600160a01b0384169083906040516108bb9190610eae565b60006040518083038185875af1925050503d80600081146108f8576040519150601f19603f3d011682016040523d82523d6000602084013e6108fd565b606091505b505090508061094e5760405162461bcd60e51b815260206004820152601260248201527f4e435f5452414e534645525f4641494c45440000000000000000000000000000604482015260640161026c565b50505050565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061094e9190610e3d565b6001546001600160a01b03163314610a305760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b038116610aac5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026c565b610ab581610ab8565b50565b600180546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610474825490565b6000610b388383610c3d565b9392505050565b6001600160a01b03811660009081526001830160205260408120541515610b38565b6000610bd9848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506004546040516bffffffffffffffffffffffff19606089901b166020820152909250603401905060405160208183030381529060405280519060200120610c75565b90508061094e5760405162461bcd60e51b815260206004820152601460248201527f494e56414c49445f4d45524b4c455f50524f4f46000000000000000000000000604482015260640161026c565b6000610b38836001600160a01b038416610c8b565b6000826000018281548110610c6257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b600082610c828584610cda565b14949350505050565b6000818152600183016020526040812054610cd257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b600081815b8451811015610d54576000858281518110610d0a57634e487b7160e01b600052603260045260246000fd5b60200260200101519050808311610d305760008381526020829052604090209250610d41565b600081815260208490526040902092505b5080610d4c81610f4c565b915050610cdf565b509392505050565b80356001600160a01b0381168114610d7357600080fd5b919050565b600060208284031215610d89578081fd5b610b3882610d5c565b600080600060608486031215610da6578182fd5b610daf84610d5c565b9250610dbd60208501610d5c565b9150604084013590509250925092565b60008060208385031215610ddf578182fd5b823567ffffffffffffffff80821115610df6578384fd5b818501915085601f830112610e09578384fd5b813581811115610e17578485fd5b8660208260051b8501011115610e2b578485fd5b60209290920196919550909350505050565b600060208284031215610e4e578081fd5b81518015158114610b38578182fd5b600060208284031215610e6e578081fd5b5035919050565b600060208284031215610e86578081fd5b5051919050565b60008060408385031215610e9f578182fd5b50508035926020909101359150565b60008251815b81811015610ece5760208186018101518583015201610eb4565b81811115610edc5782828501525b509190910192915050565b6020808252825182820181905260009190848201906040850190845b81811015610f285783516001600160a01b031683529284019291840191600101610f03565b50909695505050505050565b60008219821115610f4757610f47610f67565b500190565b6000600019821415610f6057610f60610f67565b5060010190565b634e487b7160e01b600052601160045260246000fdfea26469706673582212201c76d8dabf00139f287ff3fd99e9240016745fc42fee7040ae8a6493d089e26564736f6c634300080400330000000000000000000000006eb376d9bc067cdad77041ba73d2de0ce2b70f79000000000000000000000000000000000000000000000015af1d78b58c40000000000000000000000000000000000000000000000000d3c21bcecceda100000000000000000000000000000000000000000000000000000000000000628b30f0000000000000000000000000000000000000000000000000000000006301d7f08e93321d8ec3bf960c693271d2e3bb262cd81721c852f94eb155069a66c1fe46