Overview ERC20
PRICE
$0.061043

ON-CHAIN MARKET CAP n/a

Total Supply:
1,000,000,000,000.00 AMA

Holders:
159
Profile Summary
Blockchain:
Ethereum (1)


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

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Created At:
Mon, 25 Dec 2023 23:10:47 GMT
AwkwardMonkeyPuppet.sol
AwkwardMonkeyPuppet.sol
AwkwardMonkeyPuppet.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": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "timestamp",
        "type": "uint256"
      }
    ],
    "name": "OwnerForcedSwapBack",
    "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": "amount",
        "type": "uint256"
      }
    ],
    "name": "RewardTriggered",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "SetAutomatedMarketMakerPair",
    "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": "tokensIntoLiquidity",
        "type": "uint256"
      }
    ],
    "name": "SwapAndLiquify",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldAddress",
        "type": "address"
      }
    ],
    "name": "UpdateUniswapV2Router",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newWallet",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "oldWallet",
        "type": "address"
      }
    ],
    "name": "marketingWalletUpdated",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "airdropWallets",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "airdropToWallets",
    "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": "",
        "type": "address"
      }
    ],
    "name": "automatedMarketMakerPairs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyLiquidityFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyMarketingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "buyTotalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "deadAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "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": [],
    "name": "enableTrading",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "excluded",
        "type": "bool"
      }
    ],
    "name": "excludeFromFees",
    "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": "isExcludedFromFees",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingWallet",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "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": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rescueSwap",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "resetTaxAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellLiquidityFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellMarketingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "sellTotalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "pair",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "value",
        "type": "bool"
      }
    ],
    "name": "setAutomatedMarketMakerPair",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokensForLiquidity",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tokensForMarketing",
    "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": "tradingActive",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "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": [],
    "name": "transferLiquidityFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "transferMarketingFee",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "transferTotalFees",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "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": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_liquidityFee",
        "type": "uint256"
      }
    ],
    "name": "updateBuyFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newMarketingWallet",
        "type": "address"
      }
    ],
    "name": "updateMarketingWallet",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      }
    ],
    "name": "updateRescueSwap",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_liquidityFee",
        "type": "uint256"
      }
    ],
    "name": "updateSellFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "enabled",
        "type": "bool"
      }
    ],
    "name": "updateSwapEnabled",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_marketingFee",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "_liquidityFee",
        "type": "uint256"
      }
    ],
    "name": "updateTransferFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
