4 txs
135 calls
constructor
constructor(address _feeProcessor, address _pm, address _posManagerAdapter, address _hook, address _bmx, address _incentiveGauge)
functions
BMX
viewfunction BMX() view returns (address)
collectBucket
viewfunction collectBucket(bytes32) view returns (uint256)
epochInfo
viewfunction epochInfo(bytes32) view returns (uint64 start, uint64 end, uint128 streamRate, uint128 nextStreamRate, uint128 queuedStreamRate)
feeProcessor
viewfunction feeProcessor() view returns (address)
getPoolData
viewfunction getPoolData(bytes32 pid) view returns (uint256 currentStreamRate, uint256 rewardsPerLiquidityX128, uint128 activeLiquidity)
getPoolDataBatch
viewfunction getPoolDataBatch(bytes32[] pids) view returns (uint256[] currentStreamRates, uint256[] rewardsPerLiquidityX128s, uint128[] activeLiquidities)
incentiveGauge
viewfunction incentiveGauge() view returns (address)
isHook
viewfunction isHook(address) view returns (bool)
nextEpochEndsIn
viewfunction nextEpochEndsIn(bytes32 pid) view returns (uint256 secondsLeft)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
pendingRewards
viewfunction pendingRewards(bytes32 posKey, uint128 currentLiquidity, bytes32 pid) view returns (uint256 amount)
pendingRewardsOwner
viewfunction pendingRewardsOwner(bytes32 pid, address owner) view returns (uint256 amount)
pendingRewardsOwnerBatch
viewfunction pendingRewardsOwnerBatch(bytes32[] pids, address owner) view returns (uint256[] amounts)
POOL_MANAGER
viewfunction POOL_MANAGER() view returns (address)
poolRewards
viewfunction poolRewards(bytes32) view returns (uint256 rewardsPerLiquidityCumulativeX128, uint128 liquidity, int24 tick, uint64 lastUpdated)
positionManagerAdapter
viewfunction positionManagerAdapter() view returns (address)
positionRewards
viewfunction positionRewards(bytes32) view returns (uint256 rewardsPerLiquidityLastX128, uint256 rewardsAccrued)
streamRate
viewfunction streamRate(bytes32 pid) view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
addRewards
nonpayablefunction addRewards(bytes32 poolId, uint256 amount)
claim
nonpayablefunction claim(address to, bytes32 positionKey) returns (uint256 amount)
claimAllForOwner
nonpayablefunction claimAllForOwner(bytes32[] pids, address owner) returns (uint256 totalBmx)
initPool
nonpayablefunction initPool(bytes32 pid, int24 initialTick)
notifyBurn
nonpayablefunction notifyBurn(uint256 tokenId, address ownerAddr, uint256 info, uint256 liquidity, int256)
notifyModifyLiquidity
nonpayablefunction notifyModifyLiquidity(uint256 tokenId, int256 liquidityChange, int256)
notifySubscribe
nonpayablefunction notifySubscribe(uint256 tokenId, bytes)
notifyUnsubscribe
nonpayablefunction notifyUnsubscribe(uint256 tokenId)
pokePool
nonpayablefunction pokePool(tuple key)
renounceOwnership
nonpayablefunction renounceOwnership()
rollIfNeeded
nonpayablefunction rollIfNeeded(bytes32 poolId)
setFeeProcessor
nonpayablefunction setFeeProcessor(address _fp)
setHook
nonpayablefunction setHook(address hook, bool enabled)
setPositionManagerAdapter
nonpayablefunction setPositionManagerAdapter(address _adapter)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
Claimed
event Claimed(address indexed user, uint256 amount)
EpochRolled
event EpochRolled(bytes32 indexed poolId, uint256 streamRate, uint256 timestamp)
FeeProcessorUpdated
event FeeProcessorUpdated(address newFeeProcessor)
HookAuthorised
event HookAuthorised(address hook, bool enabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
PositionManagerAdapterUpdated
event PositionManagerAdapterUpdated(address newAdapter)
RewardsAdded
event RewardsAdded(bytes32 indexed poolId, uint256 amount)
errors
NotFeeProcessor
error NotFeeProcessor()
NotHook
error NotHook()
NotSubscriber
error NotSubscriber()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ZeroAddress
error ZeroAddress()
creation bytecode
0x60c060405234801561000f575f80fd5b506040516139fc3803806139fc83398101604081905261002e91610183565b338061005357604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b61005c81610104565b50600b80546001600160a01b03199081166001600160a01b0389811691909117909255868216608052600a8054821687841617905583821660a052600c805490911683831617905583165f81815260086020908152604091829020805460ff191660019081179091558251938452908301527f969bb7542263e82515f30263de146111e882f6d42fc244c9624a924b2d197790910160405180910390a1505050505050610206565b600180546001600160a01b031916905561011d81610120565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461011d575f80fd5b5f805f805f8060c08789031215610198575f80fd5b86516101a38161016f565b60208801519096506101b48161016f565b60408801519095506101c58161016f565b60608801519094506101d68161016f565b60808801519093506101e78161016f565b60a08801519092506101f88161016f565b809150509295509295509295565b60805160a0516137c061023c5f395f8181610253015281816109c101526119bf01525f81816103d30152611ef001526137c05ff3fe608060405234801561000f575f80fd5b5060043610610235575f3560e01c80638da5cb5b1161013d578063c0e8d384116100b8578063d267652911610088578063e30c39781161006e578063e30c3978146106b6578063ef14b5d4146106c7578063f2fde38b146106da575f80fd5b8063d267652914610671578063d8865c27146106a3575f80fd5b8063c0e8d3841461054a578063c657d6c6146105d3578063c8622c241461063f578063c9cd10d214610652575f80fd5b8063a88848d41161010d578063af45dd14116100f3578063af45dd1414610511578063b1a9116f14610524578063bccf175e14610537575f80fd5b8063a88848d4146104c2578063aa17cc6c146104e2575f80fd5b80638da5cb5b1461045157806393327e071461046157806394f0d0bf1461049c57806396657955146104af575f80fd5b806354c366a4116101cd578063713f6a0a1161019d57806379ba50971161018357806379ba509714610423578063833e8db11461042b5780638d57f6b21461043e575f80fd5b8063713f6a0a14610408578063715018a61461041b575f80fd5b806354c366a4146103995780635b92a5f0146103bb57806362308e85146103ce5780636cef460b146103f5575f80fd5b80632d4d847d116102085780632d4d847d146102b85780633756bca614610352578063477415541461037357806348f60dfd14610386575f80fd5b806319e80dad146102395780631a6697791461024e5780631f19ab50146102925780632048e384146102a5575b5f80fd5b61024c610247366004612f7d565b6106ed565b005b6102757f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b600c54610275906001600160a01b031681565b61024c6102b3366004612fab565b61078f565b6103106102c6366004612fc4565b60026020525f90815260409020805460019091015467ffffffffffffffff80831692600160401b8104909116916001600160801b03600160801b9283900481169282821692041685565b6040805167ffffffffffffffff96871681529590941660208601526001600160801b03928316938501939093528116606084015216608082015260a001610289565b610365610360366004613037565b6107f2565b604051908152602001610289565b61024c610381366004612fc4565b610a78565b61024c61039436600461308a565b610b2e565b6103ac6103a73660046130aa565b610bcd565b60405161028993929190613123565b61024c6103c9366004613195565b610dd9565b6102757f000000000000000000000000000000000000000000000000000000000000000081565b600a54610275906001600160a01b031681565b61024c610416366004613195565b610e5d565b61024c610eda565b61024c610eed565b61024c6104393660046131bd565b610f36565b61024c61044c366004613257565b610fc7565b5f546001600160a01b0316610275565b61048761046f366004612fc4565b60056020525f90815260409020805460019091015482565b60408051928352602083019190915201610289565b600b54610275906001600160a01b031681565b6103656104bd3660046132f5565b61130d565b6104d56104d0366004613037565b61131f565b6040516102899190613318565b6103656104f0366004612fc4565b5f90815260026020526040902054600160801b90046001600160801b031690565b61024c61051f366004612fc4565b6113c1565b61024c61053236600461332a565b611701565b610365610545366004612fc4565b61193e565b610597610558366004612fc4565b60046020525f9081526040902080546001909101546001600160801b03811690600160801b810460020b90600160981b900467ffffffffffffffff1684565b60405161028994939291909384526001600160801b0392909216602084015260020b604083015267ffffffffffffffff16606082015260800190565b61061b6105e1366004612fc4565b5f90815260026020908152604080832054600490925290912080546001909101546001600160801b03600160801b90930483169391921690565b6040805193845260208401929092526001600160801b031690820152606001610289565b61036561064d36600461336e565b61197e565b610365610660366004612fc4565b60036020525f908152604090205481565b61069361067f366004613195565b60086020525f908152604090205460ff1681565b6040519015158152602001610289565b61024c6106b1366004613398565b611a74565b6001546001600160a01b0316610275565b6103656106d53660046133d5565b611de1565b61024c6106e8366004613195565b611e70565b335f9081526008602052604090205460ff1661071c576040516318e59f8760e31b815260040160405180910390fd5b5f82815260046020526040902060018101805467ffffffffffffffff4216600160981b0267ffffffffffffffff60981b1962ffffff8616600160801b02167fffffffffff0000000000000000000000ffffffffffffffffffffffffffffffff90921691909117179055505050565b505050565b335f9081526008602052604090205460ff166107be576040516318e59f8760e31b815260040160405180910390fd5b5f6107d86107d13684900384018461341a565b60a0902090565b905061078a6107ec3684900384018461341a565b82611ee0565b5f82815b81811015610908575f86868381811061081157610811613494565b602090810292909201355f8181526006845260408082206001600160a01b038b1683529094529283208054919450929091505b818110156108f9575f83828154811061085f5761085f613494565b5f91825260208083209091015480835260058252604080842060078452818520546009855282862080548c8852600490965292909520929550936001600160801b03169290916108cb9184916108c391600281810b9163010000009004900b611f57565b859190612025565b506001830180545f90915580156108e9576108e6818d6134bc565b9b505b5050505050806001019050610844565b505050508060010190506107f6565b50600c546001600160a01b03161561099557600c546040517f3756bca60000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633756bca690610967908890889088906004016134cf565b5f604051808303815f87803b15801561097e575f80fd5b505af1158015610990573d5f803e3d5ffd5b505050505b8115610a705760405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015610a07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a2b919061351c565b50826001600160a01b03167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a83604051610a6791815260200190565b60405180910390a25b509392505050565b5f81815260026020526040812080549091600160401b90910467ffffffffffffffff169003610b02575f610aab42612058565b825467ffffffffffffffff191667ffffffffffffffff82161783559050610ad562015180826134bc565b82546001600160801b0367ffffffffffffffff928316600160401b02169116178255505f60019091015550565b8054600160401b900467ffffffffffffffff164210610b2a57610b258282612070565b610b02565b5050565b600b546001600160a01b03163314610b72576040517fa806153400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526003602052604081208054839290610b8f9084906134bc565b909155505060405181815282907ffacfe21a3f9bcedcbf7b0629b67bd4f0ecac1a3367e1386b261ccaa24c3975329060200160405180910390a25050565b60608080838067ffffffffffffffff811115610beb57610beb6131e9565b604051908082528060200260200182016040528015610c14578160200160208202803683370190505b5093508067ffffffffffffffff811115610c3057610c306131e9565b604051908082528060200260200182016040528015610c59578160200160208202803683370190505b5092508067ffffffffffffffff811115610c7557610c756131e9565b604051908082528060200260200182016040528015610c9e578160200160208202803683370190505b5091505f5b81811015610dd05760025f888884818110610cc057610cc0613494565b9050602002013581526020019081526020015f205f0160109054906101000a90046001600160801b03166001600160801b0316858281518110610d0557610d05613494565b602002602001018181525050610d4160045f898985818110610d2957610d29613494565b9050602002013581526020019081526020015f205490565b848281518110610d5357610d53613494565b60200260200101818152505060045f888884818110610d7457610d74613494565b9050602002013581526020019081526020015f206001015f9054906101000a90046001600160801b0316838281518110610db057610db0613494565b6001600160801b0390921660209283029190910190910152600101610ca3565b50509250925092565b610de16121e0565b6001600160a01b038116610e085760405163d92e233d60e01b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040519081527f582ec7d55fe2da1a8f783baf37c5a38008a41c8cf5eaf7b8a448ee7ed9770cbf906020015b60405180910390a150565b610e656121e0565b6001600160a01b038116610e8c5760405163d92e233d60e01b815260040160405180910390fd5b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527ff1361b3dae4eebc0313ce3e5a9298704f8b58f9108bc0a094a41fc06f2908dd490602001610e52565b610ee26121e0565b610eeb5f61220c565b565b60015433906001600160a01b03168114610f2a5760405163118cdaa760e01b81526001600160a01b03821660048201526024015b60405180910390fd5b610f338161220c565b50565b610f3e6121e0565b6001600160a01b038216610f655760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0382165f81815260086020908152604091829020805460ff19168515159081179091558251938452908301527f969bb7542263e82515f30263de146111e882f6d42fc244c9624a924b2d197790910160405180910390a15050565b600a546001600160a01b03163314610ff25760405163251cb70160e11b815260040160405180910390fd5b600a54604051637ba03aad60e01b8152600481018490525f9182916001600160a01b0390911690637ba03aad9060240160c060405180830381865afa15801561103d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106191906135b0565b600a54604051631efeed3360e01b8152600481018890529294509092505f916001600160a01b0390911690631efeed3390602401602060405180830381865afa1580156110b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d491906135db565b600a546040516331a9108f60e11b8152600481018890529192505f916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611120573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061114491906135f6565b90505f6111528560a0902090565b905061115e8582611ee0565b506111cf604051806080016040528061117a8760081c60020b90565b60020b815260200161118f8760201c60020b90565b60020b81526020016111a9866001600160801b0316612225565b600f0b8152606088015160020b6020918201525f84815260049091526040902090612251565b5f826111de8660081c60020b90565b6111eb8760201c60020b90565b604080516001600160a01b039094166020850152600292830b90840152900b60608201526080810189905260a0810183905260c00160405160208183030381529060405280519060200120905061124860066007848685896123e8565b60405180604001604052806112608760081c60020b90565b60020b81526020016112758760201c60020b90565b60020b90525f82815260096020908152604090912082518154939092015162ffffff90811663010000000265ffffffffffff199094169216919091179190911790556113036112eb6112ca8760081c60020b90565b6112d78860201c60020b90565b5f8681526004602052604090209190611f57565b5f838152600560205260408120918255600190910155565b5050505050505050565b5f611318838361246f565b9392505050565b6060828067ffffffffffffffff81111561133b5761133b6131e9565b604051908082528060200260200182016040528015611364578160200160208202803683370190505b5091505f5b818110156113b85761139386868381811061138657611386613494565b905060200201358561246f565b8382815181106113a5576113a5613494565b6020908102919091010152600101611369565b50509392505050565b600a546001600160a01b031633146113ec5760405163251cb70160e11b815260040160405180910390fd5b600a54604051637ba03aad60e01b8152600481018390525f9182916001600160a01b0390911690637ba03aad9060240160c060405180830381865afa158015611437573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145b91906135b0565b600a54604051631efeed3360e01b8152600481018790529294509092505f916001600160a01b0390911690631efeed3390602401602060405180830381865afa1580156114aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ce91906135db565b600a546040516331a9108f60e11b8152600481018790529192505f916001600160a01b0390911690636352211e90602401602060405180830381865afa15801561151a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061153e91906135f6565b90505f61154c8560a0902090565b90506115588582611ee0565b505f818152600460205260409020611581816115778760081c60020b90565b8860600151612572565b611592816115778760201c60020b90565b505f826115a28660081c60020b90565b6115af8760201c60020b90565b604080516001600160a01b039094166020850152600292830b90840152900b60608201526080810188905260a0810183905260c001604051602081830303815290604052805190602001209050611645846116316116108860081c60020b90565b61161d8960201c60020b90565b5f8781526004602052604090209190611f57565b5f8481526005602052604090209190612025565b506116bf60405180608001604052806116618860081c60020b90565b60020b81526020016116768860201c60020b90565b60020b8152602001611690876001600160801b0316612225565b61169990613611565b600f0b8152606089015160020b6020918201525f85815260049091526040902090612251565b6116ce600660078486856125d1565b5f908152600960209081526040808320805465ffffffffffff191690556005909152812081815560010155505050505050565b600a546001600160a01b0316331461172c5760405163251cb70160e11b815260040160405180910390fd5b600a546040517f534674a6000000000000000000000000000000000000000000000000000000008152600481018590525f916001600160a01b03169063534674a69060240160a060405180830381865afa15801561178c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117b0919061363e565b90505f6117be8260a0902090565b90506117ca8282611ee0565b505f8181526004602052604090206117f3816117e98860081c60020b90565b8560600151612572565b611804816117e98860201c60020b90565b505f866118148760081c60020b90565b6118218860201c60020b90565b604080516001600160a01b039094166020850152600292830b90840152900b60608201526080810189905260a0810183905260c00160405160208183030381529060405280519060200120905061188f856116316118828960081c60020b90565b61161d8a60201c60020b90565b5061189f60066007848a856125d1565b5f818152600960209081526040808320805465ffffffffffff1916905560059091528082208281556001019190915580516080810190915261130390806118e98960081c60020b90565b60020b81526020016118fe8960201c60020b90565b60020b815260200161190f88612225565b61191890613611565b600f0b8152606086015160020b6020918201525f85815260049091526040902090612251565b5f81815260026020526040812054600160401b900467ffffffffffffffff1642811161196a575f611318565b6113184267ffffffffffffffff8316613658565b5f81815260056020526040812060010180549190558015611a6e5760405163a9059cbb60e01b81526001600160a01b038481166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015611a05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a29919061351c565b50826001600160a01b03167fd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a82604051611a6591815260200190565b60405180910390a25b92915050565b600a546001600160a01b03163314611a9f5760405163251cb70160e11b815260040160405180910390fd5b600a54604051637ba03aad60e01b8152600481018590525f9182916001600160a01b0390911690637ba03aad9060240160c060405180830381865afa158015611aea573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0e91906135b0565b915091505f611b1e8360a0902090565b9050611b2a8382611ee0565b50600a54604051631efeed3360e01b8152600481018890525f916001600160a01b031690631efeed3390602401602060405180830381865afa158015611b72573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9691906135db565b600a546040516331a9108f60e11b8152600481018a90529192505f916001600160a01b0390911690636352211e90602401602060405180830381865afa158015611be2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c0691906135f6565b90505f611c13888461366b565b5f858152600460205260409020909150611c3e81611c348860081c60020b90565b8960600151612572565b611c4f81611c348860201c60020b90565b505f82611c5f8760081c60020b90565b611c6c8860201c60020b90565b604080516001600160a01b039094166020850152600292830b90840152900b6060820152608081018b905260a0810186905260c001604051602081830303815290604052805190602001209050611cee82611631611ccd8960081c60020b90565b611cda8a60201c60020b90565b5f8a81526004602052604090209190611f57565b50611d566040518060800160405280611d0a8960081c60020b90565b60020b8152602001611d1f8960201c60020b90565b60020b8152602001611d308c6126b1565b600f0b815260608a015160020b6020918201525f88815260049091526040902090612251565b836001600160801b03165f03611da557611d75600660078786856125d1565b5f818152600960209081526040808320805465ffffffffffff191690556005909152812081815560010155611dd5565b5f81815260076020526040902080546fffffffffffffffffffffffffffffffff19166001600160801b0386161790555b50505050505050505050565b5f838152600560209081526040808320600983528184208154815487875260049095529285209193909285929091611e289190600281810b9163010000009004900b611f57565b611e329190613658565b9050600160801b611e4c6001600160801b038816836136aa565b611e5691906136d5565b8360010154611e6591906134bc565b979650505050505050565b611e786121e0565b600180546001600160a01b0383166001600160a01b03199091168117909155611ea85f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f611eea826126d2565b5f611f157f00000000000000000000000000000000000000000000000000000000000000008461272d565b50505f858152600260205260409020549092506113189150600160801b90046001600160801b031660608601515f8681526004602052604090209190846127f8565b5f8160020b8360020b12611f6c57505f611318565b6001840154600284810b600160801b909204900b1215611fb15750600281810b5f90815281850160205260408082206001908101549386900b83529120015403611318565b6001840154600283810b600160801b909204900b12611ff55750600282810b5f90815281850160205260408082206001908101549385900b83529120015403611318565b50600282810b5f90815281850160205260408082206001908101549385900b835291200154845403039392505050565b82545f908203612043816001600160801b038616600160801b61289e565b60018601805482019055929094555092915050565b5f61206662015180836136e8565b611a6e9083613658565b6001810180548254600160801b6001600160801b0380841682029281169290921785556fffffffffffffffffffffffffffffffff1983169204161790555f82815260036020526040812080549190556120cc62015180826136d5565b6001830180546001600160801b03928316600160801b029216919091179055815467ffffffffffffffff19811667ffffffffffffffff600160401b90920491909116908117835561212062015180826134bc565b83547fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16600160401b67ffffffffffffffff928316021784555f85815260046020908152604091829020600101805467ffffffffffffffff60981b1916600160981b948616949094029390931790925584548151600160801b9091046001600160801b0316815291820183905285917f79278a4288605fab3d42288f6fd660b2fe5a1d40186ae0e57ea342b91f134f79910160405180910390a250505050565b5f546001600160a01b03163314610eeb5760405163118cdaa760e01b8152336004820152602401610f21565b600180546001600160a01b0319169055610f338161293a565b5f6f80000000000000000000000000000000821061224d5761224d6393dafdf160e01b612989565b5090565b604080820151825160208085015184516080810186525f8082529281018390529485018290526060850191909152919290919083600f0b5f146123095761229a8684865f612991565b6001600160801b03166020830152151581526122b98683866001612991565b6001600160801b03166060830152151560408201528051156122ea5760608501516122ea9060038801908590612a4a565b8060400151156123095760608501516123099060038801908490612a4a565b5f84600f0b121561235b5780511561233657600283810b5f90815290870160205260408120818155600101555b80604001511561235b57600282810b5f90815290870160205260408120818155600101555b60018601548551600160801b909104600290810b91900b13801590612397575060208501516001870154600291820b600160801b90910490910b125b156123e05760018601546123b4906001600160801b031685612a9c565b6001870180546fffffffffffffffffffffffffffffffff19166001600160801b03929092169190911790555b505050505050565b5f828152602086905260408120546001600160801b03169003612435575f848152602087815260408083206001600160a01b03871684528252822080546001810182559083529120018290555b5f9182526020949094526040902080546fffffffffffffffffffffffffffffffff19166001600160801b0390941693909317909255505050565b5f828152600460209081526040808320600683528184206001600160a01b038616855290925282208054835b81811015612568575f8382815481106124b6576124b6613494565b5f9182526020808320909101548083526009825260408084206005909352832082549194509192906124f8908990600281810b9163010000009004900b611f57565b82549091505f906125099083613658565b5f86815260076020526040902054909150600160801b90612533906001600160801b0316836136aa565b61253d91906136d5565b836001015461254c91906134bc565b612556908b6134bc565b9950505050505080600101905061249b565b5050505092915050565b600282810b5f90815290840160205260408120805490916001600160801b0390911690036125cb57835460018083019190915581546fffffffffffffffffffffffffffffffff19161781556125cb600385018484612a4a565b50505050565b5f8181526020858152604080832080546fffffffffffffffffffffffffffffffff191690558583528782528083206001600160a01b03861684529091528120805490915b81811015611303578383828154811061263057612630613494565b905f5260205f200154036126a9578261264a600184613658565b8154811061265a5761265a613494565b905f5260205f20015483828154811061267557612675613494565b905f5260205f20018190555082805480612691576126916136fb565b600190038181905f5260205f20015f90559055611303565b600101612615565b80600f81900b81146126cd576126cd6393dafdf160e01b612989565b919050565b5f81815260026020526040812080549091600160401b90910467ffffffffffffffff169003612705575f610aab42612058565b8054600160401b900467ffffffffffffffff164210610b2a576127288282612070565b612705565b5f805f805f61273b86612ac3565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa15801561279c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906127c0919061370f565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b6001840154600160981b900467ffffffffffffffff165f03612870576001840180547fffffffffff0000000000000000000000ffffffffffffffffffffffffffffffff16600160801b62ffffff84160267ffffffffffffffff60981b191617600160981b4267ffffffffffffffff16021790556125cb565b61287a8484612aff565b6001840154600282810b600160801b909204900b146125cb576125cb848383612bc4565b5f838302815f19858709828110838203039150508084116128bd575f80fd5b805f036128cf57508290049050611318565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805f5260045ffd5b600283810b5f9081529085016020526040812080548291906001600160801b03811690600160801b9004600f0b6129c88288612a9c565b6001600160801b03808216159084168015919091141596509094505f03612a0b576001890154600160801b9004600290810b9089900b13612a0b57885460018401555b5f86612a2057612a1b8883613726565b612a2a565b612a2a888361366b565b90508060801b6001600160801b0386161784555050505094509492505050565b600291820b910b80820715612a775760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b6001600160801b038216600f82900b01608081901c15611a6e576393dafdf15f526004601cfd5b6040515f90612ae2908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b805f03612b0a575050565b60018201545f90612b2c90600160981b900467ffffffffffffffff1642613658565b9050805f03612b3a57505050565b60018301805467ffffffffffffffff4216600160981b0267ffffffffffffffff60981b19821681179092556001600160801b039182169116175f03612b7e57505050565b5f612b8982846136aa565b6001850154909150612ba8906001600160801b0316608083901b6136d5565b845f015f828254612bb991906134bc565b909155505050505050565b6001830154600160801b9004600290810b905f9083900b8212801590612c5b575b8260020b8460020b1215612c56575f80612c056003890186896001612d12565b915091508560020b8260020b13612c1d575050612cc0565b8015612c42575f612c3289848b5f0154612dff565b9050612c3e818661366b565b9450505b612c4d600183613765565b94505050612be5565b612cc0565b8360020b8360020b1215612cc0575f80612c7a60038901868984612d12565b915091508560020b8260020b1315612c93575050612cc0565b8015612cb8575f612ca889848b5f0154612dff565b9050612cb48186613726565b9450505b509250612c5b565b60018601805462ffffff8616600160801b027fffffffffffffffffffffffffff000000ffffffffffffffffffffffffffffffff821681179092556123b4916001600160801b0390811691161783612a9c565b5f80600284810b9086900b8181078313919005038315612d9157600281900b60081d600181900b5f908152602089905260409020545f1960ff808516908190039190911c918216801515955090919085612d7357888360ff16860302612d86565b88612d7d82612e4a565b840360ff168603025b965050505050612df5565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b011990811680151595509293919285612ddb57888360ff0360ff16860102612dee565b8883612de683612ed5565b0360ff168601025b9650505050505b5094509492505050565b600282810b5f9081529084016020526040812080546001600160801b03168203612e2c575f915050611318565b6001810180548403905554600160801b9004600f0b90509392505050565b5f808211612e56575f80fd5b507f0706060506020500060203020504000106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6001600160801b03841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b5f808211612ee1575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b15031604055f8290039091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b8060020b8114610f33575f80fd5b5f8060408385031215612f8e575f80fd5b823591506020830135612fa081612f6f565b809150509250929050565b5f60a0828403128015612fbc575f80fd5b509092915050565b5f60208284031215612fd4575f80fd5b5035919050565b5f8083601f840112612feb575f80fd5b50813567ffffffffffffffff811115613002575f80fd5b6020830191508360208260051b850101111561301c575f80fd5b9250929050565b6001600160a01b0381168114610f33575f80fd5b5f805f60408486031215613049575f80fd5b833567ffffffffffffffff81111561305f575f80fd5b61306b86828701612fdb565b909450925050602084013561307f81613023565b809150509250925092565b5f806040838503121561309b575f80fd5b50508035926020909101359150565b5f80602083850312156130bb575f80fd5b823567ffffffffffffffff8111156130d1575f80fd5b6130dd85828601612fdb565b90969095509350505050565b5f8151808452602084019350602083015f5b828110156131195781518652602095860195909101906001016130fb565b5093949350505050565b606081525f61313560608301866130e9565b828103602084015261314781866130e9565b8381036040850152845180825260208087019350909101905f5b818110156131885783516001600160801b0316835260209384019390920191600101613161565b5090979650505050505050565b5f602082840312156131a5575f80fd5b813561131881613023565b8015158114610f33575f80fd5b5f80604083850312156131ce575f80fd5b82356131d981613023565b91506020830135612fa0816131b0565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715613220576132206131e9565b60405290565b604051601f8201601f1916810167ffffffffffffffff8111828210171561324f5761324f6131e9565b604052919050565b5f8060408385031215613268575f80fd5b82359150602083013567ffffffffffffffff811115613285575f80fd5b8301601f81018513613295575f80fd5b803567ffffffffffffffff8111156132af576132af6131e9565b6132c2601f8201601f1916602001613226565b8181528660208385010111156132d6575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f8060408385031215613306575f80fd5b823591506020830135612fa081613023565b602081525f61131860208301846130e9565b5f805f805f60a0868803121561333e575f80fd5b85359450602086013561335081613023565b94979496505050506040830135926060810135926080909101359150565b5f806040838503121561337f575f80fd5b823561338a81613023565b946020939093013593505050565b5f805f606084860312156133aa575f80fd5b505081359360208301359350604090920135919050565b6001600160801b0381168114610f33575f80fd5b5f805f606084860312156133e7575f80fd5b8335925060208401356133f9816133c1565b929592945050506040919091013590565b62ffffff81168114610f33575f80fd5b5f60a082840312801561342b575f80fd5b506134346131fd565b823561343f81613023565b8152602083013561344f81613023565b602082015260408301356134628161340a565b6040820152606083013561347581612f6f565b6060820152608083013561348881613023565b60808201529392505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611a6e57611a6e6134a8565b604080825281018390525f8460608301825b868110156134ff5782358252602092830192909101906001016134e1565b5080925050506001600160a01b0383166020830152949350505050565b5f6020828403121561352c575f80fd5b8151611318816131b0565b5f60a08284031215613547575f80fd5b61354f6131fd565b9050815161355c81613023565b8152602082015161356c81613023565b6020820152604082015161357f8161340a565b6040820152606082015161359281612f6f565b606082015260808201516135a581613023565b608082015292915050565b5f8060c083850312156135c1575f80fd5b6135cb8484613537565b915060a083015190509250929050565b5f602082840312156135eb575f80fd5b8151611318816133c1565b5f60208284031215613606575f80fd5b815161131881613023565b5f81600f0b6f7fffffffffffffffffffffffffffffff198103613636576136366134a8565b5f0392915050565b5f60a0828403121561364e575f80fd5b6113188383613537565b81810381811115611a6e57611a6e6134a8565b600f82810b9082900b036f7fffffffffffffffffffffffffffffff1981126f7fffffffffffffffffffffffffffffff82131715611a6e57611a6e6134a8565b8082028115828204841417611a6e57611a6e6134a8565b634e487b7160e01b5f52601260045260245ffd5b5f826136e3576136e36136c1565b500490565b5f826136f6576136f66136c1565b500690565b634e487b7160e01b5f52603160045260245ffd5b5f6020828403121561371f575f80fd5b5051919050565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715611a6e57611a6e6134a8565b600282810b9082900b03627fffff198112627fffff82131715611a6e57611a6e6134a856fea2646970667358221220d076a20428016adc1d389f16c61d1bd3aeeec4624681da25804dee0faf8bf23664736f6c634300081a00330000000000000000000000000000000000000000000000000000000000000000000000000000000000000000498581ff718922c3f8e6a244956af099b2652b2b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066989c71705debb446d6b83d76cbabdd502cb0cc000000000000000000000000548f93779fbc992010c07467cbaf329dd5f059b7000000000000000000000000c8c4b6bdd73bff1039c58b3e14d58e4df5d64441