3 txs
11 calls
constructor
constructor(address _feeSigner, address _feeCollector, uint16 _twapInterval)
functions
DEFAULT
viewfunction DEFAULT() view returns (string)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
feeCollector
viewfunction feeCollector() view returns (address)
feeConfigs
viewfunction feeConfigs(string) view returns (uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
feeSigner
viewfunction feeSigner() view returns (address)
getFeeConfig
viewfunction getFeeConfig(string feeType) view returns (tuple)
getUserLocks
viewfunction getUserLocks(address user) view returns (address[])
owner
viewfunction owner() view returns (address)
revokedSignatures
viewfunction revokedSignatures(bytes32) view returns (bool)
twapInterval
viewfunction twapInterval() view returns (uint16)
userLocks
viewfunction userLocks(address, uint256) view returns (address)
createLock
payablefunction createLock(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLock
payablefunction createLock(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, string feeType) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address pool, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
createLockWithCustomFee
payablefunction createLockWithCustomFee(address token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, tuple customFee, bytes signature) payable returns (address lockAddress)
renounceOwnership
nonpayablefunction renounceOwnership()
revokeCustomFee
nonpayablefunction revokeCustomFee(tuple customFee)
setFeeCollector
nonpayablefunction setFeeCollector(address _feeCollector)
setFeeConfig
nonpayablefunction setFeeConfig(string feeType, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
setFeeSigner
nonpayablefunction setFeeSigner(address _feeSigner)
setTwapInterval
nonpayablefunction setTwapInterval(uint16 _twapInterval)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
CustomFeeRevoked
event CustomFeeRevoked(address indexed user, uint256 lockedTokenPercentage, address feeTokenAddress, uint256 feeTokenAmount)
EIP712DomainChanged
event EIP712DomainChanged()
FeeCollected
event FeeCollected(address indexed user, address feeTokenAddress, uint256 feeTokenAmount)
LockCreated
event LockCreated(address indexed lockAddress, address indexed token, address[] pools, address operator, uint256 unlockTime, uint256 unlockPriceMultiplier, address owner)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ETHTransferFailed
error ETHTransferFailed()
InsufficientFeePayment
error InsufficientFeePayment()
InvalidAddress
error InvalidAddress()
InvalidPoolPath
error InvalidPoolPath()
InvalidShortString
error InvalidShortString()
InvalidSignature
error InvalidSignature()
InvalidUnlockTime
error InvalidUnlockTime()
NotCustomFeeUser
error NotCustomFeeUser()
NotNeedETH
error NotNeedETH()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
StringTooLong
error StringTooLong(string str)
creation bytecode
0x6101606040523480156200001257600080fd5b5060405162005c8238038062005c82833981016040819052620000359162000378565b604080518082018252600b81526a4c6f636b466163746f727960a81b602080830191909152825180840190935260018352603160f81b908301529033806200009857604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000a3816200028f565b50620000b1826001620002df565b61012052620000c2816002620002df565b61014052815160208084019190912060e052815190820120610100524660a0526200015060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526001600160a01b038316620001815760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b038216620001a95760405163e6c4247b60e01b815260040160405180910390fd5b60048054600380546001600160a01b0319166001600160a01b038681169190911790915585166001600160b01b031990911617600160a01b61ffff84160217905560408051606081018252600a8152600060208083019190915267016345785d8a000082840152825180840184526007815266191959985d5b1d60ca1b9181019190915291519091600591620002409190620003f2565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550620005db915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602083511015620002ff57620002f78362000318565b905062000312565b816200030c8482620004b5565b5060ff90505b92915050565b600080829050601f8151111562000346578260405163305a27a960e01b81526004016200008f919062000581565b80516200035382620005b6565b179392505050565b80516001600160a01b03811681146200037357600080fd5b919050565b6000806000606084860312156200038e57600080fd5b62000399846200035b565b9250620003a9602085016200035b565b9150604084015161ffff81168114620003c157600080fd5b809150509250925092565b60005b83811015620003e9578181015183820152602001620003cf565b50506000910152565b6000825162000406818460208701620003cc565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200043b57607f821691505b6020821081036200045c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004b057600081815260208120601f850160051c810160208610156200048b5750805b601f850160051c820191505b81811015620004ac5782815560010162000497565b5050505b505050565b81516001600160401b03811115620004d157620004d162000410565b620004e981620004e2845462000426565b8462000462565b602080601f831160018114620005215760008415620005085750858301515b600019600386901b1c1916600185901b178555620004ac565b600085815260208120601f198616915b82811015620005525788860151825594840194600190910190840162000531565b5085821015620005715787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020815260008251806020840152620005a2816040850160208701620003cc565b601f01601f19169190910160400192915050565b805160208083015191908110156200045c5760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161564c620006366000396000610f4101526000610f0d015260006113560152600061132e01526000611286015260006112b1015260006112dc015261564c6000f3fe6080604052600436106200014f5760003560e01c80637e1aa17811620000b9578063b74625bf1162000078578063b74625bf1462000488578063c415b95c146200049f578063c7edb6b014620004c1578063dd55d20214620004d8578063deafa92614620004ef578063f2fde38b146200051457600080fd5b80637e1aa17814620003cc57806384b0196e14620003f15780638da5cb5b146200041e578063a42dce80146200043e578063aa33fedb146200046357600080fd5b8063204a12801162000112578063204a128014620002bb57806323a35de914620002d257806331ac15cf14620003065780633c1d5df0146200032b5780635af7f2391462000363578063715018a614620003b457600080fd5b8063075693391462000154578063095bf90f14620001935780630a25dea9146200020b5780630e1edfdf146200024f5780631ec4036e1462000294575b600080fd5b3480156200016157600080fd5b5060045462000176906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b348015620001a057600080fd5b50620001e7620001b2366004620017ac565b805160208183018101805160058252928201919093012091528054600182015460029092015490916001600160a01b03169083565b604080519384526001600160a01b039092166020840152908201526060016200018a565b3480156200021857600080fd5b506200024060405180604001604052806007815260200166191959985d5b1d60ca1b81525081565b6040516200018a919062001841565b3480156200025c57600080fd5b50620002836200026e3660046200185d565b60066020526000908152604090205460ff1681565b60405190151581526020016200018a565b348015620002a157600080fd5b50620002b9620002b33660046200190e565b62000539565b005b62000176620002cc3660046200192d565b620005e0565b348015620002df57600080fd5b50620002f7620002f1366004620019b8565b62000607565b6040516200018a919062001a1c565b3480156200031357600080fd5b50620002b96200032536600462001a31565b6200067f565b3480156200033857600080fd5b506004546200034f90600160a01b900461ffff1681565b60405161ffff90911681526020016200018a565b3480156200037057600080fd5b506200038862000382366004620017ac565b620006ab565b60408051825181526020808401516001600160a01b03169082015291810151908201526060016200018a565b348015620003c157600080fd5b50620002b96200072a565b348015620003d957600080fd5b50620002b9620003eb366004620019b8565b62000742565b348015620003fe57600080fd5b506200040962000796565b6040516200018a979695949392919062001a57565b3480156200042b57600080fd5b506000546001600160a01b031662000176565b3480156200044b57600080fd5b50620002b96200045d366004620019b8565b620007e0565b3480156200047057600080fd5b50620001766200048236600462001af3565b62000834565b620001766200049936600462001b20565b6200086d565b348015620004ac57600080fd5b5060035462000176906001600160a01b031681565b62000176620004d236600462001c49565b62000896565b62000176620004e936600462001cf3565b62000b1e565b348015620004fc57600080fd5b50620002b96200050e36600462001d88565b62000cc6565b3480156200052157600080fd5b50620002b962000533366004620019b8565b62000d51565b6200054362000d99565b6000620005508262000dc8565b600081815260066020908152604091829020805460ff1916600117905584519085015185830151606087015193519495506001600160a01b03909216937f64116023a6e4de0fdb9c83f1396d968b341777d268a235bb9c2f6a64558e026393620005d493919283526001600160a01b03919091166020830152604082015260600190565b60405180910390a25050565b6000620005fc87620005f28862000e5a565b8787878762000b1e565b979650505050505050565b6001600160a01b0381166000908152600760209081526040918290208054835181840281018401909452808452606093928301828280156200067357602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831162000654575b50505050509050919050565b6200068962000d99565b6004805461ffff909216600160a01b0261ffff60a01b19909216919091179055565b620006d960405180606001604052806000815260200160006001600160a01b03168152602001600081525090565b600582604051620006eb919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b031691840191909152600201549082015292915050565b6200073462000d99565b62000740600062000eb5565b565b6200074c62000d99565b6001600160a01b038116620007745760405163e6c4247b60e01b815260040160405180910390fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b600060608060008060006060620007ac62000f05565b620007b662000f39565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b620007ea62000d99565b6001600160a01b038116620008125760405163e6c4247b60e01b815260040160405180910390fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b600760205281600052604060002081815481106200085157600080fd5b6000918252602090912001546001600160a01b03169150829050565b60006200088a886200087f8962000e5a565b888888888862000896565b98975050505050505050565b60006001600160a01b038816620008c05760405163e6c4247b60e01b815260040160405180910390fd5b8651600003620008e357604051633b88ff5b60e21b815260040160405180910390fd5b42851162000904576040516352aba6d360e11b815260040160405180910390fd5b82516001600160a01b031633146200092f57604051631b8c5be960e11b815260040160405180910390fd5b60006200093c8462000dc8565b60008181526006602052604090205490915060ff1615620009705760405163e6c4247b60e01b815260040160405180910390fd5b60006200097d8262000f68565b905060006200098d828662000f9e565b6004549091506001600160a01b03808316911614620009bf57604051638baa579f60e01b815260040160405180910390fd5b600060405180606001604052808860200151815260200188604001516001600160a01b0316815260200188606001518152509050620009fe8162000fcc565b60008c8c8c8c8c33308e6020015160405162000a1a90620016dd565b62000a2d98979695949392919062001e0b565b604051809103906000f08015801562000a4a573d6000803e3d6000fd5b50905060076000336001600160a01b03166001600160a01b03168152602001908152602001600020819080600181540180825580915050600190039060005260206000200160009091909190916101000a8154816001600160a01b0302191690836001600160a01b031602179055508c6001600160a01b0316816001600160a01b03167fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e38e8e8e8e3360405162000b0695949392919062001e67565b60405180910390a39c9b505050505050505050505050565b60006001600160a01b03871662000b485760405163e6c4247b60e01b815260040160405180910390fd5b855160000362000b6b57604051633b88ff5b60e21b815260040160405180910390fd5b42841162000b8c576040516352aba6d360e11b815260040160405180910390fd5b600060058360405162000ba0919062001ded565b9081526040805191829003602090810183206060840183528054845260018101546001600160a01b0316918401919091526002015490820152905062000be68162000fcc565b600088888888883330886000015160405162000c0290620016dd565b62000c1598979695949392919062001e0b565b604051809103906000f08015801562000c32573d6000803e3d6000fd5b503360008181526007602090815260408083208054600181018255908452919092200180546001600160a01b0319166001600160a01b0385811691821790925591519394508c169290917fbb9c7f6cdae609e613b2334309ae045d208b06b3c10b432c02de12f900fca3e39162000cb2918d918d918d918d919062001e67565b60405180910390a398975050505050505050565b62000cd062000d99565b6040518060600160405280848152602001836001600160a01b031681526020018281525060058560405162000d06919062001ded565b908152604080516020928190038301902083518155918301516001830180546001600160a01b0319166001600160a01b03909216919091179055919091015160029091015550505050565b62000d5b62000d99565b6001600160a01b03811662000d8b57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b62000d968162000eb5565b50565b6000546001600160a01b03163314620007405760405163118cdaa760e01b815233600482015260240162000d82565b60007fc634b811962d68c8585e67f6f81126d6e16bfd358af4d38b4aefa726291718a4826000015183602001518460400151856060015160405160200162000e3d9594939291909485526001600160a01b03938416602086015260408501929092529091166060830152608082015260a00190565b604051602081830303815290604052805190602001209050919050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062000e975762000e9762001eae565b6001600160a01b039092166020928302919091019091015292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006001620011c1565b905090565b606062000f347f00000000000000000000000000000000000000000000000000000000000000006002620011c1565b600062000f9862000f7862001279565b8360405161190160f01b8152600281019290925260228201526042902090565b92915050565b60008060008062000fb08686620013a7565b92509250925062000fc28282620013f8565b5090949350505050565b604081015115620011675760208101516001600160a01b03166200111d578060400151341015620010105760405163481fdfa360e11b815260040160405180910390fd5b60035460408281015190516000926001600160a01b031691908381818185875af1925050503d806000811462001063576040519150601f19603f3d011682016040523d82523d6000602084013e62001068565b606091505b50509050806200108b5760405163b12d13eb60e01b815260040160405180910390fd5b8160400151341115620011165760408201516000903390620010ae903462001ec4565b604051600081818185875af1925050503d8060008114620010ec576040519150601f19603f3d011682016040523d82523d6000602084013e620010f1565b606091505b5050905080620011145760405163b12d13eb60e01b815260040160405180910390fd5b505b5062001167565b34156200113d57604051635bdd050f60e11b815260040160405180910390fd5b6003546040820151602083015162001167926001600160a01b0391821692339290911690620014c7565b6020810151604080830151905133927ff228de527fc1b9843baac03b9a04565473a263375950e63435d4138464386f4692620011b6926001600160a01b03929092168252602082015260400190565b60405180910390a250565b606060ff8314620011df57620011d78362001529565b905062000f98565b818054620011ed9062001ee6565b80601f01602080910402602001604051908101604052809291908181526020018280546200121b9062001ee6565b80156200126c5780601f1062001240576101008083540402835291602001916200126c565b820191906000526020600020905b8154815290600101906020018083116200124e57829003601f168201915b5050505050905062000f98565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015620012d357507f000000000000000000000000000000000000000000000000000000000000000046145b15620012fe57507f000000000000000000000000000000000000000000000000000000000000000090565b62000f34604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60008060008351604103620013e55760208401516040850151606086015160001a620013d6888285856200156a565b955095509550505050620013f1565b50508151600091506002905b9250925092565b60008260038111156200140f576200140f62001f22565b0362001419575050565b600182600381111562001430576200143062001f22565b036200144f5760405163f645eedf60e01b815260040160405180910390fd5b600282600381111562001466576200146662001f22565b03620014895760405163fce698f760e01b81526004810182905260240162000d82565b6003826003811115620014a057620014a062001f22565b03620014c3576040516335e2f38360e21b81526004810182905260240162000d82565b5050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052620015239085906200163e565b50505050565b606060006200153883620016b4565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115620015a7575060009150600390508262001634565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015620015fc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166200162a5750600092506001915082905062001634565b9250600091508190505b9450945094915050565b600080602060008451602086016000885af18062001662576040513d6000823e3d81fd5b50506000513d915081156200167c57806001141562001689565b6001600160a01b0384163b155b156200152357604051635274afe760e01b81526001600160a01b038516600482015260240162000d82565b600060ff8216601f81111562000f9857604051632cd44ac360e21b815260040160405180910390fd5b6136de8062001f3983390190565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200172d576200172d620016eb565b604052919050565b600082601f8301126200174757600080fd5b813567ffffffffffffffff811115620017645762001764620016eb565b62001779601f8201601f191660200162001701565b8181528460208386010111156200178f57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215620017bf57600080fd5b813567ffffffffffffffff811115620017d757600080fd5b620017e58482850162001735565b949350505050565b60005b838110156200180a578181015183820152602001620017f0565b50506000910152565b600081518084526200182d816020860160208601620017ed565b601f01601f19169290920160200192915050565b60208152600062001856602083018462001813565b9392505050565b6000602082840312156200187057600080fd5b5035919050565b80356001600160a01b03811681146200188f57600080fd5b919050565b600060808284031215620018a757600080fd5b6040516080810181811067ffffffffffffffff82111715620018cd57620018cd620016eb565b604052905080620018de8362001877565b815260208301356020820152620018f86040840162001877565b6040820152606083013560608201525092915050565b6000608082840312156200192157600080fd5b62001856838362001894565b60008060008060008060c087890312156200194757600080fd5b620019528762001877565b9550620019626020880162001877565b9450620019726040880162001877565b9350606087013592506080870135915060a087013567ffffffffffffffff8111156200199d57600080fd5b620019ab89828a0162001735565b9150509295509295509295565b600060208284031215620019cb57600080fd5b620018568262001877565b600081518084526020808501945080840160005b8381101562001a115781516001600160a01b031687529582019590820190600101620019ea565b509495945050505050565b602081526000620018566020830184620019d6565b60006020828403121562001a4457600080fd5b813561ffff811681146200185657600080fd5b60ff60f81b881681526000602060e08184015262001a7960e084018a62001813565b838103604085015262001a8d818a62001813565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b8181101562001ae15783518352928401929184019160010162001ac3565b50909c9b505050505050505050505050565b6000806040838503121562001b0757600080fd5b62001b128362001877565b946020939093013593505050565b6000806000806000806000610140888a03121562001b3d57600080fd5b62001b488862001877565b965062001b586020890162001877565b955062001b686040890162001877565b9450606088013593506080880135925062001b878960a08a0162001894565b915061012088013567ffffffffffffffff81111562001ba557600080fd5b62001bb38a828b0162001735565b91505092959891949750929550565b600082601f83011262001bd457600080fd5b8135602067ffffffffffffffff82111562001bf35762001bf3620016eb565b8160051b62001c0482820162001701565b928352848101820192828101908785111562001c1f57600080fd5b83870192505b84831015620005fc5762001c398362001877565b8252918301919083019062001c25565b6000806000806000806000610140888a03121562001c6657600080fd5b62001c718862001877565b9650602088013567ffffffffffffffff8082111562001c8f57600080fd5b62001c9d8b838c0162001bc2565b975062001cad60408b0162001877565b965060608a0135955060808a0135945062001ccc8b60a08c0162001894565b93506101208a013591508082111562001ce457600080fd5b5062001bb38a828b0162001735565b60008060008060008060c0878903121562001d0d57600080fd5b62001d188762001877565b9550602087013567ffffffffffffffff8082111562001d3657600080fd5b62001d448a838b0162001bc2565b965062001d5460408a0162001877565b9550606089013594506080890135935060a089013591508082111562001d7957600080fd5b50620019ab89828a0162001735565b6000806000806080858703121562001d9f57600080fd5b843567ffffffffffffffff81111562001db757600080fd5b62001dc58782880162001735565b9450506020850135925062001ddd6040860162001877565b9396929550929360600135925050565b6000825162001e01818460208701620017ed565b9190910192915050565b6001600160a01b0389811682526101006020830181905260009162001e338483018c620019d6565b998116604085015260608401989098525050608081019490945291841660a084015290921660c082015260e0015292915050565b60a08152600062001e7c60a0830188620019d6565b6001600160a01b0396871660208401526040830195909552506060810192909252909216608090920191909152919050565b634e487b7160e01b600052603260045260246000fd5b8181038181111562000f9857634e487b7160e01b600052601160045260246000fd5b600181811c9082168062001efb57607f821691505b60208210810362001f1c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fdfe6101406040523480156200001257600080fd5b50604051620036de380380620036de83398101604081905262000035916200130b565b826001600160a01b0381166200006657604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6200007181620005b1565b506001805586516000036200009957604051633b88ff5b60e21b815260040160405180910390fd5b6001600160a01b03888116608052600380546001600160a01b03191688831617905560a086905260c08590528216610100526101208190528760005b885181101562000593576000898281518110620000f657620000f662001423565b6020908102919091018101516002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03841690811790915560408051630dfe168160e01b8152905193955091939092630dfe16819260048082019392918290030181865afa1580156200018e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b4919062001439565b90506000826001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d919062001439565b9050816001600160a01b0316856001600160a01b03160362000242578094506200027e565b806001600160a01b0316856001600160a01b03160362000265578194506200027e565b604051633b88ff5b60e21b815260040160405180910390fd5b6040518060a00160405280846001600160a01b03168152602001836001600160a01b03168152602001826001600160a01b03168152602001836001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031b91906200146b565b60ff168152602001826001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000362573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038891906200146b565b60ff9081169091526001600160a01b038086166000908152600460209081526040808320865181549086166001600160a01b03199182161782559287015160018201805491871691909416179092558501516002909101805460608701516080909701518616600160a81b0260ff60a81b1997909616600160a01b026001600160a81b031990911692909416919091179290921793909316919091179055620004318462000601565b9050610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000475573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049b91906200149c565b61ffff168161ffff1610156200057957836001600160a01b03166332148f67610100516001600160a01b0316633c1d5df06040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200052291906200149c565b6040516001600160e01b031960e084901b16815261ffff9091166004820152602401600060405180830381600087803b1580156200055f57600080fd5b505af115801562000574573d6000803e3d6000fd5b505050505b5050505080806200058a90620014d0565b915050620000d5565b506200059e620006d5565b60e0525062001aae975050505050505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60408051600481526024810182526020810180516001600160e01b0316633850c7bd60e01b179052905160009182916001600160a01b038516916200064691620014ec565b600060405180830381855afa9150503d806000811462000683576040519150601f19603f3d011682016040523d82523d6000602084013e62000688565b606091505b50915050805160e003620006bd57600081806020019051810190620006ae919062001541565b50909998505050505050505050565b600081806020019051810190620006ae9190620015d8565b608051600090670de0b6b3a764000090825b60025481101562000803576000600282815481106200070a576200070a62001423565b60009182526020822001546001600160a01b031691506200072c82856200080b565b905060006200073c8383620008b2565b9050670de0b6b3a76400006200075382886200165b565b6200075f91906200168b565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b90930490921660808301529298509190871603620007e15780604001519550620007e9565b806020015195505b505050508080620007fa90620014d0565b915050620006e7565b509092915050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b909204909116608082015291928416900362000888576001915050620008ac565b826001600160a01b031681604001516001600160a01b031603620002655760009150505b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b9091041660808201526101005182516303c1d5df60e41b815292519596919587959190921693633c1d5df093808301939192908290030181865afa15801562000956573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097c91906200149c565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff1681600081518110620009bd57620009bd62001423565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110620009ef57620009ef62001423565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd9062000a35908590600401620016a2565b600060405180830381865afa15801562000a53573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a7d919081019062001766565b50905060008160008151811062000a985762000a9862001423565b60200260200101518260018151811062000ab65762000ab662001423565b602002602001015162000aca91906200183e565b9050600062000ade61ffff8616836200186e565b905060008260060b12801562000b05575062000aff600186900b83620018b2565b60060b15155b1562000b1b578062000b1781620018d7565b9150505b600062000b288262000c67565b9050600062000b436001600160a01b038316806001620010c9565b9050600160c01b600062000b6183670de0b6b3a764000084620010c9565b90508b62000c065762000b866ec097ce7bc90715b34b9f1000000000600183620010c9565b9050896060015160ff168a6080015160ff161062000bd65762000bce818b606001518c6080015162000bb99190620018fd565b62000bc690600a62001a16565b6001620010c9565b905062000c57565b62000bce8160018c608001518d6060015162000bf39190620018fd565b62000c0090600a62001a16565b620010c9565b896060015160ff168a6080015160ff161062000c395762000bce8160018c606001518d6080015162000bf39190620018fd565b62000c54818b608001518c6060015162000bb99190620018fd565b90505b9c9b505050505050505050505050565b60008060008360020b1262000c80578260020b62000c8f565b8260020b62000c8f9062001a27565b905062000ca0620d89e71962001a46565b60020b81111562000cd85760405162461bcd60e51b81526020600482015260016024820152601560fa1b60448201526064016200005d565b60008160011660000362000cf157600160801b62000d03565b6ffffcb933bd6fad37aa2d162d1a5940015b6001600160881b03169050600282161562000d3b57608062000d36826ffff97272373d413259a46990580e213a6200165b565b901c90505b600482161562000d6857608062000d63826ffff2e50f5f656932ef12357cf3c7fdcc6200165b565b901c90505b600882161562000d9557608062000d90826fffe5caca7e10e4e61c3624eaa0941cd06200165b565b901c90505b601082161562000dc257608062000dbd826fffcb9843d60f6159c9db58835c9266446200165b565b901c90505b602082161562000def57608062000dea826fff973b41fa98c081472e6896dfb254c06200165b565b901c90505b604082161562000e1c57608062000e17826fff2ea16466c96a3843ec78b326b528616200165b565b901c90505b608082161562000e4957608062000e44826ffe5dee046a99a2a811c461f1969c30536200165b565b901c90505b61010082161562000e7757608062000e72826ffcbe86c7900a88aedcffc83b479aa3a46200165b565b901c90505b61020082161562000ea557608062000ea0826ff987a7253ac413176f2b074cf7815e546200165b565b901c90505b61040082161562000ed357608062000ece826ff3392b0822b70005940c7a398e4b70f36200165b565b901c90505b61080082161562000f0157608062000efc826fe7159475a2c29b7443b29c7fa6e889d96200165b565b901c90505b61100082161562000f2f57608062000f2a826fd097f3bdfd2022b8845ad8f792aa58256200165b565b901c90505b61200082161562000f5d57608062000f58826fa9f746462d870fdf8a65dc1f90e061e56200165b565b901c90505b61400082161562000f8b57608062000f86826f70d869a156d2a1b890bb3df62baf32f76200165b565b901c90505b61800082161562000fb957608062000fb4826f31be135f97d08fd981231505542fcfa66200165b565b901c90505b6201000082161562000fe857608062000fe3826f09aa508b5b7a84e1c677de54f3e99bc96200165b565b901c90505b620200008216156200101657608062001011826e5d6af8dedb81196699c329225ee6046200165b565b901c90505b62040000821615620010435760806200103e826d2216e584f5fa1ea926041bedfe986200165b565b901c90505b620800008216156200106e57608062001069826b048a170391f7dc42444e8fa26200165b565b901c90505b60008460020b13156200108c5762001089816000196200168b565b90505b6200109d6401000000008262001a6b565b15620010ab576001620010ae565b60005b620010c19060ff16602083901c62001a82565b949350505050565b6000808060001985870985870292508281108382030391505080600003620011055760008411620010f957600080fd5b5082900490506200126a565b8084116200111257600080fd5b600084868809808403938111909203919050600085620011328162001a27565b169586900495938490049360008190030460010190506200115481846200165b565b909317926000620011678760036200165b565b60021890506200117881886200165b565b6200118590600262001a98565b6200119190826200165b565b90506200119f81886200165b565b620011ac90600262001a98565b620011b890826200165b565b9050620011c681886200165b565b620011d390600262001a98565b620011df90826200165b565b9050620011ed81886200165b565b620011fa90600262001a98565b6200120690826200165b565b90506200121481886200165b565b6200122190600262001a98565b6200122d90826200165b565b90506200123b81886200165b565b6200124890600262001a98565b6200125490826200165b565b90506200126281866200165b565b955050505050505b9392505050565b6001600160a01b03811681146200128757600080fd5b50565b8051620012978162001271565b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620012dd57620012dd6200129c565b604052919050565b60006001600160401b038211156200130157620013016200129c565b5060051b60200190565b600080600080600080600080610100898b0312156200132957600080fd5b8851620013368162001271565b60208a810151919950906001600160401b038111156200135557600080fd5b8a01601f81018c136200136757600080fd5b80516200137e6200137882620012e5565b620012b2565b81815260059190911b8201830190838101908e8311156200139e57600080fd5b928401925b82841015620013c9578351620013b98162001271565b82529284019290840190620013a3565b809b505050505050620013df60408a016200128a565b95506060890151945060808901519350620013fd60a08a016200128a565b92506200140d60c08a016200128a565b915060e089015190509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156200144c57600080fd5b81516200126a8162001271565b805160ff811681146200129757600080fd5b6000602082840312156200147e57600080fd5b6200126a8262001459565b805161ffff811681146200129757600080fd5b600060208284031215620014af57600080fd5b6200126a8262001489565b634e487b7160e01b600052601160045260246000fd5b600060018201620014e557620014e5620014ba565b5060010190565b6000825160005b818110156200150f5760208186018101518583015201620014f3565b506000920191825250919050565b8051600281900b81146200129757600080fd5b805180151581146200129757600080fd5b600080600080600080600060e0888a0312156200155d57600080fd5b87516200156a8162001271565b96506200157a602089016200151d565b95506200158a6040890162001489565b94506200159a6060890162001489565b9350620015aa6080890162001489565b9250620015ba60a0890162001459565b9150620015ca60c0890162001530565b905092959891949750929550565b600080600080600080600060e0888a031215620015f457600080fd5b8751620016018162001271565b965062001611602089016200151d565b9550620016216040890162001489565b9450620016316060890162001489565b9350620016416080890162001489565b925060a088015163ffffffff81168114620015ba57600080fd5b8082028115828204841417620008ac57620008ac620014ba565b634e487b7160e01b600052601260045260246000fd5b6000826200169d576200169d62001675565b500490565b6020808252825182820181905260009190848201906040850190845b81811015620016e257835163ffffffff1683529284019291840191600101620016be565b50909695505050505050565b600082601f8301126200170057600080fd5b81516020620017136200137883620012e5565b82815260059290921b840181019181810190868411156200173357600080fd5b8286015b848110156200175b5780516200174d8162001271565b835291830191830162001737565b509695505050505050565b600080604083850312156200177a57600080fd5b82516001600160401b03808211156200179257600080fd5b818501915085601f830112620017a757600080fd5b81516020620017ba6200137883620012e5565b82815260059290921b84018101918181019089841115620017da57600080fd5b948201945b838610156200180b5785518060060b8114620017fb5760008081fd5b82529482019490820190620017df565b918801519196509093505050808211156200182557600080fd5b506200183485828601620016ee565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715620008ac57620008ac620014ba565b60008160060b8360060b8062001888576200188862001675565b667fffffffffffff19821460001982141615620018a957620018a9620014ba565b90059392505050565b60008260060b80620018c857620018c862001675565b808360060b0791505092915050565b60008160020b627fffff198103620018f357620018f3620014ba565b6000190192915050565b60ff8281168282160390811115620008ac57620008ac620014ba565b600181815b808511156200195a5781600019048211156200193e576200193e620014ba565b808516156200194c57918102915b93841c93908002906200191e565b509250929050565b6000826200197357506001620008ac565b816200198257506000620008ac565b81600181146200199b5760028114620019a657620019c6565b6001915050620008ac565b60ff841115620019ba57620019ba620014ba565b50506001821b620008ac565b5060208310610133831016604e8410600b8410161715620019eb575081810a620008ac565b620019f7838362001919565b806000190482111562001a0e5762001a0e620014ba565b029392505050565b60006200126a60ff84168362001962565b6000600160ff1b820162001a3f5762001a3f620014ba565b5060000390565b60008160020b627fffff19810362001a625762001a62620014ba565b60000392915050565b60008262001a7d5762001a7d62001675565b500690565b80820180821115620008ac57620008ac620014ba565b81810381811115620008ac57620008ac620014ba565b60805160a05160c05160e0516101005161012051611b9a62001b44600039600081816102fc0152610489015260008181610176015281816104d30152610b7b01526000818161014f015261075401526000818161011501526107330152600081816101b501526106f401526000818161033e015281816103e90152818161055d015281816105a301526107cf0152611b9a6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806371c98d6d116100a2578063e1f1c4a711610071578063e1f1c4a7146102ee578063e941fa78146102f7578063eb91d37e1461031e578063f2fde38b14610326578063fc0c546a1461033957600080fd5b806371c98d6d1461028c5780638380edb7146102b25780638da5cb5b146102ca578063ac4afa38146102db57600080fd5b80633ccfd60b116100de5780633ccfd60b146101d757806342340a56146101e1578063570ca73514610271578063715018a61461028457600080fd5b806309503011146101105780631d0806ae1461014a5780631db9be1b14610171578063251c1aa3146101b0575b600080fd5b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610141565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101df610360565b005b6102336101ef3660046114bf565b6004602052600090815260409020805460018201546002909201546001600160a01b039182169282169181169060ff600160a01b8204811691600160a81b90041685565b604080516001600160a01b0396871681529486166020860152929094169183019190915260ff9081166060830152909116608082015260a001610141565b600354610198906001600160a01b031681565b6101df610613565b61029f61029a3660046114bf565b610625565b60405161ffff9091168152602001610141565b6102ba6106f0565b6040519015158152602001610141565b6000546001600160a01b0316610198565b6101986102e93660046114dc565b610798565b61013761271081565b6101377f000000000000000000000000000000000000000000000000000000000000000081565b6101376107c2565b6101df6103343660046114bf565b610903565b6101987f000000000000000000000000000000000000000000000000000000000000000081565b610368610946565b6000546001600160a01b0316331480159061038e57506003546001600160a01b03163314155b156103ac5760405163e6c4247b60e01b815260040160405180910390fd5b6103b46106f0565b6103d15760405163fa68006560e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061045c91906114f5565b90508060000361047f57604051631e9acf1760e31b815260040160405180910390fd5b60006127106104ae7f000000000000000000000000000000000000000000000000000000000000000084611524565b6104b89190611551565b905060006104c68284611565565b90508115610584576105847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c415b95c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105539190611578565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169084610970565b6105ca6105996000546001600160a01b031690565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169083610970565b604080518281526020810184905233917ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568910160405180910390a250505061061160018055565b565b61061b6109c7565b61061160006109f4565b60408051600481526024810182526020810180516001600160e01b0316633850c7bd60e01b179052905160009182916001600160a01b0385169161066891611595565b600060405180830381855afa9150503d80600081146106a3576040519150601f19603f3d011682016040523d82523d6000602084013e6106a8565b606091505b50915050805160e0036106da576000818060200190518101906106cb91906115fd565b50909998505050505050505050565b6000818060200190518101906106cb919061168d565b60007f0000000000000000000000000000000000000000000000000000000000000000421061071f5750600190565b60006107296107c2565b90506127106107787f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000611524565b6107829190611551565b811061079057600191505090565b600091505090565b600281815481106107a857600080fd5b6000918252602090912001546001600160a01b0316905081565b6000670de0b6b3a76400007f0000000000000000000000000000000000000000000000000000000000000000825b6002548110156108fb5760006002828154811061080f5761080f611704565b60009182526020822001546001600160a01b0316915061082f8285610a44565b9050600061083d8383610b05565b9050670de0b6b3a76400006108528288611524565b61085c9190611551565b6001600160a01b03808516600090815260046020908152604091829020825160a081018452815485168152600182015485169281018390526002909101548085169382019390935260ff600160a01b840481166060830152600160a81b909304909216608083015292985091908716036108dc57806040015195506108e4565b806020015195505b5050505080806108f39061171a565b9150506107f0565b509092915050565b61090b6109c7565b6001600160a01b03811661093a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610943816109f4565b50565b60026001540361096957604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526109c2908490610e9b565b505050565b6000546001600160a01b031633146106115760405163118cdaa760e01b8152336004820152602401610931565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038083166000908152600460209081526040808320815160a081018352815486168152600182015486169381018490526002909101548086169282019290925260ff600160a01b830481166060830152600160a81b9092049091166080820152919284169003610abf576001915050610aff565b826001600160a01b031681604001516001600160a01b031603610ae6576000915050610aff565b604051633b88ff5b60e21b815260040160405180910390fd5b92915050565b6001600160a01b038083166000908152600460208181526040808420815160a08101835281548716815260018201548716818501526002909101548087168284015260ff600160a01b820481166060840152600160a81b90910416608082015281516303c1d5df60e41b815291519495909486947f000000000000000000000000000000000000000000000000000000000000000090921693633c1d5df09380840193919291908290030181865afa158015610bc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be99190611733565b60408051600280825260608201835292935060009290916020830190803683370190505090508161ffff1681600081518110610c2757610c27611704565b602002602001019063ffffffff16908163ffffffff1681525050600081600181518110610c5657610c56611704565b63ffffffff9092166020928302919091019091015260405163883bdbfd60e01b81526000906001600160a01b0388169063883bdbfd90610c9a908590600401611764565b600060405180830381865afa158015610cb7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cdf9190810190611877565b509050600081600081518110610cf757610cf7611704565b602002602001015182600181518110610d1257610d12611704565b6020026020010151610d249190611943565b90506000610d3661ffff861683611970565b905060008260060b128015610d5a5750610d54600186900b836119ae565b60060b15155b15610d6d5780610d69816119d0565b9150505b6000610d7882610f12565b90506000610d916001600160a01b038316806001611332565b9050600160c01b6000610dad83670de0b6b3a764000084611332565b90508b610e4157610dcf6ec097ce7bc90715b34b9f1000000000600183611332565b9050896060015160ff168a6080015160ff1610610e1757610e10818b606001518c60800151610dfe91906119f3565b610e0990600a611af0565b6001611332565b9050610e8b565b610e108160018c608001518d60600151610e3191906119f3565b610e3c90600a611af0565b611332565b896060015160ff168a6080015160ff1610610e7057610e108160018c606001518d60800151610e3191906119f3565b610e88818b608001518c60600151610dfe91906119f3565b90505b9c9b505050505050505050505050565b600080602060008451602086016000885af180610ebe576040513d6000823e3d81fd5b50506000513d91508115610ed6578060011415610ee3565b6001600160a01b0384163b155b15610f0c57604051635274afe760e01b81526001600160a01b0385166004820152602401610931565b50505050565b60008060008360020b12610f29578260020b610f36565b8260020b610f3690611aff565b9050610f45620d89e719611b1b565b60020b811115610f7b5760405162461bcd60e51b81526020600482015260016024820152601560fa1b6044820152606401610931565b600081600116600003610f9257600160801b610fa4565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615610fe3576080610fde826ffff97272373d413259a46990580e213a611524565b901c90505b600482161561100d576080611008826ffff2e50f5f656932ef12357cf3c7fdcc611524565b901c90505b6008821615611037576080611032826fffe5caca7e10e4e61c3624eaa0941cd0611524565b901c90505b601082161561106157608061105c826fffcb9843d60f6159c9db58835c926644611524565b901c90505b602082161561108b576080611086826fff973b41fa98c081472e6896dfb254c0611524565b901c90505b60408216156110b55760806110b0826fff2ea16466c96a3843ec78b326b52861611524565b901c90505b60808216156110df5760806110da826ffe5dee046a99a2a811c461f1969c3053611524565b901c90505b61010082161561110a576080611105826ffcbe86c7900a88aedcffc83b479aa3a4611524565b901c90505b610200821615611135576080611130826ff987a7253ac413176f2b074cf7815e54611524565b901c90505b61040082161561116057608061115b826ff3392b0822b70005940c7a398e4b70f3611524565b901c90505b61080082161561118b576080611186826fe7159475a2c29b7443b29c7fa6e889d9611524565b901c90505b6110008216156111b65760806111b1826fd097f3bdfd2022b8845ad8f792aa5825611524565b901c90505b6120008216156111e15760806111dc826fa9f746462d870fdf8a65dc1f90e061e5611524565b901c90505b61400082161561120c576080611207826f70d869a156d2a1b890bb3df62baf32f7611524565b901c90505b618000821615611237576080611232826f31be135f97d08fd981231505542fcfa6611524565b901c90505b6201000082161561126357608061125e826f09aa508b5b7a84e1c677de54f3e99bc9611524565b901c90505b6202000082161561128e576080611289826e5d6af8dedb81196699c329225ee604611524565b901c90505b620400008216156112b85760806112b3826d2216e584f5fa1ea926041bedfe98611524565b901c90505b620800008216156112e05760806112db826b048a170391f7dc42444e8fa2611524565b901c90505b60008460020b13156112fb576112f881600019611551565b90505b61130a64010000000082611b3d565b15611316576001611319565b60005b61132a9060ff16602083901c611b51565b949350505050565b600080806000198587098587029250828110838203039150508060000361136b576000841161136057600080fd5b5082900490506114a3565b80841161137757600080fd5b60008486880980840393811190920391905060008561139581611aff565b169586900495938490049360008190030460010190506113b58184611524565b9093179260006113c6876003611524565b60021890506113d58188611524565b6113e0906002611565565b6113ea9082611524565b90506113f68188611524565b611401906002611565565b61140b9082611524565b90506114178188611524565b611422906002611565565b61142c9082611524565b90506114388188611524565b611443906002611565565b61144d9082611524565b90506114598188611524565b611464906002611565565b61146e9082611524565b905061147a8188611524565b611485906002611565565b61148f9082611524565b905061149b8186611524565b955050505050505b9392505050565b6001600160a01b038116811461094357600080fd5b6000602082840312156114d157600080fd5b81356114a3816114aa565b6000602082840312156114ee57600080fd5b5035919050565b60006020828403121561150757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610aff57610aff61150e565b634e487b7160e01b600052601260045260246000fd5b6000826115605761156061153b565b500490565b81810381811115610aff57610aff61150e565b60006020828403121561158a57600080fd5b81516114a3816114aa565b6000825160005b818110156115b6576020818601810151858301520161159c565b506000920191825250919050565b8051600281900b81146115d657600080fd5b919050565b805161ffff811681146115d657600080fd5b805180151581146115d657600080fd5b600080600080600080600060e0888a03121561161857600080fd5b8751611623816114aa565b9650611631602089016115c4565b955061163f604089016115db565b945061164d606089016115db565b935061165b608089016115db565b925060a088015160ff8116811461167157600080fd5b915061167f60c089016115ed565b905092959891949750929550565b600080600080600080600060e0888a0312156116a857600080fd5b87516116b3816114aa565b96506116c1602089016115c4565b95506116cf604089016115db565b94506116dd606089016115db565b93506116eb608089016115db565b925060a088015163ffffffff8116811461167157600080fd5b634e487b7160e01b600052603260045260246000fd5b60006001820161172c5761172c61150e565b5060010190565b60006020828403121561174557600080fd5b6114a3826115db565b634e487b7160e01b600052604160045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156117a257835163ffffffff1683529284019291840191600101611780565b50909695505050505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156117d7576117d761174e565b604052919050565b600067ffffffffffffffff8211156117f9576117f961174e565b5060051b60200190565b600082601f83011261181457600080fd5b81516020611829611824836117df565b6117ae565b82815260059290921b8401810191818101908684111561184857600080fd5b8286015b8481101561186c57805161185f816114aa565b835291830191830161184c565b509695505050505050565b6000806040838503121561188a57600080fd5b825167ffffffffffffffff808211156118a257600080fd5b818501915085601f8301126118b657600080fd5b815160206118c6611824836117df565b82815260059290921b840181019181810190898411156118e557600080fd5b948201945b838610156119135785518060060b81146119045760008081fd5b825294820194908201906118ea565b9188015191965090935050508082111561192c57600080fd5b5061193985828601611803565b9150509250929050565b600682810b9082900b03667fffffffffffff198112667fffffffffffff82131715610aff57610aff61150e565b60008160060b8360060b806119875761198761153b565b667fffffffffffff198214600019821416156119a5576119a561150e565b90059392505050565b60008260060b806119c1576119c161153b565b808360060b0791505092915050565b60008160020b627fffff1981036119e9576119e961150e565b6000190192915050565b60ff8281168282160390811115610aff57610aff61150e565b600181815b80851115611a47578160001904821115611a2d57611a2d61150e565b80851615611a3a57918102915b93841c9390800290611a11565b509250929050565b600082611a5e57506001610aff565b81611a6b57506000610aff565b8160018114611a815760028114611a8b57611aa7565b6001915050610aff565b60ff841115611a9c57611a9c61150e565b50506001821b610aff565b5060208310610133831016604e8410600b8410161715611aca575081810a610aff565b611ad48383611a0c565b8060001904821115611ae857611ae861150e565b029392505050565b60006114a360ff841683611a4f565b6000600160ff1b8201611b1457611b1461150e565b5060000390565b60008160020b627fffff198103611b3457611b3461150e565b60000392915050565b600082611b4c57611b4c61153b565b500690565b80820180821115610aff57610aff61150e56fea26469706673582212205b3e11d9fbfb8b7c742c0752afd2ecc8d9535c268291d40ffa3a6d0f35d9624f64736f6c63430008140033a2646970667358221220003b4b7400152e114e885bdba3bcfa71f6604ce8d59406b8f84933426eddbe1d64736f6c63430008140033000000000000000000000000333a16307d8bef80616f719e958af5c76290ca85000000000000000000000000521faacdfa097ad35a32387727e468f7fd032fd6000000000000000000000000000000000000000000000000000000000000012c