60c06040526006805462ffffff60a81b191690553480156200002057600080fd5b506040518060400160405280601181526020017041776b77617264204d6f6e6b657920414960781b81525060405180604001604052806003815260200162414d4160e81b81525081600390805190602001906200007f92919062000846565b5080516200009590600490602084019062000846565b5050506000620000aa620004db60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062003011833981519152908290a3506006805460ff60a01b1916600960a11b17908190557344e96c9d4b25474db2c586b16a8e871517e43ef3906000906200012d9060ff600160a01b90910416600a620009ff565b6200013e9064e8d4a5100062000a17565b60036008819055600160098190559192506200015b919062000a39565b6007556003600b8190556001600c819055620001779162000a39565b600a556000600e819055600f81905562000192908062000a39565b600d55600680546001600160a01b0319167303e5fa8bce49ab4df47d1c256bd036f794bfffee17905560006038461415620001e357507310ed43c718714eb63d5aa57b78b54704e256024e620002eb565b466061141562000209575073d99d1c33f9fc3444f8101754abc46c52416550d1620002eb565b4661a86a14156200023057507360ae616a2155ee3d9a68541ba4544862310933d4620002eb565b466089141562000256575073a5e0829caced8ffdd4de3c43696c57f7d7a678ff620002eb565b4660fa14156200027c575073f491e7b69e4244ad4002bc14e878a34207e38c29620002eb565b4660031415620002a25750737a250d5630b4cf539739df2c5dacb4c659f2488d620002eb565b4660011480620002b25750466004145b15620002d45750737a250d5630b4cf539739df2c5dacb4c659f2488d620002eb565b50737a250d5630b4cf539739df2c5dacb4c659f2488d5b6001600160a01b03811660808190526040805163c45a015560e01b8152905183929163c45a0155916004808301926020929190829003018186803b1580156200033357600080fd5b505afa15801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e919062000a54565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003b757600080fd5b505afa158015620003cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f2919062000a54565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000a54565b6001600160a01b031660a081905262000491906001620004df565b6200049e84600162000533565b620004ab30600162000533565b620004ba61dead600162000533565b620004c68484620005e1565b620004d184620006dd565b5050505062000abc565b3390565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620005825760405162461bcd60e51b8152602060048201819052602482015260008051602062002ff183398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006395760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000579565b6200065581600254620007da60201b6200115b1790919060201c565b6002556001600160a01b03821660009081526020818152604090912054620006889183906200115b620007da821b17901c565b6001600160a01b038316600081815260208181526040808320949094559251848152919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6005546001600160a01b03163314620007285760405162461bcd60e51b8152602060048201819052602482015260008051602062002ff1833981519152604482015260640162000579565b6001600160a01b0381166200078f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000579565b6005546040516001600160a01b038084169216906000805160206200301183398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b600080620007e9838562000a39565b9050838110156200083d5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015260640162000579565b90505b92915050565b828054620008549062000a7f565b90600052602060002090601f016020900481019282620008785760008555620008c3565b82601f106200089357805160ff1916838001178555620008c3565b82800160010185558215620008c3579182015b82811115620008c3578251825591602001919060010190620008a6565b50620008d1929150620008d5565b5090565b5b80821115620008d15760008155600101620008d6565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000943578160001904821115620009275762000927620008ec565b808516156200093557918102915b93841c939080029062000907565b509250929050565b6000826200095c5750600162000840565b816200096b5750600062000840565b81600181146200098457600281146200098f57620009af565b600191505062000840565b60ff841115620009a357620009a3620008ec565b50506001821b62000840565b5060208310610133831016604e8410600b8410161715620009d4575081810a62000840565b620009e0838362000902565b8060001904821115620009f757620009f7620008ec565b029392505050565b600062000a1060ff8416836200094b565b9392505050565b600081600019048311821515161562000a345762000a34620008ec565b500290565b6000821982111562000a4f5762000a4f620008ec565b500190565b60006020828403121562000a6757600080fd5b81516001600160a01b03811681146200083d57600080fd5b600181811c9082168062000a9457607f821691505b6020821081141562000ab657634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a0516124e562000b0c6000396000818161044a0152610e5401526000818161031101528181611bbb01528181611c8301528181611cbf01528181611d360152611d9301526124e56000f3fe6080604052600436106102765760003560e01c80637bce5a041161014f578063a457c2d7116100c1578063d85ba0631161007a578063d85ba0631461078e578063dd62ed3e146107a4578063e3c4818d146107ea578063f11a24d314610800578063f2fde38b14610816578063f63743421461083657600080fd5b8063a457c2d7146106bd578063a9059cbb146106dd578063aacebbe3146106fd578063b62496f51461071d578063bbc0c7421461074d578063c02466681461076e57600080fd5b80639213691311610113578063921369131461061c578063924de9b714610632578063955b225b1461065257806395d89b41146106725780639a7a23d6146106875780639bb19a32146106a757600080fd5b80637bce5a04146105a85780637dd72e8d146105be57806385c5b319146105d35780638a8c523c146105e95780638da5cb5b146105fe57600080fd5b806339509351116101e857806366ca9b83116101ac57806366ca9b83146104e65780636a486a8e146105065780636ddd17131461051c57806370a082311461053d578063715018a61461057357806375f0a8741461058857600080fd5b8063395093511461041857806349bd5a5e146104385780634c24c51d1461046c5780634fbee1931461048d57806362561225146104c657600080fd5b80631a8145bb1161023a5780631a8145bb1461036a5780631f3fed8f146103805780632307b4411461039657806323b872dd146103b657806327c8f835146103d6578063313ce567146103ec57600080fd5b806302dbd8f81461028257806306fdde03146102a4578063095ea7b3146102cf5780631694505e146102ff57806318160ddd1461034b57600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102a261029d366004611e4e565b61084c565b005b3480156102b057600080fd5b506102b96108ba565b6040516102c69190611e70565b60405180910390f35b3480156102db57600080fd5b506102ef6102ea366004611eda565b61094c565b60405190151581526020016102c6565b34801561030b57600080fd5b506103337f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c6565b34801561035757600080fd5b506002545b6040519081526020016102c6565b34801561037657600080fd5b5061035c60115481565b34801561038c57600080fd5b5061035c60105481565b3480156103a257600080fd5b506102ef6103b1366004611fdc565b610963565b3480156103c257600080fd5b506102ef6103d136600461209e565b610b43565b3480156103e257600080fd5b5061033361dead81565b3480156103f857600080fd5b50600654600160a01b900460ff1660405160ff90911681526020016102c6565b34801561042457600080fd5b506102ef610433366004611eda565b610ba2565b34801561044457600080fd5b506103337f000000000000000000000000000000000000000000000000000000000000000081565b34801561047857600080fd5b506006546102ef90600160b81b900460ff1681565b34801561049957600080fd5b506102ef6104a83660046120df565b6001600160a01b031660009081526012602052604090205460ff1690565b3480156104d257600080fd5b506102a26104e1366004611e4e565b610bd8565b3480156104f257600080fd5b506102a2610501366004611e4e565b610c3b565b34801561051257600080fd5b5061035c600a5481565b34801561052857600080fd5b506006546102ef90600160b01b900460ff1681565b34801561054957600080fd5b5061035c6105583660046120df565b6001600160a01b031660009081526020819052604090205490565b34801561057f57600080fd5b506102a2610c9e565b34801561059457600080fd5b50600654610333906001600160a01b031681565b3480156105b457600080fd5b5061035c60085481565b3480156105ca57600080fd5b506102a2610d12565b3480156105df57600080fd5b5061035c600e5481565b3480156105f557600080fd5b506102a2610d48565b34801561060a57600080fd5b506005546001600160a01b0316610333565b34801561062857600080fd5b5061035c600b5481565b34801561063e57600080fd5b506102a261064d366004612111565b610d89565b34801561065e57600080fd5b506102a261066d366004612111565b610dd1565b34801561067e57600080fd5b506102b9610e19565b34801561069357600080fd5b506102a26106a236600461212c565b610e28565b3480156106b357600080fd5b5061035c600f5481565b3480156106c957600080fd5b506102ef6106d8366004611eda565b610f04565b3480156106e957600080fd5b506102ef6106f8366004611eda565b610f53565b34801561070957600080fd5b506102a26107183660046120df565b610f60565b34801561072957600080fd5b506102ef6107383660046120df565b60136020526000908152604090205460ff1681565b34801561075957600080fd5b506006546102ef90600160a81b900460ff1681565b34801561077a57600080fd5b506102a261078936600461212c565b610fe7565b34801561079a57600080fd5b5061035c60075481565b3480156107b057600080fd5b5061035c6107bf366004612161565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156107f657600080fd5b5061035c600d5481565b34801561080c57600080fd5b5061035c60095481565b34801561082257600080fd5b506102a26108313660046120df565b611070565b34801561084257600080fd5b5061035c600c5481565b6005546001600160a01b0316331461087f5760405162461bcd60e51b81526004016108769061219a565b60405180910390fd5b600b829055600c81905561089381836121e5565b600a81815510156108b65760405162461bcd60e51b8152600401610876906121fd565b5050565b6060600380546108c990612234565b80601f01602080910402602001604051908101604052809291908181526020018280546108f590612234565b80156109425780601f1061091757610100808354040283529160200191610942565b820191906000526020600020905b81548152906001019060200180831161092557829003601f168201915b5050505050905090565b60006109593384846111c1565b5060015b92915050565b6005546000906001600160a01b031633146109905760405162461bcd60e51b81526004016108769061219a565b600654600160a81b900460ff1615610a105760405162461bcd60e51b815260206004820152603760248201527f54726164696e6720697320616c7265616479206163746976652c2063616e6e6f60448201527f742061697264726f70206166746572206c61756e63682e0000000000000000006064820152608401610876565b8151835114610a615760405162461bcd60e51b815260206004820152601e60248201527f617272617973206d757374206265207468652073616d65206c656e67746800006044820152606401610876565b60c8835110610ad15760405162461bcd60e51b815260206004820152603660248201527f43616e206f6e6c792061697264726f70203230302077616c6c657473207065726044820152752074786e2064756520746f20676173206c696d69747360501b6064820152608401610876565b60005b8351811015610b39576000848281518110610af157610af161226f565b602002602001015190506000848381518110610b0f57610b0f61226f565b60200260200101519050610b243383836112e6565b50508080610b3190612285565b915050610ad4565b5060019392505050565b6000610b508484846112e6565b610b398433610b9d85604051806060016040528060288152602001612463602891396001600160a01b038a1660009081526001602090815260408083203384529091529020549190611709565b6111c1565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610959918590610b9d908661115b565b6005546001600160a01b03163314610c025760405162461bcd60e51b81526004016108769061219a565b600e829055600f819055610c1681836121e5565b600d819055600a10156108b65760405162461bcd60e51b8152600401610876906121fd565b6005546001600160a01b03163314610c655760405162461bcd60e51b81526004016108769061219a565b60088290556009819055610c7981836121e5565b6007819055600a10156108b65760405162461bcd60e51b8152600401610876906121fd565b6005546001600160a01b03163314610cc85760405162461bcd60e51b81526004016108769061219a565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610d3c5760405162461bcd60e51b81526004016108769061219a565b60006011819055601055565b6005546001600160a01b03163314610d725760405162461bcd60e51b81526004016108769061219a565b6006805461ffff60a81b191661010160a81b179055565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016108769061219a565b60068054911515600160b01b0260ff60b01b19909216919091179055565b6005546001600160a01b03163314610dfb5760405162461bcd60e51b81526004016108769061219a565b60068054911515600160b81b0260ff60b81b19909216919091179055565b6060600480546108c990612234565b6005546001600160a01b03163314610e525760405162461bcd60e51b81526004016108769061219a565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161415610efa5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610876565b6108b68282611743565b60006109593384610b9d8560405180606001604052806025815260200161248b602591393360009081526001602090815260408083206001600160a01b038d1684529091529020549190611709565b60006109593384846112e6565b6005546001600160a01b03163314610f8a5760405162461bcd60e51b81526004016108769061219a565b6006546040516001600160a01b03918216918316907fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567490600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146110115760405162461bcd60e51b81526004016108769061219a565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b0316331461109a5760405162461bcd60e51b81526004016108769061219a565b6001600160a01b0381166110ff5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610876565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b60008061116883856121e5565b9050838110156111ba5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610876565b9392505050565b6001600160a01b0383166112235760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610876565b6001600160a01b0382166112845760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610876565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b03831661130c5760405162461bcd60e51b8152600401610876906122a0565b6001600160a01b0382166113325760405162461bcd60e51b8152600401610876906122e5565b600654600160a81b900460ff166113c7576001600160a01b03831660009081526012602052604090205460ff168061138257506001600160a01b03821660009081526012602052604090205460ff165b6113c75760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610876565b806113dd576113d883836000611797565b505050565b30600090815260208190526040902054801580159081906114075750600654600160b01b900460ff165b801561141d5750600554600160a01b900460ff16155b801561144257506001600160a01b03851660009081526013602052604090205460ff16155b801561146757506001600160a01b03851660009081526012602052604090205460ff16155b801561148c57506001600160a01b03841660009081526012602052604090205460ff16155b156114ba576005805460ff60a01b1916600160a01b1790556114ac6118a0565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526012602052604090205460ff600160a01b90920482161591168061150857506001600160a01b03851660009081526012602052604090205460ff165b15611511575060005b600081156116f5576001600160a01b03861660009081526013602052604090205460ff16156115cb57600a54156115c657611562606461155c600a5488611a6190919063ffffffff16565b90611ae0565b9050600a54600c54826115759190612328565b61157f9190612347565b6011600082825461159091906121e5565b9091555050600a54600b546115a59083612328565b6115af9190612347565b601060008282546115c091906121e5565b90915550505b6116d7565b6001600160a01b03871660009081526013602052604090205460ff161561165157600754156115c65761160e606461155c60075488611a6190919063ffffffff16565b9050600754600954826116219190612328565b61162b9190612347565b6011600082825461163c91906121e5565b90915550506007546008546115a59083612328565b600d54156116d757611673606461155c600d5488611a6190919063ffffffff16565b9050600d54600f54826116869190612328565b6116909190612347565b601160008282546116a191906121e5565b9091555050600d54600e546116b69083612328565b6116c09190612347565b601060008282546116d191906121e5565b90915550505b80156116e8576116e8873083611797565b6116f28186612369565b94505b611700878787611797565b50505050505050565b6000818484111561172d5760405162461bcd60e51b81526004016108769190611e70565b50600061173a8486612369565b95945050505050565b6001600160a01b038216600081815260136020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166117bd5760405162461bcd60e51b8152600401610876906122a0565b6001600160a01b0382166117e35760405162461bcd60e51b8152600401610876906122e5565b6118208160405180606001604052806026815260200161243d602691396001600160a01b0386166000908152602081905260409020549190611709565b6001600160a01b03808516600090815260208190526040808220939093559084168152205461184f908261115b565b6001600160a01b038381166000818152602081815260409182902094909455518481529092918616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016112d9565b30600090815260208190526040902054600654600160b81b900460ff16156118e35780156118e0576006546118e09030906001600160a01b031683611797565b50565b60006010546011546118f591906121e5565b90506000821580611904575081155b1561190e57505050565b6000600283601154866119219190612328565b61192b9190612347565b6119359190612347565b905060006119438583611b22565b9050478161195357505050505050565b61195c82611b64565b60006119684783611b22565b905060006119858761155c60105485611a6190919063ffffffff16565b905060006119938284612369565b60006011819055601055905085158015906119ae5750600081115b15611a01576119bd8682611d30565b601154604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611a4e576040519150601f19603f3d011682016040523d82523d6000602084013e611a53565b606091505b505050505050505050505050565b600082611a705750600061095d565b6000611a7c8385612328565b905082611a898583612347565b146111ba5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610876565b60006111ba83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611e20565b60006111ba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611709565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b9957611b9961226f565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611c1257600080fd5b505afa158015611c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4a9190612380565b81600181518110611c5d57611c5d61226f565b60200260200101906001600160a01b031690816001600160a01b031681525050611ca8307f0000000000000000000000000000000000000000000000000000000000000000846111c1565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611cfd90859060009086903090429060040161239d565b600060405180830381600087803b158015611d1757600080fd5b505af1925050508015611d28575060015b6108b6575050565b611d5b307f0000000000000000000000000000000000000000000000000000000000000000846111c1565b60405163f305d71960e01b815230600482015260248101839052600060448201819052606482015261dead60848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063f305d71990839060c4016060604051808303818588803b158015611de057600080fd5b505af193505050508015611e11575060408051601f3d908101601f19168201909252611e0e9181019061240e565b60015b611e19575050565b5050505050565b60008183611e415760405162461bcd60e51b81526004016108769190611e70565b50600061173a8486612347565b60008060408385031215611e6157600080fd5b50508035926020909101359150565b600060208083528351808285015260005b81811015611e9d57858101830151858201604001528201611e81565b81811115611eaf576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146118e057600080fd5b60008060408385031215611eed57600080fd5b8235611ef881611ec5565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f4557611f45611f06565b604052919050565b600067ffffffffffffffff821115611f6757611f67611f06565b5060051b60200190565b600082601f830112611f8257600080fd5b81356020611f97611f9283611f4d565b611f1c565b82815260059290921b84018101918181019086841115611fb657600080fd5b8286015b84811015611fd15780358352918301918301611fba565b509695505050505050565b60008060408385031215611fef57600080fd5b823567ffffffffffffffff8082111561200757600080fd5b818501915085601f83011261201b57600080fd5b8135602061202b611f9283611f4d565b82815260059290921b8401810191818101908984111561204a57600080fd5b948201945b8386101561207157853561206281611ec5565b8252948201949082019061204f565b9650508601359250508082111561208757600080fd5b5061209485828601611f71565b9150509250929050565b6000806000606084860312156120b357600080fd5b83356120be81611ec5565b925060208401356120ce81611ec5565b929592945050506040919091013590565b6000602082840312156120f157600080fd5b81356111ba81611ec5565b8035801515811461210c57600080fd5b919050565b60006020828403121561212357600080fd5b6111ba826120fc565b6000806040838503121561213f57600080fd5b823561214a81611ec5565b9150612158602084016120fc565b90509250929050565b6000806040838503121561217457600080fd5b823561217f81611ec5565b9150602083013561218f81611ec5565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156121f8576121f86121cf565b500190565b6020808252601d908201527f4d757374206b656570206665657320617420313025206f72206c657373000000604082015260600190565b600181811c9082168061224857607f821691505b6020821081141561226957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b6000600019821415612299576122996121cf565b5060010190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6000816000190483118215151615612342576123426121cf565b500290565b60008261236457634e487b7160e01b600052601260045260246000fd5b500490565b60008282101561237b5761237b6121cf565b500390565b60006020828403121561239257600080fd5b81516111ba81611ec5565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156123ed5784516001600160a01b0316835293830193918301916001016123c8565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561242357600080fd5b835192506020840151915060408401519050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206ecd9257780ae82373dc2c1d34b64715bbd2d86371efea5ab94fc3769d37242564736f6c634300080900334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0