Overview ERC20
PRICE
$0.032645

ON-CHAIN MARKET CAP n/a

Total Supply:
69,000,000.00 ZELDA

Holders:
9
Profile Summary
Blockchain:
Ethereum (1)


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

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Created At:
Sat, 07 Dec 2024 04:13:59 GMT
Token.sol
Token.sol
Address.sol
Context.sol
draft-IERC6093.sol
ERC20.sol
ERC20Burnable.sol
IERC20.sol
IERC20Metadata.sol
Initializable.sol
IUniswapV2Factory.sol
IUniswapV2Pair.sol
IUniswapV2Router01.sol
IUniswapV2Router02.sol
Ownable.sol
Ownable2Step.sol
SafeERC20Remastered.sol
Token.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "target",
        "type": "address"
      }
    ],
    "name": "AddressEmptyCode",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "AddressInsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "CannotDepositNativeCoins",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "buyFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "sellFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "transferFee",
        "type": "uint16"
      }
    ],
    "name": "CannotExceedMaxTotalFee",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxAmount",
        "type": "uint256"
      }
    ],
    "name": "CannotExceedMaxTransactionAmount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "allowance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientAllowance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "needed",
        "type": "uint256"
      }
    ],
    "name": "ERC20InsufficientBalance",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "approver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "spender",
        "type": "address"
      }
    ],
    "name": "ERC20InvalidSpender",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "FailedInnerCall",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "AMM",
        "type": "address"
      }
    ],
    "name": "InvalidAMM",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxAmount",
        "type": "uint256"
      }
    ],
    "name": "InvalidAmountToRecover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "swapThresholdRatio",
        "type": "uint16"
      }
    ],
    "name": "InvalidSwapThresholdRatio",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "InvalidTaxRecipientAddress",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      }
    ],
    "name": "InvalidToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "maxAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "limit",
        "type": "uint256"
      }
    ],
    "name": "MaxTransactionAmountTooLow",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "token",
        "type": "address"
      }
    ],
    "name": "SafeERC20FailedOperation",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TradingAlreadyEnabled",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "TradingNotEnabled",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "AMM",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isAMM",
        "type": "bool"
      }
    ],
    "name": "AMMUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "spender",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromFees",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromLimits",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "ExcludeFromTradingRestriction",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxBuyAmount",
        "type": "uint256"
      }
    ],
    "name": "MaxBuyAmountUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxSellAmount",
        "type": "uint256"
      }
    ],
    "name": "MaxSellAmountUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferStarted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "previousOwner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "OwnershipTransferred",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "routerV2",
        "type": "address"
      }
    ],
    "name": "RouterV2Updated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "swapThresholdRatio",
        "type": "uint16"
      }
    ],
    "name": "SwapThresholdUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "TradingEnabled",
    "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": "uint8",
        "name": "id",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "WalletTaxAddressUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint8",
        "name": "id",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "buyFee",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "sellFee",
        "type": "uint16"
      },
      {
        "indexed": false,
        "internalType": "uint16",
        "name": "transferFee",
        "type": "uint16"
      }
    ],
    "name": "WalletTaxFeesUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "uint8",
        "name": "id",
        "type": "uint8"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "recipient",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "WalletTaxSent",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "AMMs",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_router",
        "type": "address"
      }
    ],
    "name": "afterConstructor",
    "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": "value",
        "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": [
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "burnFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "decimals",
    "outputs": [
      {
        "internalType": "uint8",
        "name": "",
        "type": "uint8"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "developerAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newAddress",
        "type": "address"
      }
    ],
    "name": "developerAddressSetup",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "developerFees",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_buyFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_sellFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_transferFee",
        "type": "uint16"
      }
    ],
    "name": "developerFeesSetup",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "enableTrading",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "excludeFromFees",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "excludeFromLimits",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isExcluded",
        "type": "bool"
      }
    ],
    "name": "excludeFromTradingRestriction",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getAllPending",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getSwapThresholdAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isExcludedFromFees",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isExcludedFromLimits",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "isExcludedFromTradingRestriction",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "marketingAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_newAddress",
        "type": "address"
      }
    ],
    "name": "marketingAddressSetup",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "marketingFees",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_buyFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_sellFee",
        "type": "uint16"
      },
      {
        "internalType": "uint16",
        "name": "_transferFee",
        "type": "uint16"
      }
    ],
    "name": "marketingFeesSetup",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxBuyAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSellAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pairV2",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingOwner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "tokenAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "recoverForeignERC20",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "recoverToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "routerV2",
    "outputs": [
      {
        "internalType": "contract IUniswapV2Router02",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "AMM",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "isAMM",
        "type": "bool"
      }
    ],
    "name": "setAMM",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "swapThresholdRatio",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "totalFees",
    "outputs": [
      {
        "internalType": "uint16",
        "name": "",
        "type": "uint16"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "tradingEnabled",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transfer",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_maxBuyAmount",
        "type": "uint256"
      }
    ],
    "name": "updateMaxBuyAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_maxSellAmount",
        "type": "uint256"
      }
    ],
    "name": "updateMaxSellAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint16",
        "name": "_swapThresholdRatio",
        "type": "uint16"
      }
    ],
    "name": "updateSwapThreshold",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
