Overview ERC20
PRICE
$0.01636 @ 0.01 wei (6.25%)

ON-CHAIN MARKET CAP $15,120,000.00

Total Supply:
420,000,000,000,000,000,000,000.00 ShibDoge

Holders:
2,556
Profile Summary
Blockchain:
Ethereum (1)


Decimals:
9
Contract Source Code Verified (Partial Match)
Contract Name:
ShibaDoge

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Created At:
Fri, 24 Dec 2021 22:22:12 GMT
ShibaDoge.sol
ShibaDoge.sol
ShibaDoge.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "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": false,
        "internalType": "uint256",
        "name": "minTokensBeforeSwap",
        "type": "uint256"
      }
    ],
    "name": "MinTokensBeforeSwapUpdated",
    "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": "uint256",
        "name": "tokensSwapped",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "ethReceived",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokensIntoLiqudity",
        "type": "uint256"
      }
    ],
    "name": "SwapAndLiquify",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      }
    ],
    "name": "SwapAndLiquifyEnabledUpdated",
    "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": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "botAddedToBlacklist",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "botRemovedFromBlacklist",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "_devwallet",
    "outputs": [
      {
        "internalType": "address payable",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_exchangewallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_marketingAddress",
    "outputs": [
      {
        "internalType": "address payable",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_maxTxAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_maxWalletSize",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxWalletSize",
        "type": "uint256"
      }
    ],
    "name": "_setMaxWalletSizePercent",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "addBotToBlacklist",
    "outputs": [],
    "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": "buyFee",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "donation",
        "type": "uint16"
      }
    ],
    "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": "tAmount",
        "type": "uint256"
      }
    ],
    "name": "deliver",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "donationAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "excludeFromFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "excludeFromLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "excludeFromReward",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "geUnlockTime",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "includeInFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "includeInLimit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "includeInReward",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": "account",
        "type": "address"
      }
    ],
    "name": "isExcludedFromFee",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isExcludedFromLimit",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "isExcludedFromReward",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "time",
        "type": "uint256"
      }
    ],
    "name": "lock",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": [
      {
        "internalType": "uint256",
        "name": "tAmount",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "deductTransferFee",
        "type": "bool"
      }
    ],
    "name": "reflectionFromToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "removeBotFromBlacklist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellFee",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "donation",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "buy_tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "buy_liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "buy_marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "buy_dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "buy_donation",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sell_tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sell_liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sell_marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sell_dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sell_donation",
        "type": "uint16"
      }
    ],
    "name": "setBothFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "donation",
        "type": "uint16"
      }
    ],
    "name": "setBuyFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxTxPercent",
        "type": "uint256"
      }
    ],
    "name": "setMaxTxPercent",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "numTokens",
        "type": "uint256"
      }
    ],
    "name": "setNumTokensSellToAddToLiquidity",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "tax",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "liquidity",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "marketing",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "dev",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "donation",
        "type": "uint16"
      }
    ],
    "name": "setSellFee",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_enabled",
        "type": "bool"
      }
    ],
    "name": "setSwapAndLiquifyEnabled",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapAndLiquifyEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "rAmount",
        "type": "uint256"
      }
    ],
    "name": "tokenFromReflection",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "recipient",
        "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"
  },
  {
    "inputs": [],
    "name": "uniswapV2Pair",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "uniswapV2Router",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "unlock",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "updateDevWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "updateExchangeWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address payable",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "updateMarketingWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "updatePartnershipsWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c06040526d14b5253145b397d6545100000000600c8190556200002690600019620005c5565b6200003490600019620005e8565b600d55600f80546001600160a01b03199081167361e7210ae22ccfabd5b9289208ea65a8718b04b11790915560108054821673b5491fab852331ba26ef8ec51cc48e78aa7886261790556011805482167334f6695d10a29dfb8b94e5bacdfb872e5be8b6d21790556012805482167336930bb214526522aa2195bbc29e71de78d9b68a1790556013805490911661dead179055604080518082019091526009808252685368696261446f676560b81b6020909201918252620000f9916014916200051f565b506040805180820190915260088082526753686962446f676560c01b60209092019182526200012b916015916200051f565b506016805460ff191660091790556019805460ff60581b19166b0100000000000000000000001790556c1a8177494efa5bf39f20000000601a819055601b556c3502ee929df4b7e73e40000000601c553480156200018857600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d543360009081526003602090815260409182902092909255601780546430002f00006001600160501b03199182168117909255601880549091169091179055805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d92839263c45a015592600480830193928290030181865afa15801562000258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027e91906200060e565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f291906200060e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036691906200060e565b6001600160a01b0390811660a0528116608052600160066000620003926000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260068452828120805486166001908117909155600f805484168352848320805488168317905560108054851684528584208054891684179055601180548616855286852080548a1685179055601280548716865287862080548b1686179055925486168552600a9788905286852080548a168517905590548516845285842080548916841790555484168352848320805488168317905554909216815291822080549094168117909355620004806000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600a909252902080549091166001179055620004c83390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c546040516200051091815260200190565b60405180910390a3506200067d565b8280546200052d9062000640565b90600052602060002090601f0160209004810192826200055157600085556200059c565b82601f106200056c57805160ff19168380011785556200059c565b828001600101855582156200059c579182015b828111156200059c5782518255916020019190600101906200057f565b50620005aa929150620005ae565b5090565b5b80821115620005aa5760008155600101620005af565b600082620005e357634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200060957634e487b7160e01b600052601160045260246000fd5b500390565b6000602082840312156200062157600080fd5b81516001600160a01b03811681146200063957600080fd5b9392505050565b600181811c908216806200065557607f821691505b602082108114156200067757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a051613bc1620006e2600039600081816106d30152818161220e01528181612368015281816129e80152612a9301526000818161041301528181612f5c0152818161301501528181613051015281816130c3015261311f0152613bc16000f3fe6080604052600436106103395760003560e01c80635342acb4116101ab578063af2ce614116100f7578063d94160e011610095578063ea2f0b371161006f578063ea2f0b3714610a85578063ec034bed14610aa5578063f0f165af14610ac3578063f2fde38b14610ae357600080fd5b8063d94160e0146109e6578063dd46706414610a1f578063dd62ed3e14610a3f57600080fd5b8063be83c38f116100d1578063be83c38f14610966578063c49b9a8014610986578063caac7934146109a6578063d543dbeb146109c657600080fd5b8063af2ce61414610911578063b030b34a14610931578063b6c523241461095157600080fd5b80638f9a55c011610164578063a457c2d71161013e578063a457c2d71461089c578063a69df4b5146108bc578063a9059cbb146108d1578063aacebbe3146108f157600080fd5b80638f9a55c01461085157806391d919a91461086757806395d89b411461088757600080fd5b80635342acb41461077657806370a08231146107af578063715018a6146107cf5780637d1db4a5146107e457806388f82020146107fa5780638da5cb5b1461083357600080fd5b8063313ce56711610285578063469629a9116102235780634a74bb02116101fd5780634a74bb02146106f55780634cfd4a921461071657806350aa29771461073657806352390c021461075657600080fd5b8063469629a91461065d578063470624021461067d57806349bd5a5e146106c157600080fd5b80633bd5d1731161025f5780633bd5d173146105dd5780633e3d26f9146105fd578063437823ec1461061d5780634549b0391461063d57600080fd5b8063313ce5671461057b5780633685d4191461059d57806339509351146105bd57600080fd5b806318160ddd116102f25780631d7ef879116102cc5780631d7ef879146104a257806323b872dd146104c25780632b14ca56146104e25780632d8381191461055b57600080fd5b806318160ddd1461044d5780631816467f146104625780631c4a78ef1461048257600080fd5b806306fdde0314610345578063095ea7b3146103705780630bd3a7f9146103a057806313114a9d146103c25780631465d929146103e15780631694505e1461040157600080fd5b3661034057005b600080fd5b34801561035157600080fd5b5061035a610b03565b60405161036791906135ff565b60405180910390f35b34801561037c57600080fd5b5061039061038b36600461366c565b610b95565b6040519015158152602001610367565b3480156103ac57600080fd5b506103c06103bb366004613698565b610bac565b005b3480156103ce57600080fd5b50600e545b604051908152602001610367565b3480156103ed57600080fd5b506103c06103fc3660046136cc565b610c03565b34801561040d57600080fd5b506104357f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610367565b34801561045957600080fd5b50600c546103d3565b34801561046e57600080fd5b506103c061047d366004613698565b610c9f565b34801561048e57600080fd5b50601054610435906001600160a01b031681565b3480156104ae57600080fd5b506103c06104bd366004613698565b610ceb565b3480156104ce57600080fd5b506103906104dd366004613731565b610e5c565b3480156104ee57600080fd5b506018546105269061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b6040805161ffff968716815294861660208601529285169284019290925283166060830152909116608082015260a001610367565b34801561056757600080fd5b506103d3610576366004613772565b610ec5565b34801561058757600080fd5b5060165460405160ff9091168152602001610367565b3480156105a957600080fd5b506103c06105b8366004613698565b610f49565b3480156105c957600080fd5b506103906105d836600461366c565b611100565b3480156105e957600080fd5b506103c06105f8366004613772565b611136565b34801561060957600080fd5b506103c0610618366004613698565b611244565b34801561062957600080fd5b506103c0610638366004613698565b611290565b34801561064957600080fd5b506103d361065836600461379b565b6112de565b34801561066957600080fd5b506103c06106783660046137c7565b611381565b34801561068957600080fd5b506017546105269061ffff80821691620100008104821691600160201b8204811691600160301b8104821691600160401b9091041685565b3480156106cd57600080fd5b506104357f000000000000000000000000000000000000000000000000000000000000000081565b34801561070157600080fd5b5060195461039090600160581b900460ff1681565b34801561072257600080fd5b506103c06107313660046136cc565b6114f7565b34801561074257600080fd5b506103c0610751366004613698565b611593565b34801561076257600080fd5b506103c0610771366004613698565b6115df565b34801561078257600080fd5b50610390610791366004613698565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156107bb57600080fd5b506103d36107ca366004613698565b611732565b3480156107db57600080fd5b506103c0611791565b3480156107f057600080fd5b506103d3601a5481565b34801561080657600080fd5b50610390610815366004613698565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561083f57600080fd5b506000546001600160a01b0316610435565b34801561085d57600080fd5b506103d3601c5481565b34801561087357600080fd5b506103c0610882366004613698565b6117f3565b34801561089357600080fd5b5061035a61183e565b3480156108a857600080fd5b506103906108b736600461366c565b61184d565b3480156108c857600080fd5b506103c061189c565b3480156108dd57600080fd5b506103906108ec36600461366c565b6119b3565b3480156108fd57600080fd5b506103c061090c366004613698565b6119c0565b34801561091d57600080fd5b506103c061092c366004613772565b611a0c565b34801561093d57600080fd5b506103c061094c366004613698565b611a5d565b34801561095d57600080fd5b506002546103d3565b34801561097257600080fd5b50601154610435906001600160a01b031681565b34801561099257600080fd5b506103c06109a1366004613881565b611be1565b3480156109b257600080fd5b50600f54610435906001600160a01b031681565b3480156109d257600080fd5b506103c06109e1366004613772565b611c63565b3480156109f257600080fd5b50610390610a01366004613698565b6001600160a01b03166000908152600a602052604090205460ff1690565b348015610a2b57600080fd5b506103c0610a3a366004613772565b611cae565b348015610a4b57600080fd5b506103d3610a5a36600461389c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a9157600080fd5b506103c0610aa0366004613698565b611d33565b348015610ab157600080fd5b506013546001600160a01b0316610435565b348015610acf57600080fd5b506103c0610ade366004613772565b611d7e565b348015610aef57600080fd5b506103c0610afe366004613698565b611dad565b606060148054610b12906138d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610b3e906138d5565b8015610b8b5780601f10610b6057610100808354040283529160200191610b8b565b820191906000526020600020905b815481529060010190602001808311610b6e57829003601f168201915b5050505050905090565b6000610ba2338484611e85565b5060015b92915050565b6000546001600160a01b03163314610bdf5760405162461bcd60e51b8152600401610bd690613910565b60405180910390fd5b6001600160a01b03166000908152600a60205260409020805460ff19166001179055565b6000546001600160a01b03163314610c2d5760405162461bcd60e51b8152600401610bd690613910565b6017805461ffff928316600160401b0261ffff60401b19948416600160301b0261ffff60301b1997851662010000029790971667ffff0000ffff000019968516600160201b0265ffff0000ffff1990931694909816939093171793909316949094179290921791909116919091179055565b6000546001600160a01b03163314610cc95760405162461bcd60e51b8152600401610bd690613910565b601080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610d155760405162461bcd60e51b8152600401610bd690613910565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b0382161415610d8d5760405162461bcd60e51b815260206004820152602260248201527f57652063616e6e6f7420626c61636b6c69737420556e695377617020726f757460448201526132b960f11b6064820152608401610bd6565b6001600160a01b03811660009081526009602052604090205460ff1615610df65760405162461bcd60e51b815260206004820152601e60248201527f4163636f756e7420697320616c726561647920626c61636b6c697374656400006044820152606401610bd6565b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6000610e69848484611fa9565b610ebb8433610eb685604051806060016040528060288152602001613b1f602891396001600160a01b038a1660009081526005602090815260408083203384529091529020549190612422565b611e85565b5060019392505050565b6000600d54821115610f2c5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610bd6565b6000610f3661245c565b9050610f42838261247f565b9392505050565b6000546001600160a01b03163314610f735760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03811660009081526007602052604090205460ff16610fdb5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610bd6565b60005b6008548110156110fc57816001600160a01b03166008828154811061100557611005613945565b6000918252602090912001546001600160a01b031614156110ea576008805461103090600190613971565b8154811061104057611040613945565b600091825260209091200154600880546001600160a01b03909216918390811061106c5761106c613945565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600790925220805460ff1916905560088054806110c4576110c4613988565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b806110f48161399e565b915050610fde565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610ba2918590610eb690866124c1565b3360008181526007602052604090205460ff16156111ab5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610bd6565b6000806000806111ba86612520565b94509450945094505060006111da87868686866111d561245c565b6125af565b50506001600160a01b0387166000908152600360205260409020549091506112029082612623565b6001600160a01b038716600090815260036020526040902055600d546112289082612623565b600d55600e5461123890886124c1565b600e5550505050505050565b6000546001600160a01b0316331461126e5760405162461bcd60e51b8152600401610bd690613910565b601180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146112ba5760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600c548311156113325760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610bd6565b60008060008061134187612520565b94509450945094505060008061135d89878787876111d561245c565b50915091508761137457509450610ba69350505050565b9550610ba6945050505050565b6000546001600160a01b031633146113ab5760405162461bcd60e51b8152600401610bd690613910565b89601760000160006101000a81548161ffff021916908361ffff16021790555087601760000160046101000a81548161ffff021916908361ffff16021790555088601760000160026101000a81548161ffff021916908361ffff16021790555086601760000160066101000a81548161ffff021916908361ffff16021790555085601760000160086101000a81548161ffff021916908361ffff16021790555084601860000160006101000a81548161ffff021916908361ffff16021790555082601860000160046101000a81548161ffff021916908361ffff16021790555083601860000160026101000a81548161ffff021916908361ffff16021790555081601860000160066101000a81548161ffff021916908361ffff16021790555080601860000160086101000a81548161ffff021916908361ffff16021790555050505050505050505050565b6000546001600160a01b031633146115215760405162461bcd60e51b8152600401610bd690613910565b6018805461ffff928316600160401b0261ffff60401b19948416600160301b0261ffff60301b1997851662010000029790971667ffff0000ffff000019968516600160201b0265ffff0000ffff1990931694909816939093171793909316949094179290921791909116919091179055565b6000546001600160a01b031633146115bd5760405162461bcd60e51b8152600401610bd690613910565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146116095760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03811660009081526007602052604090205460ff16156116725760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610bd6565b6001600160a01b038116600090815260036020526040902054156116cc576001600160a01b0381166000908152600360205260409020546116b290610ec5565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600760205260408120805460ff191660019081179091556008805491820181559091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319169091179055565b6001600160a01b03811660009081526007602052604081205460ff161561176f57506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610ba690610ec5565b6000546001600160a01b031633146117bb5760405162461bcd60e51b8152600401610bd690613910565b600080546040516001600160a01b0390911690600080516020613b47833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b0316331461181d5760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03166000908152600a60205260409020805460ff19169055565b606060158054610b12906138d5565b6000610ba23384610eb685604051806060016040528060258152602001613b67602591393360009081526005602090815260408083206001600160a01b038d1684529091529020549190612422565b6001546001600160a01b031633146119025760405162461bcd60e51b815260206004820152602360248201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6044820152626f636b60e81b6064820152608401610bd6565b60025442116119615760405162461bcd60e51b815260206004820152602560248201527f436f6e7472616374206973206c6f636b656420756e74696c2061206c61746572604482015264206461746560d81b6064820152608401610bd6565b600154600080546040516001600160a01b039384169390911691600080516020613b4783398151915291a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000610ba2338484611fa9565b6000546001600160a01b031633146119ea5760405162461bcd60e51b8152600401610bd690613910565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611a365760405162461bcd60e51b8152600401610bd690613910565b611a576103e8611a5183600c5461266590919063ffffffff16565b9061247f565b601c5550565b6000546001600160a01b03163314611a875760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03811660009081526009602052604090205460ff16611aef5760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e74206973206e6f7420626c61636b6c69737465640000000000006044820152606401610bd6565b60005b600b548110156110fc57816001600160a01b0316600b8281548110611b1957611b19613945565b6000918252602090912001546001600160a01b03161415611bcf57600b8054611b4490600190613971565b81548110611b5457611b54613945565b600091825260209091200154600b80546001600160a01b039092169183908110611b8057611b80613945565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600990915260409020805460ff19169055600b8054806110c4576110c4613988565b80611bd98161399e565b915050611af2565b6000546001600160a01b03163314611c0b5760405162461bcd60e51b8152600401610bd690613910565b60198054821515600160581b0260ff60581b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611c5890831515815260200190565b60405180910390a150565b6000546001600160a01b03163314611c8d5760405162461bcd60e51b8152600401610bd690613910565b611ca86103e8611a5183600c5461266590919063ffffffff16565b601a5550565b6000546001600160a01b03163314611cd85760405162461bcd60e51b8152600401610bd690613910565b60008054600180546001600160a01b03199081166001600160a01b03841617909155169055611d0781426139b9565b600255600080546040516001600160a01b0390911690600080516020613b47833981519152908390a350565b6000546001600160a01b03163314611d5d5760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b03163314611da85760405162461bcd60e51b8152600401610bd690613910565b601b55565b6000546001600160a01b03163314611dd75760405162461bcd60e51b8152600401610bd690613910565b6001600160a01b038116611e3c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610bd6565b600080546040516001600160a01b0380851693921691600080516020613b4783398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611ee75760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bd6565b6001600160a01b038216611f485760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bd6565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661200d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610bd6565b6001600160a01b03821661206f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bd6565b600081116120d15760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610bd6565b6001600160a01b03831660009081526009602052604090205460ff16156121305760405162461bcd60e51b8152602060048201526013602482015272165bdd48185c9948189b1858dadb1a5cdd1959606a1b6044820152606401610bd6565b3360009081526009602052604090205460ff161561217e5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610bd6565b3260009081526009602052604090205460ff16156121cc5760405162461bcd60e51b815260206004820152600b60248201526a189b1858dadb1a5cdd195960aa1b6044820152606401610bd6565b60006121d730611732565b9050601a5481106121e75750601a545b601b54811080159081906122055750601954600160501b900460ff16155b801561224357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156122585750601954600160581b900460ff165b1561226b57601b54915061226b826126e4565b6001600160a01b03851660009081526006602052604090205460019060ff16806122ad57506001600160a01b03851660009081526006602052604090205460ff165b156122b6575060005b801561240e576001600160a01b0386166000908152600a602052604090205460ff161580156122fe57506001600160a01b0385166000908152600a602052604090205460ff16155b1561240e57601a548411156123665760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610bd6565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461240e57601c546123ab86611732565b6123b590866139b9565b111561240e5760405162461bcd60e51b815260206004820152602260248201527f526563697069656e742065786365656473206d61782077616c6c65742073697a604482015261329760f11b6064820152608401610bd6565b61241a868686846129c8565b505050505050565b600081848411156124465760405162461bcd60e51b8152600401610bd691906135ff565b5060006124538486613971565b95945050505050565b6000806000612469612cae565b9092509050612478828261247f565b9250505090565b6000610f4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e30565b6000806124ce83856139b9565b905083811015610f425760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610bd6565b60008060008060008061253287612e5e565b9050600061253f88612e7a565b9050600061254c89612e9c565b6125558a612ebf565b61255f91906139b9565b9050600061256c8a612ee2565b905060006125848461257e8d88612623565b90612623565b90506125908184612623565b905061259c8183612623565b9b949a5092985090965094509092505050565b60008080806125be8a86612665565b905060006125cc8a87612665565b905060006125da8a88612665565b905060006125e88a89612665565b905060006125f68a8a612665565b9050600061260c8261257e858188818c8c612623565b959f959e50939c50939a5050505050505050505050565b6000610f4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612422565b60008261267457506000610ba6565b600061268083856139d1565b90508261268d85836139f0565b14610f425760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610bd6565b6019805460ff60501b1916600160501b17905560185460175460009161ffff600160301b808304821693908104821692600160201b80820484169390830481169261273c926201000090819004831692910416613a12565b6127469190613a12565b6127509190613a12565b61275a9190613a12565b6127649190613a12565b61276f906002613a38565b60185460175461ffff9283169350600092849261279a92620100009182900483169291900416613a12565b6127a89061ffff16856139d1565b6127b291906139f0565b905060006127c08285613971565b9050476127cc82612f05565b60006127d88247613971565b6018546017549192506000916128009161ffff62010000918290048116929190910416613a12565b61280e9061ffff1687613971565b61281890836139f0565b6018546017549192506000916128409161ffff62010000918290048116929190910416613a12565b61284e9061ffff16836139d1565b905080156128605761286086826130bd565b6018546017546000916128859161ffff600160201b9283900481169290910416613a12565b61ffff166128948460026139d1565b61289e91906139d1565b60185460175491925060009147916128c89161ffff600160301b9283900481169290910416613a12565b61ffff166128d78660026139d1565b6128e191906139d1565b11612927576018546017546129099161ffff600160301b918290048116929190910416613a12565b61ffff166129188560026139d1565b61292291906139d1565b612929565b475b9050811561296d57600f546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561296b573d6000803e3d6000fd5b505b80156129af576010546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129ad573d6000803e3d6000fd5b505b50506019805460ff60501b191690555050505050505050565b8015612b3c576129e66019805469ffffffffffffffffffff19169055565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161415612a91576017546019805461ffff80841663ffffffff1990921691909117620100008085048316021769ffff0000ffff000000001916600160201b80850483160261ffff60401b191617600160401b8085048316021761ffff60301b1916600160301b93849004919091169092029190911790555b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415612b3c576018546019805461ffff80841663ffffffff1990921691909117620100008085048316021769ffff0000ffff000000001916600160201b80850483160261ffff60401b191617600160401b8085048316021761ffff60301b1916600160301b93849004919091169092029190911790555b6001600160a01b03841660009081526007602052604090205460ff168015612b7d57506001600160a01b03831660009081526007602052604090205460ff16155b15612b9257612b8d84848461319d565b612c90565b6001600160a01b03841660009081526007602052604090205460ff16158015612bd357506001600160a01b03831660009081526007602052604090205460ff165b15612be357612b8d8484846132ee565b6001600160a01b03841660009081526007602052604090205460ff16158015612c2557506001600160a01b03831660009081526007602052604090205460ff16155b15612c3557612b8d8484846133ae565b6001600160a01b03841660009081526007602052604090205460ff168015612c7557506001600160a01b03831660009081526007602052604090205460ff165b15612c8557612b8d848484613409565b612c908484846133ae565b612ca86019805469ffffffffffffffffffff19169055565b50505050565b600d54600c546000918291825b600854811015612e0057826003600060088481548110612cdd57612cdd613945565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612d485750816004600060088481548110612d2157612d21613945565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612d5e57600d54600c54945094505050509091565b612da46003600060088481548110612d7857612d78613945565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490612623565b9250612dec6004600060088481548110612dc057612dc0613945565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390612623565b915080612df88161399e565b915050612cbb565b50600c54600d54612e109161247f565b821015612e2757600d54600c549350935050509091565b90939092509050565b60008183612e515760405162461bcd60e51b8152600401610bd691906135ff565b50600061245384866139f0565b601954600090610ba690606490611a5190859061ffff16612665565b601954600090610ba690606490611a5190859062010000900461ffff16612665565b601954600090610ba690606490611a51908590600160301b900461ffff16612665565b601954600090610ba690606490611a51908590600160201b900461ffff16612665565b601954600090610ba690606490611a51908590600160401b900461ffff16612665565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612f3a57612f3a613945565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fdc9190613a62565b81600181518110612fef57612fef613945565b60200260200101906001600160a01b031690816001600160a01b03168152505061303a307f000000000000000000000000000000000000000000000000000000000000000084611e85565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061308f908590600090869030904290600401613a7f565b600060405180830381600087803b1580156130a957600080fd5b505af115801561241a573d6000803e3d6000fd5b6130e8307f000000000000000000000000000000000000000000000000000000000000000084611e85565b60405163f305d71960e01b8152306004820181905260248201849052600060448301819052606483015260848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c40160606040518083038185885af1158015613171573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906131969190613af0565b5050505050565b60008060008060006131ae86612520565b9450945094509450945060008060006131cd89888888886111d561245c565b6001600160a01b038e1660009081526004602052604090205492955090935091506131f8908a612623565b6001600160a01b038c166000908152600460209081526040808320939093556003905220546132279084612623565b6001600160a01b03808d1660009081526003602052604080822093909355908c168152205461325690836124c1565b6001600160a01b038b1660009081526003602052604090205561327886613493565b61328185613493565b61328a8461351c565b61329481886135db565b896001600160a01b03168b6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8a6040516132d991815260200190565b60405180910390a35050505050505050505050565b60008060008060006132ff86612520565b94509450945094509450600080600061331e89888888886111d561245c565b6001600160a01b038e1660009081526003602052604090205492955090935091506133499084612623565b6001600160a01b03808d16600090815260036020908152604080832094909455918d1681526004909152205461337f90896124c1565b6001600160a01b038b1660009081526004602090815260408083209390935560039052205461325690836124c1565b60008060008060006133bf86612520565b9450945094509450945060008060006133de89888888886111d561245c565b6001600160a01b038e1660009081526003602052604090205492955090935091506132279084612623565b600080600080600061341a86612520565b94509450945094509450600080600061343989888888886111d561245c565b6001600160a01b038e166000908152600460205260409020549295509093509150613464908a612623565b6001600160a01b038c166000908152600460209081526040808320939093556003905220546133499084612623565b600061349d61245c565b905060006134ab8383612665565b306000908152600360205260409020549091506134c890826124c1565b3060009081526003602090815260408083209390935560079052205460ff1615613517573060009081526004602052604090205461350690846124c1565b306000908152600460205260409020555b505050565b600061352661245c565b905060006135348383612665565b6013546001600160a01b031660009081526003602052604090205490915061355c90826124c1565b601380546001600160a01b03908116600090815260036020908152604080832095909555925490911681526007909152205460ff1615613517576013546001600160a01b03166000908152600460205260409020546135bb90846124c1565b6013546001600160a01b0316600090815260046020526040902055505050565b600d546135e89083612623565b600d55600e546135f890826124c1565b600e555050565b600060208083528351808285015260005b8181101561362c57858101830151858201604001528201613610565b8181111561363e576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b038116811461366957600080fd5b50565b6000806040838503121561367f57600080fd5b823561368a81613654565b946020939093013593505050565b6000602082840312156136aa57600080fd5b8135610f4281613654565b803561ffff811681146136c757600080fd5b919050565b600080600080600060a086880312156136e457600080fd5b6136ed866136b5565b94506136fb602087016136b5565b9350613709604087016136b5565b9250613717606087016136b5565b9150613725608087016136b5565b90509295509295909350565b60008060006060848603121561374657600080fd5b833561375181613654565b9250602084013561376181613654565b929592945050506040919091013590565b60006020828403121561378457600080fd5b5035919050565b803580151581146136c757600080fd5b600080604083850312156137ae57600080fd5b823591506137be6020840161378b565b90509250929050565b6000806000806000806000806000806101408b8d0312156137e757600080fd5b6137f08b6136b5565b99506137fe60208c016136b5565b985061380c60408c016136b5565b975061381a60608c016136b5565b965061382860808c016136b5565b955061383660a08c016136b5565b945061384460c08c016136b5565b935061385260e08c016136b5565b92506138616101008c016136b5565b91506138706101208c016136b5565b90509295989b9194979a5092959850565b60006020828403121561389357600080fd5b610f428261378b565b600080604083850312156138af57600080fd5b82356138ba81613654565b915060208301356138ca81613654565b809150509250929050565b600181811c908216806138e957607f821691505b6020821081141561390a57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156139835761398361395b565b500390565b634e487b7160e01b600052603160045260246000fd5b60006000198214156139b2576139b261395b565b5060010190565b600082198211156139cc576139cc61395b565b500190565b60008160001904831182151516156139eb576139eb61395b565b500290565b600082613a0d57634e487b7160e01b600052601260045260246000fd5b500490565b600061ffff808316818516808303821115613a2f57613a2f61395b565b01949350505050565b600061ffff80831681851681830481118215151615613a5957613a5961395b565b02949350505050565b600060208284031215613a7457600080fd5b8151610f4281613654565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015613acf5784516001600160a01b031683529383019391830191600101613aaa565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215613b0557600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e045524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220fdf0b4be6f2b05964dc4d854c154ac76de1c98dabef66f7fc2ae51b931ded45264736f6c634300080a0033