60806040523480156200001157600080fd5b506040518060400160405280600d81526020016c1550d0c814dbdd5b189bdd5b99609a1b815250604051806040016040528060048152602001635543435360e01b81525060405180602001604052806000815250604051806020016040528060008152508160009081620000869190620001ea565b506001620000958282620001ea565b505050620000aa8282620000e860201b60201c565b50620000b89050336200010a565b6040518060800160405280605381526020016200159560539139600990620000e19082620001ea565b50620002b6565b6006620000f68382620001ea565b506007620001058282620001ea565b505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200017157607f821691505b6020821081036200019257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200010557600081815260208120601f850160051c81016020861015620001c15750805b601f850160051c820191505b81811015620001e257828155600101620001cd565b505050505050565b81516001600160401b0381111562000206576200020662000146565b6200021e816200021784546200015c565b8462000198565b602080601f8311600181146200025657600084156200023d5750858301515b600019600386901b1c1916600185901b178555620001e2565b600085815260208120601f198616915b82811015620002875788860151825594840194600190910190840162000266565b5085821015620002a65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6112cf80620002c66000396000f3fe6080604052600436106101b75760003560e01c8063715018a6116100ec578063c7ec3be21161008a578063e985e9c511610064578063e985e9c51461045d578063f04e283e146104a6578063f2fde38b146104b9578063fee81cf4146104cc57600080fd5b8063c7ec3be214610408578063c87b56dd14610428578063d547cfb71461044857600080fd5b806395d89b41116100c657806395d89b41146103bd578063a22cb465146103d2578063a3106b95146102d4578063b88d4fde146103ed57600080fd5b8063715018a61461037c578063750ce62e146103845780638da5cb5b146103a457600080fd5b8063256929621161015957806354d1f13d1161013357806354d1f13d1461031457806355f804b31461031c5780636352211e1461033c57806370a082311461035c57600080fd5b806325692962146102cc5780632c8615b1146102d457806342842e0e146102f457600080fd5b8063095ea7b311610195578063095ea7b31461024b578063156e29f61461026d57806318160ddd1461028d57806323b872dd146102b157600080fd5b806301ffc9a7146101bc57806306fdde03146101f1578063081812fc14610213575b600080fd5b3480156101c857600080fd5b506101dc6101d7366004610de4565b6104ff565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b50610206610551565b6040516101e89190610e32565b34801561021f57600080fd5b5061023361022e366004610e65565b6105e3565b6040516001600160a01b0390911681526020016101e8565b34801561025757600080fd5b5061026b610266366004610e9a565b61060a565b005b34801561027957600080fd5b5061026b610288366004610ec4565b61064d565b34801561029957600080fd5b506102a3600a5481565b6040519081526020016101e8565b3480156102bd57600080fd5b5061026b610266366004610ef7565b61026b61069a565b3480156102e057600080fd5b5061026b6102ef366004610f33565b6106ea565b34801561030057600080fd5b5061026b61030f366004610ef7565b610714565b61026b61072f565b34801561032857600080fd5b5061026b610337366004610f4e565b61076b565b34801561034857600080fd5b50610233610357366004610e65565b610780565b34801561036857600080fd5b506102a3610377366004610f33565b6107e0565b61026b610866565b34801561039057600080fd5b50600854610233906001600160a01b031681565b3480156103b057600080fd5b50638b78c6d81954610233565b3480156103c957600080fd5b5061020661087a565b3480156103de57600080fd5b5061026b610266366004610fc0565b3480156103f957600080fd5b5061026b610266366004611012565b34801561041457600080fd5b5061026b610423366004610e9a565b610889565b34801561043457600080fd5b50610206610443366004610e65565b6108cb565b34801561045457600080fd5b50610206610932565b34801561046957600080fd5b506101dc6104783660046110ee565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61026b6104b4366004610f33565b6109c0565b61026b6104c7366004610f33565b610a00565b3480156104d857600080fd5b506102a36104e7366004610f33565b63389a75e1600c908152600091909152602090205490565b60006001600160e01b031982166380ac58cd60e01b148061053057506001600160e01b03198216635b5e139f60e01b145b8061054b57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606006805461056090611121565b80601f016020809104026020016040519081016040528092919081815260200182805461058c90611121565b80156105d95780601f106105ae576101008083540402835291602001916105d9565b820191906000526020600020905b8154815290600101906020018083116105bc57829003601f168201915b5050505050905090565b60006105ee82610a27565b506000908152600460205260409020546001600160a01b031690565b60405162461bcd60e51b815260206004820152601360248201527214dbdd5b189bdd5b990e88111a5cd8589b1959606a1b60448201526064015b60405180910390fd5b6008546001600160a01b0316331461067857604051639cdc2ed560e01b815260040160405180910390fd5b600a8054600201905561068b8383610a86565b6106958382610a86565b505050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b6106f2610c11565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6106958383836040518060200160405280600081525061060a565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b610773610c11565b60096106958284836111a9565b6000818152600260205260408120546001600160a01b03168061054b5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610644565b60006001600160a01b03821661084a5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610644565b506001600160a01b031660009081526003602052604090205490565b61086e610c11565b6108786000610c2c565b565b60606007805461056090611121565b6008546001600160a01b031633146108b457604051639cdc2ed560e01b815260040160405180910390fd5b600a805460010190556108c78282610a86565b5050565b60606108d682610a27565b60006108e0610c6a565b90506000815111610900576040518060200160405280600081525061092b565b8061090a84610c79565b60405160200161091b92919061126a565b6040516020818303038152906040525b9392505050565b6009805461093f90611121565b80601f016020809104026020016040519081016040528092919081815260200182805461096b90611121565b80156109b85780601f1061098d576101008083540402835291602001916109b8565b820191906000526020600020905b81548152906001019060200180831161099b57829003601f168201915b505050505081565b6109c8610c11565b63389a75e1600c52806000526020600c2080544211156109f057636f5e88186000526004601cfd5b600090556109fd81610c2c565b50565b610a08610c11565b8060601b610a1e57637448fbae6000526004601cfd5b6109fd81610c2c565b6000818152600260205260409020546001600160a01b03166109fd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610644565b6001600160a01b038216610adc5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610644565b6000818152600260205260409020546001600160a01b031615610b415760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610644565b6000818152600260205260409020546001600160a01b031615610ba65760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610644565b6001600160a01b038216600081815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b638b78c6d819543314610878576382b429006000526004601cfd5b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b60606009805461056090611121565b60606000610c8683610d0c565b600101905060008167ffffffffffffffff811115610ca657610ca6610ffc565b6040519080825280601f01601f191660200182016040528015610cd0576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610cda57509392505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610d4b5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610d77576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610d9557662386f26fc10000830492506010015b6305f5e1008310610dad576305f5e100830492506008015b6127108310610dc157612710830492506004015b60648310610dd3576064830492506002015b600a831061054b5760010192915050565b600060208284031215610df657600080fd5b81356001600160e01b03198116811461092b57600080fd5b60005b83811015610e29578181015183820152602001610e11565b50506000910152565b6020815260008251806020840152610e51816040850160208701610e0e565b601f01601f19169190910160400192915050565b600060208284031215610e7757600080fd5b5035919050565b80356001600160a01b0381168114610e9557600080fd5b919050565b60008060408385031215610ead57600080fd5b610eb683610e7e565b946020939093013593505050565b600080600060608486031215610ed957600080fd5b610ee284610e7e565b95602085013595506040909401359392505050565b600080600060608486031215610f0c57600080fd5b610f1584610e7e565b9250610f2360208501610e7e565b9150604084013590509250925092565b600060208284031215610f4557600080fd5b61092b82610e7e565b60008060208385031215610f6157600080fd5b823567ffffffffffffffff80821115610f7957600080fd5b818501915085601f830112610f8d57600080fd5b813581811115610f9c57600080fd5b866020828501011115610fae57600080fd5b60209290920196919550909350505050565b60008060408385031215610fd357600080fd5b610fdc83610e7e565b915060208301358015158114610ff157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561102857600080fd5b61103185610e7e565b935061103f60208601610e7e565b925060408501359150606085013567ffffffffffffffff8082111561106357600080fd5b818701915087601f83011261107757600080fd5b81358181111561108957611089610ffc565b604051601f8201601f19908116603f011681019083821181831017156110b1576110b1610ffc565b816040528281528a60208487010111156110ca57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561110157600080fd5b61110a83610e7e565b915061111860208401610e7e565b90509250929050565b600181811c9082168061113557607f821691505b60208210810361115557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561069557600081815260208120601f850160051c810160208610156111825750805b601f850160051c820191505b818110156111a15782815560010161118e565b505050505050565b67ffffffffffffffff8311156111c1576111c1610ffc565b6111d5836111cf8354611121565b8361115b565b6000601f84116001811461120957600085156111f15750838201355b600019600387901b1c1916600186901b178355611263565b600083815260209020601f19861690835b8281101561123a578685013582556020948501946001909201910161121a565b50868210156112575760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6000835161127c818460208801610e0e565b835190830190611290818360208801610e0e565b0194935050505056fea26469706673582212202c595ecdf966e389adc46e4a0f68439576efb68622f87853203d6e1cd2c76f0164736f6c6343000814003368747470733a2f2f756e63616e6e792e6d7970696e6174612e636c6f75642f697066732f516d657576455731534d70344d624e775532326a386948736a6577645072363865427a6b7a78566f506f6b4c52722f