608060405234801561001057600080fd5b50336040518060400160405280601381526020017f546865204c6567656e64206f66205a656c646100000000000000000000000000815250604051806040016040528060058152602001645a454c444160d81b81525081600390816100759190611711565b5060046100828282611711565b5050506001600160a01b0381166100b457604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6100bd81610239565b50333b6100c957600080fd5b7378507cdcfd6d96892cefe5afe1f9c46bb25ff3716100e86032610255565b6101057394a18e903f3b51f9be7e478656098b28c94801616102ee565b61011460c86101906000610382565b61013173710ba550ae761b0baa309d6ea96e3a38e8d5dc6b61055d565b61014060c861019060006105ea565b61014b816001610769565b610156306001610769565b6101618160016107d1565b61016c3060016107d1565b610178600060016107d1565b6101a5600a6101886012826118cc565b6101969063039387006118e2565b6101a091906118f9565b610829565b6101d2600a6101b56012826118cc565b6101c39063039387006118e2565b6101cd91906118f9565b6108a0565b6101dd8160016108f5565b6101e83060016108f5565b61021681600a6101f96012826118cc565b6102079063292090806118e2565b61021191906118f9565b610955565b6102337378507cdcfd6d96892cefe5afe1f9c46bb25ff371610239565b50611a30565b600680546001600160a01b03191690556102528161098f565b50565b61025d6109e1565b61ffff8116158061027357506101f48161ffff16115b1561029757604051631958d05f60e01b815261ffff821660048201526024016100ab565b6006805461ffff60b01b1916600160b01b61ffff8416908102919091179091556040519081527fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f1720906020015b60405180910390a150565b6102f66109e1565b6001600160a01b0381166103205760405163ab11818760e01b8152600060048201526024016100ab565b600980546001600160a01b0319166001600160a01b038316179055610346816001610769565b6103518160016107d1565b6040516001600160a01b03821681526001906000805160206145ea833981519152906020015b60405180910390a250565b61038a6109e1565b600a54600e5484916103a39161ffff9182169116611931565b6103ad9190611953565b600e805461ffff191661ffff9283161790819055600a5484926103dd926201000092839004821692900416611931565b6103e79190611953565b600e805463ffff000019166201000061ffff938416021790819055600a5483926104209264010000000092839004821692900416611931565b61042a9190611953565b600e805461ffff9283166401000000000261ffff60201b19821681179092556109c49083169190921617118061046e5750600e546109c46201000090910461ffff16115b806104895750600e546109c464010000000090910461ffff16115b156104ea57600e60005b601081049190910154600e5460405163b7b3de6f60e01b8152600f9093166002026101000a90910461ffff9081166004840152620100008204811660248401526401000000009091041660448201526064016100ab565b6040805160608101825261ffff8086168252848116602083015283169181019190915261051b90600a9060036115ce565b506040805161ffff808616825280851660208301528316918101919091526001906000805160206145aa833981519152906060015b60405180910390a2505050565b6105656109e1565b6001600160a01b03811661058f5760405163ab11818760e01b8152600060048201526024016100ab565b600b80546001600160a01b0319166001600160a01b0383161790556105b5816001610769565b6105c08160016107d1565b6040516001600160a01b03821681526002906000805160206145ea83398151915290602001610377565b6105f26109e1565b600c54600e54849161060b9161ffff9182169116611931565b6106159190611953565b600e805461ffff191661ffff9283161790819055600c548492610645926201000092839004821692900416611931565b61064f9190611953565b600e805463ffff000019166201000061ffff938416021790819055600c5483926106889264010000000092839004821692900416611931565b6106929190611953565b600e805461ffff9283166401000000000261ffff60201b19821681179092556109c4908316919092161711806106d65750600e546109c46201000090910461ffff16115b806106f15750600e546109c464010000000090910461ffff16115b156106ff57600e6000610493565b6040805160608101825261ffff8086168252848116602083015283169181019190915261073090600c9060036115ce565b506040805161ffff808616825280851660208301528316918101919091526002906000805160206145aa83398151915290606001610550565b6107716109e1565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791015b60405180910390a25050565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9291016107c5565b6108316109e1565b610839610a10565b81101561086b5780610849610a10565b6040516369c5176f60e11b8152600481019290925260248201526044016100ab565b60138190556040518181527fd0459d371e1defb856088ceda9d33bfed2a31a105e0bae2113cdc7dcc9e77e9d906020016102e3565b6108a86109e1565b6108b0610a10565b8110156108c05780610849610a10565b60148190556040518181527fa0dff8a4e8bcaa27b5a2b64bc312f8b338e362bd6cad89f5fe2ae6b8389fb38a906020016102e3565b6108fd6109e1565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f38d2732664f4152f6b6754aa1afeaec7fa6618671b172e5430139b51dba2d1d691016107c5565b6001600160a01b03821661097f5760405163ec442f0560e01b8152600060048201526024016100ab565b61098b60008383610a38565b5050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314610a0e5760405163118cdaa760e01b81523360048201526024016100ab565b565b6000612710610a1e60025490565b610a299060056118e2565b610a3391906118f9565b905090565b610a43838383611014565b6001600160a01b03831615801590610a6357506001600160a01b03821615155b15610ff257600f5460ff16158015610a7b5750600081115b8015610aa057506001600160a01b0383166000908152600d602052604090205460ff16155b8015610ac557506001600160a01b0382166000908152600d602052604090205460ff16155b15610d89576001600160a01b03831660009081526011602052604081205460039060ff168015610b0e57506001600160a01b03841660009081526011602052604090205460ff16155b15610b2857600e5461ffff1615610b23575060005b610be7565b6001600160a01b03841660009081526011602052604090205460ff168015610b6957506001600160a01b03851660009081526011602052604090205460ff16155b15610b8857600e5462010000900461ffff1615610b2357506001610be7565b6001600160a01b03851660009081526011602052604090205460ff16158015610bca57506001600160a01b03841660009081526011602052604090205460ff16155b15610be757600e54640100000000900461ffff1615610be7575060025b60038160ff161015610d7557612710600e8260ff1660038110610c0c57610c0c61191b565b601091828204019190066002029054906101000a900461ffff1661ffff1684610c3591906118e2565b610c3f91906118f9565b9150610c4b828461196e565b9250600e8160ff1660038110610c6357610c6361191b565b601091828204019190066002029054906101000a900461ffff1661ffff16600a8260ff1660038110610c9757610c9761191b565b601091828204019190066002029054906101000a900461ffff1661ffff1683610cc091906118e2565b610cca91906118f9565b60076000828254610cdb9190611981565b90915550600e905060ff821660038110610cf757610cf761191b565b601091828204019190066002029054906101000a900461ffff1661ffff16600c8260ff1660038110610d2b57610d2b61191b565b601091828204019190066002029054906101000a900461ffff1661ffff1683610d5491906118e2565b610d5e91906118f9565b60086000828254610d6f9190611981565b90915550505b8115610d8657610d868530846111f2565b50505b6000610d9361131c565b610d9b611355565b10158015610dc157506010546001600160a01b0316600090815260208190526040812054115b600f5490915060ff16158015610de557506010546001600160a01b03858116911614155b8015610e045750600f546001600160a01b038581166101009092041614155b8015610e0d5750805b15610ff057600f805460ff1916600117905560006007541180610e3257506000600854115b15610fe55760006008546007546000610e4b9190611981565b610e559190611981565b90506000610e6282611373565b60075447906000908490610e7690846118e2565b610e8091906118f9565b90508015610f1d576009546040516001600160a01b03909116908290600081818185875af1925050503d8060008114610ed5576040519150601f19603f3d011682016040523d82523d6000602084013e610eda565b606091505b50909350508215610f1d57600954604080516001600160a01b039092168252602082018390526001916000805160206145ca833981519152910160405180910390a25b600060078190556008548590610f3390856118e2565b610f3d91906118f9565b90508015610fda57600b546040516001600160a01b03909116908290600081818185875af1925050503d8060008114610f92576040519150601f19603f3d011682016040523d82523d6000602084013e610f97565b606091505b50909450508315610fda57600b54604080516001600160a01b039092168252602082018390526002916000805160206145ca833981519152910160405180910390a25b505060006008555050505b600f805460ff191690555b505b610ffd8383836111f2565b61100f8383836001600160e01b038416565b505050565b6001600160a01b03831660009081526011602052604090205460ff16801561105557506001600160a01b03821660009081526012602052604090205460ff16155b8015611062575060135481115b15611086576013546040516323512ef560e11b81526004016100ab91815260200190565b6001600160a01b03821660009081526011602052604090205460ff1680156110c757506001600160a01b03831660009081526012602052604090205460ff16155b80156110d4575060145481115b156110f8576014546040516323512ef560e11b81526004016100ab91815260200190565b60155460ff1661100f576001600160a01b03831660009081526011602052604090205460ff16801561114357506001600160a01b03821660009081526011602052604090205460ff16155b801561116857506001600160a01b03821660009081526016602052604090205460ff16155b806111d457506001600160a01b03821660009081526011602052604090205460ff1680156111af57506001600160a01b03831660009081526011602052604090205460ff16155b80156111d457506001600160a01b03831660009081526016602052604090205460ff16155b1561100f576040516312f1f92360e01b815260040160405180910390fd5b6001600160a01b03831661121d5780600260008282546112129190611981565b9091555061128f9050565b6001600160a01b038316600090815260208190526040902054818110156112705760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100ab565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166112ab576002805482900390556112ca565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161130f91815260200190565b60405180910390a3505050565b6006546010546001600160a01b0316600090815260208190526040812054909161271091610a2991600160b01b900461ffff16906118e2565b600060085460075460006113699190611981565b610a339190611981565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106113a8576113a861191b565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561141b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061143f9190611994565b816001815181106114525761145261191b565b6001600160a01b039283166020918202929092010152600f5461147d913091610100900416846114f0565b600f5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac947906114ba9085906000908690309042906004016119bd565b600060405180830381600087803b1580156114d457600080fd5b505af11580156114e8573d6000803e3d6000fd5b505050505050565b61100f83838360016001600160a01b0384166115225760405163e602df0560e01b8152600060048201526024016100ab565b6001600160a01b03831661154c57604051634a1406b160e11b8152600060048201526024016100ab565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156115c857826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516115bf91815260200190565b60405180910390a35b50505050565b6001830191839082156116545791602002820160005b8382111561162457835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026115e4565b80156116525782816101000a81549061ffff0219169055600201602081600101049283019260010302611624565b505b50611660929150611664565b5090565b5b808211156116605760008155600101611665565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806116a357607f821691505b6020821081036116c357634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561100f576000816000526020600020601f850160051c810160208610156116f25750805b601f850160051c820191505b818110156114e8578281556001016116fe565b81516001600160401b0381111561172a5761172a611679565b61173e81611738845461168f565b846116c9565b602080601f831160018114611773576000841561175b5750858301515b600019600386901b1c1916600185901b1785556114e8565b600085815260208120601f198616915b828110156117a257888601518255948401946001909101908401611783565b50858210156117c05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611821578160001904821115611807576118076117d0565b8085161561181457918102915b93841c93908002906117eb565b509250929050565b600082611838575060016118c6565b81611845575060006118c6565b816001811461185b576002811461186557611881565b60019150506118c6565b60ff841115611876576118766117d0565b50506001821b6118c6565b5060208310610133831016604e8410600b84101617156118a4575081810a6118c6565b6118ae83836117e6565b80600019048211156118c2576118c26117d0565b0290505b92915050565b60006118db60ff841683611829565b9392505050565b80820281158282048414176118c6576118c66117d0565b60008261191657634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b61ffff82811682821603908082111561194c5761194c6117d0565b5092915050565b61ffff81811683821601908082111561194c5761194c6117d0565b818103818111156118c6576118c66117d0565b808201808211156118c6576118c66117d0565b6000602082840312156119a657600080fd5b81516001600160a01b03811681146118db57600080fd5b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015611a0f5784516001600160a01b0316835293830193918301916001016119ea565b50506001600160a01b03969096166060850152505050608001529392505050565b612b6b80611a3f6000396000f3fe6080604052600436106102975760003560e01c806379cc67901161015a578063c0a904a2116100c1578063dd62ed3e1161007a578063dd62ed3e14610855578063e30c39781461089b578063e73b17d0146108b9578063e85ceee8146108d9578063f112ba7214610909578063f2fde38b1461091e57600080fd5b8063c0a904a2146107a0578063c400f5e7146107c0578063caccd7f7146107e0578063cb1a233d14610800578063d947752614610820578063dc3f0d0f1461083557600080fd5b80638fffabed116101135780638fffabed146106eb57806395d89b411461070b578063a5ece94114610720578063a9059cbb14610740578063a9d3cd8a14610760578063c02466681461078057600080fd5b806379cc679014610642578063801b51d91461066257806388e765ff146106825780638a8c523c146106985780638da5cb5b146106ad5780638e749a8f146106cb57600080fd5b806342966c68116101fe578063502f7446116101b7578063502f74461461055f5780635cce86cd1461059c57806366d602ae146105cc57806370a08231146105e2578063715018a61461061857806379ba50971461062d57600080fd5b806342966c68146104935780634a4dd9cd146104b35780634ada218b146104d35780634bc75079146104ed5780634f011b831461050d5780634fbee1931461052f57600080fd5b80631a0e718c116102505780631a0e718c146103c75780631e9fe6c6146103e757806323b872dd146104175780632be32b6114610437578063313ce56714610457578063408ccbdf1461047357600080fd5b806306fdde03146102da578063095ea7b31461030557806318160ddd14610335578063184fc5651461035457806318533a0d14610374578063186a63351461039457600080fd5b366102d557600f5461010090046001600160a01b031633146102d35760405163ba6875cd60e01b81523360048201526024015b60405180910390fd5b005b600080fd5b3480156102e657600080fd5b506102ef61093e565b6040516102fc9190612795565b60405180910390f35b34801561031157600080fd5b506103256103203660046127dd565b6109d0565b60405190151581526020016102fc565b34801561034157600080fd5b506002545b6040519081526020016102fc565b34801561036057600080fd5b506102d361036f366004612809565b6109ea565b34801561038057600080fd5b506102d361038f366004612809565b610a90565b3480156103a057600080fd5b506103b46103af366004612826565b610b60565b60405161ffff90911681526020016102fc565b3480156103d357600080fd5b506102d36103e2366004612856565b610b8e565b3480156103f357600080fd5b50610325610402366004612809565b60116020526000908152604090205460ff1681565b34801561042357600080fd5b50610325610432366004612871565b610c27565b34801561044357600080fd5b506102d3610452366004612826565b610c4d565b34801561046357600080fd5b50604051601281526020016102fc565b34801561047f57600080fd5b506103b461048e366004612826565b610cc4565b34801561049f57600080fd5b506102d36104ae366004612826565b610cd4565b3480156104bf57600080fd5b506102d36104ce3660046128b2565b610ce1565b3480156104df57600080fd5b506015546103259060ff1681565b3480156104f957600080fd5b506102d36105083660046128b2565b610ecb565b34801561051957600080fd5b506006546103b490600160b01b900461ffff1681565b34801561053b57600080fd5b5061032561054a366004612809565b600d6020526000908152604090205460ff1681565b34801561056b57600080fd5b50600f546105849061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016102fc565b3480156105a857600080fd5b506103256105b7366004612809565b60126020526000908152604090205460ff1681565b3480156105d857600080fd5b5061034660145481565b3480156105ee57600080fd5b506103466105fd366004612809565b6001600160a01b031660009081526020819052604090205490565b34801561062457600080fd5b506102d361105a565b34801561063957600080fd5b506102d361106e565b34801561064e57600080fd5b506102d361065d3660046127dd565b6110af565b34801561066e57600080fd5b506102d361067d366004612903565b6110c4565b34801561068e57600080fd5b5061034660135481565b3480156106a457600080fd5b506102d361112c565b3480156106b957600080fd5b506005546001600160a01b0316610584565b3480156106d757600080fd5b506103b46106e6366004612826565b611190565b3480156106f757600080fd5b50601054610584906001600160a01b031681565b34801561071757600080fd5b506102ef6111a0565b34801561072c57600080fd5b50600954610584906001600160a01b031681565b34801561074c57600080fd5b5061032561075b3660046127dd565b6111af565b34801561076c57600080fd5b506102d361077b366004612903565b6111bd565b34801561078c57600080fd5b506102d361079b366004612903565b611226565b3480156107ac57600080fd5b506102d36107bb366004612903565b611286565b3480156107cc57600080fd5b506102d36107db366004612809565b611298565b3480156107ec57600080fd5b50600b54610584906001600160a01b031681565b34801561080c57600080fd5b506102d361081b366004612826565b611337565b34801561082c57600080fd5b5061034661139b565b34801561084157600080fd5b506102d3610850366004612826565b6113e3565b34801561086157600080fd5b5061034661087036600461293c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156108a757600080fd5b506006546001600160a01b0316610584565b3480156108c557600080fd5b506102d36108d43660046127dd565b611438565b3480156108e557600080fd5b506103256108f4366004612809565b60166020526000908152604090205460ff1681565b34801561091557600080fd5b50610346611488565b34801561092a57600080fd5b506102d3610939366004612809565b6114a6565b60606003805461094d9061296a565b80601f01602080910402602001604051908101604052809291908181526020018280546109799061296a565b80156109c65780601f1061099b576101008083540402835291602001916109c6565b820191906000526020600020905b8154815290600101906020018083116109a957829003601f168201915b5050505050905090565b6000336109de818585611517565b60019150505b92915050565b6109f2611529565b6001600160a01b038116610a1c5760405163ab11818760e01b8152600060048201526024016102ca565b600b80546001600160a01b0319166001600160a01b038316179055610a42816001611226565b610a4d816001611556565b6040516001600160a01b03821681526002907ff8e79c3705e6b93e151f4c2166fe019e81a78204037fb9913b261eeb877218d9906020015b60405180910390a250565b600654600160a81b900460ff1680610ab25750600654600160a01b900460ff16155b610b155760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016102ca565b600654600160a81b900460ff16158015610b3f576006805461ffff60a01b191661010160a01b1790555b610b48826115ae565b8015610b5c576006805460ff60a81b191690555b5050565b600c8160038110610b7057600080fd5b60109182820401919006600202915054906101000a900461ffff1681565b610b96611529565b61ffff81161580610bac57506101f48161ffff16115b15610bd057604051631958d05f60e01b815261ffff821660048201526024016102ca565b6006805461ffff60b01b1916600160b01b61ffff8416908102919091179091556040519081527fcf1366790fe21e66c9df9dcf67218b1e10acd64d3c99ae8a7429a68de91f1720906020015b60405180910390a150565b600033610c358582856117bc565b610c4085858561183a565b60019150505b9392505050565b610c55611529565b610c5d611899565b811015610c8f5780610c6d611899565b6040516369c5176f60e11b8152600481019290925260248201526044016102ca565b60138190556040518181527fd0459d371e1defb856088ceda9d33bfed2a31a105e0bae2113cdc7dcc9e77e9d90602001610c1c565b600e8160038110610b7057600080fd5b610cde33826118b2565b50565b610ce9611529565b600a54600e548491610d029161ffff91821691166129d0565b610d0c91906129f2565b600e805461ffff191661ffff9283161790819055600a548492610d3c9262010000928390048216929004166129d0565b610d4691906129f2565b600e805463ffff000019166201000061ffff938416021790819055600a548392610d7e92600160201b928390048216929004166129d0565b610d8891906129f2565b600e805461ffff928316600160201b0265ffff0000000019821681179092556109c490831691909216171180610dcc5750600e546109c46201000090910461ffff16115b80610de65750600e546109c4600160201b90910461ffff16115b15610e4657600e60005b601081049190910154600e5460405163b7b3de6f60e01b8152600f9093166002026101000a90910461ffff908116600484015262010000820481166024840152600160201b9091041660448201526064016102ca565b6040805160608101825261ffff80861682528481166020830152831691810191909152610e7790600a9060036126c6565b506040805161ffff808616825280851660208301528316918101919091526001907f5aa2b88de73e9b93e574fbaf914e53e45e2ba25f25692e6e0ba4e0d3c33f9d5a906060015b60405180910390a2505050565b610ed3611529565b600c54600e548491610eec9161ffff91821691166129d0565b610ef691906129f2565b600e805461ffff191661ffff9283161790819055600c548492610f269262010000928390048216929004166129d0565b610f3091906129f2565b600e805463ffff000019166201000061ffff938416021790819055600c548392610f6892600160201b928390048216929004166129d0565b610f7291906129f2565b600e805461ffff928316600160201b0265ffff0000000019821681179092556109c490831691909216171180610fb65750600e546109c46201000090910461ffff16115b80610fd05750600e546109c4600160201b90910461ffff16115b15610fde57600e6000610df0565b6040805160608101825261ffff8086168252848116602083015283169181019190915261100f90600c9060036126c6565b506040805161ffff808616825280851660208301528316918101919091526002907f5aa2b88de73e9b93e574fbaf914e53e45e2ba25f25692e6e0ba4e0d3c33f9d5a90606001610ebe565b611062611529565b61106c60006118e8565b565b60065433906001600160a01b031681146110a65760405163118cdaa760e01b81526001600160a01b03821660048201526024016102ca565b610cde816118e8565b6110ba8233836117bc565b610b5c82826118b2565b6110cc611529565b6001600160a01b038216600081815260166020908152604091829020805460ff191685151590811790915591519182527f38d2732664f4152f6b6754aa1afeaec7fa6618671b172e5430139b51dba2d1d691015b60405180910390a25050565b611134611529565b60155460ff161561115857604051636b91f55d60e11b815260040160405180910390fd5b6015805460ff191660011790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b600a8160038110610b7057600080fd5b60606004805461094d9061296a565b6000336109de81858561183a565b6111c5611529565b6010546001600160a01b03838116911614806111f35750600f546001600160a01b0383811661010090920416145b1561121c5760405163435eaf7b60e11b81526001600160a01b03831660048201526024016102ca565b610b5c8282611901565b61122e611529565b6001600160a01b0382166000818152600d6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101611120565b61128e611529565b610b5c8282611556565b6112a0611529565b6001600160a01b0381166112ca5760405163ab11818760e01b8152600060048201526024016102ca565b600980546001600160a01b0319166001600160a01b0383161790556112f0816001611226565b6112fb816001611556565b6040516001600160a01b03821681526001907ff8e79c3705e6b93e151f4c2166fe019e81a78204037fb9913b261eeb877218d990602001610a85565b61133f611529565b6000611349611488565b306000908152602081905260409020546113639190612a0d565b90508082111561139057604051634d2e924b60e01b815260048101839052602481018290526044016102ca565b610b5c303384611976565b6006546010546001600160a01b03166000908152602081905260408120549091612710916113d491600160b01b900461ffff1690612a20565b6113de9190612a37565b905090565b6113eb611529565b6113f3611899565b8110156114035780610c6d611899565b60148190556040518181527fa0dff8a4e8bcaa27b5a2b64bc312f8b338e362bd6cad89f5fe2ae6b8389fb38a90602001610c1c565b611440611529565b306001600160a01b038316036114745760405163961c9a4f60e01b81526001600160a01b03831660048201526024016102ca565b610b5c6001600160a01b0383163383611f5e565b6000600854600754600061149c9190612a59565b6113de9190612a59565b6114ae611529565b600680546001600160a01b0383166001600160a01b031990911681179091556114df6005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6115248383836001611fb0565b505050565b6005546001600160a01b0316331461106c5760405163118cdaa760e01b81523360048201526024016102ca565b6001600160a01b038216600081815260126020908152604091829020805460ff191685151590811790915591519182527f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc929101611120565b80600f60016101000a8154816001600160a01b0302191690836001600160a01b03160217905550600f60019054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611628573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061164c9190612a6c565b6001600160a01b031663c9c6539630600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d29190612a6c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801561171f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117439190612a6c565b601080546001600160a01b0319166001600160a01b039290921691909117905561176e816001611901565b601054611785906001600160a01b03166001611901565b6040516001600160a01b038216907fbc052db65df144ad4f71f02da93cae3d4401104c30ac374d7cc10d87ee07b60290600090a250565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114611834578181101561182557604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016102ca565b61183484848484036000611fb0565b50505050565b6001600160a01b03831661186457604051634b637e8f60e11b8152600060048201526024016102ca565b6001600160a01b03821661188e5760405163ec442f0560e01b8152600060048201526024016102ca565b611524838383611976565b60006127106118a760025490565b6113d4906005612a20565b6001600160a01b0382166118dc57604051634b637e8f60e11b8152600060048201526024016102ca565b610b5c82600083611976565b600680546001600160a01b0319169055610cde81612085565b6001600160a01b0382166000908152601160205260409020805460ff1916821580159190911790915561193957611939826001611556565b816001600160a01b03167f2cc8631dda80fe178488d3174721fafacf84b0f194a7eddae85c9bcc599ac78b82604051611120911515815260200190565b6119818383836120d7565b6001600160a01b038316158015906119a157506001600160a01b03821615155b15611f5357600f5460ff161580156119b95750600081115b80156119de57506001600160a01b0383166000908152600d602052604090205460ff16155b8015611a0357506001600160a01b0382166000908152600d602052604090205460ff16155b15611cc6576001600160a01b03831660009081526011602052604081205460039060ff168015611a4c57506001600160a01b03841660009081526011602052604090205460ff16155b15611a6657600e5461ffff1615611a61575060005b611b24565b6001600160a01b03841660009081526011602052604090205460ff168015611aa757506001600160a01b03851660009081526011602052604090205460ff16155b15611ac657600e5462010000900461ffff1615611a6157506001611b24565b6001600160a01b03851660009081526011602052604090205460ff16158015611b0857506001600160a01b03841660009081526011602052604090205460ff16155b15611b2457600e54600160201b900461ffff1615611b24575060025b60038160ff161015611cb257612710600e8260ff1660038110611b4957611b496129a4565b601091828204019190066002029054906101000a900461ffff1661ffff1684611b729190612a20565b611b7c9190612a37565b9150611b888284612a0d565b9250600e8160ff1660038110611ba057611ba06129a4565b601091828204019190066002029054906101000a900461ffff1661ffff16600a8260ff1660038110611bd457611bd46129a4565b601091828204019190066002029054906101000a900461ffff1661ffff1683611bfd9190612a20565b611c079190612a37565b60076000828254611c189190612a59565b90915550600e905060ff821660038110611c3457611c346129a4565b601091828204019190066002029054906101000a900461ffff1661ffff16600c8260ff1660038110611c6857611c686129a4565b601091828204019190066002029054906101000a900461ffff1661ffff1683611c919190612a20565b611c9b9190612a37565b60086000828254611cac9190612a59565b90915550505b8115611cc357611cc38530846122b5565b50505b6000611cd061139b565b611cd8611488565b10158015611cfe57506010546001600160a01b0316600090815260208190526040812054115b600f5490915060ff16158015611d2257506010546001600160a01b03858116911614155b8015611d415750600f546001600160a01b038581166101009092041614155b8015611d4a5750805b15611f5157600f805460ff1916600117905560006007541180611d6f57506000600854115b15611f465760006008546007546000611d889190612a59565b611d929190612a59565b90506000611d9f826123df565b60075447906000908490611db39084612a20565b611dbd9190612a37565b90508015611e6c576009546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611e12576040519150601f19603f3d011682016040523d82523d6000602084013e611e17565b606091505b50909350508215611e6c57600954604080516001600160a01b039092168252602082018390526001917f4b1a0df20e469b24231f59741640137b104320272da39777bdf2800ac99de1e0910160405180910390a25b600060078190556008548590611e829085612a20565b611e8c9190612a37565b90508015611f3b57600b546040516001600160a01b03909116908290600081818185875af1925050503d8060008114611ee1576040519150601f19603f3d011682016040523d82523d6000602084013e611ee6565b606091505b50909450508315611f3b57600b54604080516001600160a01b039092168252602082018390526002917f4b1a0df20e469b24231f59741640137b104320272da39777bdf2800ac99de1e0910160405180910390a25b505060006008555050505b600f805460ff191690555b505b6115248383836122b5565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261152490849061255c565b6001600160a01b038416611fda5760405163e602df0560e01b8152600060048201526024016102ca565b6001600160a01b03831661200457604051634a1406b160e11b8152600060048201526024016102ca565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561183457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161207791815260200190565b60405180910390a350505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831660009081526011602052604090205460ff16801561211857506001600160a01b03821660009081526012602052604090205460ff16155b8015612125575060135481115b15612149576013546040516323512ef560e11b81526004016102ca91815260200190565b6001600160a01b03821660009081526011602052604090205460ff16801561218a57506001600160a01b03831660009081526012602052604090205460ff16155b8015612197575060145481115b156121bb576014546040516323512ef560e11b81526004016102ca91815260200190565b60155460ff16611524576001600160a01b03831660009081526011602052604090205460ff16801561220657506001600160a01b03821660009081526011602052604090205460ff16155b801561222b57506001600160a01b03821660009081526016602052604090205460ff16155b8061229757506001600160a01b03821660009081526011602052604090205460ff16801561227257506001600160a01b03831660009081526011602052604090205460ff16155b801561229757506001600160a01b03831660009081526016602052604090205460ff16155b15611524576040516312f1f92360e01b815260040160405180910390fd5b6001600160a01b0383166122e05780600260008282546122d59190612a59565b909155506123529050565b6001600160a01b038316600090815260208190526040902054818110156123335760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016102ca565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661236e5760028054829003905561238d565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123d291815260200190565b60405180910390a3505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612414576124146129a4565b60200260200101906001600160a01b031690816001600160a01b031681525050600f60019054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ab9190612a6c565b816001815181106124be576124be6129a4565b6001600160a01b039283166020918202929092010152600f546124e991309161010090041684611517565b600f5460405163791ac94760e01b81526101009091046001600160a01b03169063791ac94790612526908590600090869030904290600401612a89565b600060405180830381600087803b15801561254057600080fd5b505af1158015612554573d6000803e3d6000fd5b505050505050565b60006125716001600160a01b038416836125bf565b905080516000141580156125965750808060200190518101906125949190612afc565b155b1561152457604051635274afe760e01b81526001600160a01b03841660048201526024016102ca565b6060610c468383600084600080856001600160a01b031684866040516125e59190612b19565b60006040518083038185875af1925050503d8060008114612622576040519150601f19603f3d011682016040523d82523d6000602084013e612627565b606091505b5091509150612637868383612641565b9695505050505050565b606082612656576126518261269d565b610c46565b815115801561266d57506001600160a01b0384163b155b1561269657604051639996b31560e01b81526001600160a01b03851660048201526024016102ca565b5080610c46565b8051156126ad5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b60018301918390821561274c5791602002820160005b8382111561271c57835183826101000a81548161ffff021916908361ffff16021790555092602001926002016020816001010492830192600103026126dc565b801561274a5782816101000a81549061ffff021916905560020160208160010104928301926001030261271c565b505b5061275892915061275c565b5090565b5b80821115612758576000815560010161275d565b60005b8381101561278c578181015183820152602001612774565b50506000910152565b60208152600082518060208401526127b4816040850160208701612771565b601f01601f19169190910160400192915050565b6001600160a01b0381168114610cde57600080fd5b600080604083850312156127f057600080fd5b82356127fb816127c8565b946020939093013593505050565b60006020828403121561281b57600080fd5b8135610c46816127c8565b60006020828403121561283857600080fd5b5035919050565b803561ffff8116811461285157600080fd5b919050565b60006020828403121561286857600080fd5b610c468261283f565b60008060006060848603121561288657600080fd5b8335612891816127c8565b925060208401356128a1816127c8565b929592945050506040919091013590565b6000806000606084860312156128c757600080fd5b6128d08461283f565b92506128de6020850161283f565b91506128ec6040850161283f565b90509250925092565b8015158114610cde57600080fd5b6000806040838503121561291657600080fd5b8235612921816127c8565b91506020830135612931816128f5565b809150509250929050565b6000806040838503121561294f57600080fd5b823561295a816127c8565b91506020830135612931816127c8565b600181811c9082168061297e57607f821691505b60208210810361299e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b61ffff8281168282160390808211156129eb576129eb6129ba565b5092915050565b61ffff8181168382160190808211156129eb576129eb6129ba565b818103818111156109e4576109e46129ba565b80820281158282048414176109e4576109e46129ba565b600082612a5457634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156109e4576109e46129ba565b600060208284031215612a7e57600080fd5b8151610c46816127c8565b600060a08201878352602087602085015260a0604085015281875180845260c08601915060208901935060005b81811015612adb5784516001600160a01b031683529383019391830191600101612ab6565b50506001600160a01b03969096166060850152505050608001529392505050565b600060208284031215612b0e57600080fd5b8151610c46816128f5565b60008251612b2b818460208701612771565b919091019291505056fea2646970667358221220ca9c9b77ecae80190ba5d816c23e5eeb43f53eb2eb918d8e27b3f248493259b164736f6c634300081900335aa2b88de73e9b93e574fbaf914e53e45e2ba25f25692e6e0ba4e0d3c33f9d5a4b1a0df20e469b24231f59741640137b104320272da39777bdf2800ac99de1e0f8e79c3705e6b93e151f4c2166fe019e81a78204037fb9913b261eeb877218d9