0x608060405234801561000f575f80fd5b5060405161122438038061122483398101604081905261002e916100ec565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c8161009d565b506001808055600480546001600160a01b031916331790556001600160a01b03919091165f908152600560205260409020805460ff19169091179055610119565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f602082840312156100fc575f80fd5b81516001600160a01b0381168114610112575f80fd5b9392505050565b6110fe806101265f395ff3fe6080604052600436106100e7575f3560e01c80638da5cb5b11610087578063c32ed4e711610057578063c32ed4e7146102a5578063c70a7c98146102c4578063c8796572146102e3578063f2fde38b146102f7575f80fd5b80638da5cb5b14610224578063a5bb12bf14610254578063b37a524d14610273578063bb17525514610286575f80fd5b80635300f841116100c25780635300f841146101795780636d242ead146101a7578063715018a6146101d757806383472a7d146101eb575f80fd5b806305a79e06146100f25780630a609839146101355780632986c0e514610156575f80fd5b366100ee57005b5f80fd5b3480156100fd575f80fd5b5061012061010c366004610ba7565b60076020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b348015610140575f80fd5b5061015461014f366004610ba7565b610316565b005b348015610161575f80fd5b5061016b60025481565b60405190815260200161012c565b348015610184575f80fd5b50610120610193366004610bd2565b60056020525f908152604090205460ff1681565b3480156101b2575f80fd5b506101c66101c1366004610ba7565b610542565b60405161012c959493929190610c41565b3480156101e2575f80fd5b50610154610610565b3480156101f6575f80fd5b506003546040805163ffffffff831681526401000000009092046001600160a01b031660208301520161012c565b34801561022f575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161012c565b34801561025f575f80fd5b5061015461026e366004610bd2565b610623565b610154610281366004610c89565b61069d565b348015610291575f80fd5b506101546102a0366004610cc0565b61074d565b3480156102b0575f80fd5b5060045461023c906001600160a01b031681565b3480156102cf575f80fd5b506101546102de366004610cf7565b610976565b3480156102ee575f80fd5b506101546109a8565b348015610302575f80fd5b50610154610311366004610bd2565b610a1f565b61031e610a59565b5f818152600660209081526040808320815160a08101835281548152600182015463ffffffff8116948201949094526401000000009093046001600160a01b03908116928401929092526002810154909116606083015260038101805460808401919061038a90610d32565b80601f01602080910402602001604051908101604052809291908181526020018280546103b690610d32565b80156104015780601f106103d857610100808354040283529160200191610401565b820191905f5260205f20905b8154815290600101906020018083116103e457829003601f168201915b50505050508152505090505f81606001516001600160a01b0316826080015160405161042d9190610d6a565b5f604051808303815f865af19150503d805f8114610466576040519150601f19603f3d011682016040523d82523d5f602084013e61046b565b606091505b5050905080156105345781606001516001600160a01b031682604001516001600160a01b0316847fd4081a4ce8139c6124e54d02107a08d06d3e7ac2f880b76e5ce6b02886c24d5f856020015186608001516040516104cb929190610d85565b60405180910390a481515f908152600760209081526040808320805460ff191660019081179091558684526006909252822082815590810180546001600160c01b03191690556002810180546001600160a01b0319169055906105316003830182610b5d565b50505b505061053f60018055565b50565b60066020525f90815260409020805460018201546002830154600384018054939463ffffffff8416946401000000009094046001600160a01b039081169493169290919061058f90610d32565b80601f01602080910402602001604051908101604052809291908181526020018280546105bb90610d32565b80156106065780601f106105dd57610100808354040283529160200191610606565b820191905f5260205f20905b8154815290600101906020018083116105e957829003601f168201915b5050505050905085565b610618610a83565b6106215f610aaf565b565b61062b610a83565b6001600160a01b03811661067b5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b2103932b1b4b834b2b73a1760711b60448201526064015b60405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6106a5610a59565b6004546106ba906001600160a01b0316610afe565b6106ca6040820160208301610bd2565b6002546001600160a01b03919091169033907fbfcabbad751c3a79edd97205eefb78b3ba76996593e73871dc3b1deab79daf1b61070a6020860186610dbc565b346107186040880188610dd7565b6040516107289493929190610e49565b60405180910390a460028054905f61073f83610e78565b919050555061053f60018055565b610755610a59565b335f9081526005602052604090205460ff166107a25760405162461bcd60e51b815260206004820152600c60248201526b2737ba103932b630bcb2b91760a11b6044820152606401610672565b6107b26040820160208301610dbc565b6107c26060830160408401610bd2565b6003805463ffffffff90931663ffffffff196001600160a01b0390931664010000000002929092166001600160c01b0319909316929092171790555f61080e6080830160608401610bd2565b6001600160a01b03166108246080840184610dd7565b604051610832929190610e9c565b5f604051808303815f865af19150503d805f811461086b576040519150601f19603f3d011682016040523d82523d5f602084013e610870565b606091505b5050905080156109235761088a6080830160608401610bd2565b6001600160a01b03166108a36060840160408501610bd2565b6001600160a01b031683357fd4081a4ce8139c6124e54d02107a08d06d3e7ac2f880b76e5ce6b02886c24d5f6108df6040870160208801610dbc565b6108ec6080880188610dd7565b6040516108fb93929190610eab565b60405180910390a45080355f908152600760205260409020805460ff1916600117905561096d565b81355f908152600660205260409020829061093e8282610ff1565b50506040518235907f4da5797b3fb486130e51a6df2bd363da1dca04b2323094b39b04e8cf0f1bc1d8905f90a2505b61053f60018055565b61097e610a83565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b6004546001600160a01b03163314806109ca57505f546001600160a01b031633145b610a165760405162461bcd60e51b815260206004820152601a60248201527f4f6e6c7920617574686f72697a6564206164647265737365732e0000000000006044820152606401610672565b61062133610afe565b610a27610a83565b6001600160a01b038116610a5057604051631e4fbdf760e01b81525f6004820152602401610672565b61053f81610aaf565b600260015403610a7c57604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b5f546001600160a01b031633146106215760405163118cdaa760e01b8152336004820152602401610672565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f816001600160a01b0316476040515f6040518083038185875af1925050503d805f8114610b47576040519150601f19603f3d011682016040523d82523d5f602084013e610b4c565b606091505b5050905080610b59575f80fd5b5050565b508054610b6990610d32565b5f825580601f10610b78575050565b601f0160209004905f5260205f209081019061053f91905b80821115610ba3575f8155600101610b90565b5090565b5f60208284031215610bb7575f80fd5b5035919050565b6001600160a01b038116811461053f575f80fd5b5f60208284031215610be2575f80fd5b8135610bed81610bbe565b9392505050565b5f5b83811015610c0e578181015183820152602001610bf6565b50505f910152565b5f8151808452610c2d816020860160208601610bf4565b601f01601f19169290920160200192915050565b85815263ffffffff851660208201526001600160a01b0384811660408301528316606082015260a0608082018190525f90610c7e90830184610c16565b979650505050505050565b5f60208284031215610c99575f80fd5b813567ffffffffffffffff811115610caf575f80fd5b820160608185031215610bed575f80fd5b5f60208284031215610cd0575f80fd5b813567ffffffffffffffff811115610ce6575f80fd5b820160a08185031215610bed575f80fd5b5f8060408385031215610d08575f80fd5b8235610d1381610bbe565b915060208301358015158114610d27575f80fd5b809150509250929050565b600181811c90821680610d4657607f821691505b602082108103610d6457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f8251610d7b818460208701610bf4565b9190910192915050565b63ffffffff83168152604060208201525f610da36040830184610c16565b949350505050565b63ffffffff8116811461053f575f80fd5b5f60208284031215610dcc575f80fd5b8135610bed81610dab565b5f808335601e19843603018112610dec575f80fd5b83018035915067ffffffffffffffff821115610e06575f80fd5b602001915036819003821315610e1a575f80fd5b9250929050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b63ffffffff85168152836020820152606060408201525f610e6e606083018486610e21565b9695505050505050565b5f60018201610e9557634e487b7160e01b5f52601160045260245ffd5b5060010190565b818382375f9101908152919050565b63ffffffff84168152604060208201525f610eca604083018486610e21565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b601f821115610f30575f81815260208120601f850160051c81016020861015610f0d5750805b601f850160051c820191505b81811015610f2c57828155600101610f19565b5050505b505050565b67ffffffffffffffff831115610f4d57610f4d610ed3565b610f6183610f5b8354610d32565b83610ee7565b5f601f841160018114610f92575f8515610f7b5750838201355b5f19600387901b1c1916600186901b178355610fea565b5f83815260209020601f19861690835b82811015610fc25786850135825560209485019460019092019101610fa2565b5086821015610fde575f1960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b8135815560018101602083013561100781610dab565b8154604085013561101781610bbe565b640100000000600160c01b0360209190911b1663ffffffff929092166001600160c01b0319919091161717905560028101606083013561105681610bbe565b81546001600160a01b0319166001600160a01b0391909116179055608082013536839003601e19018112611088575f80fd5b8201803567ffffffffffffffff8111156110a0575f80fd5b6020820191508036038213156110b4575f80fd5b6110c2818360038601610f35565b5050505056fea2646970667358221220953109aa0302576cff50194646b7b451523a5544fe72f9ac6f3ef7c20d1bdbf864736f6c63430008140033000000000000000000000000c1187c6ae18bd20a78c376dbfe1c0ad0b4473475