{
  "_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": "BASE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MIN_REWARD_PERIOD_TIME",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b5060405162003cf938038062003cf98339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b613a9d806200025c6000396000f3fe608060405234801561001057600080fd5b506004361061041d5760003560e01c80638bb6dfa81161022b578063c7ae40d011610130578063ebbb6194116100b8578063f11a1d1a11610087578063f11a1d1a14610ac2578063f136a09d14610ad5578063f39c38a014610af5578063fc253d2b14610b08578063fe75bc4614610b1157600080fd5b8063ebbb619414610a80578063ec00cdfc14610a93578063ec342ad014610aa6578063f0f346b914610aaf57600080fd5b8063cd22af1b116100ff578063cd22af1b146109a3578063ddca3f43146109ce578063deaf81d4146109d7578063e326ac43146109ea578063e485dc0e14610a0a57600080fd5b8063c7ae40d014610957578063cacdf93d1461096a578063cb4be2bb1461097d578063cb54694d1461099057600080fd5b8063a676f9ff116101b3578063b0103b1a11610182578063b0103b1a146108d8578063b2392233146108fb578063b600702a1461090e578063b7e7734014610921578063b87fcbff1461093457600080fd5b8063a676f9ff14610889578063a7d2e784146108a9578063aac6aa9c146108b2578063ab033ea9146108c557600080fd5b806398e90a0f116101fa57806398e90a0f146107fc5780639d5c33d814610825578063a214580914610838578063a39744b51461084b578063a662031b1461087657600080fd5b80638bb6dfa8146107ab5780638cb22b76146107be5780638fe204dd146107e1578063951dc22c146107f457600080fd5b8063461411bc11610331578063694798e6116102b957806375a9f7ff1161028857806375a9f7ff1461074b578063768b5d901461075e5780637b40c913146107675780637c8fce231461077a578063878c723e1461078257600080fd5b8063694798e6146106e757806369fe0e2d146107125780636cf262bc1461072557806372da828a1461073857600080fd5b80635aa6e675116103005780635aa6e6751461069c5780635ebe23f0146106af578063633fb68f146106b857806364bb43ee146106c157806368a9f19c146106d457600080fd5b8063461411bc1461065957806352a4de2914610663578063594a3a931461067657806359a2255e1461068957600080fd5b8063168f92e7116103b4578063238efcbc11610383578063238efcbc146105cc578063274a8db4146105d4578063280b656c146106075780633e525d201461061a578063454c50311461062d57600080fd5b8063168f92e71461052b5780631b44555e146105565780631ef94b911461057657806321040b01146105a157600080fd5b80631101eb41116103f05780631101eb411461049b57806315006b82146104b0578063160e1e31146104db578063165e62e7146104ee57600080fd5b8063034d4c611461042257806307b435c2146104485780630c620bce146104735780630d6a1f8714610488575b600080fd5b610435610430366004613613565b610b24565b6040519081526020015b60405180910390f35b61043561045636600461364d565b601260209081526000928352604080842090915290825290205481565b61047b610c29565b60405161043f9190613846565b610435610496366004613712565b610c3a565b6104ae6104a93660046136d1565b610d4d565b005b6104356104be36600461364d565b601060209081526000928352604080842090915290825290205481565b6104ae6104e9366004613613565b610ea7565b6105016104fc366004613613565b611004565b604080518251600690810b825260208085015190910b90820152918101519082015260600161043f565b61043561053936600461364d565b600960209081526000928352604080842090915290825290205481565b610435610564366004613613565b60056020526000908152604090205481565b601b54610589906001600160a01b031681565b6040516001600160a01b03909116815260200161043f565b6104356105af36600461364d565b601360209081526000928352604080842090915290825290205481565b6104ae6113ca565b6105f76105e2366004613613565b601a6020526000908152604090205460ff1681565b604051901515815260200161043f565b6104ae610615366004613613565b611453565b6104ae610628366004613613565b611462565b6105f761063b366004613613565b6001600160a01b03166000908152600f602052604090205460ff1690565b6104356201518081565b6104ae6106713660046136d1565b61146e565b6104ae61068436600461364d565b6116e8565b6104ae610697366004613613565b61178d565b601754610589906001600160a01b031681565b610435601f5481565b61043560215481565b6104ae6106cf366004613613565b61183f565b6104ae6106e2366004613613565b6118cb565b6104356106f536600461364d565b602760209081526000928352604080842090915290825290205481565b6104ae61072036600461379c565b611984565b610435610733366004613613565b6119e4565b6104ae610746366004613613565b611b2c565b61047b610759366004613613565b611bcc565b61043560225481565b601e54610589906001600160a01b031681565b61047b611bf0565b610589610790366004613613565b6001602052600090815260409020546001600160a01b031681565b6104356107b9366004613613565b611bfc565b6105f76107cc366004613613565b60146020526000908152604090205460ff1681565b6104ae6107ef36600461379c565b611cd4565b61047b611d32565b61058961080a366004613613565b6002602052600090815260409020546001600160a01b031681565b6104ae610833366004613613565b611d3e565b6104ae610846366004613686565b611df7565b61043561085936600461364d565b600860209081526000928352604080842090915290825290205481565b6104ae610884366004613613565b611fd7565b610435610897366004613613565b60286020526000908152604090205481565b61043560205481565b6104ae6108c0366004613613565b611fe2565b6104ae6108d3366004613613565b612097565b6105f76108e6366004613613565b60076020526000908152604090205460ff1681565b6104ae61090936600461379c565b612110565b6104ae61091c366004613613565b612170565b6104ae61092f36600461379c565b612390565b6105f7610942366004613613565b60196020526000908152604090205460ff1681565b601c54610589906001600160a01b031681565b6105f761097836600461364d565b6123f0565b6104ae61098b366004613613565b612419565b6104ae61099e36600461379c565b6124b9565b6104356109b136600461364d565b601160209081526000928352604080842090915290825290205481565b61043560245481565b6104ae6109e5366004613613565b61253d565b6104356109f8366004613613565b60066020526000908152604090205481565b610501610a18366004613613565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03949094168452602a825292829020825193840183528054600681810b810b810b8652600160381b909104810b810b900b91840191909152600101549082015290565b6104ae610a8e36600461379c565b612548565b6104ae610aa1366004613613565b6125a8565b61043561271081565b6104ae610abd366004613613565b612648565b601d54610589906001600160a01b031681565b610435610ae3366004613613565b60296020526000908152604090205481565b601854610589906001600160a01b031681565b61043560235481565b6104ae610b1f366004613712565b6126fd565b600080610b30836119e4565b90506000610b4a60225442610b459190613961565b6127ed565b6001600160a01b0385166000908152602860205260409020541115610bee576022546001600160a01b038516600090815260286020526040902054610b8f9042613961565b10610bcb576022546001600160a01b038516600090815260286020526040902054610bba91906138c6565b610bc49042613961565b9050610c04565b6001600160a01b038416600090815260286020526040902054610bc49042613961565b610bf7426127ed565b610c019042613961565b90505b610c0e8183612807565b610c1785611bfc565b610c2191906138c6565b949350505050565b6060610c356025612831565b905090565b6000610c4760258461283e565b15610d47576000610c5784611004565b90508060400151600014610d45576001600160a01b0384166000908152600f602052604081205460ff16610c98578160200151610c93906139d3565b610c9e565b81602001515b601d5460225460405163a0d2710760e01b815260048101889052600684900b60248201526044810191909152919250610d3c916001600160a01b039091169063a0d27107906064015b60206040518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3791906137b5565b612860565b92505050610d47565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d8957604051636efb4f4160e11b815260040160405180910390fd5b602054610d9690426138c6565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610de59084906138c6565b90915550610df69050848484612871565b6001600160a01b038085166000908152602760209081526040808320938716835292905220548015801590610e355750602154610e338286612aaf565b105b15610e5357604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e9891815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610ed2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610ef95760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b031992831681179093556000838152600e60205260409081902080549093168417909255601d54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b158015610f6d57600080fd5b505afa158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa5919061373e565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b604080516060810182526000808252602082018190529181019190915261102a426127ed565b6001600160a01b0383166000908152602a602052604090206001015414156110a057506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6000806110b460225442610b459190613961565b6001600160a01b0385166000908152602a602052604090206001015490915081141561121857604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602a602052604090205490915060060b611121426127ed565b61112b9042613961565b8260008151811061113e5761113e613a3c565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261119a92919091169086906004016137ea565b60606040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190613759565b600692830b90920b80885291955061120491839150613911565b600690810b900b6020860152506113a19050565b6001600160a01b0384166000908152602a60205260409020600101548111156113a157604080516002808252606082018352600092602083019080368337019050509050611265426127ed565b61126f9042613961565b8160008151811061128257611282613a3c565b602002602001019063ffffffff16908163ffffffff16815250506022546112a8426127ed565b6112b29042613961565b6112bc91906138c6565b816001815181106112cf576112cf613a3c565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d919261132792169086906004016137ea565b60606040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190613759565b600692830b90920b8088529195509150611392908290613911565b600690810b900b602086015250505b81156113ba576113b0426127ed565b60408401526113c2565b600060408401525b50505b919050565b6018546001600160a01b031633146113f557604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b61145e602582612bd7565b5050565b61146b81612bec565b50565b600260005414156114c65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556114d660258361283e565b6114f35760405163e0b6aead60e01b815260040160405180910390fd5b6114fe60158461283e565b61151b57604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d6020526040902061153d9083612bd7565b5061154783612bec565b6021546001600160a01b038085166000908152602760209081526040808320938716835292905220546115859061157f9084906138c6565b84612aaf565b10156115a457604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260286020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26116226001600160a01b038316333084612c4a565b6001600160a01b038084166000908152602760209081526040808320938616835292905290812080548392906116599084906138c6565b9091555061166c9050610d378284612aaf565b6001600160a01b0384166000908152600b6020526040812080549091906116949084906138c6565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b6001600160a01b03828116600090815260016020526040902054839116331461172457604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b0381811660009081526002602052604090205482911633146117c95760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b0316331461186a576040516354348f0360e01b815260040160405180910390fd5b611875602582612cbb565b61189257604051630a8d08b160e01b815260040160405180910390fd5b6040516001600160a01b03821681527f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5690602001610ff9565b6017546001600160a01b031633146118f6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16156119305760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b9101610ff9565b6017546001600160a01b031633146119af576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610ff9565b6000805b6001600160a01b0383166000908152600d60205260409020611a0990612cd0565b811015611b26576001600160a01b0383166000908152600d60205260408120611a329083612cda565b9050611a3f60258261283e565b15611b13576000611a4f82611004565b90508060400151600014611b11576001600160a01b0382166000908152600f602052604081205460ff16611a90578160200151611a8b906139d3565b611a96565b81602001515b601d546001600160a01b03888116600090815260276020908152604080832089851684529091529081902054602254915163a0d2710760e01b81526004810191909152600685900b60248201526044810191909152929350611b039291169063a0d2710790606401610ce7565b611b0d90866138c6565b9450505b505b5080611b1e816139a4565b9150506119e8565b50919050565b6017546001600160a01b03163314611b57576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611b7e5760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090602001610ff9565b6001600160a01b0381166000908152600d60205260409020606090610d4790612831565b6060610c356015612831565b600080611c08836119e4565b9050611c1b60225442610b459190613961565b6001600160a01b0384166000908152602860205260409020541115610d47576022546001600160a01b038416600090815260286020526040902054611c609042613961565b10611c6d57809150611b26565b60008111611c93576001600160a01b0383166000908152600a6020526040902054611ccd565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611cc39083906138f2565b611ccd91906138de565b9150611b26565b6017546001600160a01b03163314611cff576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610ff9565b6060610c356003612831565b6017546001600160a01b03163314611d69576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1615611da35760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f9101610ff9565b6001600160a01b038381166000908152600160205260409020548491163314611e3357604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b038216611e5a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260126020908152604080832093871683529290522054611e9d5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211611ee2576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff1615611f1c576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526013602090815260408083209387168084529390915290205490611f51908483612ce6565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca792886284604051611fa091815260200190565b60405180910390a45050506001600160a01b0391821660009081526013602090815260408083209390941682529190915290812055565b61145e601582612bd7565b6017546001600160a01b0316331461200d576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16612046576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d0259101610ff9565b6017546001600160a01b031633146120c2576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90602001610ff9565b6017546001600160a01b0316331461213b576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610ff9565b6017546001600160a01b0316331461219b576040516354348f0360e01b815260040160405180910390fd5b6121a6602582612bd7565b6121c35760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121fc57600080fd5b505afa158015612210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122349190613630565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561229d57600080fd5b505afa1580156122b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d5919061373e565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561230581611004565b6001600160a01b0382166000818152602a60209081526040918290208451815486840151600690810b66ffffffffffffff908116600160381b026001600160701b03199093169390910b169190911717815593820151600190940193909355519081527fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b9101610ff9565b6017546001600160a01b031633146123bb576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610ff9565b6001600160a01b0382166000908152600d602052604081206124129083612bd7565b9392505050565b6017546001600160a01b03163314612444576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661246b5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090602001610ff9565b6017546001600160a01b031633146124e4576040516354348f0360e01b815260040160405180910390fd5b6201518081101561250857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610ff9565b61145e602582612cbb565b6017546001600160a01b03163314612573576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610ff9565b6017546001600160a01b031633146125d3576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166125fa5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90602001610ff9565b6017546001600160a01b03163314612673576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff166126ac57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e9101610ff9565b6017546001600160a01b03163314612728576040516354348f0360e01b815260040160405180910390fd5b61273360158361283e565b61275057604051636211d34960e01b815260040160405180910390fd5b61275982612bec565b6001600160a01b0382166000908152600a6020526040812080548392906127819084906138c6565b90915550506001600160a01b038216600081815260286020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926127e1928252602082015260400190565b60405180910390a25050565b6000602254826127fd91906139bf565b610d479083613961565b6000602254831015611b265760225461282083856138f2565b61282a91906138de565b9050610d47565b6060600061241283612d1b565b6001600160a01b03811660009081526001830160205260408120541515612412565b6000610d4782602254602354612d77565b600260005414156128c45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016114bd565b600260009081556001600160a01b0384168152600d602052604090206128ea908361283e565b612906576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b0380841660009081526027602090815260408083209386168352929052205481111561294c5760405163435b562560e01b815260040160405180910390fd5b61295583612e25565b6000612964610d378385612aaf565b6001600160a01b0385166000908152600b602052604090205490915015612a1a576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546129b59083906138f2565b6129bf91906138de565b6001600160a01b0385166000908152600a6020526040812080549091906129e7908490613961565b90915550506001600160a01b0384166000908152600b602052604081208054839290612a14908490613961565b90915550505b6001600160a01b03808516600090815260276020908152604080832093871683529290529081208054849290612a51908490613961565b90915550506001600160a01b03808516600090815260276020908152604080832093871683529290522054612aa4576001600160a01b0384166000908152600d60205260409020612aa29084612cbb565b505b505060016000555050565b6001600160a01b0381166000908152602a602052604081206001015415610d47576001600160a01b0382166000908152600f602052604081205460ff16612b21576001600160a01b0383166000908152602a6020526040902054612b1c90600160381b900460060b6139d3565b612b45565b6001600160a01b0383166000908152602a6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b815260048101889052600684900b602482015260448101919091529192506001600160a01b03169063a0d271079060640160206040518083038186803b158015612b9f57600080fd5b505afa158015612bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906137b5565b6000612412836001600160a01b038416612e4a565b612bf581612e99565b50612bff8161306f565b6001600160a01b0381166000908152600a6020908152604080832054600b90925290912054612c2e91906130fd565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b0380851660248301528316604482015260648101829052612cb59085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613113565b50505050565b6000612412836001600160a01b0384166131e5565b6000610d47825490565b600061241283836132d8565b6040516001600160a01b038316602482015260448101829052612d1690849063a9059cbb60e01b90606401612c7e565b505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612d6b57602002820191906000526020600020905b815481526020019060010190808311612d57575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415612db15760008411612da657600080fd5b508290049050612412565b808411612dbd57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b612e2e81613302565b6001600160a01b039091166000908152600b6020526040902055565b6000818152600183016020526040812054612e9157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000612ea4426127ed565b6001600160a01b03831660009081526028602052604090205410156113c557612ed460225442610b459190613961565b6001600160a01b03831660009081526028602052604090205411612f4a57612efb82612e25565b6001600160a01b0382166000908152600b6020908152604080832054600a90925290912055612f29426127ed565b6001600160a01b038316600090815260286020526040902055506001919050565b6022546001600160a01b038316600090815260286020526040902054612f709042613961565b10612fcc57612f7e82612e25565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460289092528220805491929091612fbd9084906138c6565b90915550600191506113c59050565b612fd5426127ed565b6001600160a01b03831660009081526029602052604090205410156113c5576001600160a01b0382166000908152600b602052604090205461301683612e25565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291613046916138f2565b61305091906138de565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b0381166000908152602860205260409020546130b4906130969042613961565b6001600160a01b0383166000908152600b6020526040902054612807565b6001600160a01b0382166000908152600a6020526040812080549091906130dc9084906138c6565b90915550506001600160a01b03166000908152602860205260409020429055565b600081831061310c5781612412565b5090919050565b6000613168826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134e69092919063ffffffff16565b805190915015612d165780806020019051810190613186919061373e565b612d165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016114bd565b600081815260018301602052604081205480156132ce576000613209600183613961565b855490915060009061321d90600190613961565b905081811461328257600086600001828154811061323d5761323d613a3c565b906000526020600020015490508087600001848154811061326057613260613a3c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061329357613293613a26565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d47565b6000915050610d47565b60008260000182815481106132ef576132ef613a3c565b9060005260206000200154905092915050565b600061330d426127ed565b601e546001600160a01b03166000908152602a6020526040902060010154146133a457601e54613345906001600160a01b0316611004565b601e546001600160a01b03166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d602052604090206133c890612cd0565b811015611b26576001600160a01b0383166000908152600d602052604081206133f19083612cda565b90506133fe60258261283e565b156134d35761340c426127ed565b6001600160a01b0382166000908152602a6020526040902060010154146134925761343681611004565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b038085166000908152602760209081526040808320938516835292905220546134c690610d379083612aaf565b6134d090846138c6565b92505b50806134de816139a4565b9150506133a7565b6060610c21848460008585843b61353f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016114bd565b600080866001600160a01b0316858760405161355b91906137ce565b60006040518083038185875af1925050503d8060008114613598576040519150601f19603f3d011682016040523d82523d6000602084013e61359d565b606091505b50915091506135ad8282866135b8565b979650505050505050565b606083156135c7575081612412565b8251156135d75782518084602001fd5b8160405162461bcd60e51b81526004016114bd9190613893565b805180151581146113c557600080fd5b8051600681900b81146113c557600080fd5b60006020828403121561362557600080fd5b813561241281613a52565b60006020828403121561364257600080fd5b815161241281613a52565b6000806040838503121561366057600080fd5b823561366b81613a52565b9150602083013561367b81613a52565b809150509250929050565b60008060006060848603121561369b57600080fd5b83356136a681613a52565b925060208401356136b681613a52565b915060408401356136c681613a52565b809150509250925092565b6000806000606084860312156136e657600080fd5b83356136f181613a52565b9250602084013561370181613a52565b929592945050506040919091013590565b6000806040838503121561372557600080fd5b823561373081613a52565b946020939093013593505050565b60006020828403121561375057600080fd5b612412826135f1565b60008060006060848603121561376e57600080fd5b61377784613601565b925061378560208501613601565b9150613793604085016135f1565b90509250925092565b6000602082840312156137ae57600080fd5b5035919050565b6000602082840312156137c757600080fd5b5051919050565b600082516137e0818460208701613978565b9190910192915050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561383957845163ffffffff1683529383019391830191600101613817565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156138875783516001600160a01b031683529284019291840191600101613862565b50909695505050505050565b60208152600082518060208401526138b2816040850160208701613978565b601f01601f19169190910160400192915050565b600082198211156138d9576138d96139fa565b500190565b6000826138ed576138ed613a10565b500490565b600081600019048311821515161561390c5761390c6139fa565b500290565b60008160060b8360060b6000811281667fffffffffffff190183128115161561393c5761393c6139fa565b81667fffffffffffff018313811615613957576139576139fa565b5090039392505050565b600082821015613973576139736139fa565b500390565b60005b8381101561399357818101518382015260200161397b565b83811115612cb55750506000910152565b60006000198214156139b8576139b86139fa565b5060010190565b6000826139ce576139ce613a10565b500690565b60008160060b667fffffffffffff198114156139f1576139f16139fa565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461146b57600080fdfea2646970667358221220cf81e7d7bf1225fd9a4b86b4d17a8cc28ded1ef610a5ea5d1ba029969b8a342464736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061041d5760003560e01c80638bb6dfa81161022b578063c7ae40d011610130578063ebbb6194116100b8578063f11a1d1a11610087578063f11a1d1a14610ac2578063f136a09d14610ad5578063f39c38a014610af5578063fc253d2b14610b08578063fe75bc4614610b1157600080fd5b8063ebbb619414610a80578063ec00cdfc14610a93578063ec342ad014610aa6578063f0f346b914610aaf57600080fd5b8063cd22af1b116100ff578063cd22af1b146109a3578063ddca3f43146109ce578063deaf81d4146109d7578063e326ac43146109ea578063e485dc0e14610a0a57600080fd5b8063c7ae40d014610957578063cacdf93d1461096a578063cb4be2bb1461097d578063cb54694d1461099057600080fd5b8063a676f9ff116101b3578063b0103b1a11610182578063b0103b1a146108d8578063b2392233146108fb578063b600702a1461090e578063b7e7734014610921578063b87fcbff1461093457600080fd5b8063a676f9ff14610889578063a7d2e784146108a9578063aac6aa9c146108b2578063ab033ea9146108c557600080fd5b806398e90a0f116101fa57806398e90a0f146107fc5780639d5c33d814610825578063a214580914610838578063a39744b51461084b578063a662031b1461087657600080fd5b80638bb6dfa8146107ab5780638cb22b76146107be5780638fe204dd146107e1578063951dc22c146107f457600080fd5b8063461411bc11610331578063694798e6116102b957806375a9f7ff1161028857806375a9f7ff1461074b578063768b5d901461075e5780637b40c913146107675780637c8fce231461077a578063878c723e1461078257600080fd5b8063694798e6146106e757806369fe0e2d146107125780636cf262bc1461072557806372da828a1461073857600080fd5b80635aa6e675116103005780635aa6e6751461069c5780635ebe23f0146106af578063633fb68f146106b857806364bb43ee146106c157806368a9f19c146106d457600080fd5b8063461411bc1461065957806352a4de2914610663578063594a3a931461067657806359a2255e1461068957600080fd5b8063168f92e7116103b4578063238efcbc11610383578063238efcbc146105cc578063274a8db4146105d4578063280b656c146106075780633e525d201461061a578063454c50311461062d57600080fd5b8063168f92e71461052b5780631b44555e146105565780631ef94b911461057657806321040b01146105a157600080fd5b80631101eb41116103f05780631101eb411461049b57806315006b82146104b0578063160e1e31146104db578063165e62e7146104ee57600080fd5b8063034d4c611461042257806307b435c2146104485780630c620bce146104735780630d6a1f8714610488575b600080fd5b610435610430366004613613565b610b24565b6040519081526020015b60405180910390f35b61043561045636600461364d565b601260209081526000928352604080842090915290825290205481565b61047b610c29565b60405161043f9190613846565b610435610496366004613712565b610c3a565b6104ae6104a93660046136d1565b610d4d565b005b6104356104be36600461364d565b601060209081526000928352604080842090915290825290205481565b6104ae6104e9366004613613565b610ea7565b6105016104fc366004613613565b611004565b604080518251600690810b825260208085015190910b90820152918101519082015260600161043f565b61043561053936600461364d565b600960209081526000928352604080842090915290825290205481565b610435610564366004613613565b60056020526000908152604090205481565b601b54610589906001600160a01b031681565b6040516001600160a01b03909116815260200161043f565b6104356105af36600461364d565b601360209081526000928352604080842090915290825290205481565b6104ae6113ca565b6105f76105e2366004613613565b601a6020526000908152604090205460ff1681565b604051901515815260200161043f565b6104ae610615366004613613565b611453565b6104ae610628366004613613565b611462565b6105f761063b366004613613565b6001600160a01b03166000908152600f602052604090205460ff1690565b6104356201518081565b6104ae6106713660046136d1565b61146e565b6104ae61068436600461364d565b6116e8565b6104ae610697366004613613565b61178d565b601754610589906001600160a01b031681565b610435601f5481565b61043560215481565b6104ae6106cf366004613613565b61183f565b6104ae6106e2366004613613565b6118cb565b6104356106f536600461364d565b602760209081526000928352604080842090915290825290205481565b6104ae61072036600461379c565b611984565b610435610733366004613613565b6119e4565b6104ae610746366004613613565b611b2c565b61047b610759366004613613565b611bcc565b61043560225481565b601e54610589906001600160a01b031681565b61047b611bf0565b610589610790366004613613565b6001602052600090815260409020546001600160a01b031681565b6104356107b9366004613613565b611bfc565b6105f76107cc366004613613565b60146020526000908152604090205460ff1681565b6104ae6107ef36600461379c565b611cd4565b61047b611d32565b61058961080a366004613613565b6002602052600090815260409020546001600160a01b031681565b6104ae610833366004613613565b611d3e565b6104ae610846366004613686565b611df7565b61043561085936600461364d565b600860209081526000928352604080842090915290825290205481565b6104ae610884366004613613565b611fd7565b610435610897366004613613565b60286020526000908152604090205481565b61043560205481565b6104ae6108c0366004613613565b611fe2565b6104ae6108d3366004613613565b612097565b6105f76108e6366004613613565b60076020526000908152604090205460ff1681565b6104ae61090936600461379c565b612110565b6104ae61091c366004613613565b612170565b6104ae61092f36600461379c565b612390565b6105f7610942366004613613565b60196020526000908152604090205460ff1681565b601c54610589906001600160a01b031681565b6105f761097836600461364d565b6123f0565b6104ae61098b366004613613565b612419565b6104ae61099e36600461379c565b6124b9565b6104356109b136600461364d565b601160209081526000928352604080842090915290825290205481565b61043560245481565b6104ae6109e5366004613613565b61253d565b6104356109f8366004613613565b60066020526000908152604090205481565b610501610a18366004613613565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03949094168452602a825292829020825193840183528054600681810b810b810b8652600160381b909104810b810b900b91840191909152600101549082015290565b6104ae610a8e36600461379c565b612548565b6104ae610aa1366004613613565b6125a8565b61043561271081565b6104ae610abd366004613613565b612648565b601d54610589906001600160a01b031681565b610435610ae3366004613613565b60296020526000908152604090205481565b601854610589906001600160a01b031681565b61043560235481565b6104ae610b1f366004613712565b6126fd565b600080610b30836119e4565b90506000610b4a60225442610b459190613961565b6127ed565b6001600160a01b0385166000908152602860205260409020541115610bee576022546001600160a01b038516600090815260286020526040902054610b8f9042613961565b10610bcb576022546001600160a01b038516600090815260286020526040902054610bba91906138c6565b610bc49042613961565b9050610c04565b6001600160a01b038416600090815260286020526040902054610bc49042613961565b610bf7426127ed565b610c019042613961565b90505b610c0e8183612807565b610c1785611bfc565b610c2191906138c6565b949350505050565b6060610c356025612831565b905090565b6000610c4760258461283e565b15610d47576000610c5784611004565b90508060400151600014610d45576001600160a01b0384166000908152600f602052604081205460ff16610c98578160200151610c93906139d3565b610c9e565b81602001515b601d5460225460405163a0d2710760e01b815260048101889052600684900b60248201526044810191909152919250610d3c916001600160a01b039091169063a0d27107906064015b60206040518083038186803b158015610cff57600080fd5b505afa158015610d13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3791906137b5565b612860565b92505050610d47565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d8957604051636efb4f4160e11b815260040160405180910390fd5b602054610d9690426138c6565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610de59084906138c6565b90915550610df69050848484612871565b6001600160a01b038085166000908152602760209081526040808320938716835292905220548015801590610e355750602154610e338286612aaf565b105b15610e5357604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e9891815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610ed2576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610ef95760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b031992831681179093556000838152600e60205260409081902080549093168417909255601d54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b158015610f6d57600080fd5b505afa158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa5919061373e565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b604080516060810182526000808252602082018190529181019190915261102a426127ed565b6001600160a01b0383166000908152602a602052604090206001015414156110a057506001600160a01b03166000908152602a602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6000806110b460225442610b459190613961565b6001600160a01b0385166000908152602a602052604090206001015490915081141561121857604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602a602052604090205490915060060b611121426127ed565b61112b9042613961565b8260008151811061113e5761113e613a3c565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261119a92919091169086906004016137ea565b60606040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ea9190613759565b600692830b90920b80885291955061120491839150613911565b600690810b900b6020860152506113a19050565b6001600160a01b0384166000908152602a60205260409020600101548111156113a157604080516002808252606082018352600092602083019080368337019050509050611265426127ed565b61126f9042613961565b8160008151811061128257611282613a3c565b602002602001019063ffffffff16908163ffffffff16815250506022546112a8426127ed565b6112b29042613961565b6112bc91906138c6565b816001815181106112cf576112cf613a3c565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d919261132792169086906004016137ea565b60606040518083038186803b15801561133f57600080fd5b505afa158015611353573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113779190613759565b600692830b90920b8088529195509150611392908290613911565b600690810b900b602086015250505b81156113ba576113b0426127ed565b60408401526113c2565b600060408401525b50505b919050565b6018546001600160a01b031633146113f557604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b61145e602582612bd7565b5050565b61146b81612bec565b50565b600260005414156114c65760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000556114d660258361283e565b6114f35760405163e0b6aead60e01b815260040160405180910390fd5b6114fe60158461283e565b61151b57604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d6020526040902061153d9083612bd7565b5061154783612bec565b6021546001600160a01b038085166000908152602760209081526040808320938716835292905220546115859061157f9084906138c6565b84612aaf565b10156115a457604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260286020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26116226001600160a01b038316333084612c4a565b6001600160a01b038084166000908152602760209081526040808320938616835292905290812080548392906116599084906138c6565b9091555061166c9050610d378284612aaf565b6001600160a01b0384166000908152600b6020526040812080549091906116949084906138c6565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b6001600160a01b03828116600090815260016020526040902054839116331461172457604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b0381811660009081526002602052604090205482911633146117c95760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b0316331461186a576040516354348f0360e01b815260040160405180910390fd5b611875602582612cbb565b61189257604051630a8d08b160e01b815260040160405180910390fd5b6040516001600160a01b03821681527f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5690602001610ff9565b6017546001600160a01b031633146118f6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16156119305760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b9101610ff9565b6017546001600160a01b031633146119af576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610ff9565b6000805b6001600160a01b0383166000908152600d60205260409020611a0990612cd0565b811015611b26576001600160a01b0383166000908152600d60205260408120611a329083612cda565b9050611a3f60258261283e565b15611b13576000611a4f82611004565b90508060400151600014611b11576001600160a01b0382166000908152600f602052604081205460ff16611a90578160200151611a8b906139d3565b611a96565b81602001515b601d546001600160a01b03888116600090815260276020908152604080832089851684529091529081902054602254915163a0d2710760e01b81526004810191909152600685900b60248201526044810191909152929350611b039291169063a0d2710790606401610ce7565b611b0d90866138c6565b9450505b505b5080611b1e816139a4565b9150506119e8565b50919050565b6017546001600160a01b03163314611b57576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611b7e5760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090602001610ff9565b6001600160a01b0381166000908152600d60205260409020606090610d4790612831565b6060610c356015612831565b600080611c08836119e4565b9050611c1b60225442610b459190613961565b6001600160a01b0384166000908152602860205260409020541115610d47576022546001600160a01b038416600090815260286020526040902054611c609042613961565b10611c6d57809150611b26565b60008111611c93576001600160a01b0383166000908152600a6020526040902054611ccd565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611cc39083906138f2565b611ccd91906138de565b9150611b26565b6017546001600160a01b03163314611cff576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610ff9565b6060610c356003612831565b6017546001600160a01b03163314611d69576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1615611da35760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f9101610ff9565b6001600160a01b038381166000908152600160205260409020548491163314611e3357604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b038216611e5a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03808516600090815260126020908152604080832093871683529290522054611e9d5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211611ee2576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff1615611f1c576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660009081526013602090815260408083209387168084529390915290205490611f51908483612ce6565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca792886284604051611fa091815260200190565b60405180910390a45050506001600160a01b0391821660009081526013602090815260408083209390941682529190915290812055565b61145e601582612bd7565b6017546001600160a01b0316331461200d576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16612046576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d0259101610ff9565b6017546001600160a01b031633146120c2576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90602001610ff9565b6017546001600160a01b0316331461213b576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610ff9565b6017546001600160a01b0316331461219b576040516354348f0360e01b815260040160405180910390fd5b6121a6602582612bd7565b6121c35760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121fc57600080fd5b505afa158015612210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122349190613630565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561229d57600080fd5b505afa1580156122b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d5919061373e565b6001600160a01b0382166000908152600f60205260409020805460ff191691151591909117905561230581611004565b6001600160a01b0382166000818152602a60209081526040918290208451815486840151600690810b66ffffffffffffff908116600160381b026001600160701b03199093169390910b169190911717815593820151600190940193909355519081527fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b9101610ff9565b6017546001600160a01b031633146123bb576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610ff9565b6001600160a01b0382166000908152600d602052604081206124129083612bd7565b9392505050565b6017546001600160a01b03163314612444576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811661246b5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090602001610ff9565b6017546001600160a01b031633146124e4576040516354348f0360e01b815260040160405180910390fd5b6201518081101561250857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610ff9565b61145e602582612cbb565b6017546001600160a01b03163314612573576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610ff9565b6017546001600160a01b031633146125d3576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166125fa5760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90602001610ff9565b6017546001600160a01b03163314612673576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff166126ac57604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e9101610ff9565b6017546001600160a01b03163314612728576040516354348f0360e01b815260040160405180910390fd5b61273360158361283e565b61275057604051636211d34960e01b815260040160405180910390fd5b61275982612bec565b6001600160a01b0382166000908152600a6020526040812080548392906127819084906138c6565b90915550506001600160a01b038216600081815260286020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926127e1928252602082015260400190565b60405180910390a25050565b6000602254826127fd91906139bf565b610d479083613961565b6000602254831015611b265760225461282083856138f2565b61282a91906138de565b9050610d47565b6060600061241283612d1b565b6001600160a01b03811660009081526001830160205260408120541515612412565b6000610d4782602254602354612d77565b600260005414156128c45760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016114bd565b600260009081556001600160a01b0384168152600d602052604090206128ea908361283e565b612906576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b0380841660009081526027602090815260408083209386168352929052205481111561294c5760405163435b562560e01b815260040160405180910390fd5b61295583612e25565b6000612964610d378385612aaf565b6001600160a01b0385166000908152600b602052604090205490915015612a1a576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546129b59083906138f2565b6129bf91906138de565b6001600160a01b0385166000908152600a6020526040812080549091906129e7908490613961565b90915550506001600160a01b0384166000908152600b602052604081208054839290612a14908490613961565b90915550505b6001600160a01b03808516600090815260276020908152604080832093871683529290529081208054849290612a51908490613961565b90915550506001600160a01b03808516600090815260276020908152604080832093871683529290522054612aa4576001600160a01b0384166000908152600d60205260409020612aa29084612cbb565b505b505060016000555050565b6001600160a01b0381166000908152602a602052604081206001015415610d47576001600160a01b0382166000908152600f602052604081205460ff16612b21576001600160a01b0383166000908152602a6020526040902054612b1c90600160381b900460060b6139d3565b612b45565b6001600160a01b0383166000908152602a6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b815260048101889052600684900b602482015260448101919091529192506001600160a01b03169063a0d271079060640160206040518083038186803b158015612b9f57600080fd5b505afa158015612bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2191906137b5565b6000612412836001600160a01b038416612e4a565b612bf581612e99565b50612bff8161306f565b6001600160a01b0381166000908152600a6020908152604080832054600b90925290912054612c2e91906130fd565b6001600160a01b039091166000908152600a6020526040902055565b6040516001600160a01b0380851660248301528316604482015260648101829052612cb59085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613113565b50505050565b6000612412836001600160a01b0384166131e5565b6000610d47825490565b600061241283836132d8565b6040516001600160a01b038316602482015260448101829052612d1690849063a9059cbb60e01b90606401612c7e565b505050565b606081600001805480602002602001604051908101604052809291908181526020018280548015612d6b57602002820191906000526020600020905b815481526020019060010190808311612d57575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415612db15760008411612da657600080fd5b508290049050612412565b808411612dbd57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b612e2e81613302565b6001600160a01b039091166000908152600b6020526040902055565b6000818152600183016020526040812054612e9157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d47565b506000610d47565b6000612ea4426127ed565b6001600160a01b03831660009081526028602052604090205410156113c557612ed460225442610b459190613961565b6001600160a01b03831660009081526028602052604090205411612f4a57612efb82612e25565b6001600160a01b0382166000908152600b6020908152604080832054600a90925290912055612f29426127ed565b6001600160a01b038316600090815260286020526040902055506001919050565b6022546001600160a01b038316600090815260286020526040902054612f709042613961565b10612fcc57612f7e82612e25565b6001600160a01b0382166000908152600b6020908152604080832054600a83528184205560225460289092528220805491929091612fbd9084906138c6565b90915550600191506113c59050565b612fd5426127ed565b6001600160a01b03831660009081526029602052604090205410156113c5576001600160a01b0382166000908152600b602052604090205461301683612e25565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120548291613046916138f2565b61305091906138de565b6001600160a01b0384166000908152600a602052604090205550919050565b6001600160a01b0381166000908152602860205260409020546130b4906130969042613961565b6001600160a01b0383166000908152600b6020526040902054612807565b6001600160a01b0382166000908152600a6020526040812080549091906130dc9084906138c6565b90915550506001600160a01b03166000908152602860205260409020429055565b600081831061310c5781612412565b5090919050565b6000613168826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166134e69092919063ffffffff16565b805190915015612d165780806020019051810190613186919061373e565b612d165760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016114bd565b600081815260018301602052604081205480156132ce576000613209600183613961565b855490915060009061321d90600190613961565b905081811461328257600086600001828154811061323d5761323d613a3c565b906000526020600020015490508087600001848154811061326057613260613a3c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061329357613293613a26565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d47565b6000915050610d47565b60008260000182815481106132ef576132ef613a3c565b9060005260206000200154905092915050565b600061330d426127ed565b601e546001600160a01b03166000908152602a6020526040902060010154146133a457601e54613345906001600160a01b0316611004565b601e546001600160a01b03166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d602052604090206133c890612cd0565b811015611b26576001600160a01b0383166000908152600d602052604081206133f19083612cda565b90506133fe60258261283e565b156134d35761340c426127ed565b6001600160a01b0382166000908152602a6020526040902060010154146134925761343681611004565b6001600160a01b0382166000908152602a60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b038085166000908152602760209081526040808320938516835292905220546134c690610d379083612aaf565b6134d090846138c6565b92505b50806134de816139a4565b9150506133a7565b6060610c21848460008585843b61353f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016114bd565b600080866001600160a01b0316858760405161355b91906137ce565b60006040518083038185875af1925050503d8060008114613598576040519150601f19603f3d011682016040523d82523d6000602084013e61359d565b606091505b50915091506135ad8282866135b8565b979650505050505050565b606083156135c7575081612412565b8251156135d75782518084602001fd5b8160405162461bcd60e51b81526004016114bd9190613893565b805180151581146113c557600080fd5b8051600681900b81146113c557600080fd5b60006020828403121561362557600080fd5b813561241281613a52565b60006020828403121561364257600080fd5b815161241281613a52565b6000806040838503121561366057600080fd5b823561366b81613a52565b9150602083013561367b81613a52565b809150509250929050565b60008060006060848603121561369b57600080fd5b83356136a681613a52565b925060208401356136b681613a52565b915060408401356136c681613a52565b809150509250925092565b6000806000606084860312156136e657600080fd5b83356136f181613a52565b9250602084013561370181613a52565b929592945050506040919091013590565b6000806040838503121561372557600080fd5b823561373081613a52565b946020939093013593505050565b60006020828403121561375057600080fd5b612412826135f1565b60008060006060848603121561376e57600080fd5b61377784613601565b925061378560208501613601565b9150613793604085016135f1565b90509250925092565b6000602082840312156137ae57600080fd5b5035919050565b6000602082840312156137c757600080fd5b5051919050565b600082516137e0818460208701613978565b9190910192915050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b8181101561383957845163ffffffff1683529383019391830191600101613817565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156138875783516001600160a01b031683529284019291840191600101613862565b50909695505050505050565b60208152600082518060208401526138b2816040850160208701613978565b601f01601f19169190910160400192915050565b600082198211156138d9576138d96139fa565b500190565b6000826138ed576138ed613a10565b500490565b600081600019048311821515161561390c5761390c6139fa565b500290565b60008160060b8360060b6000811281667fffffffffffff190183128115161561393c5761393c6139fa565b81667fffffffffffff018313811615613957576139576139fa565b5090039392505050565b600082821015613973576139736139fa565b500390565b60005b8381101561399357818101518382015260200161397b565b83811115612cb55750506000910152565b60006000198214156139b8576139b86139fa565b5060010190565b6000826139ce576139ce613a10565b500690565b60008160060b667fffffffffffff198114156139f1576139f16139fa565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461146b57600080fdfea2646970667358221220cf81e7d7bf1225fd9a4b86b4d17a8cc28ded1ef610a5ea5d1ba029969b8a342464736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
