{
  "_format": "hh-sol-artifact-1",
  "contractName": "Keep3rJobMigrationForTest",
  "sourceName": "solidity/for-test/peripherals/jobs/Keep3rJobMigrationForTest.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": "InsufficientJobTokenCredits",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobDisputed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityInsufficient",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityLessThanMin",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobLiquidityUnexistent",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobMigrationImpossible",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobMigrationLocked",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobMigrationUnavailable",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "JobTokenCreditsLocked",
      "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": "TokenUnallowed",
      "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": "_fromJob",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "_toJob",
          "type": "address"
        }
      ],
      "name": "JobMigrationRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_fromJob",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_toJob",
          "type": "address"
        }
      ],
      "name": "JobMigrationSuccessful",
      "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": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_provider",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenCreditAddition",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "TokenCreditWithdrawal",
      "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": "_fromJob",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_toJob",
          "type": "address"
        }
      ],
      "name": "acceptJobMigration",
      "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": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "addTokenCreditsToJob",
      "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": "isJob",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "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": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "jobTokenCreditsAddedAt",
      "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": "_fromJob",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_toJob",
          "type": "address"
        }
      ],
      "name": "migrateJob",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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"
        }
      ],
      "name": "pendingJobMigrations",
      "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": "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"
        },
        {
          "internalType": "address",
          "name": "_liquidity",
          "type": "address"
        }
      ],
      "name": "setJobLiquidity",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        }
      ],
      "name": "setJobToken",
      "outputs": [],
      "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": "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": "settleJobAccountanceCallCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": "_job",
          "type": "address"
        }
      ],
      "name": "viewJobLiquidityCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "viewJobLiquidityList",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "_list",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "viewJobPeriodCredits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_job",
          "type": "address"
        }
      ],
      "name": "viewJobTokenListLength",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_fromJob",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_toJob",
          "type": "address"
        }
      ],
      "name": "viewMigrationCreatedAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "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": "_job",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_receiver",
          "type": "address"
        }
      ],
      "name": "withdrawTokenCreditsFromJob",
      "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": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b50604051620045d9380380620045d98339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b61437d806200025c6000396000f3fe608060405234801561001057600080fd5b506004361061046a5760003560e01c8063951dc22c1161024c578063cb4be2bb11610146578063ec342ad0116100c3578063f22150c811610087578063f22150c814610b9c578063f39c38a014610baf578063f6bb203214610bc2578063fc253d2b14610beb578063fe75bc4614610bf457600080fd5b8063ec342ad014610b24578063ec8ca64314610b2d578063f0f346b914610b56578063f11a1d1a14610b69578063f136a09d14610b7c57600080fd5b8063e01f857c1161010a578063e01f857c14610aa2578063e326ac4314610ab5578063e7f0cbf814610ad5578063ebbb619414610afe578063ec00cdfc14610b1157600080fd5b8063cb4be2bb14610a35578063cb54694d14610a48578063cd22af1b14610a5b578063d55995fe14610a86578063ddca3f4314610a9957600080fd5b8063af320e81116101d4578063b7e7734011610198578063b7e77340146109a0578063b87fcbff146109b3578063bea2b827146109d6578063c7ae40d014610a0f578063cacdf93d14610a2257600080fd5b8063af320e8114610919578063b0103b1a1461092c578063b23922331461094f578063b440027f14610962578063b600702a1461098d57600080fd5b8063a39744b51161021b578063a39744b51461089f578063a676f9ff146108ca578063a7d2e784146108ea578063aac6aa9c146108f3578063ab033ea91461090657600080fd5b8063951dc22c1461084857806398e90a0f146108505780639d5c33d814610879578063a21458091461088c57600080fd5b8063594a3a931161036857806372da828a116102e55780638bb6dfa8116102a95780638bb6dfa8146107cc5780638cb22b76146107df5780638fe204dd146108025780639035654f1461081557806390a4684e1461083557600080fd5b806372da828a1461076c578063768b5d901461077f5780637b40c913146107885780637c8fce231461079b578063878c723e146107a357600080fd5b806364bb43ee1161032c57806364bb43ee146106f557806368a9f19c14610708578063694798e61461071b57806369fe0e2d146107465780636cf262bc1461075957600080fd5b8063594a3a93146106aa57806359a2255e146106bd5780635aa6e675146106d05780635ebe23f0146106e3578063633fb68f146106ec57600080fd5b80631b44555e116103f6578063274a8db4116103ba578063274a8db414610644578063461411bc1461066757806346d8908d1461067157806352a4de2914610684578063575288bf1461069757600080fd5b80631b44555e146105a35780631cd5c01f146105c35780631ef94b91146105e657806321040b0114610611578063238efcbc1461063c57600080fd5b80631101eb411161043d5780631101eb41146104e857806315006b82146104fd578063160e1e3114610528578063165e62e71461053b578063168f92e71461057857600080fd5b8063034d4c611461046f57806307b435c2146104955780630c620bce146104c05780630d6a1f87146104d5575b600080fd5b61048261047d366004613e66565b610c07565b6040519081526020015b60405180910390f35b6104826104a3366004613ea0565b601260209081526000928352604080842090915290825290205481565b6104c8610d0c565b60405161048c91906140ec565b6104826104e3366004613fb8565b610d1d565b6104fb6104f6366004613f24565b610e30565b005b61048261050b366004613ea0565b601060209081526000928352604080842090915290825290205481565b6104fb610536366004613e66565b610f8a565b61054e610549366004613e66565b6110e7565b604080518251600690810b825260208085015190910b90820152918101519082015260600161048c565b610482610586366004613ea0565b600960209081526000928352604080842090915290825290205481565b6104826105b1366004613e66565b60056020526000908152604090205481565b6105d66105d1366004613e66565b6114ad565b604051901515815260200161048c565b601b546105f9906001600160a01b031681565b6040516001600160a01b03909116815260200161048c565b61048261061f366004613ea0565b601360209081526000928352604080842090915290825290205481565b6104fb6114ba565b6105d6610652366004613e66565b601a6020526000908152604090205460ff1681565b6104826201518081565b6104c861067f366004613e66565b611543565b6104fb610692366004613f24565b611567565b6104fb6106a5366004613f24565b6117b5565b6104fb6106b8366004613ea0565b611a70565b6104fb6106cb366004613e66565b611b15565b6017546105f9906001600160a01b031681565b610482601f5481565b61048260215481565b6104fb610703366004613e66565b611bc7565b6104fb610716366004613e66565b611c53565b610482610729366004613ea0565b602860209081526000928352604080842090915290825290205481565b6104fb610754366004614042565b611d0c565b610482610767366004613e66565b611d6c565b6104fb61077a366004613e66565b611eb4565b61048260225481565b601e546105f9906001600160a01b031681565b6104c8611f54565b6105f96107b1366004613e66565b6001602052600090815260409020546001600160a01b031681565b6104826107da366004613e66565b611f60565b6105d66107ed366004613e66565b60146020526000908152604090205460ff1681565b6104fb610810366004614042565b612038565b610482610823366004613e66565b602e6020526000908152604090205481565b6104fb610843366004613ea0565b612096565b6104c8612180565b6105f961085e366004613e66565b6002602052600090815260409020546001600160a01b031681565b6104fb610887366004613e66565b61218c565b6104fb61089a366004613ed9565b612245565b6104826108ad366004613ea0565b600860209081526000928352604080842090915290825290205481565b6104826108d8366004613e66565b60296020526000908152604090205481565b61048260205481565b6104fb610901366004613e66565b612425565b6104fb610914366004613e66565b6124da565b6104fb610927366004613ea0565b612553565b6105d661093a366004613e66565b60076020526000908152604090205460ff1681565b6104fb61095d366004614042565b6129d0565b610482610970366004613ea0565b602560209081526000928352604080842090915290825290205481565b6104fb61099b366004613e66565b612a30565b6104fb6109ae366004614042565b612c50565b6105d66109c1366004613e66565b60196020526000908152604090205460ff1681565b6104826109e4366004613ea0565b6001600160a01b039182166000908152602d6020908152604080832093909416825291909152205490565b601c546105f9906001600160a01b031681565b6104fb610a30366004613ea0565b612cb0565b6104fb610a43366004613e66565b612cd7565b6104fb610a56366004614042565b612d77565b610482610a69366004613ea0565b601160209081526000928352604080842090915290825290205481565b6104fb610a94366004613f65565b612dfb565b61048260245481565b6104fb610ab0366004613ea0565b613032565b610482610ac3366004613e66565b60066020526000908152604090205481565b610482610ae3366004613e66565b6001600160a01b03166000908152600a602052604090205490565b6104fb610b0c366004614042565b613054565b6104fb610b1f366004613e66565b6130b4565b61048261271081565b6105f9610b3b366004613e66565b602c602052600090815260409020546001600160a01b031681565b6104fb610b64366004613e66565b613154565b601d546105f9906001600160a01b031681565b610482610b8a366004613e66565b602a6020526000908152604090205481565b610482610baa366004613e66565b613209565b6018546105f9906001600160a01b031681565b610482610bd0366004613e66565b6001600160a01b03166000908152600b602052604090205490565b61048260235481565b6104fb610c02366004613fb8565b61322a565b600080610c1383611d6c565b90506000610c2d60225442610c28919061423e565b61331a565b6001600160a01b0385166000908152602960205260409020541115610cd1576022546001600160a01b038516600090815260296020526040902054610c72904261423e565b10610cae576022546001600160a01b038516600090815260296020526040902054610c9d91906141a3565b610ca7904261423e565b9050610ce7565b6001600160a01b038416600090815260296020526040902054610ca7904261423e565b610cda4261331a565b610ce4904261423e565b90505b610cf18183613334565b610cfa85611f60565b610d0491906141a3565b949350505050565b6060610d18602661335e565b905090565b6000610d2a602684613372565b15610e2a576000610d3a846110e7565b90508060400151600014610e28576001600160a01b0384166000908152600f602052604081205460ff16610d7b578160200151610d76906142b0565b610d81565b81602001515b601d5460225460405163a0d2710760e01b815260048101889052600684900b60248201526044810191909152919250610e1f916001600160a01b039091169063a0d27107906064015b60206040518083038186803b158015610de257600080fd5b505afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a919061405b565b613394565b92505050610e2a565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610e6c57604051636efb4f4160e11b815260040160405180910390fd5b602054610e7990426141a3565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610ec89084906141a3565b90915550610ed990508484846133a5565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610f185750602154610f1682866135b3565b105b15610f3657604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610f7b91815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610fb5576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610fdc5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b031992831681179093556000838152600e60205260409081902080549093168417909255601d54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110889190613fe4565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b604080516060810182526000808252602082018190529181019190915261110d4261331a565b6001600160a01b0383166000908152602b6020526040902060010154141561118357506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b60008061119760225442610c28919061423e565b6001600160a01b0385166000908152602b60205260409020600101549091508114156112fb57604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b6112044261331a565b61120e904261423e565b8260008151811061122157611221614319565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261127d9291909116908690600401614090565b60606040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613fff565b600692830b90920b8088529195506112e7918391506141ee565b600690810b900b6020860152506114849050565b6001600160a01b0384166000908152602b6020526040902060010154811115611484576040805160028082526060820183526000926020830190803683370190505090506113484261331a565b611352904261423e565b8160008151811061136557611365614319565b602002602001019063ffffffff16908163ffffffff168152505060225461138b4261331a565b611395904261423e565b61139f91906141a3565b816001815181106113b2576113b2614319565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d919261140a9216908690600401614090565b60606040518083038186803b15801561142257600080fd5b505afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613fff565b600692830b90920b80885291955091506114759082906141ee565b600690810b900b602086015250505b811561149d576114934261331a565b60408401526114a5565b600060408401525b50505b919050565b6000610e2a601583613372565b6018546001600160a01b031633146114e557604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b6001600160a01b0381166000908152600d60205260409020606090610e2a9061335e565b600260005414156115935760405162461bcd60e51b815260040161158a9061416c565b60405180910390fd5b60026000556115a3602683613372565b6115c05760405163e0b6aead60e01b815260040160405180910390fd5b6115cb601584613372565b6115e857604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d6020526040902061160a90836136db565b50611614836136f0565b6021546001600160a01b038085166000908152602860209081526040808320938716835292905220546116529061164c9084906141a3565b846135b3565b101561167157604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26116ef6001600160a01b03831633308461371c565b6001600160a01b038084166000908152602860209081526040808320938616835292905290812080548392906117269084906141a3565b909155506117399050610e1a82846135b3565b6001600160a01b0384166000908152600b6020526040812080549091906117619084906141a3565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b600260005414156117d85760405162461bcd60e51b815260040161158a9061416c565b60026000556117e8601584613372565b61180557604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b03838116911614156118335760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561187557600080fd5b505afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061405b565b90506118c46001600160a01b03841633308561371c565b6040516370a0823160e01b815230600482015260009082906001600160a01b038616906370a082319060240160206040518083038186803b15801561190857600080fd5b505afa15801561191c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611940919061405b565b61194a919061423e565b905060006127106024548361195f91906141cf565b61196991906141bb565b9050611975818361423e565b6001600160a01b038088166000908152600960209081526040808320938a16835292905290812080549091906119ac9084906141a3565b90915550506001600160a01b03808716600090815260256020908152604080832089851680855292529091204290556017546119e992168361378d565b6001600160a01b0386166000908152600c60205260409020611a0b90866136db565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb85604051611a5b91815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314611aac57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611b515760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611bf2576040516354348f0360e01b815260040160405180910390fd5b611bfd6026826137bd565b611c1a57604051630a8d08b160e01b815260040160405180910390fd5b6040516001600160a01b03821681527f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e56906020016110dc565b6017546001600160a01b03163314611c7e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611cb85760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b91016110dc565b6017546001600160a01b03163314611d37576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016110dc565b6000805b6001600160a01b0383166000908152600d60205260409020611d91906137d2565b811015611eae576001600160a01b0383166000908152600d60205260408120611dba90836137dc565b9050611dc7602682613372565b15611e9b576000611dd7826110e7565b90508060400151600014611e99576001600160a01b0382166000908152600f602052604081205460ff16611e18578160200151611e13906142b0565b611e1e565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b81526004810191909152600685900b60248201526044810191909152929350611e8b9291169063a0d2710790606401610dca565b611e9590866141a3565b9450505b505b5080611ea681614281565b915050611d70565b50919050565b6017546001600160a01b03163314611edf576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611f065760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906020016110dc565b6060610d18601561335e565b600080611f6c83611d6c565b9050611f7f60225442610c28919061423e565b6001600160a01b0384166000908152602960205260409020541115610e2a576022546001600160a01b038416600090815260296020526040902054611fc4904261423e565b10611fd157809150611eae565b60008111611ff7576001600160a01b0383166000908152600a6020526040902054612031565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120546120279083906141cf565b61203191906141bb565b9150611eae565b6017546001600160a01b03163314612063576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee291016110dc565b6001600160a01b0382811660009081526001602052604090205483911633146120d257604051636efb4f4160e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b031614156121055760405163afe7ad4960e01b815260040160405180910390fd5b6001600160a01b038381166000818152602c6020908152604080832080546001600160a01b0319169588169586179055602d8252808320858452825291829020429055905192835290917fff0456758201108de53c0ff04c69988d4678ff455b2ce6f733328cf85722c04c91015b60405180910390a2505050565b6060610d18600361335e565b6017546001600160a01b031633146121b7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156121f15760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f91016110dc565b6001600160a01b03838116600090815260016020526040902054849116331461228157604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0382166122a85760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220546122eb5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211612330576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff161561236a576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716808452939091529020549061239f90848361378d565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca7928862846040516123ee91815260200190565b60405180910390a45050506001600160a01b0391821660009081526013602090815260408083209390941682529190915290812055565b6017546001600160a01b03163314612450576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16612489576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02591016110dc565b6017546001600160a01b03163314612505576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906020016110dc565b6001600160a01b03818116600090815260016020526040902054829116331461258f57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16806125ce57506001600160a01b03821660009081526007602052604090205460ff165b156125ec5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152602c602052604090205481169083161461262957604051630ced616b60e21b815260040160405180910390fd5b6001600160a01b038084166000908152602d602090815260408083209386168352929052205461265b90603c906141a3565b42101561267b576040516356248e9760e01b815260040160405180910390fd5b612684836136f0565b61268d826136f0565b6001600160a01b0383166000908152600c602052604081206126ae906137d2565b1115612790576001600160a01b0383166000908152600c602052604081206126d690826137dc565b6001600160a01b03808616600090815260096020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926127249084906141a3565b90915550506001600160a01b0380851660008181526009602090815260408083209486168352938152838220829055918152600c9091522061276690826137bd565b506001600160a01b0383166000908152600c6020526040902061278990826136db565b505061268d565b6001600160a01b0383166000908152600d602052604081206127b1906137d2565b1115612893576001600160a01b0383166000908152600d602052604081206127d990826137dc565b6001600160a01b03808616600090815260286020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926128279084906141a3565b90915550506001600160a01b038085166000908152602860209081526040808320858516845282528083208390559286168252600d90522061286990826136db565b506001600160a01b0384166000908152600d6020526040902061288c90826137bd565b5050612790565b6001600160a01b038084166000908152600b6020526040808220549285168252812080549091906128c59084906141a3565b90915550506001600160a01b038084166000908152600b60209081526040808320839055600a909152808220549285168252812080549091906129099084906141a3565b90915550506001600160a01b0383166000908152600a60209081526040808320839055602990915281205561293f6015846137bd565b506001600160a01b03838116600081815260016020908152604080832080546001600160a01b031990811690915560028352818420805482169055602d8352818420958816808552958352818420849055848452602c835292819020805490931690925590519182527f9b712b63e3fb1325fa042d3c238ce8144937875065900528ea1e4f3b00f379f29101612173565b6017546001600160a01b031633146129fb576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016110dc565b6017546001600160a01b03163314612a5b576040516354348f0360e01b815260040160405180910390fd5b612a666026826136db565b612a835760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612abc57600080fd5b505afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190613e83565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b158015612b5d57600080fd5b505afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b959190613fe4565b6001600160a01b0382166000908152600f60205260409020805460ff1916911515919091179055612bc5816110e7565b6001600160a01b0382166000818152602b60209081526040918290208451815486840151600690810b66ffffffffffffff908116600160381b026001600160701b03199093169390910b169190911717815593820151600190940193909355519081527fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b91016110dc565b6017546001600160a01b03163314612c7b576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016110dc565b6001600160a01b0382166000908152600d60205260409020612cd290826136db565b505050565b6017546001600160a01b03163314612d02576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612d295760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906020016110dc565b6017546001600160a01b03163314612da2576040516354348f0360e01b815260040160405180910390fd5b62015180811015612dc657604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d9906020016110dc565b60026000541415612e1e5760405162461bcd60e51b815260040161158a9061416c565b600260009081556001600160a01b03858116825260016020526040909120548591163314612e5f57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612e9190603c906141a3565b4211612eb057604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612ef65760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612f305760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612f6790849061423e565b90915550612f8190506001600160a01b038516838561378d565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612fcf576001600160a01b0385166000908152600c60205260409020612fcd90856137bd565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe8660405161301e91815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c60205260409020612cd290826136db565b6017546001600160a01b0316331461307f576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016110dc565b6017546001600160a01b031633146130df576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166131065760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906020016110dc565b6017546001600160a01b0316331461317f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff166131b857604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e91016110dc565b6001600160a01b0381166000908152600c60205260408120610e2a906137d2565b6017546001600160a01b03163314613255576040516354348f0360e01b815260040160405180910390fd5b613260601583613372565b61327d57604051636211d34960e01b815260040160405180910390fd5b613286826136f0565b6001600160a01b0382166000908152600a6020526040812080548392906132ae9084906141a3565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d19261330e928252602082015260400190565b60405180910390a25050565b60006022548261332a919061429c565b610e2a908361423e565b6000602254831015611eae5760225461334d83856141cf565b61335791906141bb565b9050610e2a565b6060600061336b836137e8565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561336b565b6000610e2a82602254602354613844565b600260005414156133c85760405162461bcd60e51b815260040161158a9061416c565b600260009081556001600160a01b0384168152600d602052604090206133ee9083613372565b61340a576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156134505760405163435b562560e01b815260040160405180910390fd5b613459836138f2565b6000613468610e1a83856135b3565b6001600160a01b0385166000908152600b60205260409020549091501561351e576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546134b99083906141cf565b6134c391906141bb565b6001600160a01b0385166000908152600a6020526040812080549091906134eb90849061423e565b90915550506001600160a01b0384166000908152600b60205260408120805483929061351890849061423e565b90915550505b6001600160a01b0380851660009081526028602090815260408083209387168352929052908120805484929061355590849061423e565b90915550506001600160a01b038085166000908152602860209081526040808320938716835292905220546135a8576001600160a01b0384166000908152600d602052604090206135a690846137bd565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610e2a576001600160a01b0382166000908152600f602052604081205460ff16613625576001600160a01b0383166000908152602b602052604090205461362090600160381b900460060b6142b0565b613649565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b815260048101889052600684900b602482015260448101919091529192506001600160a01b03169063a0d271079060640160206040518083038186803b1580156136a357600080fd5b505afa1580156136b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d04919061405b565b600061336b836001600160a01b038416613917565b6001600160a01b0381166000908152602e6020526040812080549161371483614281565b919050555050565b6040516001600160a01b03808516602483015283166044820152606481018290526137879085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613966565b50505050565b6040516001600160a01b038316602482015260448101829052612cd290849063a9059cbb60e01b90606401613750565b600061336b836001600160a01b038416613a38565b6000610e2a825490565b600061336b8383613b2b565b60608160000180548060200260200160405190810160405280929190818152602001828054801561383857602002820191906000526020600020905b815481526020019060010190808311613824575b50505050509050919050565b60008080600019858709858702925082811083820303915050806000141561387e576000841161387357600080fd5b50829004905061336b565b80841161388a57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6138fb81613b55565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461395e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2a565b506000610e2a565b60006139bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d399092919063ffffffff16565b805190915015612cd257808060200190518101906139d99190613fe4565b612cd25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161158a565b60008181526001830160205260408120548015613b21576000613a5c60018361423e565b8554909150600090613a709060019061423e565b9050818114613ad5576000866000018281548110613a9057613a90614319565b9060005260206000200154905080876000018481548110613ab357613ab3614319565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ae657613ae6614303565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e2a565b6000915050610e2a565b6000826000018281548110613b4257613b42614319565b9060005260206000200154905092915050565b6000613b604261331a565b601e546001600160a01b03166000908152602b602052604090206001015414613bf757601e54613b98906001600160a01b03166110e7565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613c1b906137d2565b811015611eae576001600160a01b0383166000908152600d60205260408120613c4490836137dc565b9050613c51602682613372565b15613d2657613c5f4261331a565b6001600160a01b0382166000908152602b602052604090206001015414613ce557613c89816110e7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613d1990610e1a90836135b3565b613d2390846141a3565b92505b5080613d3181614281565b915050613bfa565b6060610d04848460008585843b613d925760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161158a565b600080866001600160a01b03168587604051613dae9190614074565b60006040518083038185875af1925050503d8060008114613deb576040519150601f19603f3d011682016040523d82523d6000602084013e613df0565b606091505b5091509150613e00828286613e0b565b979650505050505050565b60608315613e1a57508161336b565b825115613e2a5782518084602001fd5b8160405162461bcd60e51b815260040161158a9190614139565b805180151581146114a857600080fd5b8051600681900b81146114a857600080fd5b600060208284031215613e7857600080fd5b813561336b8161432f565b600060208284031215613e9557600080fd5b815161336b8161432f565b60008060408385031215613eb357600080fd5b8235613ebe8161432f565b91506020830135613ece8161432f565b809150509250929050565b600080600060608486031215613eee57600080fd5b8335613ef98161432f565b92506020840135613f098161432f565b91506040840135613f198161432f565b809150509250925092565b600080600060608486031215613f3957600080fd5b8335613f448161432f565b92506020840135613f548161432f565b929592945050506040919091013590565b60008060008060808587031215613f7b57600080fd5b8435613f868161432f565b93506020850135613f968161432f565b9250604085013591506060850135613fad8161432f565b939692955090935050565b60008060408385031215613fcb57600080fd5b8235613fd68161432f565b946020939093013593505050565b600060208284031215613ff657600080fd5b61336b82613e44565b60008060006060848603121561401457600080fd5b61401d84613e54565b925061402b60208501613e54565b915061403960408501613e44565b90509250925092565b60006020828403121561405457600080fd5b5035919050565b60006020828403121561406d57600080fd5b5051919050565b60008251614086818460208701614255565b9190910192915050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b818110156140df57845163ffffffff16835293830193918301916001016140bd565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561412d5783516001600160a01b031683529284019291840191600101614108565b50909695505050505050565b6020815260008251806020840152614158816040850160208701614255565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082198211156141b6576141b66142d7565b500190565b6000826141ca576141ca6142ed565b500490565b60008160001904831182151516156141e9576141e96142d7565b500290565b60008160060b8360060b6000811281667fffffffffffff1901831281151615614219576142196142d7565b81667fffffffffffff018313811615614234576142346142d7565b5090039392505050565b600082821015614250576142506142d7565b500390565b60005b83811015614270578181015183820152602001614258565b838111156137875750506000910152565b6000600019821415614295576142956142d7565b5060010190565b6000826142ab576142ab6142ed565b500690565b60008160060b667fffffffffffff198114156142ce576142ce6142d7565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461434457600080fd5b5056fea264697066735822122086da7e5e489b827aa622908243b4e2bab1bce05e7b9d9a90beee8c6d07eb7c9364736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061046a5760003560e01c8063951dc22c1161024c578063cb4be2bb11610146578063ec342ad0116100c3578063f22150c811610087578063f22150c814610b9c578063f39c38a014610baf578063f6bb203214610bc2578063fc253d2b14610beb578063fe75bc4614610bf457600080fd5b8063ec342ad014610b24578063ec8ca64314610b2d578063f0f346b914610b56578063f11a1d1a14610b69578063f136a09d14610b7c57600080fd5b8063e01f857c1161010a578063e01f857c14610aa2578063e326ac4314610ab5578063e7f0cbf814610ad5578063ebbb619414610afe578063ec00cdfc14610b1157600080fd5b8063cb4be2bb14610a35578063cb54694d14610a48578063cd22af1b14610a5b578063d55995fe14610a86578063ddca3f4314610a9957600080fd5b8063af320e81116101d4578063b7e7734011610198578063b7e77340146109a0578063b87fcbff146109b3578063bea2b827146109d6578063c7ae40d014610a0f578063cacdf93d14610a2257600080fd5b8063af320e8114610919578063b0103b1a1461092c578063b23922331461094f578063b440027f14610962578063b600702a1461098d57600080fd5b8063a39744b51161021b578063a39744b51461089f578063a676f9ff146108ca578063a7d2e784146108ea578063aac6aa9c146108f3578063ab033ea91461090657600080fd5b8063951dc22c1461084857806398e90a0f146108505780639d5c33d814610879578063a21458091461088c57600080fd5b8063594a3a931161036857806372da828a116102e55780638bb6dfa8116102a95780638bb6dfa8146107cc5780638cb22b76146107df5780638fe204dd146108025780639035654f1461081557806390a4684e1461083557600080fd5b806372da828a1461076c578063768b5d901461077f5780637b40c913146107885780637c8fce231461079b578063878c723e146107a357600080fd5b806364bb43ee1161032c57806364bb43ee146106f557806368a9f19c14610708578063694798e61461071b57806369fe0e2d146107465780636cf262bc1461075957600080fd5b8063594a3a93146106aa57806359a2255e146106bd5780635aa6e675146106d05780635ebe23f0146106e3578063633fb68f146106ec57600080fd5b80631b44555e116103f6578063274a8db4116103ba578063274a8db414610644578063461411bc1461066757806346d8908d1461067157806352a4de2914610684578063575288bf1461069757600080fd5b80631b44555e146105a35780631cd5c01f146105c35780631ef94b91146105e657806321040b0114610611578063238efcbc1461063c57600080fd5b80631101eb411161043d5780631101eb41146104e857806315006b82146104fd578063160e1e3114610528578063165e62e71461053b578063168f92e71461057857600080fd5b8063034d4c611461046f57806307b435c2146104955780630c620bce146104c05780630d6a1f87146104d5575b600080fd5b61048261047d366004613e66565b610c07565b6040519081526020015b60405180910390f35b6104826104a3366004613ea0565b601260209081526000928352604080842090915290825290205481565b6104c8610d0c565b60405161048c91906140ec565b6104826104e3366004613fb8565b610d1d565b6104fb6104f6366004613f24565b610e30565b005b61048261050b366004613ea0565b601060209081526000928352604080842090915290825290205481565b6104fb610536366004613e66565b610f8a565b61054e610549366004613e66565b6110e7565b604080518251600690810b825260208085015190910b90820152918101519082015260600161048c565b610482610586366004613ea0565b600960209081526000928352604080842090915290825290205481565b6104826105b1366004613e66565b60056020526000908152604090205481565b6105d66105d1366004613e66565b6114ad565b604051901515815260200161048c565b601b546105f9906001600160a01b031681565b6040516001600160a01b03909116815260200161048c565b61048261061f366004613ea0565b601360209081526000928352604080842090915290825290205481565b6104fb6114ba565b6105d6610652366004613e66565b601a6020526000908152604090205460ff1681565b6104826201518081565b6104c861067f366004613e66565b611543565b6104fb610692366004613f24565b611567565b6104fb6106a5366004613f24565b6117b5565b6104fb6106b8366004613ea0565b611a70565b6104fb6106cb366004613e66565b611b15565b6017546105f9906001600160a01b031681565b610482601f5481565b61048260215481565b6104fb610703366004613e66565b611bc7565b6104fb610716366004613e66565b611c53565b610482610729366004613ea0565b602860209081526000928352604080842090915290825290205481565b6104fb610754366004614042565b611d0c565b610482610767366004613e66565b611d6c565b6104fb61077a366004613e66565b611eb4565b61048260225481565b601e546105f9906001600160a01b031681565b6104c8611f54565b6105f96107b1366004613e66565b6001602052600090815260409020546001600160a01b031681565b6104826107da366004613e66565b611f60565b6105d66107ed366004613e66565b60146020526000908152604090205460ff1681565b6104fb610810366004614042565b612038565b610482610823366004613e66565b602e6020526000908152604090205481565b6104fb610843366004613ea0565b612096565b6104c8612180565b6105f961085e366004613e66565b6002602052600090815260409020546001600160a01b031681565b6104fb610887366004613e66565b61218c565b6104fb61089a366004613ed9565b612245565b6104826108ad366004613ea0565b600860209081526000928352604080842090915290825290205481565b6104826108d8366004613e66565b60296020526000908152604090205481565b61048260205481565b6104fb610901366004613e66565b612425565b6104fb610914366004613e66565b6124da565b6104fb610927366004613ea0565b612553565b6105d661093a366004613e66565b60076020526000908152604090205460ff1681565b6104fb61095d366004614042565b6129d0565b610482610970366004613ea0565b602560209081526000928352604080842090915290825290205481565b6104fb61099b366004613e66565b612a30565b6104fb6109ae366004614042565b612c50565b6105d66109c1366004613e66565b60196020526000908152604090205460ff1681565b6104826109e4366004613ea0565b6001600160a01b039182166000908152602d6020908152604080832093909416825291909152205490565b601c546105f9906001600160a01b031681565b6104fb610a30366004613ea0565b612cb0565b6104fb610a43366004613e66565b612cd7565b6104fb610a56366004614042565b612d77565b610482610a69366004613ea0565b601160209081526000928352604080842090915290825290205481565b6104fb610a94366004613f65565b612dfb565b61048260245481565b6104fb610ab0366004613ea0565b613032565b610482610ac3366004613e66565b60066020526000908152604090205481565b610482610ae3366004613e66565b6001600160a01b03166000908152600a602052604090205490565b6104fb610b0c366004614042565b613054565b6104fb610b1f366004613e66565b6130b4565b61048261271081565b6105f9610b3b366004613e66565b602c602052600090815260409020546001600160a01b031681565b6104fb610b64366004613e66565b613154565b601d546105f9906001600160a01b031681565b610482610b8a366004613e66565b602a6020526000908152604090205481565b610482610baa366004613e66565b613209565b6018546105f9906001600160a01b031681565b610482610bd0366004613e66565b6001600160a01b03166000908152600b602052604090205490565b61048260235481565b6104fb610c02366004613fb8565b61322a565b600080610c1383611d6c565b90506000610c2d60225442610c28919061423e565b61331a565b6001600160a01b0385166000908152602960205260409020541115610cd1576022546001600160a01b038516600090815260296020526040902054610c72904261423e565b10610cae576022546001600160a01b038516600090815260296020526040902054610c9d91906141a3565b610ca7904261423e565b9050610ce7565b6001600160a01b038416600090815260296020526040902054610ca7904261423e565b610cda4261331a565b610ce4904261423e565b90505b610cf18183613334565b610cfa85611f60565b610d0491906141a3565b949350505050565b6060610d18602661335e565b905090565b6000610d2a602684613372565b15610e2a576000610d3a846110e7565b90508060400151600014610e28576001600160a01b0384166000908152600f602052604081205460ff16610d7b578160200151610d76906142b0565b610d81565b81602001515b601d5460225460405163a0d2710760e01b815260048101889052600684900b60248201526044810191909152919250610e1f916001600160a01b039091169063a0d27107906064015b60206040518083038186803b158015610de257600080fd5b505afa158015610df6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e1a919061405b565b613394565b92505050610e2a565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610e6c57604051636efb4f4160e11b815260040160405180910390fd5b602054610e7990426141a3565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610ec89084906141a3565b90915550610ed990508484846133a5565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610f185750602154610f1682866135b3565b105b15610f3657604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610f7b91815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610fb5576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610fdc5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038381166001600160a01b031992831681179093556000838152600e60205260409081902080549093168417909255601d54915163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b15801561105057600080fd5b505afa158015611064573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110889190613fe4565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191694151594909417909355519081527f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa91015b60405180910390a150565b604080516060810182526000808252602082018190529181019190915261110d4261331a565b6001600160a01b0383166000908152602b6020526040902060010154141561118357506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b60008061119760225442610c28919061423e565b6001600160a01b0385166000908152602b60205260409020600101549091508114156112fb57604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b6112044261331a565b61120e904261423e565b8260008151811061122157611221614319565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d919261127d9291909116908690600401614090565b60606040518083038186803b15801561129557600080fd5b505afa1580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613fff565b600692830b90920b8088529195506112e7918391506141ee565b600690810b900b6020860152506114849050565b6001600160a01b0384166000908152602b6020526040902060010154811115611484576040805160028082526060820183526000926020830190803683370190505090506113484261331a565b611352904261423e565b8160008151811061136557611365614319565b602002602001019063ffffffff16908163ffffffff168152505060225461138b4261331a565b611395904261423e565b61139f91906141a3565b816001815181106113b2576113b2614319565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d919261140a9216908690600401614090565b60606040518083038186803b15801561142257600080fd5b505afa158015611436573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145a9190613fff565b600692830b90920b80885291955091506114759082906141ee565b600690810b900b602086015250505b811561149d576114934261331a565b60408401526114a5565b600060408401525b50505b919050565b6000610e2a601583613372565b6018546001600160a01b031633146114e557604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040519081527fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69060200160405180910390a1565b6001600160a01b0381166000908152600d60205260409020606090610e2a9061335e565b600260005414156115935760405162461bcd60e51b815260040161158a9061416c565b60405180910390fd5b60026000556115a3602683613372565b6115c05760405163e0b6aead60e01b815260040160405180910390fd5b6115cb601584613372565b6115e857604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d6020526040902061160a90836136db565b50611614836136f0565b6021546001600160a01b038085166000908152602860209081526040808320938716835292905220546116529061164c9084906141a3565b846135b3565b101561167157604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26116ef6001600160a01b03831633308461371c565b6001600160a01b038084166000908152602860209081526040808320938616835292905290812080548392906117269084906141a3565b909155506117399050610e1a82846135b3565b6001600160a01b0384166000908152600b6020526040812080549091906117619084906141a3565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b600260005414156117d85760405162461bcd60e51b815260040161158a9061416c565b60026000556117e8601584613372565b61180557604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b03838116911614156118335760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038416906370a082319060240160206040518083038186803b15801561187557600080fd5b505afa158015611889573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ad919061405b565b90506118c46001600160a01b03841633308561371c565b6040516370a0823160e01b815230600482015260009082906001600160a01b038616906370a082319060240160206040518083038186803b15801561190857600080fd5b505afa15801561191c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611940919061405b565b61194a919061423e565b905060006127106024548361195f91906141cf565b61196991906141bb565b9050611975818361423e565b6001600160a01b038088166000908152600960209081526040808320938a16835292905290812080549091906119ac9084906141a3565b90915550506001600160a01b03808716600090815260256020908152604080832089851680855292529091204290556017546119e992168361378d565b6001600160a01b0386166000908152600c60205260409020611a0b90866136db565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb85604051611a5b91815260200190565b60405180910390a45050600160005550505050565b6001600160a01b038281166000908152600160205260409020548391163314611aac57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611b515760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611bf2576040516354348f0360e01b815260040160405180910390fd5b611bfd6026826137bd565b611c1a57604051630a8d08b160e01b815260040160405180910390fd5b6040516001600160a01b03821681527f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e56906020016110dc565b6017546001600160a01b03163314611c7e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611cb85760405163546da66560e11b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916600117905590519182527f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b91016110dc565b6017546001600160a01b03163314611d37576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d906020016110dc565b6000805b6001600160a01b0383166000908152600d60205260409020611d91906137d2565b811015611eae576001600160a01b0383166000908152600d60205260408120611dba90836137dc565b9050611dc7602682613372565b15611e9b576000611dd7826110e7565b90508060400151600014611e99576001600160a01b0382166000908152600f602052604081205460ff16611e18578160200151611e13906142b0565b611e1e565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b81526004810191909152600685900b60248201526044810191909152929350611e8b9291169063a0d2710790606401610dca565b611e9590866141a3565b9450505b505b5080611ea681614281565b915050611d70565b50919050565b6017546001600160a01b03163314611edf576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611f065760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383169081179091556040519081527f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b0906020016110dc565b6060610d18601561335e565b600080611f6c83611d6c565b9050611f7f60225442610c28919061423e565b6001600160a01b0384166000908152602960205260409020541115610e2a576022546001600160a01b038416600090815260296020526040902054611fc4904261423e565b10611fd157809150611eae565b60008111611ff7576001600160a01b0383166000908152600a6020526040902054612031565b6001600160a01b0383166000908152600b6020908152604080832054600a909252909120546120279083906141cf565b61203191906141bb565b9150611eae565b6017546001600160a01b03163314612063576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee291016110dc565b6001600160a01b0382811660009081526001602052604090205483911633146120d257604051636efb4f4160e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b031614156121055760405163afe7ad4960e01b815260040160405180910390fd5b6001600160a01b038381166000818152602c6020908152604080832080546001600160a01b0319169588169586179055602d8252808320858452825291829020429055905192835290917fff0456758201108de53c0ff04c69988d4678ff455b2ce6f733328cf85722c04c91015b60405180910390a2505050565b6060610d18600361335e565b6017546001600160a01b031633146121b7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156121f15760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916600117905590519182527f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f91016110dc565b6001600160a01b03838116600090815260016020526040902054849116331461228157604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b0382166122a85760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220546122eb5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b038085166000908152601260209081526040808320938716835292905220544211612330576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff161561236a576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716808452939091529020549061239f90848361378d565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca7928862846040516123ee91815260200190565b60405180910390a45050506001600160a01b0391821660009081526013602090815260408083209390941682529190915290812055565b6017546001600160a01b03163314612450576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff16612489576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b038116600081815260196020908152604091829020805460ff1916905590519182527f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02591016110dc565b6017546001600160a01b03163314612505576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383169081179091556040519081527fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f906020016110dc565b6001600160a01b03818116600090815260016020526040902054829116331461258f57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff16806125ce57506001600160a01b03821660009081526007602052604090205460ff165b156125ec5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152602c602052604090205481169083161461262957604051630ced616b60e21b815260040160405180910390fd5b6001600160a01b038084166000908152602d602090815260408083209386168352929052205461265b90603c906141a3565b42101561267b576040516356248e9760e01b815260040160405180910390fd5b612684836136f0565b61268d826136f0565b6001600160a01b0383166000908152600c602052604081206126ae906137d2565b1115612790576001600160a01b0383166000908152600c602052604081206126d690826137dc565b6001600160a01b03808616600090815260096020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926127249084906141a3565b90915550506001600160a01b0380851660008181526009602090815260408083209486168352938152838220829055918152600c9091522061276690826137bd565b506001600160a01b0383166000908152600c6020526040902061278990826136db565b505061268d565b6001600160a01b0383166000908152600d602052604081206127b1906137d2565b1115612893576001600160a01b0383166000908152600d602052604081206127d990826137dc565b6001600160a01b03808616600090815260286020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926128279084906141a3565b90915550506001600160a01b038085166000908152602860209081526040808320858516845282528083208390559286168252600d90522061286990826136db565b506001600160a01b0384166000908152600d6020526040902061288c90826137bd565b5050612790565b6001600160a01b038084166000908152600b6020526040808220549285168252812080549091906128c59084906141a3565b90915550506001600160a01b038084166000908152600b60209081526040808320839055600a909152808220549285168252812080549091906129099084906141a3565b90915550506001600160a01b0383166000908152600a60209081526040808320839055602990915281205561293f6015846137bd565b506001600160a01b03838116600081815260016020908152604080832080546001600160a01b031990811690915560028352818420805482169055602d8352818420958816808552958352818420849055848452602c835292819020805490931690925590519182527f9b712b63e3fb1325fa042d3c238ce8144937875065900528ea1e4f3b00f379f29101612173565b6017546001600160a01b031633146129fb576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb69906020016110dc565b6017546001600160a01b03163314612a5b576040516354348f0360e01b815260040160405180910390fd5b612a666026826136db565b612a835760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b158015612abc57600080fd5b505afa158015612ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af49190613e83565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b81526004810193909352169063696a437b9060240160206040518083038186803b158015612b5d57600080fd5b505afa158015612b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b959190613fe4565b6001600160a01b0382166000908152600f60205260409020805460ff1916911515919091179055612bc5816110e7565b6001600160a01b0382166000818152602b60209081526040918290208451815486840151600690810b66ffffffffffffff908116600160381b026001600160701b03199093169390910b169190911717815593820151600190940193909355519081527fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b91016110dc565b6017546001600160a01b03163314612c7b576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b43906020016110dc565b6001600160a01b0382166000908152600d60205260409020612cd290826136db565b505050565b6017546001600160a01b03163314612d02576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612d295760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383169081179091556040519081527feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae250906020016110dc565b6017546001600160a01b03163314612da2576040516354348f0360e01b815260040160405180910390fd5b62015180811015612dc657604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d9906020016110dc565b60026000541415612e1e5760405162461bcd60e51b815260040161158a9061416c565b600260009081556001600160a01b03858116825260016020526040909120548591163314612e5f57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612e9190603c906141a3565b4211612eb057604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612ef65760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612f305760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612f6790849061423e565b90915550612f8190506001600160a01b038516838561378d565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612fcf576001600160a01b0385166000908152600c60205260409020612fcd90856137bd565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe8660405161301e91815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c60205260409020612cd290826136db565b6017546001600160a01b0316331461307f576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e7906020016110dc565b6017546001600160a01b031633146130df576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166131065760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383169081179091556040519081527f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf906020016110dc565b6017546001600160a01b0316331461317f576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff166131b857604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000818152601a6020908152604091829020805460ff1916905590519182527f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e91016110dc565b6001600160a01b0381166000908152600c60205260408120610e2a906137d2565b6017546001600160a01b03163314613255576040516354348f0360e01b815260040160405180910390fd5b613260601583613372565b61327d57604051636211d34960e01b815260040160405180910390fd5b613286826136f0565b6001600160a01b0382166000908152600a6020526040812080548392906132ae9084906141a3565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d19261330e928252602082015260400190565b60405180910390a25050565b60006022548261332a919061429c565b610e2a908361423e565b6000602254831015611eae5760225461334d83856141cf565b61335791906141bb565b9050610e2a565b6060600061336b836137e8565b9392505050565b6001600160a01b0381166000908152600183016020526040812054151561336b565b6000610e2a82602254602354613844565b600260005414156133c85760405162461bcd60e51b815260040161158a9061416c565b600260009081556001600160a01b0384168152600d602052604090206133ee9083613372565b61340a576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156134505760405163435b562560e01b815260040160405180910390fd5b613459836138f2565b6000613468610e1a83856135b3565b6001600160a01b0385166000908152600b60205260409020549091501561351e576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546134b99083906141cf565b6134c391906141bb565b6001600160a01b0385166000908152600a6020526040812080549091906134eb90849061423e565b90915550506001600160a01b0384166000908152600b60205260408120805483929061351890849061423e565b90915550505b6001600160a01b0380851660009081526028602090815260408083209387168352929052908120805484929061355590849061423e565b90915550506001600160a01b038085166000908152602860209081526040808320938716835292905220546135a8576001600160a01b0384166000908152600d602052604090206135a690846137bd565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610e2a576001600160a01b0382166000908152600f602052604081205460ff16613625576001600160a01b0383166000908152602b602052604090205461362090600160381b900460060b6142b0565b613649565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b815260048101889052600684900b602482015260448101919091529192506001600160a01b03169063a0d271079060640160206040518083038186803b1580156136a357600080fd5b505afa1580156136b7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d04919061405b565b600061336b836001600160a01b038416613917565b6001600160a01b0381166000908152602e6020526040812080549161371483614281565b919050555050565b6040516001600160a01b03808516602483015283166044820152606481018290526137879085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613966565b50505050565b6040516001600160a01b038316602482015260448101829052612cd290849063a9059cbb60e01b90606401613750565b600061336b836001600160a01b038416613a38565b6000610e2a825490565b600061336b8383613b2b565b60608160000180548060200260200160405190810160405280929190818152602001828054801561383857602002820191906000526020600020905b815481526020019060010190808311613824575b50505050509050919050565b60008080600019858709858702925082811083820303915050806000141561387e576000841161387357600080fd5b50829004905061336b565b80841161388a57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b6138fb81613b55565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461395e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e2a565b506000610e2a565b60006139bb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613d399092919063ffffffff16565b805190915015612cd257808060200190518101906139d99190613fe4565b612cd25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161158a565b60008181526001830160205260408120548015613b21576000613a5c60018361423e565b8554909150600090613a709060019061423e565b9050818114613ad5576000866000018281548110613a9057613a90614319565b9060005260206000200154905080876000018481548110613ab357613ab3614319565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ae657613ae6614303565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e2a565b6000915050610e2a565b6000826000018281548110613b4257613b42614319565b9060005260206000200154905092915050565b6000613b604261331a565b601e546001600160a01b03166000908152602b602052604090206001015414613bf757601e54613b98906001600160a01b03166110e7565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613c1b906137d2565b811015611eae576001600160a01b0383166000908152600d60205260408120613c4490836137dc565b9050613c51602682613372565b15613d2657613c5f4261331a565b6001600160a01b0382166000908152602b602052604090206001015414613ce557613c89816110e7565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613d1990610e1a90836135b3565b613d2390846141a3565b92505b5080613d3181614281565b915050613bfa565b6060610d04848460008585843b613d925760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161158a565b600080866001600160a01b03168587604051613dae9190614074565b60006040518083038185875af1925050503d8060008114613deb576040519150601f19603f3d011682016040523d82523d6000602084013e613df0565b606091505b5091509150613e00828286613e0b565b979650505050505050565b60608315613e1a57508161336b565b825115613e2a5782518084602001fd5b8160405162461bcd60e51b815260040161158a9190614139565b805180151581146114a857600080fd5b8051600681900b81146114a857600080fd5b600060208284031215613e7857600080fd5b813561336b8161432f565b600060208284031215613e9557600080fd5b815161336b8161432f565b60008060408385031215613eb357600080fd5b8235613ebe8161432f565b91506020830135613ece8161432f565b809150509250929050565b600080600060608486031215613eee57600080fd5b8335613ef98161432f565b92506020840135613f098161432f565b91506040840135613f198161432f565b809150509250925092565b600080600060608486031215613f3957600080fd5b8335613f448161432f565b92506020840135613f548161432f565b929592945050506040919091013590565b60008060008060808587031215613f7b57600080fd5b8435613f868161432f565b93506020850135613f968161432f565b9250604085013591506060850135613fad8161432f565b939692955090935050565b60008060408385031215613fcb57600080fd5b8235613fd68161432f565b946020939093013593505050565b600060208284031215613ff657600080fd5b61336b82613e44565b60008060006060848603121561401457600080fd5b61401d84613e54565b925061402b60208501613e54565b915061403960408501613e44565b90509250925092565b60006020828403121561405457600080fd5b5035919050565b60006020828403121561406d57600080fd5b5051919050565b60008251614086818460208701614255565b9190910192915050565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b818110156140df57845163ffffffff16835293830193918301916001016140bd565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561412d5783516001600160a01b031683529284019291840191600101614108565b50909695505050505050565b6020815260008251806020840152614158816040850160208701614255565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600082198211156141b6576141b66142d7565b500190565b6000826141ca576141ca6142ed565b500490565b60008160001904831182151516156141e9576141e96142d7565b500290565b60008160060b8360060b6000811281667fffffffffffff1901831281151615614219576142196142d7565b81667fffffffffffff018313811615614234576142346142d7565b5090039392505050565b600082821015614250576142506142d7565b500390565b60005b83811015614270578181015183820152602001614258565b838111156137875750506000910152565b6000600019821415614295576142956142d7565b5060010190565b6000826142ab576142ab6142ed565b500690565b60008160060b667fffffffffffff198114156142ce576142ce6142d7565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461434457600080fd5b5056fea264697066735822122086da7e5e489b827aa622908243b4e2bab1bce05e7b9d9a90beee8c6d07eb7c9364736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
