Overview ERC20
PRICE
n/a

ON-CHAIN MARKET CAP n/a

Total Supply:
195.00 MMION

Holders:
71
Profile Summary
Blockchain:
OP Mainnet (10)


Decimals:
18
Contract Source Code Verified (Partial Match)
Contract Name:
AIERC20

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Created At:
Thu, 24 Aug 2023 21:10:37 GMT
AIERC20.sol
AIERC20.sol
AIERC20.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "uint8",
        "name": "_taxType",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "_totalSupply",
        "type": "uint256"
      },
      {
        "internalType": "uint8",
        "name": "decimals_",
        "type": "uint8"
      },
      {
        "internalType": "address",
        "name": "_mintTo",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_swapRouter",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_swapFactory",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_weth",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "ethAmount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "AddLiquidity",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      }
    ],
    "name": "AddPair",
    "type": "event"
  },
  {
    "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": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      }
    ],
    "name": "RemovePair",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "teamWallet",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "bounsWallet",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "tradingPool",
        "type": "address"
      }
    ],
    "name": "SetFeeReceivers",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "liquidityFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "burnFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "bounsFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tradingPoolFee",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "teamFee",
        "type": "uint256"
      }
    ],
    "name": "SetFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExempt",
        "type": "bool"
      }
    ],
    "name": "SetIsFromFeeExempt",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExempt",
        "type": "bool"
      }
    ],
    "name": "SetIsSenderFeeExempt",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExempt",
        "type": "bool"
      }
    ],
    "name": "SetIsToFeeExempt",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      }
    ],
    "name": "SetSwapEnabled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "op",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "teamWallet",
        "type": "address"
      }
    ],
    "name": "SetTeamWallet",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "burn",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "liquidity",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "team",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "bouns",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "trading",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "SwapBack",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "side",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "Trade",
    "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"
  },
  {
    "inputs": [],
    "name": "FeeDenominator",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "WETH",
    "outputs": [
      {
        "internalType": "contract IWETH",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pair",
        "type": "address"
      }
    ],
    "name": "addPair",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "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": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bounsFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "bounsWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "burnFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "clearStuckEthBalance",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "address",
        "name": "pair",
        "type": "address"
      }
    ],
    "name": "delPair",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "doSwapBack",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCirculatingSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getFullFeeExempts",
    "outputs": [
      {
        "internalType": "address[]",
        "name": "",
        "type": "address[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "getLpBalance",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "getPair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getPairsLength",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "inSwap",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": [],
    "name": "initializePair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isFromFeeExempt",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isPair",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isSenderFeeExempt",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isToFeeExempt",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "liquidityFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pairInitialized",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_bounsWallet",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_tradingPool",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "_teamWallet",
        "type": "address"
      }
    ],
    "name": "setFeeReceivers",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_liquidityFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_burnFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_bounsFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_tradingPoolFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_teamFee",
        "type": "uint256"
      }
    ],
    "name": "setFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsFromFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsSenderFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "exempt",
        "type": "bool"
      }
    ],
    "name": "setIsToFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_enabled",
        "type": "bool"
      }
    ],
    "name": "setSwapBackSettings",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "holder",
        "type": "address"
      }
    ],
    "name": "setSysFeeExempt",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_teamWallet",
        "type": "address"
      }
    ],
    "name": "setTeamWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapFactory",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Factory",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapRouter",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "taxType",
    "outputs": [
      {
        "internalType": "enum AIERC20.TaxType",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "teamFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "teamWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalFee",
    "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": "tradingPool",
    "outputs": [
      {
        "internalType": "contract IAIERC20TradingPool",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tradingPoolFee",
    "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": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "recipient",
        "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"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60e06040526005805460ff60a01b1916600160a01b1790553480156200002457600080fd5b50604051620034fe380380620034fe8339810160408190526200004791620003b3565b8888600362000057838262000525565b50600462000066828262000525565b505050620000836200007d6200019e60201b60201c565b620001a2565b8660ff1660028111156200009b576200009b620005f1565b6011805460ff60a01b1916600160a01b836002811115620000c057620000c0620005f1565b02179055506016805461ff00191661010060ff8816021790556001600160a01b038481166000908152600660208181526040808420805460ff199081166001908117909255600780855283872080548316841790556008808652848820805484168517905530885286865284882080548416851790558186528488208054841685179055855283872080548316841790558a881680885295855283872080548316841790559093529320805490911690921790915560805282811660a052811660c0526200018f8487620001f4565b5050505050505050506200062f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200024f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000263919062000607565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002e757600080fd5b81516001600160401b0380821115620003045762000304620002bf565b604051601f8301601f19908116603f011681019082821181831017156200032f576200032f620002bf565b816040528381526020925086838588010111156200034c57600080fd5b600091505b8382101562000370578582018301518183018401529082019062000351565b600093810190920192909252949350505050565b805160ff811681146200039657600080fd5b919050565b80516001600160a01b03811681146200039657600080fd5b60008060008060008060008060006101208a8c031215620003d357600080fd5b89516001600160401b0380821115620003eb57600080fd5b620003f98d838e01620002d5565b9a5060208c01519150808211156200041057600080fd5b506200041f8c828d01620002d5565b9850506200043060408b0162000384565b965060608a015195506200044760808b0162000384565b94506200045760a08b016200039b565b93506200046760c08b016200039b565b92506200047760e08b016200039b565b9150620004886101008b016200039b565b90509295985092959850929598565b600181811c90821680620004ac57607f821691505b602082108103620004cd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002ba57600081815260208120601f850160051c81016020861015620004fc5750805b601f850160051c820191505b818110156200051d5782815560010162000508565b505050505050565b81516001600160401b03811115620005415762000541620002bf565b620005598162000552845462000497565b84620004d3565b602080601f831160018114620005915760008415620005785750858301515b600019600386901b1c1916600185901b1785556200051d565b600085815260208120601f198616915b82811015620005c257888601518255948401946001909101908401620005a1565b5085821015620005e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b808201808211156200062957634e487b7160e01b600052601160045260246000fd5b92915050565b60805160a05160c051612e67620006976000396000818161080501528181610f75015281816113ed01526125760152600081816106a201528181610f4801526114200152600081816108de01528181611ef70152818161262401526126fe0152612e676000f3fe6080604052600436106103545760003560e01c80638fbbd750116101c6578063c2b7bbb6116100f7578063dd62ed3e11610095578063f2fde38b1161006f578063f2fde38b14610a0b578063fa6cfd3714610a2b578063fce589d814610a41578063fee2cc5114610a5757600080fd5b8063dd62ed3e1461099d578063e5e31b13146109bd578063ee0b1b0d146109dd57600080fd5b8063d7c01032116100d1578063d7c0103214610930578063d7c94efd14610950578063d830678614610966578063db217b171461098757600080fd5b8063c2b7bbb6146108ac578063c31c9c07146108cc578063cb3263161461090057600080fd5b8063a9059cbb11610164578063b17dcf2d1161013e578063b17dcf2d14610827578063b8c6113014610857578063bdf391cc14610877578063bfa382b51461089757600080fd5b8063a9059cbb146107b3578063aa381fc6146107d3578063ad5c4648146107f357600080fd5b806398118cb4116101a057806398118cb41461073b5780639da2736a14610751578063a457c2d714610773578063a5bc50851461079357600080fd5b80638fbbd750146106f757806394d249db1461070c57806395d89b411461072657600080fd5b8063333ef998116102a05780636ddd17131161023e57806371f16a181161021857806371f16a18146106705780637944f94414610690578063880e75f2146106c45780638da5cb5b146106d957600080fd5b80636ddd17131461060457806370a0823114610625578063715018a61461065b57600080fd5b80634fab9e4c1161027a5780634fab9e4c1461058f57806359927044146105a45780635e1e7d67146105c4578063658d4b7f146105e457600080fd5b8063333ef9981461051f578063395093511461054f57806342966c681461056f57600080fd5b806318160ddd1161030d57806323b872dd116102e757806323b872dd146104aa5780632b112e49146104ca5780632e0b16d2146104df578063313ce567146104f557600080fd5b806318160ddd1461045557806319c0aa0f146104745780631df4ccfc1461049457600080fd5b806304a66b481461036057806306fdde0314610382578063095ea7b3146103ad57806310410d94146103dd57806312e67094146104155780631525ff7d1461043557600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b5061038061037b36600461283a565b610a77565b005b34801561038e57600080fd5b50610397610b70565b6040516103a49190612899565b60405180910390f35b3480156103b957600080fd5b506103cd6103c83660046128e1565b610c02565b60405190151581526020016103a4565b3480156103e957600080fd5b506010546103fd906001600160a01b031681565b6040516001600160a01b0390911681526020016103a4565b34801561042157600080fd5b5061038061043036600461291d565b610c1c565b34801561044157600080fd5b50610380610450366004612952565b610cbf565b34801561046157600080fd5b506002545b6040519081526020016103a4565b34801561048057600080fd5b5061038061048f36600461291d565b610d85565b3480156104a057600080fd5b50610466600e5481565b3480156104b657600080fd5b506103cd6104c536600461296f565b610e1c565b3480156104d657600080fd5b50610466610e40565b3480156104eb57600080fd5b5061046661271081565b34801561050157600080fd5b50601654610100900460ff1660405160ff90911681526020016103a4565b34801561052b57600080fd5b506103cd61053a366004612952565b60076020526000908152604090205460ff1681565b34801561055b57600080fd5b506103cd61056a3660046128e1565b610eac565b34801561057b57600080fd5b5061038061058a3660046129b0565b610ece565b34801561059b57600080fd5b50610380610edb565b3480156105b057600080fd5b50600f546103fd906001600160a01b031681565b3480156105d057600080fd5b506103806105df366004612952565b611002565b3480156105f057600080fd5b506103806105ff36600461291d565b6110fe565b34801561061057600080fd5b506005546103cd90600160a01b900460ff1681565b34801561063157600080fd5b50610466610640366004612952565b6001600160a01b031660009081526020819052604090205490565b34801561066757600080fd5b50610380611257565b34801561067c57600080fd5b506011546103fd906001600160a01b031681565b34801561069c57600080fd5b506103fd7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106d057600080fd5b5061046661126b565b3480156106e557600080fd5b506005546001600160a01b03166103fd565b34801561070357600080fd5b50610380611277565b34801561071857600080fd5b506016546103cd9060ff1681565b34801561073257600080fd5b5061039761127f565b34801561074757600080fd5b50610466600a5481565b34801561075d57600080fd5b5061076661128e565b6040516103a491906129c9565b34801561077f57600080fd5b506103cd61078e3660046128e1565b61129a565b34801561079f57600080fd5b506103cd6107ae366004612952565b611320565b3480156107bf57600080fd5b506103cd6107ce3660046128e1565b6113c9565b3480156107df57600080fd5b506104666107ee366004612952565b6113d6565b3480156107ff57600080fd5b506103fd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561083357600080fd5b506103cd610842366004612952565b60066020526000908152604090205460ff1681565b34801561086357600080fd5b50610380610872366004612a16565b61150e565b34801561088357600080fd5b506103fd6108923660046129b0565b61156a565b3480156108a357600080fd5b506103806115dc565b3480156108b857600080fd5b506103cd6108c7366004612952565b61169d565b3480156108d857600080fd5b506103fd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561090c57600080fd5b506103cd61091b366004612952565b60086020526000908152604090205460ff1681565b34801561093c57600080fd5b5061038061094b366004612a31565b61173e565b34801561095c57600080fd5b50610466600b5481565b34801561097257600080fd5b506005546103cd90600160a81b900460ff1681565b34801561099357600080fd5b50610466600d5481565b3480156109a957600080fd5b506104666109b8366004612a7c565b6117ca565b3480156109c957600080fd5b506103cd6109d8366004612952565b6117f5565b3480156109e957600080fd5b506011546109fe90600160a01b900460ff1681565b6040516103a49190612acb565b348015610a1757600080fd5b50610380610a26366004612952565b611802565b348015610a3757600080fd5b50610466600c5481565b348015610a4d57600080fd5b5061046660095481565b348015610a6357600080fd5b50610380610a7236600461291d565b611878565b610a7f61190f565b600a8590556009849055600c839055600d829055600b819055808284610aa58789612b09565b610aaf9190612b09565b610ab99190612b09565b610ac39190612b09565b600e8190556105dc1015610b0c5760405162461bcd60e51b815260206004820152600b60248201526a496e76616c69642066656560a81b60448201526064015b60405180910390fd5b600a54600954600c54600d54600b5460408051958652602086019490945292840191909152606083015260808201527f881c278b86ef48391462a184ea0f2a579fec4c752524d2982eb0e2c9a956b7a39060a0015b60405180910390a15050505050565b606060038054610b7f90612b1c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bab90612b1c565b8015610bf85780601f10610bcd57610100808354040283529160200191610bf8565b820191906000526020600020905b815481529060010190602001808311610bdb57829003601f168201915b5050505050905090565b600033610c10818585611969565b60019150505b92915050565b6005546001600160a01b0316331480610c3f5750600f546001600160a01b031633145b610c5b5760405162461bcd60e51b8152600401610b0390612b56565b6001600160a01b03821660009081526006602052604090819020805460ff1916831515179055517fb85d1f479dc1239532569c7df02821f97fe28e8d4100e6cff3c474305535090790610cb390339085908590612b9f565b60405180910390a15050565b600f546001600160a01b03163314610d295760405162461bcd60e51b815260206004820152602760248201527f4f6e6c79207465616d2077616c6c65742063616e206368616e6765207465616d604482015266081dd85b1b195d60ca1b6064820152608401610b03565b600f80546001600160a01b0319166001600160a01b0383169081179091556040805133815260208101929092527fc4775d013f53eff3cd16df56552e9fcbb84ca0c1cb2553aab6387c6b19c8f6b291015b60405180910390a150565b6005546001600160a01b0316331480610da85750600f546001600160a01b031633145b610dc45760405162461bcd60e51b8152600401610b0390612b56565b6001600160a01b03821660009081526007602052604090819020805460ff1916831515179055517f48dc5c14208f483faabc461efc35952ca3a0665c7d590773ed7c29359f98651190610cb390339085908590612b9f565b600033610e2a858285611a8e565b610e35858585611b08565b9150505b9392505050565b600060208190527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb55461dead82527f44ad89ba62b98ff34f51403ac22759b55759460c0bb5521eb4b6ee3cff49cf8354600254610e9d9190612bc3565b610ea79190612bc3565b905090565b600033610c10818585610ebf83836117ca565b610ec99190612b09565b611969565b610ed83382611cfe565b50565b60165460ff1615610f2e5760405162461bcd60e51b815260206004820152601860248201527f7061697220616c726561647920696e697469616c697a656400000000000000006044820152606401610b03565b6040516320b7f73960e21b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906382dfdce490610fa1907f00000000000000000000000000000000000000000000000000000000000000009030908690600401612b9f565b6020604051808303816000875af1158015610fc0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe49190612bd6565b9050610ff1601282611e28565b50506016805460ff19166001179055565b61100a61190f565b6001600160a01b03811660009081526006602090815260408083208054600160ff19918216811790925560078452828520805482168317905560089093529281902080549092168317909155517fb85d1f479dc1239532569c7df02821f97fe28e8d4100e6cff3c4743055350907916110869133918591612b9f565b60405180910390a17f48dc5c14208f483faabc461efc35952ca3a0665c7d590773ed7c29359f986511338260016040516110c293929190612b9f565b60405180910390a17f3a2f5008966af518c2ae3ad2e064905093aafdcaed1d7bb3a74f1f77db6814aa33826001604051610d7a93929190612b9f565b6005546001600160a01b03163314806111215750600f546001600160a01b031633145b61113d5760405162461bcd60e51b8152600401610b0390612b56565b6001600160a01b038216600090815260066020908152604080832080548515801560ff19928316811790935560078552838620805483168417905560089094529190932080549091169092179091556111a15761119b601483611e28565b506111ae565b6111ac601483611e3d565b505b7fb85d1f479dc1239532569c7df02821f97fe28e8d4100e6cff3c47430553509073383836040516111e193929190612b9f565b60405180910390a17f48dc5c14208f483faabc461efc35952ca3a0665c7d590773ed7c29359f98651133838360405161121c93929190612b9f565b60405180910390a17f3a2f5008966af518c2ae3ad2e064905093aafdcaed1d7bb3a74f1f77db6814aa338383604051610cb393929190612b9f565b61125f61190f565b6112696000611e52565b565b6000610ea76012611ea4565b611269611eae565b606060048054610b7f90612b1c565b6060610ea76014612162565b600033816112a882866117ca565b9050838110156113085760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610b03565b6113158286868403611969565b506001949350505050565b600061132a61190f565b6001600160a01b0382166113755760405162461bcd60e51b81526020600482015260126024820152710414945524332303a207061697220697320360741b6044820152606401610b03565b604080513381526001600160a01b03841660208201527ff8846cbe66fa5bf657d787c9d1fa1e0c49d164118e743861a349b498d21f9152910160405180910390a16113c1601283611e3d565b90505b919050565b6000610e39338484611b08565b60405163e6a4390560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015230602483015260009182917f0000000000000000000000000000000000000000000000000000000000000000169063e6a4390590604401602060405180830381865afa158015611467573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148b9190612bd6565b90506001600160a01b0381166114a45750600092915050565b6040516370a0823160e01b81526001600160a01b0384811660048301528216906370a0823190602401602060405180830381865afa1580156114ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e399190612bf3565b61151661190f565b6005805460ff60a01b1916600160a01b831515908102919091179091556040805133815260208101929092527f19fac58802e51ef4c4318d1f5f837783d6ab79e4353faa605459ff3fe2eea8a19101610d7a565b600060016115786012611ea4565b6115829190612bc3565b8211156115d15760405162461bcd60e51b815260206004820152601c60248201527f414945524332303a20696e646578206f7574206f6620626f756e6473000000006044820152606401610b03565b6113c160128361216f565b6115e461190f565b6040805160008082526020820192839052479290913391849161160691612c22565b60006040518083038185875af1925050503d8060008114611643576040519150601f19603f3d011682016040523d82523d6000602084013e611648565b606091505b50509050806116995760405162461bcd60e51b815260206004820152601c60248201527f414945524332303a204554485f5452414e534645525f4641494c4544000000006044820152606401610b03565b5050565b60006116a761190f565b6001600160a01b0382166116f25760405162461bcd60e51b81526020600482015260126024820152710414945524332303a207061697220697320360741b6044820152606401610b03565b604080513381526001600160a01b03841660208201527fc185c2e07c96a12ccdeaba3948d6a6699b41f26f5d9ea4f94f13991707f5915a910160405180910390a16113c1601283611e28565b61174661190f565b601080546001600160a01b038581166001600160a01b03199283168117909355601180548683169084168117909155600f8054928616929093168217909255604080519384526020840192909252908201527fb923dcdfa226a9163e9324bacc07634c44fc26e1268f8341bc0989d83f4794b89060600160405180910390a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60006113c160128361217b565b61180a61190f565b6001600160a01b03811661186f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b03565b610ed881611e52565b6005546001600160a01b031633148061189b5750600f546001600160a01b031633145b6118b75760405162461bcd60e51b8152600401610b0390612b56565b6001600160a01b03821660009081526008602052604090819020805460ff1916831515179055517f3a2f5008966af518c2ae3ad2e064905093aafdcaed1d7bb3a74f1f77db6814aa90610cb390339085908590612b9f565b6005546001600160a01b031633146112695760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610b03565b6001600160a01b0383166119cb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b03565b6001600160a01b038216611a2c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b03565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000611a9a84846117ca565b90506000198114611b025781811015611af55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610b03565b611b028484848403611969565b50505050565b600554600090600160a81b900460ff1615611b3057611b2884848461219d565b506001610e39565b600080601154600160a01b900460ff166002811115611b5157611b51612ab5565b14158015611bb857503360009081526008602052604090205460ff16158015611b9357506001600160a01b03851660009081526006602052604090205460ff16155b8015611bb857506001600160a01b03841660009081526007602052604090205460ff16155b9050600085858315611c5757611bcd886117f5565b15611c445750506011546040516333e8cc5360e11b81526001600160a01b0380891660048301526024820187905260019350879289929116906367d198a690604401600060405180830381600087803b158015611c2957600080fd5b505af1925050508015611c3a575060015b15611c5757611c57565b611c4d876117f5565b15611c5757600292505b611c5f612341565b15611c6c57611c6c611eae565b600084611c795786611c83565b611c838988612396565b9050611c9089898361219d565b8315611cef57604080516001600160a01b03808616825284166020820152908101889052606081018590524260808201527fe0c1b141a85ba7f8df7ded19a02a004b049d9e0a67f9dea87186c07bce3923b09060a00160405180910390a15b50600198975050505050505050565b6001600160a01b038216611d5e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610b03565b6001600160a01b03821660009081526020819052604090205481811015611dd25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610b03565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101611a81565b6000610e39836001600160a01b0384166123d3565b6000610e39836001600160a01b038416612422565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60006113c1825490565b6005805460ff60a81b1916600160a81b17905530600090815260208190526040812054905080600003611ee15750612153565b600e54600003611ef15750612153565b611f1c307f000000000000000000000000000000000000000000000000000000000000000083611969565b6000600e5460095483611f2f9190612c3e565b611f399190612c55565b90506000600e54600a5484611f4e9190612c3e565b611f589190612c55565b90506000600e54600c5485611f6d9190612c3e565b611f779190612c55565b90506000600e54600d5486611f8c9190612c3e565b611f969190612c55565b90506000600e54600b5487611fab9190612c3e565b611fb59190612c55565b90508415611fc757611fc73086611cfe565b821561204457601054611fe59030906001600160a01b031685611969565b601054604051631d3793b160e21b8152600481018590526001600160a01b03909116906374de4ec490602401600060405180830381600087803b15801561202b57600080fd5b505af115801561203f573d6000803e3d6000fd5b505050505b81156120cb576120cb30601160009054906101000a90046001600160a01b03166001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120c59190612bd6565b8461219d565b80156120e957600f546120e99030906001600160a01b03168361219d565b83156120f7576120f7612515565b604080518681526020810186905290810182905260608101849052608081018390524260a08201527ffc18969df35ccba802c14035d6d6273bf5bb4d8b9de8faa7aba1044c813b13009060c00160405180910390a15050505050505b6005805460ff60a81b19169055565b60606000610e39836127b4565b6000610e398383612810565b6001600160a01b03811660009081526001830160205260408120541515610e39565b6001600160a01b0383166122015760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b03565b6001600160a01b0382166122635760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b03565b6001600160a01b038316600090815260208190526040902054818110156122db5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610b03565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611b02565b600554600090600160a81b900460ff161580156123675750600554600160a01b900460ff165b8015612380575030600090815260208190526040812054115b8015610ea75750612390336117f5565b15905090565b600080612710600e54846123aa9190612c3e565b6123b49190612c55565b90506123c184308361219d565b6123cb8184612bc3565b949350505050565b600081815260018301602052604081205461241a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610c16565b506000610c16565b6000818152600183016020526040812054801561250b576000612446600183612bc3565b855490915060009061245a90600190612bc3565b90508181146124bf57600086600001828154811061247a5761247a612c77565b906000526020600020015490508087600001848154811061249d5761249d612c77565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806124d0576124d0612c8d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610c16565b6000915050610c16565b604080516001808252818301909252600091816020015b60408051608081018252600080825260208083018290529282018190526060820152825260001990920191018161252c575050604080516080810182523081526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660208201526000918101829052606081018290528251929350918391906125bf576125bf612c77565b602002602001018190525060006125eb306001600160a01b031660009081526020819052604090205490565b905060006125fa600283612c55565b90506103e881101561260b57505050565b60405163635bf8db60e11b815247906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c6b7f1b690612662908590600090899030904290600401612ca3565b6000604051808303816000875af19250505080156126a257506040513d6000823e601f3d908101601f1916820160405261269f9190810190612d45565b60015b15611b02575060006126b48247612bc3565b6040516302df835360e61b81523060048201526000602482018190526044820186905260648201839052608482015261dead60a48201524260c48201529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063b7e0d4c090839060e40160606040518083038185885af193505050508015612765575060408051601f3d908101601f1916820190925261276291810190612e03565b60015b156127ad575050604080518581526020810184905242918101919091527ff75993dbe1645872cbbea6395e1feebee76b435baf0e4d62d7eac269c6f57b249150606001610b61565b5050505050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561280457602002820191906000526020600020905b8154815260200190600101908083116127f0575b50505050509050919050565b600082600001828154811061282757612827612c77565b9060005260206000200154905092915050565b600080600080600060a0868803121561285257600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b60005b83811015612890578181015183820152602001612878565b50506000910152565b60208152600082518060208401526128b8816040850160208701612875565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610ed857600080fd5b600080604083850312156128f457600080fd5b82356128ff816128cc565b946020939093013593505050565b803580151581146113c457600080fd5b6000806040838503121561293057600080fd5b823561293b816128cc565b91506129496020840161290d565b90509250929050565b60006020828403121561296457600080fd5b8135610e39816128cc565b60008060006060848603121561298457600080fd5b833561298f816128cc565b9250602084013561299f816128cc565b929592945050506040919091013590565b6000602082840312156129c257600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b81811015612a0a5783516001600160a01b0316835292840192918401916001016129e5565b50909695505050505050565b600060208284031215612a2857600080fd5b610e398261290d565b600080600060608486031215612a4657600080fd5b8335612a51816128cc565b92506020840135612a61816128cc565b91506040840135612a71816128cc565b809150509250925092565b60008060408385031215612a8f57600080fd5b8235612a9a816128cc565b91506020830135612aaa816128cc565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6020810160038310612aed57634e487b7160e01b600052602160045260246000fd5b91905290565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c1657610c16612af3565b600181811c90821680612b3057607f821691505b602082108103612b5057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526029908201527f4f6e6c79206f776e6572206f72207465616d2063616e2063616c6c207468697360408201526810333ab731ba34b7b760b91b606082015260800190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b81810381811115610c1657610c16612af3565b600060208284031215612be857600080fd5b8151610e39816128cc565b600060208284031215612c0557600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b60008251612c34818460208701612875565b9190910192915050565b8082028115828204841417610c1657610c16612af3565b600082612c7257634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060a0820187835260208781850152604060a08186015282885180855260c087019150838a01945060005b81811015612d1957855180516001600160a01b0390811685528682015181168786015285820151151586860152606091820151169084015294840194608090920191600101612ccf565b50506001600160a01b03881660608701529350612d3592505050565b8260808301529695505050505050565b60006020808385031215612d5857600080fd5b825167ffffffffffffffff80821115612d7057600080fd5b818501915085601f830112612d8457600080fd5b815181811115612d9657612d96612c0c565b8060051b604051601f19603f83011681018181108582111715612dbb57612dbb612c0c565b604052918252848201925083810185019188831115612dd957600080fd5b938501935b82851015612df757845184529385019392850192612dde565b98975050505050505050565b600080600060608486031215612e1857600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212208dd53186aa0f0ff921ce48c800320c8c30b2c410ebd37f2940267b92fbbc920b64736f6c6343000813003300000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a922b2ad8812c00000000000000000000000000000000000000000000000000000000000000000012000000000000000000000000e7ddfcdb86169848921e5c7cca7960f9956d3427000000000000000000000000a062ae8a9c5e11aaa026fc2670b0d65ccc8b2858000000000000000000000000f1046053aa5682b4f9a81b5481394da16be5ff5a0000000000000000000000004200000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000b4d4f4f4e4d495353494f4e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4d494f4e000000000000000000000000000000000000000000000000000000