0x608060405234801561001057600080fd5b50611949806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806318d3ce961461005157806343f03ab6146100a957806369094173146100cf578063a77b6e03146100f3575b600080fd5b610059610119565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561009557818101518382015260200161007d565b505050509050019250505060405180910390f35b610059600480360360208110156100bf57600080fd5b50356001600160a01b031661017b565b6100d76101ef565b604080516001600160a01b039092168252519081900360200190f35b6100d76004803603602081101561010957600080fd5b50356001600160a01b03166102e4565b6060600180548060200260200160405190810160405280929190818152602001828054801561017157602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610153575b5050505050905090565b6001600160a01b038116600090815260208181526040918290208054835181840281018401909452808452606093928301828280156101e357602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116101c5575b50505050509050919050565b600080336040516101ff90610329565b6001600160a01b03909116815260405190819003602001906000f08015801561022c573d6000803e3d6000fd5b50336000818152602081815260408083208054600181810183559185528385200180546001600160a01b0388166001600160a01b0319918216811790925582548084018455929095527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf69091018054909416811790935580519384529083019190915280519294508493507f758ba1a81be07b9701bb6c4ac4fc3979d34e18d3465ffd5cd4c2958d2318990192918290030190a15090565b6001600160a01b0381166000908152602081905260408120805490600019820182811061030d57fe5b6000918252602090912001546001600160a01b03169392505050565b6115dd806103378339019056fe608060405234801561001057600080fd5b506040516115dd3803806115dd8339818101604052602081101561003357600080fd5b5051806001600160a01b038116610091576040805162461bcd60e51b815260206004820152601960248201527f61646d696e20616464726573732063616e6e6f74206265203000000000000000604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825560408051928352602083019190915280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a150506114e3806100fa6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806384d349b81161006657806384d349b8146101c6578063c3a3694d146101f4578063c49662c514610442578063f53215c314610480578063f851a440146104ac5761009e565b806307880b7f146100a35780631b831ead146100cb578063259601361461014157806325971dff1461019a5780636c8381f8146101a2575b600080fd5b6100c9600480360360208110156100b957600080fd5b50356001600160a01b03166104b4565b005b6100f1600480360360208110156100e157600080fd5b50356001600160a01b031661055f565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561012d578181015183820152602001610115565b505050509050019250505060405180910390f35b61016f6004803603604081101561015757600080fd5b506001600160a01b038135811691602001351661062a565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b6100c9610661565b6101aa610724565b604080516001600160a01b039092168252519081900360200190f35b61016f600480360360408110156101dc57600080fd5b506001600160a01b0381358116916020013516610733565b6100c9600480360360e081101561020a57600080fd5b810190602081018135600160201b81111561022457600080fd5b82018360208201111561023657600080fd5b803590602001918460208302840111600160201b8311171561025757600080fd5b919390929091602081019035600160201b81111561027457600080fd5b82018360208201111561028657600080fd5b803590602001918460208302840111600160201b831117156102a757600080fd5b919390929091602081019035600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460208302840111600160201b831117156102f757600080fd5b919390929091602081019035600160201b81111561031457600080fd5b82018360208201111561032657600080fd5b803590602001918460208302840111600160201b8311171561034757600080fd5b919390929091602081019035600160201b81111561036457600080fd5b82018360208201111561037657600080fd5b803590602001918460208302840111600160201b8311171561039757600080fd5b919390929091602081019035600160201b8111156103b457600080fd5b8201836020820111156103c657600080fd5b803590602001918460208302840111600160201b831117156103e757600080fd5b919390929091602081019035600160201b81111561040457600080fd5b82018360208201111561041657600080fd5b803590602001918460208302840111600160201b8311171561043757600080fd5b509092509050610830565b61046e6004803603604081101561045857600080fd5b50803590602001356001600160a01b0316610b51565b60408051918252519081900360200190f35b6101aa6004803603604081101561049657600080fd5b506001600160a01b038135169060200135610ed1565b6101aa610f06565b6000546001600160a01b031633146104fd5760405162461bcd60e51b815260040180806020018281038252602f815260200180611433602f913960400191505060405180910390fd5b600180546001600160a01b038381166001600160a01b0319831617928390556040805192821680845293909116602083015280517f0faed18be9e8f4d4c05dfbcc80ea2c97a0be729614d766827778f60890c02cab9281900390910190a15050565b60606001600160a01b0382166105b6576040805162461bcd60e51b8152602060048201526017602482015276155cd95c881859191c995cdcc81a5cc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600360209081526040918290208054835181840281018401909452808452909183018282801561061e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610600575b50505050509050919050565b6002602081815260009384526040808520909152918352912080546001820154928201546003830154600490930154919392909185565b6001546001600160a01b031633146106c0576040805162461bcd60e51b815260206004820152601f60248201527f4f6e6c792063616e6469646174652063616e206265636f6d652061646d696e00604482015290519081900360640190fd5b600080546001546001600160a01b031982166001600160a01b0391821617928390556040805192821680845293909116602083015280517f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f9281900390910190a150565b6001546001600160a01b031681565b6000808080806001600160a01b03871661078e576040805162461bcd60e51b8152602060048201526017602482015276155cd95c881859191c995cdcc81a5cc81a5b9d985b1a59604a1b604482015290519081900360640190fd5b6001600160a01b0386166107e4576040805162461bcd60e51b8152602060048201526018602482015277151bdad95b881859191c995cdcc81a5cc81a5b9d985b1a5960421b604482015290519081900360640190fd5b505050506001600160a01b039283166000908152600260208181526040808420959096168352939093529290922080546001820154928201546003830154600490930154919593945092565b6000546001600160a01b031633146108795760405162461bcd60e51b815260040180806020018281038252602f815260200180611433602f913960400191505060405180910390fd5b8c89146108c3576040805162461bcd60e51b81526020600482015260136024820152726172726179206c656e677468206e6f7420657160681b604482015290519081900360640190fd5b8c851461090d576040805162461bcd60e51b81526020600482015260136024820152726172726179206c656e677468206e6f7420657160681b604482015290519081900360640190fd5b8c8714610957576040805162461bcd60e51b81526020600482015260136024820152726172726179206c656e677468206e6f7420657160681b604482015290519081900360640190fd5b8c8b146109a1576040805162461bcd60e51b81526020600482015260136024820152726172726179206c656e677468206e6f7420657160681b604482015290519081900360640190fd5b8281146109df5760405162461bcd60e51b81526004018080602001828103825260378152602001806113db6037913960400191505060405180910390fd5b60005b83811015610ab3578484828181106109f657fe5b905060200201356001600160a01b03166001600160a01b03166323b872dd3330868686818110610a2257fe5b905060200201356040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b158015610a7f57600080fd5b505af1158015610a93573d6000803e3d6000fd5b505050506040513d6020811015610aa957600080fd5b50506001016109e2565b5060005b8d811015610b4057610b388f8f83818110610ace57fe5b905060200201356001600160a01b03168e8e84818110610aea57fe5b905060200201356001600160a01b03168d8d85818110610b0657fe5b905060200201358c8c86818110610b1957fe5b905060200201358b8b87818110610b2c57fe5b90506020020135610f15565b600101610ab7565b505050505050505050505050505050565b6000808311610ba7576040805162461bcd60e51b815260206004820152601860248201527f496e76616c696420706172616d6574657220616d6f756e740000000000000000604482015290519081900360640190fd5b336001600160a01b038316610bfe576040805162461bcd60e51b8152602060048201526018602482015277151bdad95b881859191c995cdcc81a5cc81a5b9d985b1a5960421b604482015290519081900360640190fd5b6001600160a01b0380821660009081526002602090815260408083209387168352929052206001810154421015610c7c576040805162461bcd60e51b815260206004820152601b60248201527f56657374696e672074696d65206973206e6f7420737461727465640000000000604482015290519081900360640190fd5b8054610cc8576040805162461bcd60e51b81526020600482015260166024820152754e6f206c6f636b20746f6b656e20746f20636c61696d60501b604482015290519081900360640190fd5b6000610ced610e10610ce784600101544261117190919063ffffffff16565b906111ba565b905060008111610d44576040805162461bcd60e51b815260206004820152601f60248201527f6e656564207761697420666f72206f6e6520686f7572206174206c6561737400604482015290519081900360640190fd5b610e108260040154420311610d8a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611484602a913960400191505060405180910390fd5b600082600201548210610d9f57508154610dbe565b60028301548354610dbb918491610db5916111ba565b906111fc565b90505b6003830154610dce908290611171565b905060008111610e1b576040805162461bcd60e51b81526020600482015260136024820152726e6f7420617661696c61626c6520636c61696d60681b604482015290519081900360640190fd5b8681811115610e275750805b6003840154610e369082611255565b60038501556040805163a9059cbb60e01b81526001600160a01b0387811660048301526024820184905291519189169163a9059cbb916044808201926020929091908290030181600087803b158015610e8e57600080fd5b505af1158015610ea2573d6000803e3d6000fd5b505050506040513d6020811015610eb857600080fd5b5050426004909401939093555090925050505b92915050565b60036020528160005260406000208181548110610eea57fe5b6000918252602090912001546001600160a01b03169150829050565b6000546001600160a01b031681565b60008311610f60576040805162461bcd60e51b8152602060048201526013602482015272616d6f756e742063616e206e6f74207a65726f60681b604482015290519081900360640190fd5b60008111610fb5576040805162461bcd60e51b815260206004820152601e60248201527f6c6f636b20686f757273206e656564206d6f7265207468616e207a65726f0000604482015290519081900360640190fd5b60008211610ff45760405162461bcd60e51b81526004018080602001828103825260228152602001806114626022913960400191505060405180910390fd5b6001600160a01b03841661104a576040805162461bcd60e51b8152602060048201526018602482015277151bdad95b881859191c995cdcc81a5cc81a5b9d985b1a5960421b604482015290519081900360640190fd5b6001600160a01b03808616600090815260026020908152604080832093881683529290522054156110c2576040805162461bcd60e51b815260206004820152601f60248201527f7468697320616464726573732068617320616c7265616479206c6f636b656400604482015290519081900360640190fd5b6110ca6113ab565b506040805160a081018252938452602080850193845284820192835260006060860181815242608088019081526001600160a01b03998a1680845260028086528685209a909b168085529985528584209851895596516001808a0191909155955199880199909955516003808801919091559751600490960195909555928452948252938220805494850181558252902090910180546001600160a01b0319169091179055565b60006111b383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506112af565b9392505050565b60006111b383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611346565b60008261120b57506000610ecb565b8282028284828161121857fe5b04146111b35760405162461bcd60e51b81526004018080602001828103825260218152602001806114126021913960400191505060405180910390fd5b6000828201838110156111b3576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818484111561133e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113035781810151838201526020016112eb565b50505050905090810190601f1680156113305780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836113955760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156113035781810151838201526020016112eb565b5060008385816113a157fe5b0495945050505050565b6040518060a001604052806000815260200160008152602001600081526020016000815260200160008152509056fe53656e6420746f6b656e2061646472657373206c656e67746820616e6420616d6f756e7473206c656e67746820617265206e6f74206571536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f6e6c792074686520636f6e74726163742061646d696e2063616e20706572666f726d207468697320616374696f6e6c6f636b2074696d657374616d70206e656564206d6f7265207468616e207a65726f596f75206861766520746f2077616974206174206c6561737420616e20686f757220746f20636c61696da2646970667358221220b768e6eb2fd709daaf54c7229fe873288511ca769e8fbbdc5a09cea4b8474cd764736f6c634300060c0033a26469706673582212208cd7be0da68843e3d526bc03da6ebc108f96b82fbddcef38dfb1fdd6bf9cc0e264736f6c634300060c0033