Overview ERC721
Total Supply:
15,379 CRI

Holders:
255
Profile Summary
Blockchain:
C-Chain (43114)

Contract Source Code Verified (Partial Match)
Contract Name:
CraftIsland

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 200 runs

Created At:
Sun, 23 Jan 2022 15:45:36 GMT
CraftIsland.sol
CraftIsland.sol
CraftIsland.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_symbol",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_name",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "_initBaseURI",
        "type": "string"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "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": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "DiamondRoleUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "GoldAmountUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "GoldRoleUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "NextGen",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "_tokenIdTracker",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "_value",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "amountForGold",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseExtension",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cost",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "costDiamond",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "costGen2",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "costGold",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "diamondrole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "goldrole",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxMintAmount",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "maxSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_mintAmount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amountNextGens",
        "type": "uint256"
      }
    ],
    "name": "mint",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_mintAmount",
        "type": "uint256"
      }
    ],
    "name": "mintOwner",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "_mintAmount",
        "type": "uint256"
      }
    ],
    "name": "mintWL",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_state",
        "type": "bool"
      }
    ],
    "name": "pause",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "paused",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "removeDiamondRoleUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "removeGoldAmountUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "removeGoldRoleUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "removeWhitelistUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "_data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_newBaseExtension",
        "type": "string"
      }
    ],
    "name": "setBaseExtension",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_newBaseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newCost",
        "type": "uint256"
      }
    ],
    "name": "setCost",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newCost",
        "type": "uint256"
      }
    ],
    "name": "setCostDiamond",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newCost",
        "type": "uint256"
      }
    ],
    "name": "setCostGold",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newCost",
        "type": "uint256"
      }
    ],
    "name": "setCostNextGen",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_newNextGen",
        "type": "bool"
      }
    ],
    "name": "setNextGen",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_token",
        "type": "address"
      }
    ],
    "name": "setToken",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "_newWhitelist",
        "type": "bool"
      }
    ],
    "name": "setWhitelist",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newmaxMintAmount",
        "type": "uint256"
      }
    ],
    "name": "setmaxMintAmount",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "_newmaxSupply",
        "type": "uint256"
      }
    ],
    "name": "setmaxSupply",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "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": "token",
    "outputs": [
      {
        "internalType": "contract ERC20",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "index",
        "type": "uint256"
      }
    ],
    "name": "tokenOfOwnerByIndex",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "totalSupply",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "_owner",
        "type": "address"
      }
    ],
    "name": "walletOfOwner",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "whitelist",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "_user",
        "type": "address[]"
      }
    ],
    "name": "whitelistUser",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "whitelisted",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdraw",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawDiam",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "withdrawTo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "amountToken",
        "type": "uint256"
      }
    ],
    "name": "withdrawtokens",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60c06040526005608081905264173539b7b760d91b60a09081526200002891600e919062000282565b50670b1a2bc2ec500000600f556707c585087238000060105567058d15e17628000060115569010f0cf064dd5920000060125561271060135560056014556015805462ff00001961ff001960ff199092166001179190911661010017169055601a80546001600160a01b031990811673812a28d498dd4d2494c91aebfb422de26b800b6417909155601b8054909116732a3eb93322873fbcc160f9d51f3cc4d8f0f539ed179055348015620000dc57600080fd5b506040516200401438038062004014833981016040819052620000ff91620003d3565b8183620001136301ffc9a760e01b620001b5565b81516200012890600190602085019062000282565b5080516200013e90600290602084019062000282565b5050506000620001536200021060201b60201c565b600b80546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350620001ac8162000214565b5050506200051f565b6001600160e01b03198082161415620001eb5760405162461bcd60e51b8152600401620001e29062000460565b60405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b3390565b6200021e62000210565b6001600160a01b03166200023162000273565b6001600160a01b0316146200025a5760405162461bcd60e51b8152600401620001e29062000497565b80516200026f90600d90602084019062000282565b5050565b600b546001600160a01b031690565b8280546200029090620004cc565b90600052602060002090601f016020900481019282620002b45760008555620002ff565b82601f10620002cf57805160ff1916838001178555620002ff565b82800160010185558215620002ff579182015b82811115620002ff578251825591602001919060010190620002e2565b506200030d92915062000311565b5090565b5b808211156200030d576000815560010162000312565b600082601f83011262000339578081fd5b81516001600160401b038082111562000356576200035662000509565b6040516020601f8401601f19168201810183811183821017156200037e576200037e62000509565b604052838252858401810187101562000395578485fd5b8492505b83831015620003b8578583018101518284018201529182019162000399565b83831115620003c957848185840101525b5095945050505050565b600080600060608486031215620003e8578283fd5b83516001600160401b0380821115620003ff578485fd5b6200040d8783880162000328565b9450602086015191508082111562000423578384fd5b620004318783880162000328565b9350604086015191508082111562000447578283fd5b50620004568682870162000328565b9150509250925092565b6020808252601c908201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600281046001821680620004e157607f821691505b602082108114156200050357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b613ae5806200052f6000396000f3fe6080604052600436106103c35760003560e01c80638bcd3e93116101f2578063c66828621161010d578063e985e9c5116100a0578063f762c5231161006f578063f762c52314610a91578063f8ecb26214610ab1578063f958a65714610ad1578063fc0c546a14610af1576103c3565b8063e985e9c514610a27578063ee0eb3de14610a47578063f2fde38b14610a5c578063f5d0332114610a7c576103c3565b8063d936547e116100dc578063d936547e146109b2578063da3ef23f146109d2578063df49d883146109f2578063df84398814610a07576103c3565b8063c668286214610948578063c87b56dd1461095d578063d5abeb011461097d578063d78ae47914610992576103c3565b80639ce904b311610185578063b88d4fde11610154578063b88d4fde146108d3578063c0ca837e146108f3578063c3ebac3114610913578063c409c93214610933576103c3565b80639ce904b314610860578063a22cb46514610880578063ae1c64b3146108a0578063b593c1cf146108b3576103c3565b806395d89b41116101c157806395d89b41146107f657806398bcede91461080b578063999abb7b146108205780639b6fbf8a14610840576103c3565b80638bcd3e93146107a25780638da5cb5b146107b75780638de8221d146107cc57806393e59dc1146107e1576103c3565b80634152d0fe116102e25780635c975abb11610275578063715018a611610244578063715018a61461072d57806377e8f0fe146107425780637f00c7a61461076257806389312fad14610782576103c3565b80635c975abb146106c35780636352211e146106d85780636c0360eb146106f857806370a082311461070d576103c3565b806344a0d68a116102b157806344a0d68a146106435780634f6ccce71461066357806355f804b3146106835780635a28e462146106a3576103c3565b80634152d0fe146105b657806342842e0e146105d6578063438b6300146105f6578063441ceef514610623576103c3565b806318160ddd1161035a57806323b872dd1161032957806323b872dd1461054e5780632f745c591461056e5780633ccfd60b1461058e578063408cbf9414610596576103c3565b806318160ddd146104e45780631c0e35f0146104f9578063228025e814610519578063239c70ae14610539576103c3565b8063095ea7b311610396578063095ea7b31461046f57806313faede61461048f578063144fa6d7146104b1578063156e29f6146104d1576103c3565b806301ffc9a7146103c857806302329a29146103fe57806306fdde0314610420578063081812fc14610442575b600080fd5b3480156103d457600080fd5b506103e86103e3366004613010565b610b06565b6040516103f59190613298565b60405180910390f35b34801561040a57600080fd5b5061041e610419366004612fd8565b610b33565b005b34801561042c57600080fd5b50610435610b8e565b6040516103f591906132a3565b34801561044e57600080fd5b5061046261045d36600461308e565b610c20565b6040516103f591906131ac565b34801561047b57600080fd5b5061041e61048a366004612f0e565b610c63565b34801561049b57600080fd5b506104a4610cfb565b6040516103f5919061393c565b3480156104bd57600080fd5b5061041e6104cc366004612dd8565b610d01565b61041e6104df366004612f37565b610d6c565b3480156104f057600080fd5b506104a4611064565b34801561050557600080fd5b5061041e61051436600461308e565b61106a565b34801561052557600080fd5b5061041e61053436600461308e565b6110ae565b34801561054557600080fd5b506104a46110f2565b34801561055a57600080fd5b5061041e610569366004612e24565b6110f8565b34801561057a57600080fd5b506104a4610589366004612f0e565b611130565b61041e611182565b3480156105a257600080fd5b5061041e6105b1366004612f0e565b6111f4565b3480156105c257600080fd5b5061041e6105d136600461308e565b61126d565b3480156105e257600080fd5b5061041e6105f1366004612e24565b6112b1565b34801561060257600080fd5b50610616610611366004612dd8565b6112cc565b6040516103f59190613254565b34801561062f57600080fd5b5061041e61063e36600461308e565b61138a565b34801561064f57600080fd5b5061041e61065e36600461308e565b6113ce565b34801561066f57600080fd5b506104a461067e36600461308e565b611412565b34801561068f57600080fd5b5061041e61069e366004613048565b61146d565b3480156106af57600080fd5b5061041e6106be366004612f69565b6114c3565b3480156106cf57600080fd5b506103e8611582565b3480156106e457600080fd5b506104626106f336600461308e565b61158b565b34801561070457600080fd5b506104356115c0565b34801561071957600080fd5b506104a4610728366004612dd8565b61164e565b34801561073957600080fd5b5061041e611692565b34801561074e57600080fd5b5061041e61075d366004612f69565b61171b565b34801561076e57600080fd5b5061041e61077d36600461308e565b6117da565b34801561078e57600080fd5b5061041e61079d366004612f69565b61181e565b3480156107ae57600080fd5b506104626118dd565b3480156107c357600080fd5b506104626118ec565b3480156107d857600080fd5b506104a46118fb565b3480156107ed57600080fd5b506103e8611901565b34801561080257600080fd5b5061043561190f565b34801561081757600080fd5b506104a461191e565b34801561082c57600080fd5b5061041e61083b366004612f69565b611924565b34801561084c57600080fd5b5061041e61085b366004612f69565b6119d5565b34801561086c57600080fd5b506104a461087b366004612dd8565b611a86565b34801561088c57600080fd5b5061041e61089b366004612ed8565b611a98565b61041e6108ae366004612f0e565b611aaa565b3480156108bf57600080fd5b506103e86108ce366004612dd8565b611c8f565b3480156108df57600080fd5b5061041e6108ee366004612e5f565b611ca4565b3480156108ff57600080fd5b506103e861090e366004612dd8565b611cdd565b34801561091f57600080fd5b5061041e61092e366004612f69565b611cf2565b34801561093f57600080fd5b506104a4611da3565b34801561095457600080fd5b50610435611da9565b34801561096957600080fd5b5061043561097836600461308e565b611db6565b34801561098957600080fd5b506104a4611e3c565b34801561099e57600080fd5b5061041e6109ad366004612fd8565b611e42565b3480156109be57600080fd5b506104a46109cd366004612dd8565b611e9d565b3480156109de57600080fd5b5061041e6109ed366004613048565b611eaf565b3480156109fe57600080fd5b506104a4611f01565b348015610a1357600080fd5b5061041e610a22366004612f69565b611f07565b348015610a3357600080fd5b506103e8610a42366004612df2565b611fc6565b348015610a5357600080fd5b50610462611ff4565b348015610a6857600080fd5b5061041e610a77366004612dd8565b612003565b348015610a8857600080fd5b506103e86120c4565b348015610a9d57600080fd5b5061041e610aac36600461308e565b6120d3565b348015610abd57600080fd5b5061041e610acc366004612f69565b6121c0565b348015610add57600080fd5b5061041e610aec366004612fd8565b612271565b348015610afd57600080fd5b506104626122ca565b60006001600160e01b0319821663780e9d6360e01b1480610b2b5750610b2b826122e0565b90505b919050565b610b3b612320565b6001600160a01b0316610b4c6118ec565b6001600160a01b031614610b7b5760405162461bcd60e51b8152600401610b729061376a565b60405180910390fd5b6015805460ff1916911515919091179055565b606060018054610b9d906139df565b80601f0160208091040260200160405190810160405280929190818152602001828054610bc9906139df565b8015610c165780601f10610beb57610100808354040283529160200191610c16565b820191906000526020600020905b815481529060010190602001808311610bf957829003601f168201915b5050505050905090565b6000610c2b82612324565b610c475760405162461bcd60e51b8152600401610b729061371e565b506000908152600560205260409020546001600160a01b031690565b6000610c6e8261158b565b9050806001600160a01b0316836001600160a01b03161415610ca25760405162461bcd60e51b8152600401610b7290613831565b806001600160a01b0316610cb4612320565b6001600160a01b03161480610cd05750610cd081610a42612320565b610cec5760405162461bcd60e51b8152600401610b72906135c2565b610cf68383612341565b505050565b600f5481565b610d09612320565b6001600160a01b0316610d1a6118ec565b6001600160a01b031614610d405760405162461bcd60e51b8152600401610b729061376a565b601580546001600160a01b039092166301000000026301000000600160b81b0319909216919091179055565b6000610d76611064565b60155490915060ff1615610d8957600080fd5b60008311610d9657600080fd5b601454831115610da557600080fd5b601354610db28483613951565b1115610dbd57600080fd5b601554610100900460ff1615610de55760405162461bcd60e51b8152600401610b7290613872565b60155462010000900460ff16610ef1573360009081526019602052604090205460ff1615610e5a57600f54610e1b60018561399c565b610e25919061397d565b601154610e329190613951565b341015610e3e57600080fd5b336000908152601960205260409020805460ff19169055610eec565b3360009081526018602052604090205460ff1615610ebf57600f54610e8060018561399c565b610e8a919061397d565b601054610e979190613951565b341015610ea357600080fd5b336000908152601860205260409020805460ff19169055610eec565b82600f54610ecd919061397d565b341015610eec5760405162461bcd60e51b8152600401610b7290613353565b611054565b601554604051636eb1769f60e11b8152600091630100000090046001600160a01b03169063dd62ed3e90610f2b90339030906004016131c0565b60206040518083038186803b158015610f4357600080fd5b505afa158015610f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7b91906130a6565b9050601254831015610f9f5760405162461bcd60e51b8152600401610b729061340e565b82811015610fbf5760405162461bcd60e51b8152600401610b729061361f565b601554601b546040516323b872dd60e01b815263010000009092046001600160a01b03908116926323b872dd92610fff92339291169088906004016131da565b602060405180830381600087803b15801561101957600080fd5b505af115801561102d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110519190612ff4565b50505b61105e84846123af565b50505050565b60095490565b611072612320565b6001600160a01b03166110836118ec565b6001600160a01b0316146110a95760405162461bcd60e51b8152600401610b729061376a565b601155565b6110b6612320565b6001600160a01b03166110c76118ec565b6001600160a01b0316146110ed5760405162461bcd60e51b8152600401610b729061376a565b601355565b60145481565b611109611103612320565b8261241a565b6111255760405162461bcd60e51b8152600401610b729061389f565b610cf683838361249f565b600061113b8361164e565b82106111595760405162461bcd60e51b8152600401610b72906132b6565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b61118a612320565b6001600160a01b031661119b6118ec565b6001600160a01b0316146111c15760405162461bcd60e51b8152600401610b729061376a565b601a546040516001600160a01b03909116904780156108fc02916000818181858888f193505050506111f257600080fd5b565b6111fc612320565b6001600160a01b031661120d6118ec565b6001600160a01b0316146112335760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf6576112518361124c600c6125d2565b6125d6565b61125b600c6126bd565b8061126581613a1a565b915050611236565b611275612320565b6001600160a01b03166112866118ec565b6001600160a01b0316146112ac5760405162461bcd60e51b8152600401610b729061376a565b601255565b610cf683838360405180602001604052806000815250611ca4565b606060006112d98361164e565b905060008167ffffffffffffffff81111561130457634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561132d578160200160208202803683370190505b50905060005b82811015611382576113458582611130565b82828151811061136557634e487b7160e01b600052603260045260246000fd5b60209081029190910101528061137a81613a1a565b915050611333565b509392505050565b611392612320565b6001600160a01b03166113a36118ec565b6001600160a01b0316146113c95760405162461bcd60e51b8152600401610b729061376a565b601055565b6113d6612320565b6001600160a01b03166113e76118ec565b6001600160a01b03161461140d5760405162461bcd60e51b8152600401610b729061376a565b600f55565b600061141c611064565b821061143a5760405162461bcd60e51b8152600401610b72906138f0565b6009828154811061145b57634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b611475612320565b6001600160a01b03166114866118ec565b6001600160a01b0316146114ac5760405162461bcd60e51b8152600401610b729061376a565b80516114bf90600d906020840190612cb8565b5050565b6114cb612320565b6001600160a01b03166114dc6118ec565b6001600160a01b0316146115025760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf65760016018600085858581811061153357634e487b7160e01b600052603260045260246000fd5b90506020020160208101906115489190612dd8565b6001600160a01b031681526020810191909152604001600020805460ff19169115159190911790558061157a81613a1a565b915050611505565b60155460ff1681565b6000818152600360205260408120546001600160a01b031680610b2b5760405162461bcd60e51b8152600401610b72906136a0565b600d80546115cd906139df565b80601f01602080910402602001604051908101604052809291908181526020018280546115f9906139df565b80156116465780601f1061161b57610100808354040283529160200191611646565b820191906000526020600020905b81548152906001019060200180831161162957829003601f168201915b505050505081565b60006001600160a01b0382166116765760405162461bcd60e51b8152600401610b7290613656565b506001600160a01b031660009081526004602052604090205490565b61169a612320565b6001600160a01b03166116ab6118ec565b6001600160a01b0316146116d15760405162461bcd60e51b8152600401610b729061376a565b600b546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600b80546001600160a01b0319169055565b611723612320565b6001600160a01b03166117346118ec565b6001600160a01b03161461175a5760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf65760006019600085858581811061178b57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906117a09190612dd8565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806117d281613a1a565b91505061175d565b6117e2612320565b6001600160a01b03166117f36118ec565b6001600160a01b0316146118195760405162461bcd60e51b8152600401610b729061376a565b601455565b611826612320565b6001600160a01b03166118376118ec565b6001600160a01b03161461185d5760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf65760016019600085858581811061188e57634e487b7160e01b600052603260045260246000fd5b90506020020160208101906118a39190612dd8565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806118d581613a1a565b915050611860565b601a546001600160a01b031681565b600b546001600160a01b031690565b60115481565b601554610100900460ff1681565b606060028054610b9d906139df565b600c5481565b61192c612320565b6001600160a01b031661193d6118ec565b6001600160a01b0316146119635760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf65760006017600085858581811061199457634e487b7160e01b600052603260045260246000fd5b90506020020160208101906119a99190612dd8565b6001600160a01b03168152602081019190915260400160002055806119cd81613a1a565b915050611966565b6119dd612320565b6001600160a01b03166119ee6118ec565b6001600160a01b031614611a145760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf657600560176000858585818110611a4557634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611a5a9190612dd8565b6001600160a01b0316815260208101919091526040016000205580611a7e81613a1a565b915050611a17565b60166020526000908152604090205481565b6114bf611aa3612320565b83836126c6565b6000611ab4611064565b905060008211611ac357600080fd5b60155460ff1615611ad357600080fd5b601454821115611ae257600080fd5b601554610100900460ff16611af657600080fd5b601354611b038383613951565b1115611b0e57600080fd5b33600090815260176020526040812054611b2990849061399c565b1015611b475760405162461bcd60e51b8152600401610b7290613470565b3360009081526019602052604090205460ff1615611bcc57600f54611b6d60018461399c565b611b77919061397d565b601154611b849190613951565b341015611b9057600080fd5b336000908152601960209081526040808320805460ff19169055601790915281208054849290611bc190849061399c565b90915550611c859050565b3360009081526018602052604090205460ff1615611c4657600f54611bf260018461399c565b611bfc919061397d565b601054611c099190613951565b341015611c1557600080fd5b336000908152601860209081526040808320805460ff19169055601790915281208054849290611bc190849061399c565b81600f54611c54919061397d565b341015611c6057600080fd5b3360009081526017602052604081208054849290611c7f90849061399c565b90915550505b610cf683836123af565b60196020526000908152604090205460ff1681565b611cb5611caf612320565b8361241a565b611cd15760405162461bcd60e51b8152600401610b729061389f565b61105e84848484612769565b60186020526000908152604090205460ff1681565b611cfa612320565b6001600160a01b0316611d0b6118ec565b6001600160a01b031614611d315760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf657600060176000858585818110611d6257634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611d779190612dd8565b6001600160a01b0316815260208101919091526040016000205580611d9b81613a1a565b915050611d34565b60125481565b600e80546115cd906139df565b6060611dc182612324565b611ddd5760405162461bcd60e51b8152600401610b729061379f565b6000611de761279c565b90506000815111611e075760405180602001604052806000815250611e35565b80611e11846127ab565b600e604051602001611e25939291906130ea565b6040516020818303038152906040525b9392505050565b60135481565b611e4a612320565b6001600160a01b0316611e5b6118ec565b6001600160a01b031614611e815760405162461bcd60e51b8152600401610b729061376a565b60158054911515620100000262ff000019909216919091179055565b60176020526000908152604090205481565b611eb7612320565b6001600160a01b0316611ec86118ec565b6001600160a01b031614611eee5760405162461bcd60e51b8152600401610b729061376a565b80516114bf90600e906020840190612cb8565b60105481565b611f0f612320565b6001600160a01b0316611f206118ec565b6001600160a01b031614611f465760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf657600060186000858585818110611f7757634e487b7160e01b600052603260045260246000fd5b9050602002016020810190611f8c9190612dd8565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611fbe81613a1a565b915050611f49565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b601b546001600160a01b031681565b61200b612320565b6001600160a01b031661201c6118ec565b6001600160a01b0316146120425760405162461bcd60e51b8152600401610b729061376a565b6001600160a01b0381166120685760405162461bcd60e51b8152600401610b7290613383565b600b546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60155462010000900460ff1681565b6120db612320565b6001600160a01b03166120ec6118ec565b6001600160a01b0316146121125760405162461bcd60e51b8152600401610b729061376a565b601554601b5460405163a9059cbb60e01b81526001600160a01b03630100000090930483169263a9059cbb9261214f92911690859060040161323b565b602060405180830381600087803b15801561216957600080fd5b505af115801561217d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a19190612ff4565b6121bd5760405162461bcd60e51b8152600401610b729061357b565b50565b6121c8612320565b6001600160a01b03166121d96118ec565b6001600160a01b0316146121ff5760405162461bcd60e51b8152600401610b729061376a565b60005b81811015610cf65760016017600085858581811061223057634e487b7160e01b600052603260045260246000fd5b90506020020160208101906122459190612dd8565b6001600160a01b031681526020810191909152604001600020558061226981613a1a565b915050612202565b612279612320565b6001600160a01b031661228a6118ec565b6001600160a01b0316146122b05760405162461bcd60e51b8152600401610b729061376a565b601580549115156101000261ff0019909216919091179055565b601554630100000090046001600160a01b031681565b60006001600160e01b031982166380ac58cd60e01b148061231157506001600160e01b03198216635b5e139f60e01b145b80610b2b5750610b2b826128c6565b3390565b6000908152600360205260409020546001600160a01b0316151590565b600081815260056020526040902080546001600160a01b0319166001600160a01b03841690811790915581906123768261158b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b601354816123bd600c6125d2565b6123c79190613951565b11156123e55760405162461bcd60e51b8152600401610b72906137ee565b60005b81811015610cf6576123fe8361124c600c6125d2565b612408600c6126bd565b8061241281613a1a565b9150506123e8565b600061242582612324565b6124415760405162461bcd60e51b8152600401610b729061352f565b600061244c8361158b565b9050806001600160a01b0316846001600160a01b031614806124875750836001600160a01b031661247c84610c20565b6001600160a01b0316145b8061249757506124978185611fc6565b949350505050565b826001600160a01b03166124b28261158b565b6001600160a01b0316146124d85760405162461bcd60e51b8152600401610b72906133c9565b6001600160a01b0382166124fe5760405162461bcd60e51b8152600401610b72906134b4565b6125098383836128e5565b612514600082612341565b6001600160a01b038316600090815260046020526040812080546001929061253d90849061399c565b90915550506001600160a01b038216600090815260046020526040812080546001929061256b908490613951565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4610cf6838383610cf6565b5490565b6001600160a01b0382166125fc5760405162461bcd60e51b8152600401610b72906136e9565b61260581612324565b156126225760405162461bcd60e51b8152600401610b7290613439565b61262e600083836128e5565b6001600160a01b0382166000908152600460205260408120805460019290612657908490613951565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46114bf60008383610cf6565b80546001019055565b816001600160a01b0316836001600160a01b031614156126f85760405162461bcd60e51b8152600401610b72906134f8565b6001600160a01b0383811660008181526006602090815260408083209487168084529490915290819020805460ff1916851515179055517f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319061275c908590613298565b60405180910390a3505050565b61277484848461249f565b6127808484848461296e565b61105e5760405162461bcd60e51b8152600401610b7290613301565b6060600d8054610b9d906139df565b6060816127d057506040805180820190915260018152600360fc1b6020820152610b2e565b8160005b81156127fa57806127e481613a1a565b91506127f39050600a83613969565b91506127d4565b60008167ffffffffffffffff81111561282357634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561284d576020820181803683370190505b5090505b84156124975761286260018361399c565b915061286f600a86613a35565b61287a906030613951565b60f81b81838151811061289d57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506128bf600a86613969565b9450612851565b6001600160e01b03191660009081526020819052604090205460ff1690565b6128f0838383610cf6565b6001600160a01b03831661290c5761290781612a89565b61292f565b816001600160a01b0316836001600160a01b03161461292f5761292f8382612acd565b6001600160a01b03821661294b5761294681612b6a565b610cf6565b826001600160a01b0316826001600160a01b031614610cf657610cf68282612c43565b6000612982846001600160a01b0316612c87565b15612a7e57836001600160a01b031663150b7a0261299e612320565b8786866040518563ffffffff1660e01b81526004016129c094939291906131fe565b602060405180830381600087803b1580156129da57600080fd5b505af1925050508015612a0a575060408051601f3d908101601f19168201909252612a079181019061302c565b60015b612a64573d808015612a38576040519150601f19603f3d011682016040523d82523d6000602084013e612a3d565b606091505b508051612a5c5760405162461bcd60e51b8152600401610b7290613301565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612497565b506001949350505050565b600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b60006001612ada8461164e565b612ae4919061399c565b600083815260086020526040902054909150808214612b37576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b600954600090612b7c9060019061399c565b6000838152600a602052604081205460098054939450909284908110612bb257634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508060098381548110612be157634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600a90915260408082208490558582528120556009805480612c2757634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000612c4e8361164e565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511192915050565b828054612cc4906139df565b90600052602060002090601f016020900481019282612ce65760008555612d2c565b82601f10612cff57805160ff1916838001178555612d2c565b82800160010185558215612d2c579182015b82811115612d2c578251825591602001919060010190612d11565b50612d38929150612d3c565b5090565b5b80821115612d385760008155600101612d3d565b600067ffffffffffffffff80841115612d6c57612d6c613a75565b604051601f8501601f191681016020018281118282101715612d9057612d90613a75565b604052848152915081838501861015612da857600080fd5b8484602083013760006020868301015250509392505050565b80356001600160a01b0381168114610b2e57600080fd5b600060208284031215612de9578081fd5b611e3582612dc1565b60008060408385031215612e04578081fd5b612e0d83612dc1565b9150612e1b60208401612dc1565b90509250929050565b600080600060608486031215612e38578081fd5b612e4184612dc1565b9250612e4f60208501612dc1565b9150604084013590509250925092565b60008060008060808587031215612e74578081fd5b612e7d85612dc1565b9350612e8b60208601612dc1565b925060408501359150606085013567ffffffffffffffff811115612ead578182fd5b8501601f81018713612ebd578182fd5b612ecc87823560208401612d51565b91505092959194509250565b60008060408385031215612eea578182fd5b612ef383612dc1565b91506020830135612f0381613a8b565b809150509250929050565b60008060408385031215612f20578182fd5b612f2983612dc1565b946020939093013593505050565b600080600060608486031215612f4b578283fd5b612f5484612dc1565b95602085013595506040909401359392505050565b60008060208385031215612f7b578182fd5b823567ffffffffffffffff80821115612f92578384fd5b818501915085601f830112612fa5578384fd5b813581811115612fb3578485fd5b8660208083028501011115612fc6578485fd5b60209290920196919550909350505050565b600060208284031215612fe9578081fd5b8135611e3581613a8b565b600060208284031215613005578081fd5b8151611e3581613a8b565b600060208284031215613021578081fd5b8135611e3581613a99565b60006020828403121561303d578081fd5b8151611e3581613a99565b600060208284031215613059578081fd5b813567ffffffffffffffff81111561306f578182fd5b8201601f8101841361307f578182fd5b61249784823560208401612d51565b60006020828403121561309f578081fd5b5035919050565b6000602082840312156130b7578081fd5b5051919050565b600081518084526130d68160208601602086016139b3565b601f01601f19169290920160200192915050565b6000845160206130fd8285838a016139b3565b8551918401916131108184848a016139b3565b855492019183906002810460018083168061312c57607f831692505b85831081141561314a57634e487b7160e01b88526022600452602488fd5b80801561315e576001811461316f5761319b565b60ff1985168852838801955061319b565b6131788b613945565b895b858110156131935781548a82015290840190880161317a565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613231908301846130be565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561328c57835183529284019291840191600101613270565b50909695505050505050565b901515815260200190565b600060208252611e3560208301846130be565b6020808252602b908201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560408201526a74206f6620626f756e647360a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b602080825260169082015275151c985b9cd858dd1a5bdb881b9bdd081c185cdcd95960521b604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6020808252601190820152701b9bdd08195b9bdd59da08185b5bdd5b9d607a1b604082015260600190565b6020808252601c908201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604082015260600190565b60208082526024908201527f596f752063616e2774206d696e74207468697320616d6f756e74206f6620746f6040820152636b656e7360e01b606082015260800190565b60208082526024908201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526019908201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604082015260600190565b6020808252602c908201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b60208082526027908201527f556e61626c6520746f207472616e7366657220746f6b656e20746f20746865206040820152661858d8dbdd5b9d60ca1b606082015260800190565b60208082526038908201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760408201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606082015260800190565b60208082526019908201527f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000604082015260600190565b6020808252602a908201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604082015269726f206164647265737360b01b606082015260800190565b60208082526029908201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460408201526832b73a103a37b5b2b760b91b606082015260800190565b6020808252818101527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604082015260600190565b6020808252602c908201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860408201526b34b9ba32b73a103a37b5b2b760a11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602f908201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60408201526e3732bc34b9ba32b73a103a37b5b2b760891b606082015260800190565b60208082526023908201527f4e6f7420656e6f756768204e465473206c65667420746f206d696e7420616d6f6040820152621d5b9d60ea1b606082015260800190565b60208082526021908201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656040820152603960f91b606082015260800190565b60208082526013908201527215da1a5d195b1a5cdd081858da5d1d985d1959606a1b604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b6020808252602c908201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60408201526b7574206f6620626f756e647360a01b606082015260800190565b90815260200190565b60009081526020902090565b6000821982111561396457613964613a49565b500190565b60008261397857613978613a5f565b500490565b600081600019048311821515161561399757613997613a49565b500290565b6000828210156139ae576139ae613a49565b500390565b60005b838110156139ce5781810151838201526020016139b6565b8381111561105e5750506000910152565b6002810460018216806139f357607f821691505b60208210811415613a1457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415613a2e57613a2e613a49565b5060010190565b600082613a4457613a44613a5f565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b80151581146121bd57600080fd5b6001600160e01b0319811681146121bd57600080fdfea26469706673582212200baf04beafc51db4ccc4cf66dcd5342cf7ec2467abc96976c6b936024d49dcb364736f6c63430008000033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000034352490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b437261667449736c616e64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002f516d56453258475a42617055776a337143396b555354314d363466317a4d447a627338315167324b7464387459352f0000000000000000000000000000000000