Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
8,636.09 przUSDC

Holders:
9
Profile Summary
Blockchain:
Base (8453)


Decimals:
6
Contract Source Code Verified (Partial Match)
Contract Name:
PrizeVault

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Created At:
Tue, 17 Dec 2024 20:19:23 GMT
PrizeVault.sol
src
PrizeVault.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "contract IERC4626",
        "name": "yieldVault_",
        "type": "address"
      },
      {
        "internalType": "contract PrizePool",
        "name": "prizePool_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "claimer_",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "yieldFeeRecipient_",
        "type": "address"
      },
      {
        "internalType": "uint32",
        "name": "yieldFeePercentage_",
        "type": "uint32"
      },
      {
        "internalType": "uint256",
        "name": "yieldBuffer_",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "owner_",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "BurnZeroShares",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "claimer",
        "type": "address"
      }
    ],
    "name": "CallerNotClaimer",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "liquidationPair",
        "type": "address"
      }
    ],
    "name": "CallerNotLP",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "yieldFeeRecipient",
        "type": "address"
      }
    ],
    "name": "CallerNotYieldFeeRecipient",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ClaimRecipientZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ClaimerZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "DepositZeroAssets",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "asset",
        "type": "address"
      }
    ],
    "name": "FailedToGetAssetDecimals",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "InvalidShortString",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LPZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "LiquidationAmountOutZero",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "totalToWithdraw",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "availableYield",
        "type": "uint256"
      }
    ],
    "name": "LiquidationExceedsAvailable",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenIn",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "prizeToken",
        "type": "address"
      }
    ],
    "name": "LiquidationTokenInNotPrizeToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      }
    ],
    "name": "LiquidationTokenOutNotSupported",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "totalAssets",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "totalSupply",
        "type": "uint256"
      }
    ],
    "name": "LossyDeposit",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxShares",
        "type": "uint256"
      }
    ],
    "name": "MaxSharesExceeded",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "assets",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "minAssets",
        "type": "uint256"
      }
    ],
    "name": "MinAssetsNotReached",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "excess",
        "type": "uint256"
      }
    ],
    "name": "MintLimitExceeded",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "MintZeroShares",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "OwnerZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "caller",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "PermitCallerNotOwner",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "PrizePoolZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "returnDataSize",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "hookDataLimit",
        "type": "uint256"
      }
    ],
    "name": "ReturnDataOverLimit",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "yieldFeeBalance",
        "type": "uint256"
      }
    ],
    "name": "SharesExceedsYieldFeeBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "str",
        "type": "string"
      }
    ],
    "name": "StringTooLong",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TwabControllerZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "WithdrawZeroAssets",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "yieldFeePercentage",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxYieldFeePercentage",
        "type": "uint256"
      }
    ],
    "name": "YieldFeePercentageExceedsMax",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "YieldVaultZeroAddress",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "ZeroTotalAssets",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      }
    ],
    "name": "ClaimYieldFeeShares",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "claimer",
        "type": "address"
      }
    ],
    "name": "ClaimerSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "assets",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      }
    ],
    "name": "Deposit",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "EIP712DomainChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "liquidationPair",
        "type": "address"
      }
    ],
    "name": "LiquidationPairSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pendingOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipOffered",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "useBeforeClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useAfterClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "contract IPrizeHooks",
            "name": "implementation",
            "type": "address"
          }
        ],
        "indexed": false,
        "internalType": "struct PrizeHooks",
        "name": "hooks",
        "type": "tuple"
      }
    ],
    "name": "SetHooks",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "liquidationPair",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "tokenOut",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amountOut",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "yieldFee",
        "type": "uint256"
      }
    ],
    "name": "TransferYieldOut",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "assets",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "shares",
        "type": "uint256"
      }
    ],
    "name": "Withdraw",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "yieldFeePercentage",
        "type": "uint256"
      }
    ],
    "name": "YieldFeePercentageSet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "yieldFeeRecipient",
        "type": "address"
      }
    ],
    "name": "YieldFeeRecipientSet",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DOMAIN_SEPARATOR",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "FEE_PRECISION",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "HOOK_GAS",
    "outputs": [
      {
        "internalType": "uint24",
        "name": "",
        "type": "uint24"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "HOOK_RETURN_DATA_LIMIT",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "MAX_YIELD_FEE",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "allowance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "asset",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "availableYieldBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_winner",
        "type": "address"
      },
      {
        "internalType": "uint8",
        "name": "_tier",
        "type": "uint8"
      },
      {
        "internalType": "uint32",
        "name": "_prizeIndex",
        "type": "uint32"
      },
      {
        "internalType": "uint96",
        "name": "_reward",
        "type": "uint96"
      },
      {
        "internalType": "address",
        "name": "_rewardRecipient",
        "type": "address"
      }
    ],
    "name": "claimPrize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      }
    ],
    "name": "claimYieldFeeShares",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "claimer",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      }
    ],
    "name": "convertToAssets",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      }
    ],
    "name": "convertToShares",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "currentYieldBuffer",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "subtractedValue",
        "type": "uint256"
      }
    ],
    "name": "decreaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      }
    ],
    "name": "deposit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "_v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "_r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_s",
        "type": "bytes32"
      }
    ],
    "name": "depositWithPermit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "eip712Domain",
    "outputs": [
      {
        "internalType": "bytes1",
        "name": "fields",
        "type": "bytes1"
      },
      {
        "internalType": "string",
        "name": "name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "version",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "chainId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "verifyingContract",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "salt",
        "type": "bytes32"
      },
      {
        "internalType": "uint256[]",
        "name": "extensions",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "getHooks",
    "outputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "useBeforeClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useAfterClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "contract IPrizeHooks",
            "name": "implementation",
            "type": "address"
          }
        ],
        "internalType": "struct PrizeHooks",
        "name": "",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "addedValue",
        "type": "uint256"
      }
    ],
    "name": "increaseAllowance",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenOut",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_liquidationPair",
        "type": "address"
      }
    ],
    "name": "isLiquidationPair",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenOut",
        "type": "address"
      }
    ],
    "name": "liquidatableBalanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "liquidationPair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "maxDeposit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "maxMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "maxRedeem",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "maxWithdraw",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      }
    ],
    "name": "mint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "nonces",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "deadline",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "v",
        "type": "uint8"
      },
      {
        "internalType": "bytes32",
        "name": "r",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "s",
        "type": "bytes32"
      }
    ],
    "name": "permit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      }
    ],
    "name": "previewDeposit",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      }
    ],
    "name": "previewMint",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      }
    ],
    "name": "previewRedeem",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      }
    ],
    "name": "previewWithdraw",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "prizePool",
    "outputs": [
      {
        "internalType": "contract PrizePool",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_minAssets",
        "type": "uint256"
      }
    ],
    "name": "redeem",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_shares",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "redeem",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_claimer",
        "type": "address"
      }
    ],
    "name": "setClaimer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "bool",
            "name": "useBeforeClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "useAfterClaimPrize",
            "type": "bool"
          },
          {
            "internalType": "contract IPrizeHooks",
            "name": "implementation",
            "type": "address"
          }
        ],
        "internalType": "struct PrizeHooks",
        "name": "hooks",
        "type": "tuple"
      }
    ],
    "name": "setHooks",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_liquidationPair",
        "type": "address"
      }
    ],
    "name": "setLiquidationPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint32",
        "name": "_yieldFeePercentage",
        "type": "uint32"
      }
    ],
    "name": "setYieldFeePercentage",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_yieldFeeRecipient",
        "type": "address"
      }
    ],
    "name": "setYieldFeeRecipient",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "targetOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalAssets",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalDebt",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalPreciseAssets",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalYieldBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_tokenOut",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amountOut",
        "type": "uint256"
      }
    ],
    "name": "transferTokensOut",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "twabController",
    "outputs": [
      {
        "internalType": "contract TwabController",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_tokenIn",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_amountIn",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "name": "verifyTokensIn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_maxShares",
        "type": "uint256"
      }
    ],
    "name": "withdraw",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_assets",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "_receiver",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "withdraw",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "yieldBuffer",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "yieldFeeBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "yieldFeePercentage",
    "outputs": [
      {
        "internalType": "uint32",
        "name": "",
        "type": "uint32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "yieldFeeRecipient",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "yieldVault",
    "outputs": [
      {
        "internalType": "contract IERC4626",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]


Contract Creation Code
6102206040523480156200001257600080fd5b506040516200544b3803806200544b83398101604081905262000035916200077c565b8086868b8b8a6001600160a01b031663b0812d7b6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000079573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200009f919062000865565b6040805180820190915260018152603160f81b60208201528390819081856003620000cb83826200091d565b506004620000da82826200091d565b50620000ec9150839050600562000367565b61012052620000fd81600662000367565b61014052815160208084019190912060e052815190820120610100524660a0526200018b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506001600160a01b038116600003620001c0576040516319b9815760e11b815260040160405180910390fd5b6001600160a01b039081166101605284169150620001f39050576040516305d872f360e21b815260040160405180910390fd5b6001600160a01b038216610180526200020c81620003a0565b506200021a90508162000412565b506001600160a01b03871662000243576040516307877e8560e01b815260040160405180910390fd5b6001600160a01b0381166200026b57604051630962257960e11b815260040160405180910390fd5b6000876001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d2919062000865565b9050600080620002e28362000464565b915091508115620002fb5760ff81166102005262000324565b60405163f500876960e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6001600160a01b038084166101e0528a166101c0526101a08590526200034a8762000549565b620003558662000593565b50505050505050505050505062000a7b565b600060208351101562000387576200037f836200062c565b90506200039a565b816200039484826200091d565b5060ff90505b92915050565b6001600160a01b038116620003c857604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b03871691620004ad91620009e9565b600060405180830381855afa9150503d8060008114620004ea576040519150601f19603f3d011682016040523d82523d6000602084013e620004ef565b606091505b50915091508180156200050457506020815110155b156200053c5760008180602001905181019062000522919062000a07565b905060ff81116200053a576001969095509350505050565b505b5060009485945092505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b6335a4e90063ffffffff82161115620005d257604051637bcc613b60e01b815263ffffffff821660048201526335a4e90060248201526044016200031b565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b600080829050601f815111156200065a578260405163305a27a960e01b81526004016200031b919062000a21565b8051620006678262000a56565b179392505050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620006a257818101518382015260200162000688565b50506000910152565b600082601f830112620006bd57600080fd5b81516001600160401b0380821115620006da57620006da6200066f565b604051601f8301601f19908116603f011681019082821181831017156200070557620007056200066f565b816040528381528660208588010111156200071f57600080fd5b6200073284602083016020890162000685565b9695505050505050565b6001600160a01b03811681146200075257600080fd5b50565b805162000762816200073c565b919050565b805163ffffffff811681146200076257600080fd5b60008060008060008060008060006101208a8c0312156200079c57600080fd5b89516001600160401b0380821115620007b457600080fd5b620007c28d838e01620006ab565b9a5060208c0151915080821115620007d957600080fd5b50620007e88c828d01620006ab565b98505060408a0151620007fb816200073c565b60608b01519097506200080e816200073c565b95506200081e60808b0162000755565b94506200082e60a08b0162000755565b93506200083e60c08b0162000767565b925060e08a01519150620008566101008b0162000755565b90509295985092959850929598565b6000602082840312156200087857600080fd5b815162000885816200073c565b9392505050565b600181811c90821680620008a157607f821691505b602082108103620008c257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000918576000816000526020600020601f850160051c81016020861015620008f35750805b601f850160051c820191505b818110156200091457828155600101620008ff565b5050505b505050565b81516001600160401b038111156200093957620009396200066f565b62000951816200094a84546200088c565b84620008c8565b602080601f831160018114620009895760008415620009705750858301515b600019600386901b1c1916600185901b17855562000914565b600085815260208120601f198616915b82811015620009ba5788860151825594840194600190910190840162000999565b5085821015620009d95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251620009fd81846020870162000685565b9190910192915050565b60006020828403121562000a1a57600080fd5b5051919050565b602081526000825180602084015262000a4281604085016020870162000685565b601f01601f19169190910160400192915050565b80516020808301519190811015620008c25760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516102005161483062000c1b600039600061054401526000818161058b01528181610a3f01528181610d7001528181611376015281816114d10152818161166f0152818161173601528181611a0301528181611d2301528181611d6f015281816121350152818161239701528181612ca201528181612ce201528181612d6401528181613030015261320201526000818161078c01528181610ac70152818161140c0152818161155901528181612d8601528181612dc401528181612e56015281816130b90152818161316d01526133cd01526000818161049d01528181610df30152818161131d0152612745015260008181610687015281816106c9015281816110db01528181611f6a015261203e0152600081816107c601528181610cf901528181611819015281816128150152818161296b01526139c401526000611b6501526000611b3a01526000612b2901526000612b0101526000612a5c01526000612a8601526000612ab001526148306000f3fe608060405234801561001057600080fd5b50600436106104125760003560e01c80638da5cb5b11610220578063c8576e6111610130578063de03f408116100b8578063e63a391f11610087578063e63a391f146109ee578063edb8eb80146109f9578063ef8b30f7146107fb578063f2fde38b14610a0c578063fc7b9c1814610a1f57600080fd5b8063de03f40814610913578063e16777c1146109b3578063e30c3978146109ca578063e4e243ac146109db57600080fd5b8063d379be23116100ff578063d379be23146108bf578063d4122abf146108d2578063d505accf146108da578063d905777e146108ed578063dd62ed3e1461090057600080fd5b8063c8576e611461086b578063cdfb58321461087e578063ce96cb7714610891578063d30ae1b4146108a457600080fd5b8063a9059cbb116101b3578063b460af9411610182578063b460af941461080c578063ba0876521461081f578063c63d75b614610832578063c6e6f59214610845578063c78c72c11461085857600080fd5b8063a9059cbb146107ae578063b0812d7b146107c1578063b0fcf626146107e8578063b3d7f6b9146107fb57600080fd5b80639f40a7b3116101ef5780639f40a7b31461074e578063a318c1a414610761578063a457c2d714610774578063a7f8a5e21461078757600080fd5b80638da5cb5b1461072c57806394bf804d1461066357806395d89b411461073d5780639a1adf9a1461074557600080fd5b806338d52e0f11610326578063649f2394116102ae578063715018a61161027d578063715018a6146106bc578063719ce73e146106c45780637cc99d3f146106eb5780637ecebe00146106fe57806384b0196e1461071157600080fd5b8063649f2394146106505780636e553f6514610663578063700f04ef1461067657806370a08231146106a957600080fd5b80634244aa9b116102f55780634244aa9b146106075780634cdad5061461060f5780634e71e0c81461062257806350921b231461062a57806363003b161461063d57600080fd5b806338d52e0f1461058957806339509351146105c35780634006522b146105d6578063402d267d146105f457600080fd5b80631b571924116103a957806325fa66e01161037857806325fa66e0146105155780632895cace1461052a578063313ce5671461053d578063353d5a181461056e5780633644e5151461058157600080fd5b80631b571924146104c75780631caa73cb146104da578063237fd108146104fa57806323b872dd1461050257600080fd5b80630a28a477116103e55780630a28a4771461047d5780630d1e52551461049057806313dc6c5d1461049857806318160ddd146104bf57600080fd5b806301e1d1141461041757806306fdde031461043257806307a2d13a14610447578063095ea7b31461045a575b600080fd5b61041f610a27565b6040519081526020015b60405180910390f35b61043a610bb1565b6040516104299190613fb1565b61041f610455366004613fc4565b610c43565b61046d610468366004613ff2565b610c66565b6040519015158152602001610429565b61041f61048b366004613fc4565b610c7e565b61041f610cc7565b61041f7f000000000000000000000000000000000000000000000000000000000000000081565b61041f610ce1565b61046d6104d536600461401e565b610d6c565b6104e56335a4e90081565b60405163ffffffff9091168152602001610429565b61041f610dd4565b61046d610510366004614057565b610e25565b610528610523366004614098565b610e49565b005b61041f6105383660046140da565b610efe565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610429565b61052861057c366004613fc4565b6111dd565b61041f6112c6565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610429565b61046d6105d1366004613ff2565b6112d0565b6105e0620249f081565b60405162ffffff9091168152602001610429565b61041f610602366004614098565b6112f2565b61041f6114b9565b61041f61061d366004613fc4565b611598565b6105286115a6565b61041f610638366004614153565b611627565b61052861064b366004614098565b6117ab565b600f546105ab906001600160a01b031681565b61041f6106713660046141ad565b6117f0565b6105ab610684366004614098565b507f000000000000000000000000000000000000000000000000000000000000000090565b61041f6106b7366004614098565b6117ff565b610528611891565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61043a6106f93660046141d2565b6118d6565b61041f61070c366004614098565b611b0e565b610719611b2c565b6040516104299796959493929190614223565b600b546001600160a01b03166105ab565b61043a611bb5565b61041f600e5481565b61041f61075c3660046142bc565b611bc4565b61041f61076f3660046142bc565b611c12565b61046d610782366004613ff2565b611c58565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61046d6107bc366004613ff2565b611cd3565b6105ab7f000000000000000000000000000000000000000000000000000000000000000081565b61041f6107f6366004614098565b611ce1565b61041f610809366004613fc4565b90565b61041f61081a3660046142e4565b611e7d565b61041f61082d3660046142e4565b611e98565b61041f610840366004614098565b611eb3565b61041f610853366004613fc4565b611ebe565b610528610866366004614326565b611edb565b610528610879366004614338565b611f2a565b61052861088c366004614098565b6120bb565b61041f61089f366004614098565b6120fd565b6108ac608081565b60405161ffff9091168152602001610429565b600a546105ab906001600160a01b031681565b61041f6121ee565b6105286108e83660046143c1565b6121fb565b61041f6108fb366004614098565b61235f565b61041f61090e36600461401e565b61245c565b610984610921366004614098565b6040805160608082018352600080835260208084018290529284018190526001600160a01b03948516815260098352839020835191820184525460ff80821615158352610100820416151592820192909252620100009091049092169082015290565b60408051825115158152602080840151151590820152918101516001600160a01b031690820152606001610429565b600c546104e590600160a01b900463ffffffff1681565b600c546001600160a01b03166105ab565b6105286109e936600461442f565b612487565b6104e5633b9aca0081565b600d546105ab906001600160a01b031681565b610528610a1a366004614098565b6124c9565b61041f6125b0565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610a8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab2919061444a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a9082906370a08231906024015b602060405180830381865afa158015610b1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b43919061444a565b6040518263ffffffff1660e01b8152600401610b6191815260200190565b602060405180830381865afa158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba2919061444a565b610bac9190614479565b905090565b606060038054610bc09061448c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bec9061448c565b8015610c395780601f10610c0e57610100808354040283529160200191610c39565b820191906000526020600020905b815481529060010190602001808311610c1c57829003601f168201915b5050505050905090565b6000610c6082610c51610a27565b610c596125b0565b60006125bd565b92915050565b600033610c748185856125e0565b5060019392505050565b600080610c896114b9565b905080600003610cac5760405163f0bd6f1b60e01b815260040160405180910390fd5b610cc08382610cb96125b0565b6001612705565b9392505050565b6000610bac610cd46114b9565b610cdc6125b0565b612734565b6040516339370aa960e21b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063e4dc2aa490602401602060405180830381865afa158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bac919061444a565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161480610db657506001600160a01b03831630145b8015610cc0575050600f546001600160a01b03908116911614919050565b600080610def610de26114b9565b610dea6125b0565b61277f565b90507f0000000000000000000000000000000000000000000000000000000000000000808210610e1f5792915050565b50919050565b600033610e33858285612799565b610e3e858585612813565b506001949350505050565b33610e5c600b546001600160a01b031690565b6001600160a01b031614610e8b5760405162461bcd60e51b8152600401610e82906144c0565b60405180910390fd5b6001600160a01b038116610eb257604051630ac5b1f760e11b815260040160405180910390fd5b600f80546001600160a01b0319166001600160a01b03831690811790915560405130907fb540015bf51edcbfd9e43df5316486615bf954f7b4c6cc0304eb3757f1601f9590600090a350565b600a546000906001600160a01b03163314610f3d57600a54604051637f4b239760e11b8152610e829133916001600160a01b03909116906004016144f7565b6001600160a01b03861660009081526009602052604081205460609060ff161561105a576001600160a01b03888116600081815260096020526040808220549051602481019390935260ff8b16604484015263ffffffff8a1660648401526001600160601b038916608484015287841660a484015290928392611008926201000090049091169063b4db727f60e01b9060c4015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612902565b909250905060808111156110395760405163756d9e2960e01b81526004810182905260806024820152604401610e82565b8180602001905181019061104d9190614527565b909450925061105e915050565b8791505b6001600160a01b0382166110855760405163e1c2596f60e01b815260040160405180910390fd5b6040516311e7375f60e21b81526001600160a01b03898116600483015260ff8916602483015263ffffffff8816604483015283811660648301526001600160601b038716608483015285811660a48301526000917f00000000000000000000000000000000000000000000000000000000000000009091169063479cdd7c9060c4016020604051808303816000875af1158015611126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114a919061444a565b6001600160a01b038a16600090815260096020526040902054909150610100900460ff16156111d1576001600160a01b03808a166000908152600960205260409020546111ce91620100009091041663d44c6da360e01b8b8b8b6111b76001600160601b038d16886145ea565b8989604051602401610fd1969594939291906145fd565b50505b98975050505050505050565b600d546001600160a01b0316331461121957600d54604051630e69d0db60e11b8152610e829133916001600160a01b03909116906004016144f7565b8060000361123a5760405163b31accb760e01b815260040160405180910390fd5b600e5481111561126b57600e546040516304ed794960e21b8152610e82918391600401918252602082015260400190565b80600e600082825461127d91906145ea565b9091555061128d90503382612969565b60405181815233907f9b51aebdd88b3f321397bdf9848415ce15dedd1783c775b93b8036c6b0af0f56906020015b60405180910390a250565b6000610bac612a4f565b600033610c748185856112e3838361245c565b6112ed9190614479565b6125e0565b6000806112fd6125b0565b905060008061130a612b7a565b9150915081158061134e575061134160027f000000000000000000000000000000000000000000000000000000000000000061465b565b61134b9084614479565b81105b1561135e57506000949350505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156113c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e9919061444a565b60405163402d267d60e01b81523060048201529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063402d267d90602401602060405180830381865afa158015611453573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611477919061444a565b905080821061148d575060009695505050505050565b600061149886612bee565b90508282038082106114aa57806114ac565b815b9998505050505050505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611520573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611544919061444a565b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad5069082906370a0823190602401610b02565b6000610c6082610c516114b9565b600c546001600160a01b031633146116005760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e6572006044820152606401610e82565b600c54611615906001600160a01b0316612c01565b600c80546001600160a01b0319169055565b60006001600160a01b03861633146116565733866040516358fe888560e01b8152600401610e829291906144f7565b604051636eb1769f60e11b815287906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063dd62ed3e906116a6908a9030906004016144f7565b602060405180830381865afa1580156116c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e7919061444a565b146117935760405163d505accf60e01b81526001600160a01b038781166004830152306024830152604482018990526064820187905260ff8616608483015260a4820185905260c482018490527f0000000000000000000000000000000000000000000000000000000000000000169063d505accf9060e401600060405180830381600087803b15801561177a57600080fd5b505af115801561178e573d6000803e3d6000fd5b505050505b866117a087808380612c53565b979650505050505050565b336117be600b546001600160a01b031690565b6001600160a01b0316146117e45760405162461bcd60e51b8152600401610e82906144c0565b6117ed81612f97565b50565b600082610cc033848380612c53565b604051633de222bb60e21b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f7888aec9061185090309086906004016144f7565b602060405180830381865afa15801561186d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c60919061444a565b336118a4600b546001600160a01b031690565b6001600160a01b0316146118ca5760405162461bcd60e51b8152600401610e82906144c0565b6118d46000612c01565b565b600f546060906001600160a01b0316331461191557600f546040516317140eff60e11b8152610e829133916001600160a01b03909116906004016144f7565b8160000361193657604051634750846560e11b815260040160405180910390fd5b60006119406125b0565b9050600061195561194f6114b9565b83612734565b600c54909150600160a01b900463ffffffff16600081156119aa578561197f83633b9aca0061467d565b63ffffffff16611993633b9aca00896146a1565b61199d919061465b565b6119a791906145ea565b90505b826119b58288614479565b11156119e9576119c58187614479565b6040516374281bbb60e11b8152600481019190915260248101849052604401610e82565b8015611a015780600e546119fd9190614479565b600e555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316876001600160a01b031603611a5357611a448482612fe1565b611a4e8887613018565b611aa4565b306001600160a01b03881603611a8057611a7684611a718389614479565b612fe1565b611a4e8887612969565b6040516304bc290f60e51b81526001600160a01b0388166004820152602401610e82565b60408051878152602081018390526001600160a01b03808b1692908a169133917f64d8a6bd56c2c610cd5d2ed87ba4bde3659df2650c7ad8aabde397decf94e07d910160405180910390a4604051806020016040528060008152509450505050505b949350505050565b6001600160a01b038116600090815260076020526040812054610c60565b600060608082808083611b607f00000000000000000000000000000000000000000000000000000000000000006005613229565b611b8b7f00000000000000000000000000000000000000000000000000000000000000006006613229565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b606060048054610bc09061448c565b600080611bd086611598565b905082811015611bfc57604051629af28160e41b81526004810182905260248101849052604401610e82565b611c0933868689856132d4565b95945050505050565b600080611c1e86610c7e565b905082811115611c4b5760405163654df34d60e01b81526004810182905260248101849052604401610e82565b611c09338686848a6132d4565b60003381611c66828661245c565b905083811015611cc65760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610e82565b610e3e82868684036125e0565b600033610c74818585612813565b600080611cec6125b0565b600c54909150600160a01b900463ffffffff166000306001600160a01b03861603611d2157611d1a83612bee565b9050611e37565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031603611e2c576040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015611dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611de2919061444a565b611dea6133b5565b611df49190614479565b90508115611e27576000611e17633b9aca0084611e1087612bee565b91906134ae565b905081811015611e25578091505b505b611e37565b506000949350505050565b6000611e4a611e446114b9565b85612734565b9050600082821015611e5c5781611e5e565b825b90506117a0611e7185633b9aca006145ea565b8290633b9aca006134ae565b600080611e8985610c7e565b9050611b0633858584896132d4565b600080611ea485611598565b9050611b0633858588856132d4565b6000610c60826112f2565b6000610c6082611ecc610a27565b611ed46125b0565b6000612705565b3360009081526009602052604090208190611ef682826146c6565b505060405133907f5eaf51436f308830fc57b00bb6843675b383bce9b2c669e1b9ce60de8bbb9e8e906112bb908490614740565b600f546001600160a01b03163314611f6657600f546040516317140eff60e11b8152610e829133916001600160a01b03909116906004016144f7565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0ef024a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fea919061478e565b9050806001600160a01b0316856001600160a01b031614612022578481604051630c0760c160e21b8152600401610e829291906144f7565b604051630eedfb4560e41b8152306004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063eedfb450906044016020604051808303816000875af115801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b3919061444a565b505050505050565b336120ce600b546001600160a01b031690565b6001600160a01b0316146120f45760405162461bcd60e51b8152600401610e82906144c0565b6117ed81613598565b600080600061210a612b7a565b915091508161211d575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612184573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a8919061444a565b6121b06133b5565b6121ba9190614479565b905060006121d36121ca876117ff565b84610c596125b0565b90508181106121e257816121e4565b805b9695505050505050565b6000610bac610de26114b9565b8342111561224b5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610e82565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861227a8c613609565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006122d58261362f565b905060006122e58287878761365c565b9050896001600160a01b0316816001600160a01b0316146123485760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610e82565b6123538a8a8a6125e0565b50505050505050505050565b600080600061236c612b7a565b915091508161237f575060009392505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156123e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240a919061444a565b6124126133b5565b61241c9190614479565b90506000612429866117ff565b9050818111156121e25760006124428385610cb96125b0565b90508181101561245257806117a0565b5095945050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3361249a600b546001600160a01b031690565b6001600160a01b0316146124c05760405162461bcd60e51b8152600401610e82906144c0565b6117ed8161367a565b336124dc600b546001600160a01b031690565b6001600160a01b0316146125025760405162461bcd60e51b8152600401610e82906144c0565b6001600160a01b0381166125665760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d6164604482015264647265737360d81b6064820152608401610e82565b600c80546001600160a01b0319166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b6000600e54610ba2610ce1565b60008284106125cd575083611b06565b6125d985858585613711565b9050611b06565b6001600160a01b0383166126425760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610e82565b6001600160a01b0382166126a35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610e82565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000828410612715575083611b06565b831561272c5761272785848685613711565b6125d9565b506000611b06565b600080612741848461277f565b90507f00000000000000000000000000000000000000000000000000000000000000008082106127745790039050610c60565b600092505050610c60565b600082821061279057506000610c60565b50808203610c60565b60006127a5848461245c565b9050600019811461280d57818110156128005760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610e82565b61280d84848484036125e0565b50505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c661667d848461284d85613762565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526001600160601b03166044820152606401600060405180830381600087803b1580156128a557600080fd5b505af11580156128b9573d6000803e3d6000fd5b50505050816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516126f891815260200190565b60606000806129216001600160a01b038616620249f0836080886137ce565b93503d92509050806129615760808211156129595760405163756d9e2960e01b81526004810183905260806024820152604401610e82565b825183602001fd5b509250929050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631b025a40836129a284613762565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b1580156129f157600080fd5b505af1158015612a05573d6000803e3d6000fd5b50506040518381526001600160a01b0385169250600091507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148015612aa857507f000000000000000000000000000000000000000000000000000000000000000046145b15612ad257507f000000000000000000000000000000000000000000000000000000000000000090565b610bac604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080306001600160a01b0316634244aa9b6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612bd7575060408051601f3d908101601f19168201909252612bd49181019061444a565b60015b612be45750600090508091565b6001925090509091565b6000610c60826001600160601b036145ea565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80600003612c745760405163b31accb760e01b815260040160405180910390fd5b81600003612c955760405163f0f4d07b60e01b815260040160405180910390fd5b612cca6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016853085613859565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015612d31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d55919061444a565b9050612dab6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836138c4565b60405163ef8b30f760e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ef8b30f790602401602060405180830381865afa158015612e13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e37919061444a565b6040516394bf804d60e01b8152600481018290523060248201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906394bf804d906044016020604051808303816000875af1158015612ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ecb919061444a565b506000612ed66125b0565b9050612ee28185612fe1565b612eec8482614479565b612ef46114b9565b1015612f2e57612f026114b9565b612f0c8583614479565b6040516315c5982d60e11b815260048101929092526024820152604401610e82565b612f388685612969565b856001600160a01b0316876001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78787604051612f86929190918252602082015260400190565b60405180910390a350505050505050565b600d80546001600160a01b0319166001600160a01b0383169081179091556040517f5d55a9f17ebec95846f4d400ad862a51f9564a7973f6622d3c99a34feb6a0aec90600090a250565b6000612fec83612bee565b90508082111561301357604051637e0311c360e11b81528183036004820152602401610e82565b505050565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561307f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a3919061444a565b9050808211156131e55760006001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016630a28a4776130e884866145ea565b6040518263ffffffff1660e01b815260040161310691815260200190565b602060405180830381865afa158015613123573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613147919061444a565b604051635d043b2960e11b815260048101829052306024820181905260448201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba087652906064016020604051808303816000875af11580156131be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e2919061444a565b50505b6001600160a01b0383163014613013576130136001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484613953565b606060ff83146132435761323c83613983565b9050610c60565b81805461324f9061448c565b80601f016020809104026020016040519081016040528092919081815260200182805461327b9061448c565b80156132c85780601f1061329d576101008083540402835291602001916132c8565b820191906000526020600020905b8154815290600101906020018083116132ab57829003601f168201915b50505050509050610c60565b806000036132f55760405163f3c41a2b60e01b815260040160405180910390fd5b8160000361331657604051632f73c6c360e11b815260040160405180910390fd5b826001600160a01b0316856001600160a01b03161461333a5761333a838684612799565b61334483836139c2565b61334e8482613018565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db84866040516133a6929190918252602082015260400190565b60405180910390a45050505050565b604051636c82bbbf60e11b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad50690829063d905777e90602401602060405180830381865afa158015613424573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613448919061444a565b6040518263ffffffff1660e01b815260040161346691815260200190565b602060405180830381865afa92505050801561349f575060408051601f3d908101601f1916820190925261349c9181019061444a565b60015b6134a95750600090565b919050565b60008080600019858709858702925082811083820303915050806000036134e8578382816134de576134de614645565b0492505050610cc0565b80841161352f5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610e82565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b0381166135bf57604051634d9808e160e11b815260040160405180910390fd5b600a80546001600160a01b0319166001600160a01b0383169081179091556040517fa04eca05f1c4f5674beaad80f345070124aa2192abced410b9b227c0c04e755a90600090a250565b6001600160a01b0381166000908152600760205260409020805460018101825590610e1f565b6000610c6061363c612a4f565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600061366d87878787613aa0565b9150915061245281613b64565b6335a4e90063ffffffff821611156136b757604051637bcc613b60e01b815263ffffffff821660048201526335a4e9006024820152604401610e82565b600c805463ffffffff60a01b1916600160a01b63ffffffff8416908102919091179091556040519081527fefb99600b8c2baadc10ee4fe77c625b379acb4c29fbb0b90a5f17652d7de03419060200160405180910390a150565b60008061371f8686866134ae565b90506001836002811115613735576137356147ab565b14801561375257506000848061374d5761374d614645565b868809115b15611c09576121e4600182614479565b60006001600160601b038211156137ca5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203960448201526536206269747360d01b6064820152608401610e82565b5090565b6000606060008060008661ffff1667ffffffffffffffff8111156137f4576137f4614511565b6040519080825280601f01601f19166020018201604052801561381e576020820181803683370190505b5090506000808751602089018b8e8ef191503d92508683111561383f578692505b828152826000602083013e90999098509650505050505050565b6040516001600160a01b038085166024830152831660448201526064810182905261280d9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cae565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526139158482613d83565b61280d576040516001600160a01b03841660248201526000604482015261394990859063095ea7b360e01b9060640161388d565b61280d8482613cae565b6040516001600160a01b03831660248201526044810182905261301390849063a9059cbb60e01b9060640161388d565b6060600061399083613e26565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638df2c8e6836139fb84613762565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526001600160601b03166024820152604401600060405180830381600087803b158015613a4a57600080fd5b505af1158015613a5e573d6000803e3d6000fd5b5050604051838152600092506001600160a01b03851691507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001612a43565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613ad75750600090506003613b5b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613b2b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613b5457600060019250925050613b5b565b9150600090505b94509492505050565b6000816004811115613b7857613b786147ab565b03613b805750565b6001816004811115613b9457613b946147ab565b03613be15760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610e82565b6002816004811115613bf557613bf56147ab565b03613c425760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610e82565b6003816004811115613c5657613c566147ab565b036117ed5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610e82565b6000613d03826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613e4e9092919063ffffffff16565b9050805160001480613d24575080806020019051810190613d2491906147c1565b6130135760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610e82565b6000806000846001600160a01b031684604051613da091906147de565b6000604051808303816000865af19150503d8060008114613ddd576040519150601f19603f3d011682016040523d82523d6000602084013e613de2565b606091505b5091509150818015613e0c575080511580613e0c575080806020019051810190613e0c91906147c1565b8015611c095750505050506001600160a01b03163b151590565b600060ff8216601f811115610c6057604051632cd44ac360e21b815260040160405180910390fd5b6060611b06848460008585600080866001600160a01b03168587604051613e7591906147de565b60006040518083038185875af1925050503d8060008114613eb2576040519150601f19603f3d011682016040523d82523d6000602084013e613eb7565b606091505b50915091506117a08783838760608315613f32578251600003613f2b576001600160a01b0385163b613f2b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610e82565b5081611b06565b611b068383815115613f475781518083602001fd5b8060405162461bcd60e51b8152600401610e829190613fb1565b60005b83811015613f7c578181015183820152602001613f64565b50506000910152565b60008151808452613f9d816020860160208601613f61565b601f01601f19169290920160200192915050565b602081526000610cc06020830184613f85565b600060208284031215613fd657600080fd5b5035919050565b6001600160a01b03811681146117ed57600080fd5b6000806040838503121561400557600080fd5b823561401081613fdd565b946020939093013593505050565b6000806040838503121561403157600080fd5b823561403c81613fdd565b9150602083013561404c81613fdd565b809150509250929050565b60008060006060848603121561406c57600080fd5b833561407781613fdd565b9250602084013561408781613fdd565b929592945050506040919091013590565b6000602082840312156140aa57600080fd5b8135610cc081613fdd565b803560ff811681146134a957600080fd5b803563ffffffff811681146134a957600080fd5b600080600080600060a086880312156140f257600080fd5b85356140fd81613fdd565b945061410b602087016140b5565b9350614119604087016140c6565b925060608601356001600160601b038116811461413557600080fd5b9150608086013561414581613fdd565b809150509295509295909350565b60008060008060008060c0878903121561416c57600080fd5b86359550602087013561417e81613fdd565b945060408701359350614193606088016140b5565b92506080870135915060a087013590509295509295509295565b600080604083850312156141c057600080fd5b82359150602083013561404c81613fdd565b600080600080608085870312156141e857600080fd5b84356141f381613fdd565b9350602085013561420381613fdd565b9250604085013561421381613fdd565b9396929550929360600135925050565b60ff60f81b881681526000602060e0602084015261424460e084018a613f85565b8381036040850152614256818a613f85565b606085018990526001600160a01b038816608086015260a0850187905284810360c08601528551808252602080880193509091019060005b818110156142aa5783518352928401929184019160010161428e565b50909c9b505050505050505050505050565b600080600080608085870312156142d257600080fd5b84359350602085013561420381613fdd565b6000806000606084860312156142f957600080fd5b83359250602084013561430b81613fdd565b9150604084013561431b81613fdd565b809150509250925092565b600060608284031215610e1f57600080fd5b6000806000806060858703121561434e57600080fd5b843561435981613fdd565b935060208501359250604085013567ffffffffffffffff8082111561437d57600080fd5b818701915087601f83011261439157600080fd5b8135818111156143a057600080fd5b8860208285010111156143b257600080fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156143dc57600080fd5b87356143e781613fdd565b965060208801356143f781613fdd565b95506040880135945060608801359350614413608089016140b5565b925060a0880135915060c0880135905092959891949750929550565b60006020828403121561444157600080fd5b610cc0826140c6565b60006020828403121561445c57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c6057610c60614463565b600181811c908216806144a057607f821691505b602082108103610e1f57634e487b7160e01b600052602260045260246000fd5b60208082526018908201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604082015260600190565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561453a57600080fd5b825161454581613fdd565b602084015190925067ffffffffffffffff8082111561456357600080fd5b818501915085601f83011261457757600080fd5b81518181111561458957614589614511565b604051601f8201601f19908116603f011681019083821181831017156145b1576145b1614511565b816040528281528860208487010111156145ca57600080fd5b6145db836020830160208801613f61565b80955050505050509250929050565b81810381811115610c6057610c60614463565b6001600160a01b03878116825260ff8716602083015263ffffffff86166040830152606082018590528316608082015260c060a082018190526000906111d190830184613f85565b634e487b7160e01b600052601260045260246000fd5b60008261467857634e487b7160e01b600052601260045260246000fd5b500490565b63ffffffff82811682821603908082111561469a5761469a614463565b5092915050565b8082028115828204841417610c6057610c60614463565b80151581146117ed57600080fd5b81356146d1816146b8565b815460ff19811691151560ff16918217835560208401356146f1816146b8565b61ff0090151560081b1661ffff198216831781178455604085013561471581613fdd565b6001600160b01b0319929092169092179190911760109190911b62010000600160b01b031617905550565b60608101823561474f816146b8565b151582526020830135614761816146b8565b15156020830152604083013561477681613fdd565b6001600160a01b031660409290920191909152919050565b6000602082840312156147a057600080fd5b8151610cc081613fdd565b634e487b7160e01b600052602160045260246000fd5b6000602082840312156147d357600080fd5b8151610cc0816146b8565b600082516147f0818460208701613f61565b919091019291505056fea2646970667358221220abe008e6ea83b1932070647aee93a7781e3a2e696671d35c3eef5937b6cd056e64736f6c6343000818003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000180000000000000000000000000c1256ae5ff1cf2719d4937adb3bbccab2e00a2ca00000000000000000000000045b2010d8a4f08b53c9fa7544c51dfd9733732cb000000000000000000000000cdce635b774de77cdf791647601dba64a75547ba0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000dc9522fc21cf9878781224c54221d4479dd1a73900000000000000000000000000000000000000000000000000000000000000255072697a652055534443202d204d6f6f6e77656c6c20466c616773686970204d6f7270686f000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000770727a5553444300000000000000000000000000000000000000000000000000