0 txs
0 calls
constructor
constructor(address _pool, address _nonfungiblePositionManager, address _incentiveMaker, address _receiver, string name, string symbol)
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
baseLower
viewfunction baseLower() view returns (int24)
baseNftId
viewfunction baseNftId() view returns (uint256)
baseUpper
viewfunction baseUpper() view returns (int24)
bonusRewardToken
viewfunction bonusRewardToken() view returns (address)
currentIncentiveKey
viewfunction currentIncentiveKey() view returns (address rewardToken, address bonusRewardToken, address pool, uint256 nonce)
currentTick
viewfunction currentTick() view returns (int24 tick)
decimals
viewfunction decimals() view returns (uint8)
directDeposit
viewfunction directDeposit() view returns (bool)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
farmingCenter
viewfunction farmingCenter() view returns (address)
fee
viewfunction fee() view returns (uint8)
feeRecipient
viewfunction feeRecipient() view returns (address)
getBasePosition
viewfunction getBasePosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getLimitPosition
viewfunction getLimitPosition() view returns (uint128 liquidity, uint256 amount0, uint256 amount1)
getTotalAmounts
viewfunction getTotalAmounts() view returns (uint256 total0, uint256 total1)
getTotalAmountsPlusFees
viewfunction getTotalAmountsPlusFees() view returns (uint256 total0, uint256 total1)
incentiveMaker
viewfunction incentiveMaker() view returns (address)
limitLower
viewfunction limitLower() view returns (int24)
limitNftId
viewfunction limitNftId() view returns (uint256)
limitUpper
viewfunction limitUpper() view returns (int24)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address owner) view returns (uint256)
nonfungiblePositionManager
viewfunction nonfungiblePositionManager() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pool
viewfunction pool() view returns (address)
PRECISION
viewfunction PRECISION() view returns (uint256)
receiver
viewfunction receiver() view returns (address)
rewardToken
viewfunction rewardToken() view returns (address)
symbol
viewfunction symbol() view returns (string)
tickSpacing
viewfunction tickSpacing() view returns (int24)
token0
viewfunction token0() view returns (address)
token1
viewfunction token1() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
whitelistedAddress
viewfunction whitelistedAddress() view returns (address)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
compound
nonpayablefunction compound(uint256[4] inMin)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
decreaseLiquidity
nonpayablefunction decreaseLiquidity(uint256 tokenId, uint128 liquidity, uint256 amount0Min, uint256 amount1Min) returns (uint256 amount0, uint256 amount1)
deposit
nonpayablefunction deposit(uint256 deposit0, uint256 deposit1, address to, address from, uint256[4] inMin) returns (uint256 shares)
depositAndStake
nonpayablefunction depositAndStake(uint256 deposit0, uint256 deposit1, address to, address from, uint256[4] inMin) returns (uint256 shares)
getReward
nonpayablefunction getReward()
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
mintLiquidity
nonpayablefunction mintLiquidity(int24 tickLower, int24 tickUpper, uint256 amount0Desired, uint256 amount1Desired, address recipient, uint256 amount0Min, uint256 amount1Min) returns (uint256 tokenId)
pause
nonpayablefunction pause()
permit
nonpayablefunction permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
rebalance
nonpayablefunction rebalance(int24 _baseLower, int24 _baseUpper, int24 _limitLower, int24 _limitUpper, address _feeRecipient, uint256[4] inMin, uint256[4] outMin)
renounceOwnership
nonpayablefunction renounceOwnership()
setFee
nonpayablefunction setFee(uint8 newFee)
setNftIds
nonpayablefunction setNftIds(uint256 _baseNftId, uint256 _limitNftId)
setProtocolAddresses
nonpayablefunction setProtocolAddresses(address _pool, address _nonfungiblePositionManager, address _farmingCenter)
setTickSpacing
nonpayablefunction setTickSpacing(int24 newTickSpacing)
setWhitelist
nonpayablefunction setWhitelist(address _address)
toggleDirectDeposit
nonpayablefunction toggleDirectDeposit()
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferReceiver
nonpayablefunction transferReceiver(address newReceiver)
unpause
nonpayablefunction unpause()
updateIncentiveMaker
nonpayablefunction updateIncentiveMaker(address _incentiveMaker)
withdraw
nonpayablefunction withdraw(uint256 shares, address to, address from, uint256[4] minAmounts) returns (uint256 amount0, uint256 amount1)
zeroBurn
nonpayablefunction zeroBurn() returns (uint256 owed0, uint256 owed1)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
BonusRewardTokenTransferred
event BonusRewardTokenTransferred(address token, uint256 amount)
ClaimPauseStateChanged
event ClaimPauseStateChanged(bool isPaused)
Deposit
event Deposit(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
EIP712DomainChanged
event EIP712DomainChanged()
IncentiveKeyMismatch
event IncentiveKeyMismatch(uint256 tokenId, (address rewardToken, address bonusRewardToken, address pool, uint256 nonce) foundKey, (address rewardToken, address bonusRewardToken, address pool, uint256 nonce) currentKey)
IncentiveKeyUpdated
event IncentiveKeyUpdated(address rewardToken, address bonusRewardToken, address pool, uint256 nonce)
InitialMint
event InitialMint(uint256 baseNftId, uint256 limitNftId)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Rebalance
event Rebalance(int24 tick, uint256 totalAmount0, uint256 totalAmount1, uint256 feeAmount0, uint256 feeAmount1, uint256 totalSupply)
RewardPaid
event RewardPaid(address indexed user, address indexed rewardToken, uint256 amount)
RewardsCollected
event RewardsCollected(uint256 indexed tokenId, uint256 reward, uint256 bonusReward)
RewardsTransferredToOwner
event RewardsTransferredToOwner(address indexed rewardToken, address indexed bonusRewardToken, uint256 rewardAmount, uint256 bonusRewardAmount)
RewardTokenTransferred
event RewardTokenTransferred(address token, uint256 amount)
SetFee
event SetFee(uint8 newFee)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
TransferReceiver
event TransferReceiver(address newReceiver)
Unpaused
event Unpaused(address account)
Withdraw
event Withdraw(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
ZeroBurn
event ZeroBurn(uint8 fee, uint256 fees0, uint256 fees1)
errors
InvalidRecipient
error InvalidRecipient()
InvalidShortString
error InvalidShortString()
InvalidTokens
error InvalidTokens()
NotOwner
error NotOwner()
NotWhitelisted
error NotWhitelisted()
OnlyReceiver
error OnlyReceiver()
StringTooLong
error StringTooLong(string str)
tickOutOfRange
error tickOutOfRange()
ZeroAddress
error ZeroAddress()
ZeroDeposits
error ZeroDeposits()
ZeroFee
error ZeroFee()
ZeroShares
error ZeroShares()
creation bytecode
0x6101606040526017805460ff60a01b1916600160a01b17905534801562000024575f80fd5b5060405162006ecb38038062006ecb833981016040819052620000479162000b00565b8180604051806040016040528060018152602001603160f81b81525084846200007f620000796200059460201b60201c565b62000598565b5f805460ff60a01b19169055600462000099838262000c44565b506005620000a8828262000c44565b50620000ba91508390506006620005e7565b61012052620000cb816007620005e7565b61014052815160208084019190912060e052815190820120610100524660a0526200015860e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600a556001600160a01b038616158015906200018857506001600160a01b03851615155b80156200019d57506001600160a01b03831615155b620001a6575f80fd5b600b80546001600160a01b038089166001600160a01b031992831617909255600c8054928816929091168217905560408051631baadcbb60e31b8152905163dd56e5d8916004808201926020929091908290030181865afa1580156200020e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000234919062000d0c565b600d80546001600160a01b03199081166001600160a01b0393841617909155600e80548216878416908117909155600f8054909216928616929092179055156200036357600e80546001600160a01b0319166001600160a01b03868116918217909255604051600162964af760e01b0319815291881660048301529063ff69b50990602401608060405180830381865afa158015620002d5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002fb919062000d31565b8051601080546001600160a01b039283166001600160a01b031991821681179092556020840151601180549185169183168217905560408501516012805491909516908316179093556060909301516013556016805484169091179055601780549092161790555b600b5460408051630dfe168160e01b815290515f926001600160a01b031691630dfe16819160048083019260209291908290030181865afa158015620003ab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d1919062000d0c565b90505f600b5f9054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000425573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044b919062000d0c565b9050600b5f9054906101000a90046001600160a01b03166001600160a01b031663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200049e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004c4919062000db6565b6017805462ffffff92909216600160a81b0262ffffff60a81b199092169190911790556001600160a01b038216158015906200050857506001600160a01b03811615155b62000511575f80fd5b601480546001600160a01b038085166001600160a01b03199283168117909355601580548583169316929092179091556017805460ff60a01b1916600160a01b179055600c54620005669291165f196200061f565b600c5460155462000586916001600160a01b0391821691165f196200061f565b505050505050505062000e86565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020835110156200060657620005fe8362000770565b905062000619565b8162000613848262000c44565b5060ff90505b92915050565b8015806200069b5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000673573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000699919062000dd8565b155b620007135760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e63650000000000000000000060648201526084015b60405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200076b918591620007b216565b505050565b5f80829050601f815111156200079d578260405163305a27a960e01b81526004016200070a919062000df0565b8051620007aa8262000e24565b179392505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f9062000800906001600160a01b03851690849062000884565b905080515f14806200082357508080602001905181019062000823919062000e48565b6200076b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016200070a565b60606200089484845f856200089c565b949350505050565b606082471015620008ff5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016200070a565b5f80866001600160a01b031685876040516200091c919062000e69565b5f6040518083038185875af1925050503d805f811462000958576040519150601f19603f3d011682016040523d82523d5f602084013e6200095d565b606091505b50909250905062000971878383876200097c565b979650505050505050565b60608315620009ef5782515f03620009e7576001600160a01b0385163b620009e75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200070a565b508162000894565b62000894838381511562000a065781518083602001fd5b8060405162461bcd60e51b81526004016200070a919062000df0565b6001600160a01b038116811462000a37575f80fd5b50565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101562000a6a57818101518382015260200162000a50565b50505f910152565b5f82601f83011262000a82575f80fd5b81516001600160401b038082111562000a9f5762000a9f62000a3a565b604051601f8301601f19908116603f0116810190828211818310171562000aca5762000aca62000a3a565b8160405283815286602085880101111562000ae3575f80fd5b62000af684602083016020890162000a4e565b9695505050505050565b5f805f805f8060c0878903121562000b16575f80fd5b865162000b238162000a22565b602088015190965062000b368162000a22565b604088015190955062000b498162000a22565b606088015190945062000b5c8162000a22565b60808801519093506001600160401b038082111562000b79575f80fd5b62000b878a838b0162000a72565b935060a089015191508082111562000b9d575f80fd5b5062000bac89828a0162000a72565b9150509295509295509295565b600181811c9082168062000bce57607f821691505b60208210810362000bed57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200076b575f81815260208120601f850160051c8101602086101562000c1b5750805b601f850160051c820191505b8181101562000c3c5782815560010162000c27565b505050505050565b81516001600160401b0381111562000c605762000c6062000a3a565b62000c788162000c71845462000bb9565b8462000bf3565b602080601f83116001811462000cae575f841562000c965750858301515b5f19600386901b1c1916600185901b17855562000c3c565b5f85815260208120601f198616915b8281101562000cde5788860151825594840194600190910190840162000cbd565b508582101562000cfc57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000d1d575f80fd5b815162000d2a8162000a22565b9392505050565b5f6080828403121562000d42575f80fd5b604051608081016001600160401b038111828210171562000d675762000d6762000a3a565b604052825162000d778162000a22565b8152602083015162000d898162000a22565b6020820152604083015162000d9e8162000a22565b60408201526060928301519281019290925250919050565b5f6020828403121562000dc7575f80fd5b81518060020b811462000d2a575f80fd5b5f6020828403121562000de9575f80fd5b5051919050565b602081525f825180602084015262000e1081604085016020870162000a4e565b601f01601f19169190910160400192915050565b8051602080830151919081101562000bed575f1960209190910360031b1b16919050565b5f6020828403121562000e59575f80fd5b8151801515811462000d2a575f80fd5b5f825162000e7c81846020870162000a4e565b9190910192915050565b60805160a05160c05160e051610100516101205161014051615ff362000ed85f395f610fcd01525f610fa201525f61258d01525f61256501525f6124c001525f6124ea01525f6125140152615ff35ff3fe608060405234801561000f575f80fd5b50600436106103ca575f3560e01c8063888a913411610200578063d0c93a7c1161011f578063e1cace88116100b4578063f2fde38b11610084578063f2fde38b1461087e578063f7260d3e14610891578063f7c618c1146108a4578063f9d5111c146108b7578063fa082743146108ca575f80fd5b8063e1cace8814610832578063e43bff5814610845578063ef405caf14610858578063f085a6101461086b575f80fd5b8063dd56e5d8116100ef578063dd56e5d8146107e5578063dd62ed3e146107f8578063ddca3f431461080b578063e0525da91461081f575f80fd5b8063d0c93a7c146107a3578063d21220a7146107b7578063d2eabcfc146107ca578063d505accf146107d2575f80fd5b8063a855987211610195578063b44a272211610165578063b44a27221461076d578063c4a7761e14610780578063cb122a0914610788578063cce6776e1461079b575f80fd5b8063a855987214610729578063a9059cbb1461073c578063aaf5eb681461074f578063b1a3d53314610765575f80fd5b806395d89b41116101d057806395d89b41146106d9578063a049de6b146106e1578063a457c2d71461070e578063a4823eb414610721575f80fd5b8063888a91341461067a5780638da5cb5b1461068e5780638e3c92e41461069e5780638e5f5977146106b1575f80fd5b80633f4ba83a116102ec578063715018a61161028157806384b0196e1161025157806384b0196e14610626578063854cff2f1461064157806385919c5d1461065457806386a2908114610667575f80fd5b8063715018a6146105fa57806374cc0d1a146106025780637ecebe001461060b5780638456cb591461061e575f80fd5b80635c975abb116102bc5780635c975abb146105a45780636bb1972d146105b55780636d90a39c146105be57806370a08231146105d2575f80fd5b80633f4ba83a146105695780634690484014610571578063513ea8841461058457806351e87af714610597575f80fd5b806318160ddd11610362578063313ce56711610332578063313ce567146105315780633644e51514610546578063395093511461054e5780633d18b91214610561575f80fd5b806318160ddd146104a05780631a7d2f48146104b25780631e59ded31461050b57806323b872dd1461051e575f80fd5b80630dfe16811161039d5780630dfe16811461043b5780630f35bcac146104665780631056305e1461047a57806316f0115b1461048d575f80fd5b8063065e5360146103ce57806306fdde03146103ee578063095ea7b3146104035780630b40aaa114610426575b5f80fd5b6103d66108de565b60405160029190910b81526020015b60405180910390f35b6103f6610955565b6040516103e59190615410565b610416610411366004615436565b6109e5565b60405190151581526020016103e5565b610439610434366004615460565b6109fe565b005b60145461044e906001600160a01b031681565b6040516001600160a01b0390911681526020016103e5565b6018546103d6906301000000900460020b81565b61043961048836600461547b565b610b50565b600b5461044e906001600160a01b031681565b6003545b6040519081526020016103e5565b6010546011546012546013546104d6936001600160a01b0390811693811692169084565b6040516103e594939291906001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b610439610519366004615460565b610bd3565b61041661052c3660046154c3565b610c30565b60125b60405160ff90911681526020016103e5565b6104a4610c55565b61041661055c366004615436565b610c63565b610439610c84565b610439610cc2565b601c5461044e906001600160a01b031681565b610439610592366004615583565b610cd2565b6018546103d69060020b81565b5f54600160a01b900460ff16610416565b6104a4601a5481565b601c5461041690600160a01b900460ff1681565b6104a46105e0366004615460565b6001600160a01b03165f9081526001602052604090205490565b610439610f57565b6104a460195481565b6104a4610619366004615460565b610f68565b610439610f85565b61062e610f95565b6040516103e5979695949392919061559d565b61043961064f366004615460565b61101c565b61043961066236600461563f565b611046565b601b5461044e906001600160a01b031681565b6017546103d690600160d81b900460020b81565b5f546001600160a01b031661044e565b6104a46106ac3660046156ce565b611644565b6106c46106bf36600461573b565b611677565b604080519283526020830191909152016103e5565b6103f66116ba565b6106e96116c9565b604080516001600160801b0390941684526020840192909252908201526060016103e5565b61041661071c366004615436565b611733565b6106c46117bd565b6106c4610737366004615775565b6118b4565b61041661074a366004615436565b611b43565b6104a46ec097ce7bc90715b34b9f100000000081565b610439611b50565b600c5461044e906001600160a01b031681565b6106c4611b79565b6104396107963660046157d2565b611caa565b6106c4611d11565b6017546103d690600160a81b900460020b81565b60155461044e906001600160a01b031681565b6106e9611d3b565b6104396107e03660046157ed565b611da2565b600d5461044e906001600160a01b031681565b6104a4610806366004615859565b611f03565b60175461053490600160a01b900460ff1681565b6104a461082d3660046156ce565b611f2d565b6104a4610840366004615890565b611fe9565b6104396108533660046158df565b612062565b60175461044e906001600160a01b031681565b6104396108793660046158ff565b612075565b61043961088c366004615460565b6120a1565b600f5461044e906001600160a01b031681565b60165461044e906001600160a01b031681565b600e5461044e906001600160a01b031681565b6017546103d690600160c01b900460020b81565b600b54604080516397ce1c5160e01b815290515f926001600160a01b0316916397ce1c519160048083019260e09291908290030181865afa158015610925573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109499190615930565b50939695505050505050565b606060048054610964906159cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610990906159cd565b80156109db5780601f106109b2576101008083540402835291602001916109db565b820191905f5260205f20905b8154815290600101906020018083116109be57829003601f168201915b5050505050905090565b5f336109f2818585612117565b60019150505b92915050565b610a0661223a565b6001600160a01b038116610a18575f80fd5b600e80546001600160a01b0319166001600160a01b03838116918217909255600b54604051600162964af760e01b03198152921660048301525f9163ff69b50990602401608060405180830381865afa158015610a77573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b91906159ff565b8051601680546001600160a01b039283166001600160a01b03199182168117909255602080850151601780549186169184168217905560108054841685179055601180548416821790556040808701516012805491909716941684179095556060808701516013819055865195865292850191909152838501929092529082015290519192507fc23197554eb2c0fabeb181b2a679122e4621981948d957035228e0925104d67c919081900360800190a15050565b610b5861223a565b6001600160a01b03831615801590610b7857506001600160a01b03821615155b8015610b8c57506001600160a01b03811615155b610b94575f80fd5b600b80546001600160a01b039485166001600160a01b031991821617909155600c805493851693821693909317909255600d8054919093169116179055565b610bdb61223a565b600f80546001600160a01b0319166001600160a01b0383169081179091556040519081527f4a558665c36272d3508d1143a280d81be952c3abd93ffd377aed6b0b996205ad906020015b60405180910390a150565b5f33610c3d858285612293565b610c4885858561230b565b60019150505b9392505050565b5f610c5e6124b4565b905090565b5f336109f2818585610c758383611f03565b610c7f9190615a71565b612117565b600f546001600160a01b03163314610c9a575f80fd5b60195415610cad57610cad6019546125dd565b601a5415610cc057610cc0601a546125dd565b565b610cca61223a565b610cc06128f4565b610cda612948565b610ce261223a565b610cea6129a1565b505060195415610cff57610cff6019546125dd565b601a5415610d1257610d12601a546125dd565b60195415610e3d57600b546019546017546014546040516370a0823160e01b8152306004820152610e3b946001600160a01b039081169493600160c01b8104600290810b94600160d81b909204900b929116906370a0823190602401602060405180830381865afa158015610d89573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dad9190615a84565b6015546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610df3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e179190615a84565b87518860015b6020020151600c546001600160a01b03169796959493929190612ce6565b505b601a5415610f4a57600b54601a546018546014546040516370a0823160e01b8152306004820152610f48946001600160a01b039081169493600281810b946301000000909204900b929116906370a0823190602401602060405180830381865afa158015610ead573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ed19190615a84565b6015546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610f17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f3b9190615a84565b6040880151886003610e1d565b505b610f546001600a55565b50565b610f5f61223a565b610cc05f612d25565b6001600160a01b0381165f908152600860205260408120546109f8565b610f8d61223a565b610cc0612d74565b5f60608082808083610fc87f00000000000000000000000000000000000000000000000000000000000000006006612db6565b610ff37f00000000000000000000000000000000000000000000000000000000000000006007612db6565b604080515f80825260208201909252600f60f81b9b939a50919850469750309650945092509050565b61102461223a565b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b61104e612948565b61105661223a565b8560020b8760020b128015611082575060175461107d90600160a81b900460020b88615ac3565b60020b155b80156110a557506017546110a090600160a81b900460020b87615ac3565b60020b155b80156110b657508360020b8560020b125b80156110d957506017546110d490600160a81b900460020b86615ac3565b60020b155b80156110fc57506017546110f790600160a81b900460020b85615ac3565b60020b155b801561111e57508560020b8460020b14158061111e57508660020b8560020b14155b801561113257506001600160a01b03831615155b61113a575f80fd5b601c80546001600160a01b0319166001600160a01b0385161790555f8061115f6129a1565b915091506019545f14611177576111776019546125dd565b601a541561118a5761118a601a546125dd565b601954156111e457600c546019545f916111af916001600160a01b0390911690612e5f565b505060195485519192506111e091309084908860015b6020020151600c546001600160a01b03169493929190612ef7565b5050505b601a541561122b57600c54601a545f91611209916001600160a01b0390911690612e5f565b5050601a5490915061122790308387600260200201518860036111c5565b5050505b7fbc4c20ad04f161d631d9ce94d27659391196415aa3c42f6a71c62e905ece782d6112546108de565b6014546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561129a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112be9190615a84565b6015546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611304573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113289190615a84565b858561133360035490565b6040805160029790970b87526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a16017805465ffffffffffff60c01b1916600160c01b62ffffff8c8116820262ffffff60d81b191692909217600160d81b928c1683021792839055600b546014546040516370a0823160e01b81523060048201526114b4956001600160a01b0393841695948104600290810b95909104900b92909116906370a0823190602401602060405180830381865afa158015611402573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114269190615a84565b6015546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561146c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114909190615a84565b89518a60015b6020020151600c546001600160a01b0316969594939291903061307a565b6019819055158015906114d157506012546001600160a01b031615155b156114e1576114e160195461316a565b6018805462ffffff89811665ffffffffffff1990921691909117630100000091891682021791829055600b546014546040516370a0823160e01b8152306004820152611602946001600160a01b0393841694600282810b959190920490910b9216906370a0823190602401602060405180830381865afa158015611567573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158b9190615a84565b6015546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156115d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115f59190615a84565b60408a01518a6003611496565b601a8190551580159061161f57506012546001600160a01b031615155b1561162f5761162f601a5461316a565b505061163b6001600a55565b50505050505050565b5f61164d612948565b61165561361c565b6116628686868686613668565b905061166e6001600a55565b95945050505050565b5f80611681612948565b61168961223a565b600c546116a3906001600160a01b03168730888888612ef7565b915091506116b16001600a55565b94509492505050565b606060058054610964906159cd565b5f805f601a545f036116e057505f92839250829150565b600c54601a546116f9916001600160a01b031690612e5f565b5050600b54601854919450611729916001600160a01b0390911690600281810b9163010000009004900b86613968565b9394909392509050565b5f33816117408286611f03565b9050838110156117a55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6117b28286868403612117565b506001949350505050565b5f806117c7611b79565b80925081935050505f805f806019545f1461180257600c54600b546019546117fc926001600160a01b039081169216906139fd565b90945092505b601a541561183057600c54600b54601a5461182a926001600160a01b039081169216906139fd565b90925090505b5f61183b8386615a71565b90505f6118488386615a71565b60175490915061186290600160a01b900460ff1683615ae4565b61186c9083615af7565b60175490925061188690600160a01b900460ff1682615ae4565b6118909082615af7565b905061189c8289615a71565b97506118a88188615a71565b96505050505050509091565b5f806118be612948565b6118c661361c565b5f86116118d1575f80fd5b6001600160a01b0385166118e3575f80fd5b6001600160a01b038416331461190c576040516330cd747160e01b815260040160405180910390fd5b6119146129a1565b505060195415611929576119296019546125dd565b601a541561193c5761193c601a546125dd565b5f805f8061196b601954601a548c8c61195460035490565b600c546001600160a01b031694939291908d613b39565b6014546040516370a0823160e01b815230600482015294985092965090945092505f916119f3916001600160a01b0316906370a0823190602401602060405180830381865afa1580156119c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119e49190615a84565b8c6119ee60035490565b613ba4565b6015546040516370a0823160e01b81523060048201529192505f91611a6e916001600160a01b0316906370a0823190602401602060405180830381865afa158015611a40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a649190615a84565b8d6119ee60035490565b90508115611a8d57601454611a8d906001600160a01b03168c84613c38565b8015611aaa57601554611aaa906001600160a01b03168c83613c38565b81611ab58588615a71565b611abf9190615a71565b975080611acc8487615a71565b611ad69190615a71565b9650611ae28a8d613ca0565b604080518d8152602081018a90529081018890526001600160a01b03808d1691908c16907febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f9060600160405180910390a35050505050506116b16001600a55565b5f336109f281858561230b565b611b5861223a565b601c805460ff60a01b198116600160a01b9182900460ff1615909102179055565b5f805f80611b85611d3b565b92509250505f80611b946116c9565b6014546040516370a0823160e01b815230600482015292955090935084925086916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611be5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c099190615a84565b611c139190615a71565b611c1d9190615a71565b6015546040516370a0823160e01b8152306004820152919750829185916001600160a01b0316906370a0823190602401602060405180830381865afa158015611c68573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8c9190615a84565b611c969190615a71565b611ca09190615a71565b9450505050509091565b611cb261223a565b5f8160ff1611611cc0575f80fd5b6017805460ff60a01b1916600160a01b60ff8481168202929092179283905560405192041681527f91f2ade82ab0e77bb6823899e6daddc07e3da0e3ad998577e7c09c2f38943c4390602001610c25565b601b545f9081906001600160a01b03163314611d2b575f80fd5b611d336129a1565b915091509091565b5f805f6019545f03611d5257505f92839250829150565b600c54601954611d6b916001600160a01b031690612e5f565b5050600b54601754919450611729916001600160a01b0390911690600160c01b8104600290810b91600160d81b9004900b86613968565b83421115611df25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015260640161179c565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888611e208c613dd2565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f611e7a82613df9565b90505f611e8982878787613e25565b9050896001600160a01b0316816001600160a01b031614611eec5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015260640161179c565b611ef78a8a8a612117565b50505050505050505050565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b5f611f36612948565b611f3e61361c565b611f4b8686308686613668565b600f54909150611f669030906001600160a01b03165f613e4d565b600f54611f7e9030906001600160a01b031683613e4d565b600f54604051637acb775760e01b8152600481018390526001600160a01b03868116602483015290911690637acb7757906044015f604051808303815f87803b158015611fc9575f80fd5b505af1158015611fdb573d5f803e3d5ffd5b5050505061166e6001600a55565b5f611ff2612948565b611ffa61223a565b601454601554600c54612024926001600160a01b039182169290821691168b8b8b8b8b8b8b613f60565b9050801580159061203f57506012546001600160a01b031615155b1561204d5761204d8161316a565b6120576001600a55565b979650505050505050565b61206a61223a565b601991909155601a55565b61207d61223a565b6017805462ffffff909216600160a81b0262ffffff60a81b19909216919091179055565b6120a961223a565b6001600160a01b03811661210e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161179c565b610f5481612d25565b6001600160a01b0383166121795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161179c565b6001600160a01b0382166121da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161179c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f546001600160a01b03163314610cc05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161179c565b5f61229e8484611f03565b90505f19811461230557818110156122f85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161179c565b6123058484848403612117565b50505050565b6001600160a01b03831661236f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161179c565b6001600160a01b0382166123d15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161179c565b6001600160a01b0383165f90815260016020526040902054818110156124485760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161179c565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906124a79086815260200190565b60405180910390a3612305565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561250c57507f000000000000000000000000000000000000000000000000000000000000000046145b1561253657507f000000000000000000000000000000000000000000000000000000000000000090565b610c5e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b805f036125e75750565b5f6125f18261406f565b60408101519091506001600160a01b031661260a575050565b5f8160405160200161261c9190615b0a565b60408051601f198184030181528282528051602091820120600d5463de2356d160e01b855292519094505f936001600160a01b039093169263de2356d19260048083019391928290030181865afa158015612679573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061269d9190615b45565b6001600160a01b03166360777795836040518263ffffffff1660e01b81526004016126ca91815260200190565b60c060405180830381865afa1580156126e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127099190615b7a565b50505050509050806001600160801b03165f036127265750505050565b600d54604051633578057760e11b81525f9182916001600160a01b0390911690636af00aee9061275c9088908a90600401615c00565b60408051808303815f875af1158015612777573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061279b9190615c40565b9092509050811561282757600d548551600f54604051632f2d783d60e01b81526001600160a01b03928316600482015290821660248201525f6044820152911690632f2d783d906064016020604051808303815f875af1158015612801573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128259190615a84565b505b80156128b157600d546020860151600f54604051632f2d783d60e01b81526001600160a01b03928316600482015290821660248201525f6044820152911690632f2d783d906064016020604051808303815f875af115801561288b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128af9190615a84565b505b604080518381526020810183905287917f3dddd974134793c524aaece0b9af4dd610a213cd4317cf0cb12c3613eafea8cd910160405180910390a2505050505050565b6128fc6141ab565b5f805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6002600a540361299a5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161179c565b6002600a55565b5f805f805f806019545f14612a4a57600c546040805160808101825260195481523060208201526001600160801b038183018190526060820152905163fc6f786560e01b81526001600160a01b039092169163fc6f786591612a0591600401615c62565b60408051808303815f875af1158015612a20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a449190615c40565b90945092505b601a5415612aec57600c5460408051608081018252601a5481523060208201526001600160801b038183018190526060820152905163fc6f786560e01b81526001600160a01b039092169163fc6f786591612aa791600401615c62565b60408051808303815f875af1158015612ac2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ae69190615c40565b90925090505b60175460408051600160a01b90920460ff16825283860160208301819052838601918301829052975095507f4606b8a47eb284e8e80929101ece6ab5fe8d4f8735acc56bd0c92ca872f2cfe79060600160405180910390a16017545f90612b5d90600160a01b900460ff1688615ae4565b118015612bd157506014546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612bab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bcf9190615a84565b115b15612c1157601c54601754612c11916001600160a01b031690612bfe90600160a01b900460ff1689615ae4565b6014546001600160a01b03169190613c38565b6017545f90612c2a90600160a01b900460ff1687615ae4565b118015612c9e57506015546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612c78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c9c9190615a84565b115b15612cde57601c54601754612cde916001600160a01b031690612ccb90600160a01b900460ff1688615ae4565b6015546001600160a01b03169190613c38565b505050509091565b5f80612cf58a898989896141fa565b90506001600160801b03811615612d1757612d148b8a88888888614281565b91505b509998505050505050505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612d7c61361c565b5f805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861292b3390565b606060ff8314612dd057612dc983614362565b90506109f8565b818054612ddc906159cd565b80601f0160208091040260200160405190810160405280929190818152602001828054612e08906159cd565b8015612e535780601f10612e2a57610100808354040283529160200191612e53565b820191905f5260205f20905b815481529060010190602001808311612e3657829003601f168201915b505050505090506109f8565b5f805f835f03612e7657505f915081905080612ef0565b60405163133f757160e31b8152600481018590526001600160a01b038616906399fbab889060240161018060405180830381865afa158015612eba573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612ede9190615ca5565b939d509b509199505050505050505050505b9250925092565b5f80846001600160801b03165f03612f1357505f90508061306f565b6040805160a0810182528881526001600160801b03878116602083019081528284018881526060840188815242608086019081529551630624e65f60e11b8152945160048601529151909216602484015290516044830152516064820152905160848201526001600160a01b03891690630c49ccbe9060a40160408051808303815f875af1158015612fa7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612fcb9190615c40565b604080516080810182528a81526001600160a01b038a811660208301526001600160801b038284018190526060830152915163fc6f786560e01b81529395509193505f928392918c169163fc6f7865916130289190600401615c62565b60408051808303815f875af1158015613043573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130679190615c40565b909450925050505b965096945050505050565b5f806130898a8a8a8a8a6141fa565b90506001600160801b03811615612d1757612d148b8b6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156130da573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906130fe9190615b45565b8c6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801561313a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061315e9190615b45565b8c8c8c8c8a8d8d613f60565b6012546001600160a01b031661317d5750565b600e54600b54604051600162964af760e01b031981526001600160a01b0391821660048201525f92919091169063ff69b50990602401608060405180830381865afa1580156131ce573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906131f291906159ff565b90505f816040516020016132069190615b0a565b60408051601f1981840301815291905280516020909101209050801580159061330a5750600d5f9054906101000a90046001600160a01b03166001600160a01b031663de2356d16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561327a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061329e9190615b45565b6001600160a01b031663b5bae00a826040518263ffffffff1660e01b81526004016132cb91815260200190565b602060405180830381865afa1580156132e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061330a9190615d7d565b1561331457505050565b60105482516001600160a01b039081169116141580613346575060115460208301516001600160a01b03908116911614155b80613364575060125460408301516001600160a01b03908116911614155b806133755750601354606083015114155b156133cb578151601080546001600160a01b039283166001600160a01b03199182161790915560208401516011805491841691831691909117905560408401516012805491909316911617905560608201516013555b600c5460405163133f757160e31b8152600481018590525f9182916001600160a01b03909116906399fbab889060240161018060405180830381865afa158015613417573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061343b9190615ca5565b50505050509650965050505050505f600d5f9054906101000a90046001600160a01b03166001600160a01b031663de2356d16040518163ffffffff1660e01b8152600401602060405180830381865afa15801561349a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134be9190615b45565b6001600160a01b03166360777795856040518263ffffffff1660e01b81526004016134eb91815260200190565b60c060405180830381865afa158015613506573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352a9190615b7a565b505093505050508062ffffff168360020b8360020b6135499190615d96565b121561355757505050505050565b600c54600d54604051634197b18560e11b815260048101899052600160248201526001600160a01b03918216604482015291169063832f630a906064015f604051808303815f87803b1580156135ab575f80fd5b505af11580156135bd573d5f803e3d5ffd5b5050600d54604051635739f0b960e01b81526001600160a01b039091169250635739f0b991506135f39088908a90600401615c00565b5f604051808303815f87803b15801561360a575f80fd5b505af1158015611ef7573d5f803e3d5ffd5b5f54600160a01b900460ff1615610cc05760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015260640161179c565b5f8086118061367657505f85115b61367e575f80fd5b6001600160a01b038416613690575f80fd5b601b546001600160a01b031633146136bb57604051630b094f2760e31b815260040160405180910390fd5b6136c36129a1565b5050601954156136d8576136d86019546125dd565b601a54156136eb576136eb601a546125dd565b600b54604080516397ce1c5160e01b815290515f926001600160a01b0316916397ce1c519160048083019260e09291908290030181865afa158015613732573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137569190615930565b50505050505090505f6137a4826001600160a01b0316670de0b6b3a764000061377f9190615dbc565b61379a6001600160a01b038516670de0b6b3a7640000615dbc565b600160c01b613ba4565b90505f806137b0611b79565b915091506137ce8a846ec097ce7bc90715b34b9f1000000000613ba4565b6137d8908a615a71565b945089156137f8576014546137f8906001600160a01b031688308d61439f565b881561381657601554613816906001600160a01b031688308c61439f565b5f61382060035490565b905080156138ff575f61384384866ec097ce7bc90715b34b9f1000000000613ba4565b905061385487836119ee8685615a71565b601c54909750600160a01b900460ff16156138fd576040805161014081018252600b546001600160a01b0390811682526019546020830152601a5492820192909252601754600160c01b8104600290810b6060840152600160d81b909104810b608083015260185480820b60a084015263010000009004900b60c082015260e081018e905261010081018d905261012081018a9052600c5490916138f99116826143d7565b5050505b505b61390989876145e7565b60408051878152602081018d90529081018b90526001600160a01b03808b1691908a16907f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69060600160405180910390a3505050505095945050505050565b5f805f866001600160a01b03166397ce1c516040518163ffffffff1660e01b815260040160e060405180830381865afa1580156139a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906139cb9190615930565b50505050505090506139ef816139e0886146a6565b6139e9886146a6565b8761497e565b925092505094509492505050565b5f805f805f805f805f8b6001600160a01b03166399fbab888b6040518263ffffffff1660e01b8152600401613a3491815260200190565b61018060405180830381865afa158015613a50573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613a749190615ca5565b9b509b509b509b509b509b509b505050505050846001600160801b03165f03613ab2576001600160801b039182169850169550613b31945050505050565b816001600160801b03169850806001600160801b031697505f80613ad78d8a8a614a18565b91509150858214613b0157613afc868303886001600160801b0316600160801b613ba4565b8b019a505b848114613b2757613b22858203886001600160801b0316600160801b613ba4565b8a0199505b5050505050505050505b935093915050565b5f8080808915613b6b57613b658b8b89613b558f8f8e8d614c90565b89518a60015b6020020151612ef7565b90945092505b8815613b9657613b908b8a89613b838f8e8e8d614c90565b60408a01518a6003613b5b565b90925090505b975097509750979350505050565b5f838302815f1985870982811083820303915050808411613bc3575f80fd5b805f03613bd557508290049050610c4e565b838587095f8581038616958690049560026003880281188089028203028089028203028089028203028089028203028089028203028089029091030291819003819004600101858411909403939093029190930391909104170290509392505050565b6040516001600160a01b038316602482015260448101829052613c9b90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614d33565b505050565b6001600160a01b038216613d005760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161179c565b6001600160a01b0382165f9081526001602052604090205481811015613d735760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161179c565b6001600160a01b0383165f8181526001602090815260408083208686039055600380548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0381165f9081526008602052604090208054600181018255905b50919050565b5f6109f8613e056124b4565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f613e3487878787614e06565b91509150613e4181614ec0565b5090505b949350505050565b801580613ec55750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613e9f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ec39190615a84565b155b613f305760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b606482015260840161179c565b6040516001600160a01b038316602482015260448101829052613c9b90849063095ea7b360e01b90606401613c64565b5f85158015613f6d575084155b15613f7957505f614061565b8a6001600160a01b031663fe3f3be76040518061016001604052808d6001600160a01b031681526020018c6001600160a01b031681526020015f6001600160a01b031681526020018b60020b81526020018a60020b8152602001898152602001888152602001868152602001858152602001876001600160a01b03168152602001428152506040518263ffffffff1660e01b815260040161401a9190615dd3565b6080604051808303815f875af1158015614036573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061405a9190615e9b565b5091925050505b9a9950505050505050505050565b604080516080810182525f808252602082018190529181018290526060810191909152600d54604051630b02c43d60e41b8152600481018490525f916001600160a01b03169063b02c43d090602401602060405180830381865afa1580156140d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140fd9190615a84565b600d54604051634613f8fb60e11b8152600481018390529192505f918291829182916001600160a01b031690638c27f1f690602401608060405180830381865afa15801561414d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141719190615ed6565b604080516080810182526001600160a01b039586168152938516602085015291909316908201526060810191909152979650505050505050565b5f54600160a01b900460ff16610cc05760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015260640161179c565b5f80866001600160a01b03166397ce1c516040518163ffffffff1660e01b815260040160e060405180830381865afa158015614238573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061425c9190615930565b505050505050905061205781614271886146a6565b61427a886146a6565b8787615009565b5f8415801561428e575083155b1561429a57505f614358565b6040805160c0810182528781526020810187815281830187815260608301878152608084018781524260a08601908152955163219f5d1760e01b8152945160048601529251602485015290516044840152516064830152516084820152905160a48201526001600160a01b0388169063219f5d179060c4016060604051808303815f875af115801561432e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143529190615f26565b50909150505b9695505050505050565b60605f61436e836150be565b6040805160208082528183019092529192505f91906020820181803683375050509182525060208101929092525090565b6040516001600160a01b03808516602483015283166044820152606481018290526123059085906323b872dd60e01b90608401613c64565b5f8082602001515f146144a6575f8061441d855f015186606001518760800151614418895f01518a606001518b608001518c60e001518d61010001516141fa565b613968565b915091505f82118061442e57505f81115b156144a3578460e001518211614444578161444a565b8460e001515b9350846101000151811161445e5780614465565b8461010001515b92506144a186866020015186868961012001515f6004811061448957614489615a9b565b60200201516101208b015160015b6020020151614281565b505b50505b5f828460e00151116144b8575f6144c8565b828460e001516144c89190615af7565b90505f82856101000151116144dd575f6144ee565b828561010001516144ee9190615af7565b90505f8211806144fd57505f81115b801561450c5750604085015115155b156145de57845160a086015160c08701515f928392614532926144188383838b8b6141fa565b915091505f82118061454357505f81115b156145db575f8483116145565782614558565b845b90505f848311614568578261456a565b845b90505f6145ad8b8b6040015185858e610120015160026004811061459057614590615a9b565b60200201518f610120015160036004811061449757614497615a9b565b90506001600160801b038116156145d7576145c8838a615a71565b98506145d48289615a71565b97505b5050505b50505b50509250929050565b6001600160a01b03821661463d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161179c565b8060035f82825461464e9190615a71565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f600282900b60171d62ffffff818401821816620d89e88111156146dd57604051633c10250f60e01b815260040160405180910390fd5b600160801b60018216156146fe57506ffffcb933bd6fad37aa2d162d1a5940015b600282161561471d576ffff97272373d413259a46990580e213a0260801c5b600482161561473c576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561475b576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b601082161561477a576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614799576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156147b8576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156147d7576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156147f7576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614817576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614837576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614857576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614877576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614897576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156148b7576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156148d7576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156148f8576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614918576e5d6af8dedb81196699c329225ee6040260801c5b62040000821061495e5762040000821615614941576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561495e576b048a170391f7dc42444e8fa20260801c5b5f8560020b131561496d575f19045b63ffffffff0160201c949350505050565b5f80836001600160a01b0316856001600160a01b0316111561499e579293925b846001600160a01b0316866001600160a01b0316116149c9576149c28585856150e5565b91506116b1565b836001600160a01b0316866001600160a01b03161015614a02576149ee8685856150e5565b91506149fb858785615153565b90506116b1565b614a0d858585615153565b905094509492505050565b5f805f856001600160a01b03166397ce1c516040518163ffffffff1660e01b815260040160e060405180830381865afa158015614a57573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614a7b9190615930565b505060405163f30dba9360e01b815260028b900b60048201529395505f945084936001600160a01b038c16935063f30dba939250602401905060c060405180830381865afa158015614acf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614af39190615f5a565b60405163f30dba9360e01b815260028d900b600482015291975095505f94508493506001600160a01b038d16925063f30dba93915060240160c060405180830381865afa158015614b46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b6a9190615f5a565b95509550505050505f8a6001600160a01b0316636378ae446040518163ffffffff1660e01b8152600401602060405180830381865afa158015614baf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614bd39190615a84565b90505f8b6001600160a01b031663ecdecf426040518163ffffffff1660e01b8152600401602060405180830381865afa158015614c12573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614c369190615a84565b90508a60020b8760020b1215614c555783860398508285039750614c81565b8960020b8760020b1215614c76578386830303985082858203039750614c81565b858403985084830397505b50505050505050935093915050565b60405163133f757160e31b8152600481018490525f9081906001600160a01b038716906399fbab889060240161018060405180830381865afa158015614cd8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614cfc9190615ca5565b505050509750505050505050505f614d1e826001600160801b03168686613ba4565b90506001600160801b03811115614358575f80fd5b5f614d87826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166151959092919063ffffffff16565b905080515f1480614da7575080806020019051810190614da79190615d7d565b613c9b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161179c565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614e3b57505f905060036116b1565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614e8c573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116614eb4575f600192509250506116b1565b965f9650945050505050565b5f816004811115614ed357614ed3615fc4565b03614edb5750565b6001816004811115614eef57614eef615fc4565b03614f3c5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161179c565b6002816004811115614f5057614f50615fc4565b03614f9d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161179c565b6003816004811115614fb157614fb1615fc4565b03610f545760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b606482015260840161179c565b5f836001600160a01b0316856001600160a01b03161115615028579293925b846001600160a01b0316866001600160a01b0316116150535761504c8585856151a3565b905061166e565b836001600160a01b0316866001600160a01b031610156150b3575f6150798786866151a3565b90505f615087878986615204565b9050806001600160801b0316826001600160801b0316106150a857806150aa565b815b9250505061166e565b614358858584615204565b5f60ff8216601f8111156109f857604051632cd44ac360e21b815260040160405180910390fd5b5f826001600160a01b0316846001600160a01b03161115615104579192915b836001600160a01b031661513d606060ff16846001600160801b0316901b8686036001600160a01b0316866001600160a01b0316613ba4565b8161514a5761514a615aaf565b04949350505050565b5f826001600160a01b0316846001600160a01b03161115615172579192915b613e45826001600160801b03168585036001600160a01b0316600160601b613ba4565b6060613e4584845f85615240565b5f826001600160a01b0316846001600160a01b031611156151c2579192915b5f6151e4856001600160a01b0316856001600160a01b0316600160601b613ba4565b905061166e6151ff84838888036001600160a01b0316613ba4565b61530c565b5f826001600160a01b0316846001600160a01b03161115615223579192915b613e456151ff83600160601b8787036001600160a01b0316613ba4565b6060824710156152a15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161179c565b5f80866001600160a01b031685876040516152bc9190615fd8565b5f6040518083038185875af1925050503d805f81146152f6576040519150601f19603f3d011682016040523d82523d5f602084013e6152fb565b606091505b509150915061205787838387615326565b806001600160801b0381168114615321575f80fd5b919050565b606083156153945782515f0361538d576001600160a01b0385163b61538d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161179c565b5081613e45565b613e4583838151156153a95781518083602001fd5b8060405162461bcd60e51b815260040161179c9190615410565b5f5b838110156153dd5781810151838201526020016153c5565b50505f910152565b5f81518084526153fc8160208601602086016153c3565b601f01601f19169290920160200192915050565b602081525f610c4e60208301846153e5565b6001600160a01b0381168114610f54575f80fd5b5f8060408385031215615447575f80fd5b823561545281615422565b946020939093013593505050565b5f60208284031215615470575f80fd5b8135610c4e81615422565b5f805f6060848603121561548d575f80fd5b833561549881615422565b925060208401356154a881615422565b915060408401356154b881615422565b809150509250925092565b5f805f606084860312156154d5575f80fd5b83356154e081615422565b925060208401356154f081615422565b929592945050506040919091013590565b6040516080810167ffffffffffffffff8111828210171561553057634e487b7160e01b5f52604160045260245ffd5b60405290565b5f82601f830112615545575f80fd5b61554d615501565b80608084018581111561555e575f80fd5b845b81811015615578578035845260209384019301615560565b509095945050505050565b5f60808284031215615593575f80fd5b610c4e8383615536565b60ff60f81b881681525f602060e0818401526155bc60e084018a6153e5565b83810360408501526155ce818a6153e5565b606085018990526001600160a01b038816608086015260a0850187905284810360c086015285518082528387019250908301905f5b8181101561561f57835183529284019291840191600101615603565b50909c9b505050505050505050505050565b8060020b8114610f54575f80fd5b5f805f805f805f6101a0888a031215615656575f80fd5b873561566181615631565b9650602088013561567181615631565b9550604088013561568181615631565b9450606088013561569181615631565b935060808801356156a181615422565b92506156b08960a08a01615536565b91506156c0896101208a01615536565b905092959891949750929550565b5f805f805f61010086880312156156e3575f80fd5b853594506020860135935060408601356156fc81615422565b9250606086013561570c81615422565b915061571b8760808801615536565b90509295509295909350565b6001600160801b0381168114610f54575f80fd5b5f805f806080858703121561574e575f80fd5b84359350602085013561576081615727565b93969395505050506040820135916060013590565b5f805f8060e08587031215615788575f80fd5b84359350602085013561579a81615422565b925060408501356157aa81615422565b91506157b98660608701615536565b905092959194509250565b60ff81168114610f54575f80fd5b5f602082840312156157e2575f80fd5b8135610c4e816157c4565b5f805f805f805f60e0888a031215615803575f80fd5b873561580e81615422565b9650602088013561581e81615422565b95506040880135945060608801359350608088013561583c816157c4565b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561586a575f80fd5b823561587581615422565b9150602083013561588581615422565b809150509250929050565b5f805f805f805f60e0888a0312156158a6575f80fd5b87356158b181615631565b965060208801356158c181615631565b95506040880135945060608801359350608088013561583c81615422565b5f80604083850312156158f0575f80fd5b50508035926020909101359150565b5f6020828403121561590f575f80fd5b8135610c4e81615631565b805161532181615631565b805161532181615727565b5f805f805f805f60e0888a031215615946575f80fd5b875161595181615422565b602089015190975061596281615631565b604089015190965061ffff81168114615979575f80fd5b606089015190955061598a816157c4565b608089015190945061599b81615727565b60a08901519093506159ac81615631565b60c08901519092506159bd81615631565b8091505092959891949750929550565b600181811c908216806159e157607f821691505b602082108103613df357634e487b7160e01b5f52602260045260245ffd5b5f60808284031215615a0f575f80fd5b615a17615501565b8251615a2281615422565b81526020830151615a3281615422565b60208201526040830151615a4581615422565b60408201526060928301519281019290925250919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156109f8576109f8615a5d565b5f60208284031215615a94575f80fd5b5051919050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601260045260245ffd5b5f8260020b80615ad557615ad5615aaf565b808360020b0791505092915050565b5f82615af257615af2615aaf565b500490565b818103818111156109f8576109f8615a5d565b81516001600160a01b0390811682526020808401518216908301526040808401519091169082015260608083015190820152608081016109f8565b5f60208284031215615b55575f80fd5b8151610c4e81615422565b805161532181615422565b80518015158114615321575f80fd5b5f805f805f8060c08789031215615b8f575f80fd5b8651615b9a81615727565b6020880151909650615bab81615727565b6040880151909550615bbc81615422565b606088015190945062ffffff81168114615bd4575f80fd5b9250615be260808801615b6b565b915060a0870151615bf281615422565b809150509295509295509295565b82516001600160a01b0390811682526020808501518216908301526040808501519091169082015260609283015192810192909252608082015260a00190565b5f8060408385031215615c51575f80fd5b505080516020909101519092909150565b815181526020808301516001600160a01b0316908201526040808301516001600160801b0390811691830191909152606092830151169181019190915260800190565b5f805f805f805f805f805f806101808d8f031215615cc1575f80fd5b8c516affffffffffffffffffffff81168114615cdb575f80fd5b9b50615ce960208e01615b60565b9a50615cf760408e01615b60565b9950615d0560608e01615b60565b9850615d1360808e01615b60565b9750615d2160a08e0161591a565b9650615d2f60c08e0161591a565b9550615d3d60e08e01615925565b94506101008d015193506101208d01519250615d5c6101408e01615925565b9150615d6b6101608e01615925565b90509295989b509295989b509295989b565b5f60208284031215615d8d575f80fd5b610c4e82615b6b565b8181035f831280158383131683831282161715615db557615db5615a5d565b5092915050565b80820281158282048414176109f8576109f8615a5d565b81516001600160a01b0316815261016081016020830151615dff60208401826001600160a01b03169052565b506040830151615e1a60408401826001600160a01b03169052565b506060830151615e2f606084018260020b9052565b506080830151615e44608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151615e8a828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215615eae575f80fd5b845193506020850151615ec081615727565b6040860151606090960151949790965092505050565b5f805f8060808587031215615ee9575f80fd5b8451615ef481615422565b6020860151909450615f0581615422565b6040860151909350615f1681615422565b6060959095015193969295505050565b5f805f60608486031215615f38575f80fd5b8351615f4381615727565b602085015160409095015190969495509392505050565b5f805f805f8060c08789031215615f6f575f80fd5b86519550602087015180600f0b8114615f86575f80fd5b6040880151909550615f9781615631565b6060880151909450615fa881615631565b809350506080870151915060a087015190509295509295509295565b634e487b7160e01b5f52602160045260245ffd5b5f8251615fe98184602087016153c3565b919091019291505056000000000000000000000000be3040bda2de61949d3acec64fa9a86dd5130b7b000000000000000000000000643b68bf3f855b8475c0a700b6d1020bfc21d02e00000000000000000000000080ad2f2ed4f00b152d7ca5e74920c944bfef070100000000000000000000000071e7d05be74ff748c45402c06a941c822d756dc500000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000961555344592d5448450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000961555344592d5448450000000000000000000000000000000000000000000000