{
  "_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": "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": "0x60806040526203f480601f55621275006020556729a2241af62c000060215562069780602255622cd300602355601e6024553480156200003e57600080fd5b50604051620044aa380380620044aa8339810160408190526200006191620001c4565b6001600055838383833380806200008a5760405162b293ed60e81b815260040160405180910390fd5b601780546001600160a01b03199081166001600160a01b0393841617909155601d80548216888416178155601b80548316888516179055601c80548316878516179055601e8054831686851690811782556000818152600e602052604090819020805490951690911790935590549054915163696a437b60e01b81529183166004830152909116915063696a437b9060240160206040518083038186803b1580156200013557600080fd5b505afa1580156200014a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000170919062000221565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055506200024c95505050505050565b80516001600160a01b0381168114620001bf57600080fd5b919050565b60008060008060808587031215620001db57600080fd5b620001e685620001a7565b9350620001f660208601620001a7565b92506200020660408601620001a7565b91506200021660608601620001a7565b905092959194509250565b6000602082840312156200023457600080fd5b815180151581146200024557600080fd5b9392505050565b61424e806200025c6000396000f3fe608060405234801561001057600080fd5b50600436106103945760003560e01c8063951dc22c116101e1578063cb4be2bb1161010b578063cb4be2bb1461094a578063cb54694d1461095d578063cd22af1b14610970578063d55995fe1461099b578063ddca3f43146109ae578063e01f857c146109b7578063e326ac43146109ca578063e7f0cbf8146109ea578063ebbb619414610a13578063ec00cdfc14610a26578063ec8ca64314610a39578063f0f346b914610a62578063f11a1d1a14610a75578063f136a09d14610a88578063f22150c814610aa8578063f39c38a014610abb578063f6bb203214610ace578063fc253d2b14610af7578063fe75bc4614610b0057600080fd5b8063951dc22c1461075d57806398e90a0f146107655780639d5c33d81461078e578063a2145809146107a1578063a39744b5146107b4578063a676f9ff146107df578063a7d2e784146107ff578063aac6aa9c14610808578063ab033ea91461081b578063af320e811461082e578063b0103b1a14610841578063b239223314610864578063b440027f14610877578063b600702a146108a2578063b7e77340146108b5578063b87fcbff146108c8578063bea2b827146108eb578063c7ae40d014610924578063cacdf93d1461093757600080fd5b806359a2255e116102c257806359a2255e146105d25780635aa6e675146105e55780635ebe23f0146105f8578063633fb68f1461060157806364bb43ee1461060a57806368a9f19c1461061d578063694798e61461063057806369fe0e2d1461065b5780636cf262bc1461066e57806372da828a14610681578063768b5d90146106945780637b40c9131461069d5780637c8fce23146106b0578063878c723e146106b85780638bb6dfa8146106e15780638cb22b76146106f45780638fe204dd146107175780639035654f1461072a57806390a4684e1461074a57600080fd5b8063034d4c611461039957806307b435c2146103bf5780630c620bce146103ea5780630d6a1f87146103ff5780631101eb411461041257806315006b8214610427578063160e1e3114610452578063165e62e714610465578063168f92e7146104a25780631b44555e146104cd5780631cd5c01f146104ed5780631ef94b911461051057806321040b0114610530578063238efcbc1461055b578063274a8db41461056357806346d8908d1461058657806352a4de2914610599578063575288bf146105ac578063594a3a93146105bf575b600080fd5b6103ac6103a7366004613d0a565b610b13565b6040519081526020015b60405180910390f35b6103ac6103cd366004613d44565b601260209081526000928352604080842090915290825290205481565b6103f2610c19565b6040516103b69190613fa4565b6103ac61040d366004613e5c565b610c2a565b610425610420366004613dc8565b610d30565b005b6103ac610435366004613d44565b601060209081526000928352604080842090915290825290205481565b610425610460366004613d0a565b610e8a565b610478610473366004613d0a565b610ff0565b604080518251600690810b825260208085015190910b9082015291810151908201526060016103b6565b6103ac6104b0366004613d44565b600960209081526000928352604080842090915290825290205481565b6103ac6104db366004613d0a565b60056020526000908152604090205481565b6105006104fb366004613d0a565b6113b6565b60405190151581526020016103b6565b601b54610523906001600160a01b031681565b6040516103b69190613f34565b6103ac61053e366004613d44565b601360209081526000928352604080842090915290825290205481565b6104256113c3565b610500610571366004613d0a565b601a6020526000908152604090205460ff1681565b6103f2610594366004613d0a565b61144f565b6104256105a7366004613dc8565b611473565b6104256105ba366004613dc8565b6116c1565b6104256105cd366004613d44565b611984565b6104256105e0366004613d0a565b611a29565b601754610523906001600160a01b031681565b6103ac601f5481565b6103ac60215481565b610425610618366004613d0a565b611adb565b61042561062b366004613d0a565b611b5d565b6103ac61063e366004613d44565b602860209081526000928352604080842090915290825290205481565b610425610669366004613ee6565b611c15565b6103ac61067c366004613d0a565b611c75565b61042561068f366004613d0a565b611dab565b6103ac60225481565b601e54610523906001600160a01b031681565b6103f2611e48565b6105236106c6366004613d0a565b6001602052600090815260409020546001600160a01b031681565b6103ac6106ef366004613d0a565b611e54565b610500610702366004613d0a565b60146020526000908152604090205460ff1681565b610425610725366004613ee6565b611ef7565b6103ac610738366004613d0a565b602e6020526000908152604090205481565b610425610758366004613d44565b611f55565b6103f2612043565b610523610773366004613d0a565b6002602052600090815260409020546001600160a01b031681565b61042561079c366004613d0a565b61204f565b6104256107af366004613d7d565b612107565b6103ac6107c2366004613d44565b600860209081526000928352604080842090915290825290205481565b6103ac6107ed366004613d0a565b60296020526000908152604090205481565b6103ac60205481565b610425610816366004613d0a565b6122d7565b610425610829366004613d0a565b61238b565b61042561083c366004613d44565b612401565b61050061084f366004613d0a565b60076020526000908152604090205460ff1681565b610425610872366004613ee6565b612880565b6103ac610885366004613d44565b602560209081526000928352604080842090915290825290205481565b6104256108b0366004613d0a565b6128e0565b6104256108c3366004613ee6565b612b05565b6105006108d6366004613d0a565b60196020526000908152604090205460ff1681565b6103ac6108f9366004613d44565b6001600160a01b039182166000908152602d6020908152604080832093909416825291909152205490565b601c54610523906001600160a01b031681565b610425610945366004613d44565b612b65565b610425610958366004613d0a565b612b8c565b61042561096b366004613ee6565b612c29565b6103ac61097e366004613d44565b601160209081526000928352604080842090915290825290205481565b6104256109a9366004613e09565b612cad565b6103ac60245481565b6104256109c5366004613d44565b612ee4565b6103ac6109d8366004613d0a565b60066020526000908152604090205481565b6103ac6109f8366004613d0a565b6001600160a01b03166000908152600a602052604090205490565b610425610a21366004613ee6565b612f06565b610425610a34366004613d0a565b612f66565b610523610a47366004613d0a565b602c602052600090815260409020546001600160a01b031681565b610425610a70366004613d0a565b613003565b601d54610523906001600160a01b031681565b6103ac610a96366004613d0a565b602a6020526000908152604090205481565b6103ac610ab6366004613d0a565b6130b7565b601854610523906001600160a01b031681565b6103ac610adc366004613d0a565b6001600160a01b03166000908152600b602052604090205490565b6103ac60235481565b610425610b0e366004613e5c565b6130d8565b600080610b1f83611c75565b6022549091504290610b3a90610b35908361410f565b6131c8565b6001600160a01b0385166000908152602960205260409020541115610bde576022546001600160a01b038516600090815260296020526040902054610b7f904261410f565b10610bbb576022546001600160a01b038516600090815260296020526040902054610baa9190614074565b610bb4908261410f565b9050610bf4565b6001600160a01b038416600090815260296020526040902054610bb4908261410f565b610be7426131c8565b610bf1908261410f565b90505b610bfe81836131e2565b610c0785611e54565b610c119190614074565b949350505050565b6060610c25602661320c565b905090565b6000610c37602684613220565b15610d2a576000610c4784610ff0565b90508060400151600014610d28576001600160a01b0384166000908152600f602052604081205460ff16610c88578160200151610c8390614181565b610c8e565b81602001515b601d5460225460405163a0d2710760e01b8152929350610d1f926001600160a01b039092169163a0d2710791610cca918991879160040161405b565b60206040518083038186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190613eff565b613242565b92505050610d2a565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d6c57604051636efb4f4160e11b815260040160405180910390fd5b602054610d799042614074565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610dc8908490614074565b90915550610dd99050848484613253565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610e185750602154610e168286613461565b105b15610e3657604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e7b91815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610eb5576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610edc5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610f3d908490600401613f34565b60206040518083038186803b158015610f5557600080fd5b505afa158015610f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8d9190613e88565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610fe5908390613f34565b60405180910390a150565b6040805160608101825260008082526020820181905291810191909152611016426131c8565b6001600160a01b0383166000908152602b6020526040902060010154141561108c57506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6000806110a060225442610b35919061410f565b6001600160a01b0385166000908152602b602052604090206001015490915081141561120457604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b61110d426131c8565b611117904261410f565b8260008151811061112a5761112a6141ea565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d91926111869291909116908690600401613f48565b60606040518083038186803b15801561119e57600080fd5b505afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d69190613ea3565b600692830b90920b8088529195506111f0918391506140bf565b600690810b900b60208601525061138d9050565b6001600160a01b0384166000908152602b602052604090206001015481111561138d57604080516002808252606082018352600092602083019080368337019050509050611251426131c8565b61125b904261410f565b8160008151811061126e5761126e6141ea565b602002602001019063ffffffff16908163ffffffff1681525050602254611294426131c8565b61129e904261410f565b6112a89190614074565b816001815181106112bb576112bb6141ea565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926113139216908690600401613f48565b60606040518083038186803b15801561132b57600080fd5b505afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190613ea3565b600692830b90920b808852919550915061137e9082906140bf565b600690810b900b602086015250505b81156113a65761139c426131c8565b60408401526113ae565b600060408401525b50505b919050565b6000610d2a601583613220565b6018546001600160a01b031633146113ee57604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69161144591613f34565b60405180910390a1565b6001600160a01b0381166000908152600d60205260409020606090610d2a9061320c565b6002600054141561149f5760405162461bcd60e51b815260040161149690614024565b60405180910390fd5b60026000556114af602683613220565b6114cc5760405163e0b6aead60e01b815260040160405180910390fd5b6114d7601584613220565b6114f457604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409020611516908361357f565b5061152083613594565b6021546001600160a01b0380851660009081526028602090815260408083209387168352929052205461155e90611558908490614074565b84613461565b101561157d57604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26115fb6001600160a01b0383163330846135c0565b6001600160a01b03808416600090815260286020908152604080832093861683529290529081208054839290611632908490614074565b909155506116459050610d1a8284613461565b6001600160a01b0384166000908152600b60205260408120805490919061166d908490614074565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b600260005414156116e45760405162461bcd60e51b815260040161149690614024565b60026000556116f4601584613220565b61171157604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b038381169116141561173f5760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061176e903090600401613f34565b60206040518083038186803b15801561178657600080fd5b505afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190613eff565b90506117d56001600160a01b0384163330856135c0565b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118049190613f34565b60206040518083038186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613eff565b61185e919061410f565b905060006127106024548361187391906140a0565b61187d919061408c565b9050611889818361410f565b6001600160a01b038088166000908152600960209081526040808320938a16835292905290812080549091906118c0908490614074565b90915550506001600160a01b03808716600090815260256020908152604080832089851680855292529091204290556017546118fd921683613631565b6001600160a01b0386166000908152600c6020526040902061191f908661357f565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb8560405161196f91815260200190565b60405180910390a45050600160005550505050565b6001600160a01b0382811660009081526001602052604090205483911633146119c057604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611a655760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611b06576040516354348f0360e01b815260040160405180910390fd5b611b11602682613661565b611b2e57604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610fe59190613f34565b6017546001600160a01b03163314611b88576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611bc25760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610fe5908390613f34565b6017546001600160a01b03163314611c40576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610fe5565b6000805b6001600160a01b0383166000908152600d60205260409020611c9a90613676565b811015611da5576001600160a01b0383166000908152600d60205260408120611cc39083613680565b9050611cd0602682613220565b15611d92576000611ce082610ff0565b90508060400151600014611d90576001600160a01b0382166000908152600f602052604081205460ff16611d21578160200151611d1c90614181565b611d27565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b8152949550611d8294929093169263a0d2710792610cca92879160040161405b565b611d8c9086614074565b9450505b505b5080611d9d81614152565b915050611c79565b50919050565b6017546001600160a01b03163314611dd6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611dfd5760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610fe5908390613f34565b6060610c25601561320c565b600080611e6083611c75565b6022546001600160a01b03851660009081526029602052604090205491925090611e8a904261410f565b1015610d2a5760008111611eb6576001600160a01b0383166000908152600a6020526040902054611ef0565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611ee69083906140a0565b611ef0919061408c565b9150611da5565b6017546001600160a01b03163314611f22576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610fe5565b6001600160a01b038281166000908152600160205260409020548391163314611f9157604051636efb4f4160e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b03161415611fc45760405163afe7ad4960e01b815260040160405180910390fd5b6001600160a01b038381166000818152602c6020908152604080832080546001600160a01b0319169588169586179055602d825280832094835293905282902042905590517fff0456758201108de53c0ff04c69988d4678ff455b2ce6f733328cf85722c04c90612036908590613f34565b60405180910390a2505050565b6060610c25600361320c565b6017546001600160a01b0316331461207a576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156120b45760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610fe5908390613f34565b6001600160a01b03838116600090815260016020526040902054849116331461214357604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03821661216a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716835292905220546121ad5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b0380851660009081526012602090815260408083209387168352929052205442116121f2576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff161561222c576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590612279908483613631565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca7928862846040516122c891815260200190565b60405180910390a45050505050565b6017546001600160a01b03163314612302576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1661233b576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610fe5908390613f34565b6017546001600160a01b031633146123b6576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610fe5908390613f34565b6001600160a01b03818116600090815260016020526040902054829116331461243d57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff168061247c57506001600160a01b03821660009081526007602052604090205460ff165b1561249a5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152602c60205260409020548116908316146124d757604051630ced616b60e21b815260040160405180910390fd5b6001600160a01b038084166000908152602d602090815260408083209386168352929052205461250990603c90614074565b421015612529576040516356248e9760e01b815260040160405180910390fd5b61253283613594565b61253b82613594565b6001600160a01b0383166000908152600c6020526040812061255c90613676565b111561263e576001600160a01b0383166000908152600c602052604081206125849082613680565b6001600160a01b03808616600090815260096020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926125d2908490614074565b90915550506001600160a01b0380851660008181526009602090815260408083209486168352938152838220829055918152600c909152206126149082613661565b506001600160a01b0383166000908152600c60205260409020612637908261357f565b505061253b565b6001600160a01b0383166000908152600d6020526040812061265f90613676565b1115612741576001600160a01b0383166000908152600d602052604081206126879082613680565b6001600160a01b03808616600090815260286020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926126d5908490614074565b90915550506001600160a01b038085166000908152602860209081526040808320858516845282528083208390559286168252600d905220612717908261357f565b506001600160a01b0384166000908152600d6020526040902061273a9082613661565b505061263e565b6001600160a01b038084166000908152600b602052604080822054928516825281208054909190612773908490614074565b90915550506001600160a01b038084166000908152600b60209081526040808320839055600a909152808220549285168252812080549091906127b7908490614074565b90915550506001600160a01b0383166000908152600a6020908152604080832083905560299091528120556127ed601584613661565b506001600160a01b03808416600081815260016020908152604080832080546001600160a01b031990811690915560028352818420805482169055602d8352818420958816808552958352818420849055938352602c909152908190208054909216909155517f9b712b63e3fb1325fa042d3c238ce8144937875065900528ea1e4f3b00f379f290612036908690613f34565b6017546001600160a01b031633146128ab576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610fe5565b6017546001600160a01b0316331461290b576040516354348f0360e01b815260040160405180910390fd5b61291660268261357f565b6129335760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561296c57600080fd5b505afa158015612980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a49190613d27565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b916129f89190600401613f34565b60206040518083038186803b158015612a1057600080fd5b505afa158015612a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a489190613e88565b6001600160a01b0382166000908152600f60205260409020805460ff1916911515919091179055612a7881610ff0565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610fe5908390613f34565b6017546001600160a01b03163314612b30576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610fe5565b6001600160a01b0382166000908152600d60205260409020612b87908261357f565b505050565b6017546001600160a01b03163314612bb7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612bde5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610fe5908390613f34565b6017546001600160a01b03163314612c54576040516354348f0360e01b815260040160405180910390fd5b62015180811015612c7857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610fe5565b60026000541415612cd05760405162461bcd60e51b815260040161149690614024565b600260009081556001600160a01b03858116825260016020526040909120548591163314612d1157604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612d4390603c90614074565b4211612d6257604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612da85760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612de25760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612e1990849061410f565b90915550612e3390506001600160a01b0385168385613631565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612e81576001600160a01b0385166000908152600c60205260409020612e7f9085613661565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe86604051612ed091815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c60205260409020612b87908261357f565b6017546001600160a01b03163314612f31576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610fe5565b6017546001600160a01b03163314612f91576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612fb85760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610fe5908390613f34565b6017546001600160a01b0316331461302e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661306757604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610fe5908390613f34565b6001600160a01b0381166000908152600c60205260408120610d2a90613676565b6017546001600160a01b03163314613103576040516354348f0360e01b815260040160405180910390fd5b61310e601583613220565b61312b57604051636211d34960e01b815260040160405180910390fd5b61313482613594565b6001600160a01b0382166000908152600a60205260408120805483929061315c908490614074565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926131bc928252602082015260400190565b60405180910390a25050565b6000602254826131d8919061416d565b610d2a908361410f565b6000602254831015611da5576022546131fb83856140a0565b613205919061408c565b9050610d2a565b606060006132198361368c565b9392505050565b6001600160a01b03811660009081526001830160205260408120541515613219565b6000610d2a826022546023546136e8565b600260005414156132765760405162461bcd60e51b815260040161149690614024565b600260009081556001600160a01b0384168152600d6020526040902061329c9083613220565b6132b8576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156132fe5760405163435b562560e01b815260040160405180910390fd5b61330783613796565b6000613316610d1a8385613461565b6001600160a01b0385166000908152600b6020526040902054909150156133cc576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546133679083906140a0565b613371919061408c565b6001600160a01b0385166000908152600a60205260408120805490919061339990849061410f565b90915550506001600160a01b0384166000908152600b6020526040812080548392906133c690849061410f565b90915550505b6001600160a01b0380851660009081526028602090815260408083209387168352929052908120805484929061340390849061410f565b90915550506001600160a01b03808516600090815260286020908152604080832093871683529290522054613456576001600160a01b0384166000908152600d602052604090206134549084613661565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610d2a576001600160a01b0382166000908152600f602052604081205460ff166134d3576001600160a01b0383166000908152602b60205260409020546134ce90600160381b900460060b614181565b6134f7565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d271079161352f918891869160040161405b565b60206040518083038186803b15801561354757600080fd5b505afa15801561355b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c119190613eff565b6000613219836001600160a01b0384166137bb565b6001600160a01b0381166000908152602e602052604081208054916135b883614152565b919050555050565b6040516001600160a01b038085166024830152831660448201526064810182905261362b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261380a565b50505050565b6040516001600160a01b038316602482015260448101829052612b8790849063a9059cbb60e01b906064016135f4565b6000613219836001600160a01b0384166138dc565b6000610d2a825490565b600061321983836139cf565b6060816000018054806020026020016040519081016040528092919081815260200182805480156136dc57602002820191906000526020600020905b8154815260200190600101908083116136c8575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415613722576000841161371757600080fd5b508290049050613219565b80841161372e57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b61379f816139f9565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461380257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d2a565b506000610d2a565b600061385f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bdd9092919063ffffffff16565b805190915015612b87578080602001905181019061387d9190613e88565b612b875760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611496565b600081815260018301602052604081205480156139c557600061390060018361410f565b85549091506000906139149060019061410f565b9050818114613979576000866000018281548110613934576139346141ea565b9060005260206000200154905080876000018481548110613957576139576141ea565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061398a5761398a6141d4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d2a565b6000915050610d2a565b60008260000182815481106139e6576139e66141ea565b9060005260206000200154905092915050565b6000613a04426131c8565b601e546001600160a01b03166000908152602b602052604090206001015414613a9b57601e54613a3c906001600160a01b0316610ff0565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613abf90613676565b811015611da5576001600160a01b0383166000908152600d60205260408120613ae89083613680565b9050613af5602682613220565b15613bca57613b03426131c8565b6001600160a01b0382166000908152602b602052604090206001015414613b8957613b2d81610ff0565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613bbd90610d1a9083613461565b613bc79084614074565b92505b5080613bd581614152565b915050613a9e565b6060610c11848460008585843b613c365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611496565b600080866001600160a01b03168587604051613c529190613f18565b60006040518083038185875af1925050503d8060008114613c8f576040519150601f19603f3d011682016040523d82523d6000602084013e613c94565b606091505b5091509150613ca4828286613caf565b979650505050505050565b60608315613cbe575081613219565b825115613cce5782518084602001fd5b8160405162461bcd60e51b81526004016114969190613ff1565b805180151581146113b157600080fd5b8051600681900b81146113b157600080fd5b600060208284031215613d1c57600080fd5b813561321981614200565b600060208284031215613d3957600080fd5b815161321981614200565b60008060408385031215613d5757600080fd5b8235613d6281614200565b91506020830135613d7281614200565b809150509250929050565b600080600060608486031215613d9257600080fd5b8335613d9d81614200565b92506020840135613dad81614200565b91506040840135613dbd81614200565b809150509250925092565b600080600060608486031215613ddd57600080fd5b8335613de881614200565b92506020840135613df881614200565b929592945050506040919091013590565b60008060008060808587031215613e1f57600080fd5b8435613e2a81614200565b93506020850135613e3a81614200565b9250604085013591506060850135613e5181614200565b939692955090935050565b60008060408385031215613e6f57600080fd5b8235613e7a81614200565b946020939093013593505050565b600060208284031215613e9a57600080fd5b61321982613ce8565b600080600060608486031215613eb857600080fd5b613ec184613cf8565b9250613ecf60208501613cf8565b9150613edd60408501613ce8565b90509250925092565b600060208284031215613ef857600080fd5b5035919050565b600060208284031215613f1157600080fd5b5051919050565b60008251613f2a818460208701614126565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b81811015613f9757845163ffffffff1683529383019391830191600101613f75565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613fe55783516001600160a01b031683529284019291840191600101613fc0565b50909695505050505050565b6020815260008251806020840152614010816040850160208701614126565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b60008219821115614087576140876141a8565b500190565b60008261409b5761409b6141be565b500490565b60008160001904831182151516156140ba576140ba6141a8565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156140ea576140ea6141a8565b81667fffffffffffff018313811615614105576141056141a8565b5090039392505050565b600082821015614121576141216141a8565b500390565b60005b83811015614141578181015183820152602001614129565b8381111561362b5750506000910152565b6000600019821415614166576141666141a8565b5060010190565b60008261417c5761417c6141be565b500690565b60008160060b667fffffffffffff1981141561419f5761419f6141a8565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461421557600080fd5b5056fea2646970667358221220ec7879ea33a2b6c1b3ad38acbf2a9055a05042e69842ff8123fb271fe295664d64736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103945760003560e01c8063951dc22c116101e1578063cb4be2bb1161010b578063cb4be2bb1461094a578063cb54694d1461095d578063cd22af1b14610970578063d55995fe1461099b578063ddca3f43146109ae578063e01f857c146109b7578063e326ac43146109ca578063e7f0cbf8146109ea578063ebbb619414610a13578063ec00cdfc14610a26578063ec8ca64314610a39578063f0f346b914610a62578063f11a1d1a14610a75578063f136a09d14610a88578063f22150c814610aa8578063f39c38a014610abb578063f6bb203214610ace578063fc253d2b14610af7578063fe75bc4614610b0057600080fd5b8063951dc22c1461075d57806398e90a0f146107655780639d5c33d81461078e578063a2145809146107a1578063a39744b5146107b4578063a676f9ff146107df578063a7d2e784146107ff578063aac6aa9c14610808578063ab033ea91461081b578063af320e811461082e578063b0103b1a14610841578063b239223314610864578063b440027f14610877578063b600702a146108a2578063b7e77340146108b5578063b87fcbff146108c8578063bea2b827146108eb578063c7ae40d014610924578063cacdf93d1461093757600080fd5b806359a2255e116102c257806359a2255e146105d25780635aa6e675146105e55780635ebe23f0146105f8578063633fb68f1461060157806364bb43ee1461060a57806368a9f19c1461061d578063694798e61461063057806369fe0e2d1461065b5780636cf262bc1461066e57806372da828a14610681578063768b5d90146106945780637b40c9131461069d5780637c8fce23146106b0578063878c723e146106b85780638bb6dfa8146106e15780638cb22b76146106f45780638fe204dd146107175780639035654f1461072a57806390a4684e1461074a57600080fd5b8063034d4c611461039957806307b435c2146103bf5780630c620bce146103ea5780630d6a1f87146103ff5780631101eb411461041257806315006b8214610427578063160e1e3114610452578063165e62e714610465578063168f92e7146104a25780631b44555e146104cd5780631cd5c01f146104ed5780631ef94b911461051057806321040b0114610530578063238efcbc1461055b578063274a8db41461056357806346d8908d1461058657806352a4de2914610599578063575288bf146105ac578063594a3a93146105bf575b600080fd5b6103ac6103a7366004613d0a565b610b13565b6040519081526020015b60405180910390f35b6103ac6103cd366004613d44565b601260209081526000928352604080842090915290825290205481565b6103f2610c19565b6040516103b69190613fa4565b6103ac61040d366004613e5c565b610c2a565b610425610420366004613dc8565b610d30565b005b6103ac610435366004613d44565b601060209081526000928352604080842090915290825290205481565b610425610460366004613d0a565b610e8a565b610478610473366004613d0a565b610ff0565b604080518251600690810b825260208085015190910b9082015291810151908201526060016103b6565b6103ac6104b0366004613d44565b600960209081526000928352604080842090915290825290205481565b6103ac6104db366004613d0a565b60056020526000908152604090205481565b6105006104fb366004613d0a565b6113b6565b60405190151581526020016103b6565b601b54610523906001600160a01b031681565b6040516103b69190613f34565b6103ac61053e366004613d44565b601360209081526000928352604080842090915290825290205481565b6104256113c3565b610500610571366004613d0a565b601a6020526000908152604090205460ff1681565b6103f2610594366004613d0a565b61144f565b6104256105a7366004613dc8565b611473565b6104256105ba366004613dc8565b6116c1565b6104256105cd366004613d44565b611984565b6104256105e0366004613d0a565b611a29565b601754610523906001600160a01b031681565b6103ac601f5481565b6103ac60215481565b610425610618366004613d0a565b611adb565b61042561062b366004613d0a565b611b5d565b6103ac61063e366004613d44565b602860209081526000928352604080842090915290825290205481565b610425610669366004613ee6565b611c15565b6103ac61067c366004613d0a565b611c75565b61042561068f366004613d0a565b611dab565b6103ac60225481565b601e54610523906001600160a01b031681565b6103f2611e48565b6105236106c6366004613d0a565b6001602052600090815260409020546001600160a01b031681565b6103ac6106ef366004613d0a565b611e54565b610500610702366004613d0a565b60146020526000908152604090205460ff1681565b610425610725366004613ee6565b611ef7565b6103ac610738366004613d0a565b602e6020526000908152604090205481565b610425610758366004613d44565b611f55565b6103f2612043565b610523610773366004613d0a565b6002602052600090815260409020546001600160a01b031681565b61042561079c366004613d0a565b61204f565b6104256107af366004613d7d565b612107565b6103ac6107c2366004613d44565b600860209081526000928352604080842090915290825290205481565b6103ac6107ed366004613d0a565b60296020526000908152604090205481565b6103ac60205481565b610425610816366004613d0a565b6122d7565b610425610829366004613d0a565b61238b565b61042561083c366004613d44565b612401565b61050061084f366004613d0a565b60076020526000908152604090205460ff1681565b610425610872366004613ee6565b612880565b6103ac610885366004613d44565b602560209081526000928352604080842090915290825290205481565b6104256108b0366004613d0a565b6128e0565b6104256108c3366004613ee6565b612b05565b6105006108d6366004613d0a565b60196020526000908152604090205460ff1681565b6103ac6108f9366004613d44565b6001600160a01b039182166000908152602d6020908152604080832093909416825291909152205490565b601c54610523906001600160a01b031681565b610425610945366004613d44565b612b65565b610425610958366004613d0a565b612b8c565b61042561096b366004613ee6565b612c29565b6103ac61097e366004613d44565b601160209081526000928352604080842090915290825290205481565b6104256109a9366004613e09565b612cad565b6103ac60245481565b6104256109c5366004613d44565b612ee4565b6103ac6109d8366004613d0a565b60066020526000908152604090205481565b6103ac6109f8366004613d0a565b6001600160a01b03166000908152600a602052604090205490565b610425610a21366004613ee6565b612f06565b610425610a34366004613d0a565b612f66565b610523610a47366004613d0a565b602c602052600090815260409020546001600160a01b031681565b610425610a70366004613d0a565b613003565b601d54610523906001600160a01b031681565b6103ac610a96366004613d0a565b602a6020526000908152604090205481565b6103ac610ab6366004613d0a565b6130b7565b601854610523906001600160a01b031681565b6103ac610adc366004613d0a565b6001600160a01b03166000908152600b602052604090205490565b6103ac60235481565b610425610b0e366004613e5c565b6130d8565b600080610b1f83611c75565b6022549091504290610b3a90610b35908361410f565b6131c8565b6001600160a01b0385166000908152602960205260409020541115610bde576022546001600160a01b038516600090815260296020526040902054610b7f904261410f565b10610bbb576022546001600160a01b038516600090815260296020526040902054610baa9190614074565b610bb4908261410f565b9050610bf4565b6001600160a01b038416600090815260296020526040902054610bb4908261410f565b610be7426131c8565b610bf1908261410f565b90505b610bfe81836131e2565b610c0785611e54565b610c119190614074565b949350505050565b6060610c25602661320c565b905090565b6000610c37602684613220565b15610d2a576000610c4784610ff0565b90508060400151600014610d28576001600160a01b0384166000908152600f602052604081205460ff16610c88578160200151610c8390614181565b610c8e565b81602001515b601d5460225460405163a0d2710760e01b8152929350610d1f926001600160a01b039092169163a0d2710791610cca918991879160040161405b565b60206040518083038186803b158015610ce257600080fd5b505afa158015610cf6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d1a9190613eff565b613242565b92505050610d2a565b505b92915050565b6001600160a01b038381166000908152600160205260409020548491163314610d6c57604051636efb4f4160e11b815260040160405180910390fd5b602054610d799042614074565b6001600160a01b03808616600081815260126020908152604080832094891680845294825280832095909555918152601382528381209281529190529081208054849290610dc8908490614074565b90915550610dd99050848484613253565b6001600160a01b038085166000908152602860209081526040808320938716835292905220548015801590610e185750602154610e168286613461565b105b15610e3657604051636f447fcd60e11b815260040160405180910390fd5b836001600160a01b0316856001600160a01b03167f9aaab310d247ad45aef26bbdefc4ebf20c728fdb84c92b95b2b05d21826940de85604051610e7b91815260200190565b60405180910390a35050505050565b6017546001600160a01b03163314610eb5576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116610edc5760405163d92e233d60e01b815260040160405180910390fd5b601e80546001600160a01b038084166001600160a01b031992831681179093556000838152600e6020526040908190208054909316909317909155601d54915163696a437b60e01b815291169063696a437b90610f3d908490600401613f34565b60206040518083038186803b158015610f5557600080fd5b505afa158015610f69573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8d9190613e88565b6001600160a01b0382166000908152600f602052604090819020805460ff191692151592909217909155517f9bb1515b0fc2645a3f011162460a22fdd512e0bca265e7dc9ba6bceae8930afa90610fe5908390613f34565b60405180910390a150565b6040805160608101825260008082526020820181905291810191909152611016426131c8565b6001600160a01b0383166000908152602b6020526040902060010154141561108c57506001600160a01b03166000908152602b602090815260409182902082516060810184528154600681810b810b810b8352600160381b909104810b810b900b92810192909252600101549181019190915290565b6000806110a060225442610b35919061410f565b6001600160a01b0385166000908152602b602052604090206001015490915081141561120457604080516001808252818301909252600091602080830190803683375050506001600160a01b0386166000908152602b602052604090205490915060060b61110d426131c8565b611117904261410f565b8260008151811061112a5761112a6141ea565b63ffffffff909216602092830291909101820152601d546001600160a01b038881166000908152600e90935260409283902054925163dc686d9160e01b81529181169263dc686d91926111869291909116908690600401613f48565b60606040518083038186803b15801561119e57600080fd5b505afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d69190613ea3565b600692830b90920b8088529195506111f0918391506140bf565b600690810b900b60208601525061138d9050565b6001600160a01b0384166000908152602b602052604090206001015481111561138d57604080516002808252606082018352600092602083019080368337019050509050611251426131c8565b61125b904261410f565b8160008151811061126e5761126e6141ea565b602002602001019063ffffffff16908163ffffffff1681525050602254611294426131c8565b61129e904261410f565b6112a89190614074565b816001815181106112bb576112bb6141ea565b63ffffffff909216602092830291909101820152601d546001600160a01b038781166000908152600e909352604080842054905163dc686d9160e01b81529282169263dc686d91926113139216908690600401613f48565b60606040518083038186803b15801561132b57600080fd5b505afa15801561133f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113639190613ea3565b600692830b90920b808852919550915061137e9082906140bf565b600690810b900b602086015250505b81156113a65761139c426131c8565b60408401526113ae565b600060408401525b50505b919050565b6000610d2a601583613220565b6018546001600160a01b031633146113ee57604051637ef5703160e11b815260040160405180910390fd5b60188054601780546001600160a01b0383166001600160a01b031991821681179092559091169091556040517fc73be659241aade67e9a059bcf21494955018b213dbd1179054ccf928b13f3b69161144591613f34565b60405180910390a1565b6001600160a01b0381166000908152600d60205260409020606090610d2a9061320c565b6002600054141561149f5760405162461bcd60e51b815260040161149690614024565b60405180910390fd5b60026000556114af602683613220565b6114cc5760405163e0b6aead60e01b815260040160405180910390fd5b6114d7601584613220565b6114f457604051636211d34960e01b815260040160405180910390fd5b6001600160a01b0383166000908152600d60205260409020611516908361357f565b5061152083613594565b6021546001600160a01b0380851660009081526028602090815260408083209387168352929052205461155e90611558908490614074565b84613461565b101561157d57604051636f447fcd60e11b815260040160405180910390fd5b6001600160a01b038316600081815260296020908152604080832054600a835281842054600b845293829020548251918252928101939093528201527fee3f0daba9837d1ab0597acf34328550e4832d02e24e467825e7c2dd318c38209060600160405180910390a26115fb6001600160a01b0383163330846135c0565b6001600160a01b03808416600090815260286020908152604080832093861683529290529081208054839290611632908490614074565b909155506116459050610d1a8284613461565b6001600160a01b0384166000908152600b60205260408120805490919061166d908490614074565b909155505060405181815233906001600160a01b0384811691908616907f4e186bc75a2220191b826baff3ee63c3e970e94e58a9007ff94c9a7b8e6ebb3f9060200160405180910390a45050600160005550565b600260005414156116e45760405162461bcd60e51b815260040161149690614024565b60026000556116f4601584613220565b61171157604051636211d34960e01b815260040160405180910390fd5b601b546001600160a01b038381169116141561173f5760405162822d9760e71b815260040160405180910390fd5b6040516370a0823160e01b81526000906001600160a01b038416906370a082319061176e903090600401613f34565b60206040518083038186803b15801561178657600080fd5b505afa15801561179a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117be9190613eff565b90506117d56001600160a01b0384163330856135c0565b600081846001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118049190613f34565b60206040518083038186803b15801561181c57600080fd5b505afa158015611830573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118549190613eff565b61185e919061410f565b905060006127106024548361187391906140a0565b61187d919061408c565b9050611889818361410f565b6001600160a01b038088166000908152600960209081526040808320938a16835292905290812080549091906118c0908490614074565b90915550506001600160a01b03808716600090815260256020908152604080832089851680855292529091204290556017546118fd921683613631565b6001600160a01b0386166000908152600c6020526040902061191f908661357f565b50336001600160a01b0316856001600160a01b0316876001600160a01b03167fec1a37d4a331a5059081e0fb5da1735e7890900cd215a4fb1e9f2779fd7b83eb8560405161196f91815260200190565b60405180910390a45050600160005550505050565b6001600160a01b0382811660009081526001602052604090205483911633146119c057604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03838116600081815260026020908152604080832080546001600160a01b031916888716908117909155600190925280832054905191941692917fa8bad3f0b781e1d954af9945167d5f80bfe5e57930f17c93843187c77557a6b891a4505050565b6001600160a01b038181166000908152600260205260409020548291163314611a655760405163cfe9663360e01b815260040160405180910390fd5b6001600160a01b03828116600081815260016020908152604080832080546002909352818420805487166001600160a01b031980861691909117909255805490911690555193169283929133917fcf30c54296d5eee76168b564c59c50578d49c271733a470f32707c8cfbc88a8b9190a4505050565b6017546001600160a01b03163314611b06576040516354348f0360e01b815260040160405180910390fd5b611b11602682613661565b611b2e57604051630a8d08b160e01b815260040160405180910390fd5b7f51199d699bdfd516fa88dd0d2f8487c40c147b4867acaa23adc8d4df6b098e5681604051610fe59190613f34565b6017546001600160a01b03163314611b88576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1615611bc25760405163546da66560e11b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19166001179055517f049ccb28ab796d3225573a065712f6e7754487ced56056cda8889c337511807b90610fe5908390613f34565b6017546001600160a01b03163314611c40576040516354348f0360e01b815260040160405180910390fd5b60248190556040518181527f4c10ca068ff7002cf5da78f2f697d1e91f6f0ac27f7344b28e8ef25263f87e5d90602001610fe5565b6000805b6001600160a01b0383166000908152600d60205260409020611c9a90613676565b811015611da5576001600160a01b0383166000908152600d60205260408120611cc39083613680565b9050611cd0602682613220565b15611d92576000611ce082610ff0565b90508060400151600014611d90576001600160a01b0382166000908152600f602052604081205460ff16611d21578160200151611d1c90614181565b611d27565b81602001515b601d546001600160a01b03888116600090815260286020908152604080832089851684529091529081902054602254915163a0d2710760e01b8152949550611d8294929093169263a0d2710792610cca92879160040161405b565b611d8c9086614074565b9450505b505b5080611d9d81614152565b915050611c79565b50919050565b6017546001600160a01b03163314611dd6576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116611dfd5760405163d92e233d60e01b815260040160405180910390fd5b601d80546001600160a01b0319166001600160a01b0383161790556040517f71973fd672e51deb8f739b1f7e1eab991936645acd6f83e2bde6eeeaff5490b090610fe5908390613f34565b6060610c25601561320c565b600080611e6083611c75565b6022546001600160a01b03851660009081526029602052604090205491925090611e8a904261410f565b1015610d2a5760008111611eb6576001600160a01b0383166000908152600a6020526040902054611ef0565b6001600160a01b0383166000908152600b6020908152604080832054600a90925290912054611ee69083906140a0565b611ef0919061408c565b9150611da5565b6017546001600160a01b03163314611f22576040516354348f0360e01b815260040160405180910390fd5b60208181556040518281527fc8d443472c9783cc36f8f5f5091f08ce9f37fc2f9e6d79cf1d9aaf40a433fee29101610fe5565b6001600160a01b038281166000908152600160205260409020548391163314611f9157604051636efb4f4160e11b815260040160405180910390fd5b816001600160a01b0316836001600160a01b03161415611fc45760405163afe7ad4960e01b815260040160405180910390fd5b6001600160a01b038381166000818152602c6020908152604080832080546001600160a01b0319169588169586179055602d825280832094835293905282902042905590517fff0456758201108de53c0ff04c69988d4678ff455b2ce6f733328cf85722c04c90612036908590613f34565b60405180910390a2505050565b6060610c25600361320c565b6017546001600160a01b0316331461207a576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff16156120b45760405163274e25dd60e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19166001179055517f8addc69f897ecca0e41d70ed4ff9d75a9148a615a0fbda8597e53aea2684302f90610fe5908390613f34565b6001600160a01b03838116600090815260016020526040902054849116331461214357604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03821661216a5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b038085166000908152601360209081526040808320938716835292905220546121ad5760405163184c088160e21b815260040160405180910390fd5b6001600160a01b0380851660009081526012602090815260408083209387168352929052205442116121f2576040516327cfdcb760e01b815260040160405180910390fd5b6001600160a01b03841660009081526007602052604090205460ff161561222c576040516362e6201d60e01b815260040160405180910390fd5b6001600160a01b0380851660008181526013602090815260408083209488168084529482528083208054908490559383526012825280832085845290915281205590612279908483613631565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffdb7893bf11f50c621e59cc7f1cf540e94295cb27ca869ec7ed7618ca7928862846040516122c891815260200190565b60405180910390a45050505050565b6017546001600160a01b03163314612302576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090205460ff1661233b576040516336fe17e760e21b815260040160405180910390fd5b6001600160a01b03811660009081526019602052604090819020805460ff19169055517f3ed8cbce8cab40e59282f1743e2b607effa08b5cbe0111bb4721134f2f80d02590610fe5908390613f34565b6017546001600160a01b031633146123b6576040516354348f0360e01b815260040160405180910390fd5b601880546001600160a01b0319166001600160a01b0383161790556040517fe987aaedf9d279143bdf1eee16cf1d0feb47742867d81083df8d6cd0a5ac857f90610fe5908390613f34565b6001600160a01b03818116600090815260016020526040902054829116331461243d57604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03831660009081526007602052604090205460ff168061247c57506001600160a01b03821660009081526007602052604090205460ff165b1561249a5760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b038381166000908152602c60205260409020548116908316146124d757604051630ced616b60e21b815260040160405180910390fd5b6001600160a01b038084166000908152602d602090815260408083209386168352929052205461250990603c90614074565b421015612529576040516356248e9760e01b815260040160405180910390fd5b61253283613594565b61253b82613594565b6001600160a01b0383166000908152600c6020526040812061255c90613676565b111561263e576001600160a01b0383166000908152600c602052604081206125849082613680565b6001600160a01b03808616600090815260096020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926125d2908490614074565b90915550506001600160a01b0380851660008181526009602090815260408083209486168352938152838220829055918152600c909152206126149082613661565b506001600160a01b0383166000908152600c60205260409020612637908261357f565b505061253b565b6001600160a01b0383166000908152600d6020526040812061265f90613676565b1115612741576001600160a01b0383166000908152600d602052604081206126879082613680565b6001600160a01b03808616600090815260286020818152604080842085871680865290835281852054958a1685529282528084209284529190528120805493945091926126d5908490614074565b90915550506001600160a01b038085166000908152602860209081526040808320858516845282528083208390559286168252600d905220612717908261357f565b506001600160a01b0384166000908152600d6020526040902061273a9082613661565b505061263e565b6001600160a01b038084166000908152600b602052604080822054928516825281208054909190612773908490614074565b90915550506001600160a01b038084166000908152600b60209081526040808320839055600a909152808220549285168252812080549091906127b7908490614074565b90915550506001600160a01b0383166000908152600a6020908152604080832083905560299091528120556127ed601584613661565b506001600160a01b03808416600081815260016020908152604080832080546001600160a01b031990811690915560028352818420805482169055602d8352818420958816808552958352818420849055938352602c909152908190208054909216909155517f9b712b63e3fb1325fa042d3c238ce8144937875065900528ea1e4f3b00f379f290612036908690613f34565b6017546001600160a01b031633146128ab576040516354348f0360e01b815260040160405180910390fd5b60238190556040518181527fbdcfd7b8482f31cff6a87c362d9e2e3887f4cdc2018c7c485d8e78a7b2fadb6990602001610fe5565b6017546001600160a01b0316331461290b576040516354348f0360e01b815260040160405180910390fd5b61291660268261357f565b6129335760405163f25e6b9f60e01b815260040160405180910390fd5b806001600160a01b03166316f0115b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561296c57600080fd5b505afa158015612980573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a49190613d27565b6001600160a01b038281166000908152600e60205260409081902080546001600160a01b0319169383169384179055601d54905163696a437b60e01b815291169163696a437b916129f89190600401613f34565b60206040518083038186803b158015612a1057600080fd5b505afa158015612a24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a489190613e88565b6001600160a01b0382166000908152600f60205260409020805460ff1916911515919091179055612a7881610ff0565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b161791909117815591810151600190920191909155517fabfa8db4d238fa78bf4e15fcc91328dd35f3978f200e2857a56bb719732b7b0b90610fe5908390613f34565b6017546001600160a01b03163314612b30576040516354348f0360e01b815260040160405180910390fd5b601f8190556040518181527fd319ef78d2b690bb773fcccc2d096306bac7c9222dd0bb6b300f461e4a376b4390602001610fe5565b6001600160a01b0382166000908152600d60205260409020612b87908261357f565b505050565b6017546001600160a01b03163314612bb7576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612bde5760405163d92e233d60e01b815260040160405180910390fd5b601c80546001600160a01b0319166001600160a01b0383161790556040517feb931b4b5a98d20a6b1e6693a7c59d8e337a06e2f1473bb776e19251db7ae25090610fe5908390613f34565b6017546001600160a01b03163314612c54576040516354348f0360e01b815260040160405180910390fd5b62015180811015612c7857604051633f384aad60e21b815260040160405180910390fd5b60228190556040518181527f54aafa56429e22230b52f1495588ffc632277d74f3a85ec755e13ac50c1584d990602001610fe5565b60026000541415612cd05760405162461bcd60e51b815260040161149690614024565b600260009081556001600160a01b03858116825260016020526040909120548591163314612d1157604051636efb4f4160e11b815260040160405180910390fd5b6001600160a01b03808616600090815260256020908152604080832093881683529290522054612d4390603c90614074565b4211612d6257604051631e0b407560e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290522054831115612da85760405163024ae82d60e61b815260040160405180910390fd5b6001600160a01b03851660009081526007602052604090205460ff1615612de25760405163ad2fdf3b60e01b815260040160405180910390fd5b6001600160a01b03808616600090815260096020908152604080832093881683529290529081208054859290612e1990849061410f565b90915550612e3390506001600160a01b0385168385613631565b6001600160a01b03808616600090815260096020908152604080832093881683529290522054612e81576001600160a01b0385166000908152600c60205260409020612e7f9085613661565b505b816001600160a01b0316846001600160a01b0316866001600160a01b03167f53e982dd9ec088d634c74c98fbbc161f808b4b6469a26c657120b9a31cb34bfe86604051612ed091815260200190565b60405180910390a450506001600055505050565b6001600160a01b0382166000908152600c60205260409020612b87908261357f565b6017546001600160a01b03163314612f31576040516354348f0360e01b815260040160405180910390fd5b60218190556040518181527f24d51b415694a791b1c77df7817c075ac82b83ce611bcd8627d2e66cf37aa3e790602001610fe5565b6017546001600160a01b03163314612f91576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b038116612fb85760405163d92e233d60e01b815260040160405180910390fd5b601b80546001600160a01b0319166001600160a01b0383161790556040517f1d1a3e7caf0717056e48dc8aefa54d806c7af86324fece4e5d49f8e1f01f84bf90610fe5908390613f34565b6017546001600160a01b0316331461302e576040516354348f0360e01b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090205460ff1661306757604051633ca0d42760e11b815260040160405180910390fd5b6001600160a01b0381166000908152601a602052604090819020805460ff19169055517f5e8bd21d0a98cb2caf33706e56139ff40ffbdca7ec5d9d412a0a2292496dc70e90610fe5908390613f34565b6001600160a01b0381166000908152600c60205260408120610d2a90613676565b6017546001600160a01b03163314613103576040516354348f0360e01b815260040160405180910390fd5b61310e601583613220565b61312b57604051636211d34960e01b815260040160405180910390fd5b61313482613594565b6001600160a01b0382166000908152600a60205260408120805483929061315c908490614074565b90915550506001600160a01b038216600081815260296020908152604080832054600a909252918290205491517f5abcf5031fdbd3badb9d1e09094208de329aee72730e87650f346584205d23d1926131bc928252602082015260400190565b60405180910390a25050565b6000602254826131d8919061416d565b610d2a908361410f565b6000602254831015611da5576022546131fb83856140a0565b613205919061408c565b9050610d2a565b606060006132198361368c565b9392505050565b6001600160a01b03811660009081526001830160205260408120541515613219565b6000610d2a826022546023546136e8565b600260005414156132765760405162461bcd60e51b815260040161149690614024565b600260009081556001600160a01b0384168152600d6020526040902061329c9083613220565b6132b8576040516241cfa560e21b815260040160405180910390fd5b6001600160a01b038084166000908152602860209081526040808320938616835292905220548111156132fe5760405163435b562560e01b815260040160405180910390fd5b61330783613796565b6000613316610d1a8385613461565b6001600160a01b0385166000908152600b6020526040902054909150156133cc576001600160a01b0384166000908152600b6020908152604080832054600a909252909120546133679083906140a0565b613371919061408c565b6001600160a01b0385166000908152600a60205260408120805490919061339990849061410f565b90915550506001600160a01b0384166000908152600b6020526040812080548392906133c690849061410f565b90915550505b6001600160a01b0380851660009081526028602090815260408083209387168352929052908120805484929061340390849061410f565b90915550506001600160a01b03808516600090815260286020908152604080832093871683529290522054613456576001600160a01b0384166000908152600d602052604090206134549084613661565b505b505060016000555050565b6001600160a01b0381166000908152602b602052604081206001015415610d2a576001600160a01b0382166000908152600f602052604081205460ff166134d3576001600160a01b0383166000908152602b60205260409020546134ce90600160381b900460060b614181565b6134f7565b6001600160a01b0383166000908152602b6020526040902054600160381b900460060b5b601d5460225460405163a0d2710760e01b81529293506001600160a01b039091169163a0d271079161352f918891869160040161405b565b60206040518083038186803b15801561354757600080fd5b505afa15801561355b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c119190613eff565b6000613219836001600160a01b0384166137bb565b6001600160a01b0381166000908152602e602052604081208054916135b883614152565b919050555050565b6040516001600160a01b038085166024830152831660448201526064810182905261362b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261380a565b50505050565b6040516001600160a01b038316602482015260448101829052612b8790849063a9059cbb60e01b906064016135f4565b6000613219836001600160a01b0384166138dc565b6000610d2a825490565b600061321983836139cf565b6060816000018054806020026020016040519081016040528092919081815260200182805480156136dc57602002820191906000526020600020905b8154815260200190600101908083116136c8575b50505050509050919050565b600080806000198587098587029250828110838203039150508060001415613722576000841161371757600080fd5b508290049050613219565b80841161372e57600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b61379f816139f9565b6001600160a01b039091166000908152600b6020526040902055565b600081815260018301602052604081205461380257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610d2a565b506000610d2a565b600061385f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613bdd9092919063ffffffff16565b805190915015612b87578080602001905181019061387d9190613e88565b612b875760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401611496565b600081815260018301602052604081205480156139c557600061390060018361410f565b85549091506000906139149060019061410f565b9050818114613979576000866000018281548110613934576139346141ea565b9060005260206000200154905080876000018481548110613957576139576141ea565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061398a5761398a6141d4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610d2a565b6000915050610d2a565b60008260000182815481106139e6576139e66141ea565b9060005260206000200154905092915050565b6000613a04426131c8565b601e546001600160a01b03166000908152602b602052604090206001015414613a9b57601e54613a3c906001600160a01b0316610ff0565b601e546001600160a01b03166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b1617919091178155910151600191909101555b60005b6001600160a01b0383166000908152600d60205260409020613abf90613676565b811015611da5576001600160a01b0383166000908152600d60205260408120613ae89083613680565b9050613af5602682613220565b15613bca57613b03426131c8565b6001600160a01b0382166000908152602b602052604090206001015414613b8957613b2d81610ff0565b6001600160a01b0382166000908152602b60209081526040918290208351815492850151600690810b66ffffffffffffff908116600160381b026001600160701b03199095169290910b16179190911781559101516001909101555b6001600160a01b03808516600090815260286020908152604080832093851683529290522054613bbd90610d1a9083613461565b613bc79084614074565b92505b5080613bd581614152565b915050613a9e565b6060610c11848460008585843b613c365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611496565b600080866001600160a01b03168587604051613c529190613f18565b60006040518083038185875af1925050503d8060008114613c8f576040519150601f19603f3d011682016040523d82523d6000602084013e613c94565b606091505b5091509150613ca4828286613caf565b979650505050505050565b60608315613cbe575081613219565b825115613cce5782518084602001fd5b8160405162461bcd60e51b81526004016114969190613ff1565b805180151581146113b157600080fd5b8051600681900b81146113b157600080fd5b600060208284031215613d1c57600080fd5b813561321981614200565b600060208284031215613d3957600080fd5b815161321981614200565b60008060408385031215613d5757600080fd5b8235613d6281614200565b91506020830135613d7281614200565b809150509250929050565b600080600060608486031215613d9257600080fd5b8335613d9d81614200565b92506020840135613dad81614200565b91506040840135613dbd81614200565b809150509250925092565b600080600060608486031215613ddd57600080fd5b8335613de881614200565b92506020840135613df881614200565b929592945050506040919091013590565b60008060008060808587031215613e1f57600080fd5b8435613e2a81614200565b93506020850135613e3a81614200565b9250604085013591506060850135613e5181614200565b939692955090935050565b60008060408385031215613e6f57600080fd5b8235613e7a81614200565b946020939093013593505050565b600060208284031215613e9a57600080fd5b61321982613ce8565b600080600060608486031215613eb857600080fd5b613ec184613cf8565b9250613ecf60208501613cf8565b9150613edd60408501613ce8565b90509250925092565b600060208284031215613ef857600080fd5b5035919050565b600060208284031215613f1157600080fd5b5051919050565b60008251613f2a818460208701614126565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b038316815260406020808301829052835191830182905260009184820191906060850190845b81811015613f9757845163ffffffff1683529383019391830191600101613f75565b5090979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015613fe55783516001600160a01b031683529284019291840191600101613fc0565b50909695505050505050565b6020815260008251806020840152614010816040850160208701614126565b601f01601f19169190910160400192915050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b92835260069190910b6020830152604082015260600190565b60008219821115614087576140876141a8565b500190565b60008261409b5761409b6141be565b500490565b60008160001904831182151516156140ba576140ba6141a8565b500290565b60008160060b8360060b6000811281667fffffffffffff19018312811516156140ea576140ea6141a8565b81667fffffffffffff018313811615614105576141056141a8565b5090039392505050565b600082821015614121576141216141a8565b500390565b60005b83811015614141578181015183820152602001614129565b8381111561362b5750506000910152565b6000600019821415614166576141666141a8565b5060010190565b60008261417c5761417c6141be565b500690565b60008160060b667fffffffffffff1981141561419f5761419f6141a8565b60000392915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b038116811461421557600080fd5b5056fea2646970667358221220ec7879ea33a2b6c1b3ad38acbf2a9055a05042e69842ff8123fb271fe295664d64736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
