UNPKG

@defi-wonderland/keep3r-v2

Version:

The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs

1,781 lines 96.8 kB
{ "_format": "hh-sol-artifact-1", "contractName": "Keep3rJobFundableLiquidityForTest", "sourceName": "solidity/for-test/peripherals/jobs/Keep3rJobFundableLiquidityForTest.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_kph", "type": "address" }, { "internalType": "address", "name": "_keep3rV1", "type": "address" }, { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" }, { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "BondsLocked", "type": "error" }, { "inputs": [], "name": "BondsUnexistent", "type": "error" }, { "inputs": [], "name": "Disputed", "type": "error" }, { "inputs": [], "name": "DisputerExistent", "type": "error" }, { "inputs": [], "name": "DisputerUnexistent", "type": "error" }, { "inputs": [], "name": "JobDisputed", "type": "error" }, { "inputs": [], "name": "JobLiquidityInsufficient", "type": "error" }, { "inputs": [], "name": "JobLiquidityLessThanMin", "type": "error" }, { "inputs": [], "name": "JobLiquidityUnexistent", "type": "error" }, { "inputs": [], "name": "JobUnavailable", "type": "error" }, { "inputs": [], "name": "LiquidityPairApproved", "type": "error" }, { "inputs": [], "name": "LiquidityPairUnapproved", "type": "error" }, { "inputs": [], "name": "LiquidityPairUnexistent", "type": "error" }, { "inputs": [], "name": "MinRewardPeriod", "type": "error" }, { "inputs": [], "name": "NoGovernanceZeroAddress", "type": "error" }, { "inputs": [], "name": "OnlyDisputer", "type": "error" }, { "inputs": [], "name": "OnlyGovernance", "type": "error" }, { "inputs": [], "name": "OnlyJobOwner", "type": "error" }, { "inputs": [], "name": "OnlyPendingGovernance", "type": "error" }, { "inputs": [], "name": "OnlyPendingJobOwner", "type": "error" }, { "inputs": [], "name": "OnlySlasher", "type": "error" }, { "inputs": [], "name": "SlasherExistent", "type": "error" }, { "inputs": [], "name": "SlasherUnexistent", "type": "error" }, { "inputs": [], "name": "UnbondsLocked", "type": "error" }, { "inputs": [], "name": "UnbondsUnexistent", "type": "error" }, { "inputs": [], "name": "ZeroAddress", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "BondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeper", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_bonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Bonding", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "DisputerRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "FeeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_pendingGovernance", "type": "address" } ], "name": "GovernanceProposal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_governance", "type": "address" } ], "name": "GovernanceSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "InflationPeriodChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "JobOwnershipAssent", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_pendingOwner", "type": "address" } ], "name": "JobOwnershipChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "Keep3rHelperChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "Keep3rV1Change", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "Keep3rV1ProxyChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "Kp3rWethPoolChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_liquidity", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_provider", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "LiquidityAddition", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "LiquidityApproval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_rewardedAt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_currentCredits", "type": "uint256" } ], "name": "LiquidityCreditsForced", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_rewardedAt", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_currentCredits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "_periodCredits", "type": "uint256" } ], "name": "LiquidityCreditsReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "LiquidityMinimumChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "LiquidityRevocation", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_job", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_liquidity", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "LiquidityWithdrawal", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "RewardPeriodTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "SlasherRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "UnbondTimeChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "_keeperOrJob", "type": "address" }, { "indexed": true, "internalType": "address", "name": "_unbonding", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "Unbonding", "type": "event" }, { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "acceptJobOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "addDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_liquidity", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "addLiquidityToJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "addSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "approveLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "approvedLiquidities", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "bondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "bonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canActivateAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "canWithdrawAfter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_newOwner", "type": "address" } ], "name": "changeJobOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "disputes", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "firstSeen", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "forceLiquidityCreditsToJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "governance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "hasBonded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "inflationPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "internalJobLiquidities", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "internalSettleJobAccountance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "jobLiquidityCredits", "outputs": [ { "internalType": "uint256", "name": "_liquidityCredits", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "jobOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "jobPendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "jobPeriodCredits", "outputs": [ { "internalType": "uint256", "name": "_periodCredits", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "jobTokenCredits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "jobs", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rHelper", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keep3rV1Proxy", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "keepers", "outputs": [ { "internalType": "address[]", "name": "_list", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "kp3rWethPool", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "liquidityAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityMinimum", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "observeLiquidity", "outputs": [ { "components": [ { "internalType": "int56", "name": "current", "type": "int56" }, { "internalType": "int56", "name": "difference", "type": "int56" }, { "internalType": "uint256", "name": "period", "type": "uint256" } ], "internalType": "struct IKeep3rJobFundableLiquidity.TickCache", "name": "_tickCache", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingBonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingGovernance", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "pendingUnbonds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "quoteLiquidity", "outputs": [ { "internalType": "uint256", "name": "_periodCredits", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_disputer", "type": "address" } ], "name": "removeDisputer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_slasher", "type": "address" } ], "name": "removeSlasher", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "revokeLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardPeriodTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardedAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "setApprovedLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_bondTime", "type": "uint256" } ], "name": "setBondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee", "type": "uint256" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_governance", "type": "address" } ], "name": "setGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_inflationPeriod", "type": "uint256" } ], "name": "setInflationPeriod", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "setJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "setJobLiquidity", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rHelper", "type": "address" } ], "name": "setKeep3rHelper", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1", "type": "address" } ], "name": "setKeep3rV1", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_keep3rV1Proxy", "type": "address" } ], "name": "setKeep3rV1Proxy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_kp3rWethPool", "type": "address" } ], "name": "setKp3rWethPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityMinimum", "type": "uint256" } ], "name": "setLiquidityMinimum", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "setRevokedLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardPeriodTime", "type": "uint256" } ], "name": "setRewardPeriodTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_unbondTime", "type": "uint256" } ], "name": "setUnbondTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "slashers", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" } ], "name": "totalJobCredits", "outputs": [ { "internalType": "uint256", "name": "_credits", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_liquidity", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "unbondLiquidityFromJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unbondTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "viewTickCache", "outputs": [ { "components": [ { "internalType": "int56", "name": "current", "type": "int56" }, { "internalType": "int56", "name": "difference", "type": "int56" }, { "internalType": "uint256", "name": "period", "type": "uint256" } ], "internalType": "struct IKeep3rJobFundableLiquidity.TickCache", "name": "_tickCache", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_liquidity", "type": "address" } ], "name": "viewTickOrder", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_job", "type": "address" }, { "internalType": "address", "name": "_liquidity", "type": "address" }, { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "withdrawLiquidityFromJob", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "workCompleted", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "workedAt", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b5060405162003b9b38038062003b9b8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b61393f806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106103475760003560e01c80638bb6dfa8116101c0578063b87fcbff11610100578063b87fcbff14610849578063c7ae40d01461086c578063cacdf93d1461087f578063cb4be2bb14610892578063cb54694d146108a5578063cd22af1b146108b8578063ddca3f43146108e3578063deaf81d4146108ec578063e326ac43146108ff578063e485dc0e1461091f578063ebbb619414610932578063ec00cdfc14610945578063f0f346b914610958578063f11a1d1a1461096b578063f136a09d1461097e578063f39c38a01461099e578063fc253d2b146109b1578063fe75bc46146109ba57600080fd5b80638bb6dfa8146106c05780638cb22b76146106d35780638fe204dd146106f6578063951dc22c1461070957806398e90a0f146107115780639d5c33d81461073a578063a21458091461074d578063a39744b514610760578063a662031b1461078b578063a676f9ff1461079e578063a7d2e784146107be578063aac6aa9c146107c7578063ab033ea9146107da578063b0103b1a146107ed578063b239223314610810578063b600702a14610823578063b7e773401461083657600080fd5b806352a4de291161028b57806352a4de2914610578578063594a3a931461058b57806359a2255e1461059e5780635aa6e675146105b15780635ebe23f0146105c4578063633fb68f146105cd57806364bb43ee146105d657806368a9f19c146105e9578063694798e6146105fc57806369fe0e2d146106275780636cf262bc1461063a57806372da828a1461064d57806375a9f7ff14610660578063768b5d90146106735780637b40c9131461067c5780637c8fce231461068f578063878c723e1461069757600080fd5b8063034d4c611461034c57806307b435c2146103725780630c620bce1461039d5780630d6a1f87146103b25780631101eb41146103c557806315006b82146103da578063160e1e3114610405578063165e62e714610418578063168f92e7146104555780631b44555e146104805780631ef94b91146104a057806321040b01146104c0578063238efcbc146104eb578063274a8db4146104f3578063280b656c146105265780633e525d2014610539578063454c50311461054c575b600080fd5b61035f61035a366004613451565b6109cd565b6040519081526020015b60405180910390f35b61035f61038036600461348b565b601260209081526000928352604080842090915290825290205481565b6103a5610ad3565b6040516103699190613698565b61035f6103c0366004613550565b610ae4565b6103d86103d336600461350f565b610bea565b005b61035f6103e836600461348b565b601060209081526000928352604080842090915290825290205481565b6103d8610413366004613451565b610d44565b61042b610426366004613451565b610eaa565b604080518251600690810b825260208085015190910b908201529181015190820152606001610369565b61035f61046336600461348b565b600960209081526000928352604080842090915290825290205481565b61035f61048e366004613451565b60056020526000908152604090205481565b601b546104b3906001600160a01b031681565b6040516103699190613628565b61035f6104ce36600461348b565b601360209081526000928352604080842090915290825290205481565b6103d861125b565b610516610501366004613451565b601a6020526000908152604090205460ff1681565b6040519015158152602001610369565b6103d8610534366004613451565b6112e7565b6103d8610547366004613451565b6112f6565b61051661055a366004613451565b6001600160a01b03166000908152600f602052604090205460ff1690565b6103d861058636600461350f565b611302565b6103d861059936600461348b565b611550565b6103d86105ac366004613451565b6115f5565b6017546104b3906001600160a01b031681565b61035f601f5481565b61035f60215481565b6103d86105e4366004613451565b6116a7565b6103d86105f7366004613451565b611729565b61035f61060a36600461348b565b602760209081526000928352604080842090915290825290205481565b6103d86106353660046135da565b6117e1565b61035f610648366004613451565b611841565b6103d861065b366004613451565b611977565b6103a561066e366004613451565b611a14565b61035f60225481565b601e546104b3906001600160a01b031681565b6103a5611a38565b6104b36106a5366004613451565b6001602052600090815260409020546001600160a01b031681565b61035f6106ce366004613451565b611a44565b6105166106e1366004613451565b60146020526000908152604090205460ff1681565b6103d86107043660046135da565b611ae7565b6103a5611b45565b6104b361071f366004613451565b6002602052600090815260409020546001600160a01b031681565b6103d8610748366004613451565b611b51565b6103d861075b3660046134c4565b611c09565b61035f61076e36600461348b565b600860209081526000928352604080842090915290825290205481565b6103d8610799366004613451565b611dd9565b61035f6107ac366004613451565b60286020526000908152604090205481565b61035f60205481565b6103d86107d5366004613451565b611de4565b6103d86107e8366004613451565b611e98565b6105166107fb366004613451565b60076020526000908152604090205460ff1681565b6103d861081e3660046135da565b611f0e565b6103d8610831366004613451565b611f6e565b6103d86108443660046135da565b612193565b610516610857366004613451565b60196020526000908152604090205460ff1681565b601c546104b3906001600160a01b031681565b61051661088d36600461348b565b6121f3565b6103d86108a0366004613451565b61221c565b6103d86108b33660046135da565b6122b9565b61035f6108c636600461348b565b601160209081526000928352604080842090915290825290205481565b61035f60245481565b6103d86108fa366004613451565b61233d565b61035f61090d366004613451565b60066020526000908152604090205481565b61042b61092d366004613451565b612348565b6103d86109403660046135da565b6123a4565b6103d8610953366004613451565b612404565b6103d8610966366004613451565b6124a1565b601d546104b3906001600160a01b031681565b61035f61098c366004613451565b60296020526000908152604090205481565b6018546104b3906001600160a01b031681565b61035f60235481565b6103d86109c8366004613550565b612555565b6000806109d983611841565b60225490915042906109f4906109ef9083613803565b612645565b6001600160a01b0385166000908152602860205260409020541115610a98576022546001600160a01b038516600090815260286020526040902054610a399042613803565b10610a75576022546001600160a01b038516600090815260286020526040902054610a649190613768565b610a6e9082613803565b9050610aae565b6001600160a01b038416600090815260286020526040902054610a6e9082613803565b610aa142612645565b610aab9082613803565b90505b610ab8818361265f565b610ac185611a44565b610acb9190613768565b949350505050565b6060610adf6025612689565b905090565b6000610af1602584612696565b15610be4576000610b0184610eaa565b90508060400151600014610be2576001600160a01b0384166000908152600f602052604081205460ff16610b42578160200151610b3d90613875565b610b48565b81602001515b601d5460225460405163a0d2710760e01b8152929350610bd9926001600160a01b039092169163a0d2710791610b84918991879160040161374f565b60206040518083038186803b158015610b9c57600080fd5b505afa158015610bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd491906135f3565b6126b8565b92505050610be4565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610c2657604051636efb4f4160e11b815260040160405180910390fd5b602054610c339042613768565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610c82908490613768565b90915550610c9390508484846126c9565b6001600160a01b038085166000908152602760209081526040808320938716835292905220548015801590610cd25750602154610cd082866128d7565b105b15610cf057604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610d3591815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610d6f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610d965760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610df7908490600401613628565b60206040518083038186803b158015610e0f57600080fd5b505afa158015610e23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e47919061357c565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610e9f908390613628565b60405180910390a150565b610eb261340f565b610ebb42612645565b6001600160a01b0383166000908152602a60205260409020600101541415610f3157506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b600080610f45602254426109ef9190613803565b6001600160a01b0385166000908152602a60205260409020600101549091508114156110a957604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602a602052604090205490915060060b610fb242612645565b610fbc9042613803565b82600081518110610fcf57610fcf6138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261102b929190911690869060040161363c565b60606040518083038186803b15801561104357600080fd5b505afa158015611057573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107b9190613597565b600692830b90920b808852919550611095918391506137b3565b600690810b900b6020860152506112329050565b6001600160a01b0384166000908152602a6020526040902060010154811115611232576040805160028082526060820183526000926020830190803683370190505090506110f642612645565b6111009042613803565b81600081518110611113576111136138de565b602002602001019063ffffffff16908163ffffffff168152505060225461113942612645565b6111439042613803565b61114d9190613768565b81600181518110611160576111606138de565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926111b8921690869060040161363c565b60606040518083038186803b1580156111d057600080fd5b505afa1580156111e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112089190613597565b600692830b90920b80885291955091506112239082906137b3565b600690810b900b602086015250505b811561124b5761124142612645565b6040840152611253565b600060408401525b50505b919050565b6018546001600160a01b0316331461128657604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b6916112dd91613628565b60405180910390a1565b6112f26025826129f5565b5050565b6112ff81612a0a565b50565b6002600054141561132e5760405162461bcd60e51b815260040161132590613718565b60405180910390fd5b600260005561133e602583612696565b61135b5760405163e0b6aead60e01b815260040160405180910390fd5b611366601584612696565b61138357604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d602052604090206113a590836129f5565b506113af83612a0a565b6021546001600160a01b038085166000908152602760209081526040808320938716835292905220546113ed906113e7908490613768565b846128d7565b101561140c57604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260286020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a261148a6001600160a01b038316333084612a68565b6001600160a01b038084166000908152602760209081526040808320938616835292905290812080548392906114c1908490613768565b909155506114d49050610bd482846128d7565b6001600160a01b0384166000908152600b6020526040812080549091906114fc908490613768565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b6001600160a01b03828116600090815260016020526040902054839116331461158c57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b0381811660009081526002602052604090205482911633146116315760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b031633146116d2576040516354348f0360e01b815260040160405180910390fd5b6116dd602582612ad9565b6116fa57604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610e9f9190613628565b6017546001600160a01b03163314611754576040516354348f0360e01b8152