Overview ERC721
Total Supply:
50,000 Neon

Holders:
46,127
Profile Summary
Blockchain:
Blast (81457)

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

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No

Created At:
Tue, 21 May 2024 04:44:03 GMT
ERC721.sol
ERC721.sol
ERC721.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "ERC721IncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ERC721InsufficientApproval",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "approver",
        "type": "address"
      }
    ],
    "name": "ERC721InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "ERC721InvalidOperator",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "ERC721InvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC721InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "ERC721InvalidSender",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ERC721NonexistentToken",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      }
    ],
    "name": "OwnableInvalidOwner",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "OwnableUnauthorizedAccount",
    "type": "error"
  },
  {
    "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": "addresses",
        "type": "address[]"
      }
    ],
    "name": "airdrop",
    "outputs": [],
    "stateMutability": "nonpayable",
    "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": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "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": "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": [],
    "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": "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": [
      {
        "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"
  }
]


Contract Creation Code
60806040525f60075534801562000014575f80fd5b506040516200294d3803806200294d83398181016040528101906200003a919062000332565b335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ae575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a59190620003f8565b60405180910390fd5b620000bf81620000ec60201b60201c565b508160019081620000d191906200064a565b508060029081620000e391906200064a565b5050506200072e565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200020e82620001c6565b810181811067ffffffffffffffff8211171562000230576200022f620001d6565b5b80604052505050565b5f62000244620001ad565b905062000252828262000203565b919050565b5f67ffffffffffffffff821115620002745762000273620001d6565b5b6200027f82620001c6565b9050602081019050919050565b5f5b83811015620002ab5780820151818401526020810190506200028e565b5f8484015250505050565b5f620002cc620002c68462000257565b62000239565b905082815260208101848484011115620002eb57620002ea620001c2565b5b620002f88482856200028c565b509392505050565b5f82601f830112620003175762000316620001be565b5b815162000329848260208601620002b6565b91505092915050565b5f80604083850312156200034b576200034a620001b6565b5b5f83015167ffffffffffffffff8111156200036b576200036a620001ba565b5b620003798582860162000300565b925050602083015167ffffffffffffffff8111156200039d576200039c620001ba565b5b620003ab8582860162000300565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003e082620003b5565b9050919050565b620003f281620003d4565b82525050565b5f6020820190506200040d5f830184620003e7565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200046257607f821691505b6020821081036200047857620004776200041d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620004dc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200049f565b620004e886836200049f565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620005326200052c620005268462000500565b62000509565b62000500565b9050919050565b5f819050919050565b6200054d8362000512565b620005656200055c8262000539565b848454620004ab565b825550505050565b5f90565b6200057b6200056d565b6200058881848462000542565b505050565b5b81811015620005af57620005a35f8262000571565b6001810190506200058e565b5050565b601f821115620005fe57620005c8816200047e565b620005d38462000490565b81016020851015620005e3578190505b620005fb620005f28562000490565b8301826200058d565b50505b505050565b5f82821c905092915050565b5f620006205f198460080262000603565b1980831691505092915050565b5f6200063a83836200060f565b9150826002028217905092915050565b620006558262000413565b67ffffffffffffffff811115620006715762000670620001d6565b5b6200067d82546200044a565b6200068a828285620005b3565b5f60209050601f831160018114620006c0575f8415620006ab578287015190505b620006b785826200062d565b86555062000726565b601f198416620006d0866200047e565b5f5b82811015620006f957848901518255600182019150602085019450602081019050620006d2565b8683101562000719578489015162000715601f8916826200060f565b8355505b6001600288020188555050505b505050505050565b612211806200073c5f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a0578063a22cb4651161006f578063a22cb465146102ca578063b88d4fde146102e6578063c87b56dd14610302578063e985e9c514610332578063f2fde38b1461036257610114565b8063715018a614610268578063729ad39e146102725780638da5cb5b1461028e57806395d89b41146102ac57610114565b806318160ddd116100e757806318160ddd146101b257806323b872dd146101d057806342842e0e146101ec5780636352211e1461020857806370a082311461023857610114565b806301ffc9a71461011857806306fdde0314610148578063081812fc14610166578063095ea7b314610196575b5f80fd5b610132600480360381019061012d9190611775565b61037e565b60405161013f91906117ba565b60405180910390f35b61015061045f565b60405161015d919061185d565b60405180910390f35b610180600480360381019061017b91906118b0565b6104ef565b60405161018d919061191a565b60405180910390f35b6101b060048036038101906101ab919061195d565b61050a565b005b6101ba610520565b6040516101c791906119aa565b60405180910390f35b6101ea60048036038101906101e591906119c3565b610526565b005b610206600480360381019061020191906119c3565b610625565b005b610222600480360381019061021d91906118b0565b610644565b60405161022f919061191a565b60405180910390f35b610252600480360381019061024d9190611a13565b610655565b60405161025f91906119aa565b60405180910390f35b61027061070b565b005b61028c60048036038101906102879190611b7e565b61071e565b005b610296610781565b6040516102a3919061191a565b60405180910390f35b6102b46107a8565b6040516102c1919061185d565b60405180910390f35b6102e460048036038101906102df9190611bef565b610838565b005b61030060048036038101906102fb9190611cdd565b61084e565b005b61031c600480360381019061031791906118b0565b610873565b604051610329919061185d565b60405180910390f35b61034c60048036038101906103479190611d5d565b6108ae565b60405161035991906117ba565b60405180910390f35b61037c60048036038101906103779190611a13565b61093c565b005b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061044857507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104585750610457826109c0565b5b9050919050565b60606001805461046e90611dc8565b80601f016020809104026020016040519081016040528092919081815260200182805461049a90611dc8565b80156104e55780601f106104bc576101008083540402835291602001916104e5565b820191905f5260205f20905b8154815290600101906020018083116104c857829003601f168201915b5050505050905090565b5f6104f982610a29565b5061050382610aaf565b9050919050565b61051c8282610517610ae8565b610aef565b5050565b60075481565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610596575f6040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161058d919061191a565b60405180910390fd5b5f6105a983836105a4610ae8565b610b01565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461061f578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161061693929190611df8565b60405180910390fd5b50505050565b61063f83838360405180602001604052805f81525061084e565b505050565b5f61064e82610a29565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106c6575f6040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106bd919061191a565b60405180910390fd5b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610713610d0c565b61071c5f610d93565b565b610726610d0c565b5f5b815181101561077d5761076a82828151811061074757610746611e2d565b5b602002602001015160075f81548092919061076190611e87565b91905055610e54565b808061077590611e87565b915050610728565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600280546107b790611dc8565b80601f01602080910402602001604051908101604052809291908181526020018280546107e390611dc8565b801561082e5780601f106108055761010080835404028352916020019161082e565b820191905f5260205f20905b81548152906001019060200180831161081157829003601f168201915b5050505050905090565b61084a610843610ae8565b8383610e64565b5050565b610859848484610526565b61086d610864610ae8565b85858585610fcd565b50505050565b606061087e82610a29565b5061088882611179565b6040516020016108989190612080565b6040516020818303038152906040529050919050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b610944610d0c565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109b4575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109ab919061191a565b60405180910390fd5b6109bd81610d93565b50565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f80610a3483611243565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610aa657826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a9d91906119aa565b60405180910390fd5b80915050919050565b5f60055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b610afc838383600161127c565b505050565b5f80610b0c84611243565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b4d57610b4c81848661143b565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610bd857610b8c5f855f8061127c565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610c5757600160045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460035f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b610d14610ae8565b73ffffffffffffffffffffffffffffffffffffffff16610d32610781565b73ffffffffffffffffffffffffffffffffffffffff1614610d9157610d55610ae8565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610d88919061191a565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b610e5f82825f610b01565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed457816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610ecb919061191a565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610fc091906117ba565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611172578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b815260040161102b94939291906120fe565b6020604051808303815f875af192505050801561106657506040513d601f19601f82011682018060405250810190611063919061215c565b60015b6110e7573d805f8114611094576040519150601f19603f3d011682016040523d82523d5f602084013e611099565b606091505b505f8151036110df57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110d6919061191a565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461117057836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611167919061191a565b60405180910390fd5b505b5050505050565b60605f6001611187846114fe565b0190505f8167ffffffffffffffff8111156111a5576111a4611a42565b5b6040519080825280601f01601f1916602001820160405280156111d75781602001600182028036833780820191505090505b5090505f82602001820190505b600115611238578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161122d5761122c612187565b5b0494505f85036111e4575b819350505050919050565b5f60035f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806112b457505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156113e6575f6112c384610a29565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561132d57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611340575061133e81846108ae565b155b1561138257826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611379919061191a565b60405180910390fd5b81156113e457838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360055f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61144683838361164f565b6114f9575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ba57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016114b191906119aa565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016114f09291906121b4565b60405180910390fd5b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061155a577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816115505761154f612187565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611597576d04ee2d6d415b85acef8100000000838161158d5761158c612187565b5b0492506020810190505b662386f26fc1000083106115c657662386f26fc1000083816115bc576115bb612187565b5b0492506010810190505b6305f5e10083106115ef576305f5e10083816115e5576115e4612187565b5b0492506008810190505b612710831061161457612710838161160a57611609612187565b5b0492506004810190505b60648310611637576064838161162d5761162c612187565b5b0492506002810190505b600a8310611646576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561170657508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116c757506116c684846108ae565b5b8061170557508273ffffffffffffffffffffffffffffffffffffffff166116ed83610aaf565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61175481611720565b811461175e575f80fd5b50565b5f8135905061176f8161174b565b92915050565b5f6020828403121561178a57611789611718565b5b5f61179784828501611761565b91505092915050565b5f8115159050919050565b6117b4816117a0565b82525050565b5f6020820190506117cd5f8301846117ab565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561180a5780820151818401526020810190506117ef565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61182f826117d3565b61183981856117dd565b93506118498185602086016117ed565b61185281611815565b840191505092915050565b5f6020820190508181035f8301526118758184611825565b905092915050565b5f819050919050565b61188f8161187d565b8114611899575f80fd5b50565b5f813590506118aa81611886565b92915050565b5f602082840312156118c5576118c4611718565b5b5f6118d28482850161189c565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611904826118db565b9050919050565b611914816118fa565b82525050565b5f60208201905061192d5f83018461190b565b92915050565b61193c816118fa565b8114611946575f80fd5b50565b5f8135905061195781611933565b92915050565b5f806040838503121561197357611972611718565b5b5f61198085828601611949565b92505060206119918582860161189c565b9150509250929050565b6119a48161187d565b82525050565b5f6020820190506119bd5f83018461199b565b92915050565b5f805f606084860312156119da576119d9611718565b5b5f6119e786828701611949565b93505060206119f886828701611949565b9250506040611a098682870161189c565b9150509250925092565b5f60208284031215611a2857611a27611718565b5b5f611a3584828501611949565b91505092915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611a7882611815565b810181811067ffffffffffffffff82111715611a9757611a96611a42565b5b80604052505050565b5f611aa961170f565b9050611ab58282611a6f565b919050565b5f67ffffffffffffffff821115611ad457611ad3611a42565b5b602082029050602081019050919050565b5f80fd5b5f611afb611af684611aba565b611aa0565b90508083825260208201905060208402830185811115611b1e57611b1d611ae5565b5b835b81811015611b475780611b338882611949565b845260208401935050602081019050611b20565b5050509392505050565b5f82601f830112611b6557611b64611a3e565b5b8135611b75848260208601611ae9565b91505092915050565b5f60208284031215611b9357611b92611718565b5b5f82013567ffffffffffffffff811115611bb057611baf61171c565b5b611bbc84828501611b51565b91505092915050565b611bce816117a0565b8114611bd8575f80fd5b50565b5f81359050611be981611bc5565b92915050565b5f8060408385031215611c0557611c04611718565b5b5f611c1285828601611949565b9250506020611c2385828601611bdb565b9150509250929050565b5f80fd5b5f67ffffffffffffffff821115611c4b57611c4a611a42565b5b611c5482611815565b9050602081019050919050565b828183375f83830152505050565b5f611c81611c7c84611c31565b611aa0565b905082815260208101848484011115611c9d57611c9c611c2d565b5b611ca8848285611c61565b509392505050565b5f82601f830112611cc457611cc3611a3e565b5b8135611cd4848260208601611c6f565b91505092915050565b5f805f8060808587031215611cf557611cf4611718565b5b5f611d0287828801611949565b9450506020611d1387828801611949565b9350506040611d248782880161189c565b925050606085013567ffffffffffffffff811115611d4557611d4461171c565b5b611d5187828801611cb0565b91505092959194509250565b5f8060408385031215611d7357611d72611718565b5b5f611d8085828601611949565b9250506020611d9185828601611949565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611ddf57607f821691505b602082108103611df257611df1611d9b565b5b50919050565b5f606082019050611e0b5f83018661190b565b611e18602083018561199b565b611e25604083018461190b565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611e918261187d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611ec357611ec2611e5a565b5b600182019050919050565b5f81905092915050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d5f8201527f65223a224e656f6e20566967696c616e7465206279204172736f6e6963202300602082015250565b5f611f32603f83611ece565b9150611f3d82611ed8565b603f82019050919050565b5f611f52826117d3565b611f5c8185611ece565b9350611f6c8185602086016117ed565b80840191505092915050565b7f222c226465736372697074696f6e223a2254686520437962657220566967696c5f8201527f616e7465206f662074686520426c617374696e2720556e646572776f726c642260208201527f2c22696d616765223a2268747470733a2f2f6d61356a6a336164726c3773786e60408201527f7070726b7a6e65747166657332706f71696b366f6d786c356f726f7564337a3360608201527f3462773635612e617277656176652e6e65742f5944715537414f4b5f7975313760808201527f347179306b34464a4c54335151727a6d58583130585548764f2d4274376f227d60a082015250565b5f61206a60c083611ece565b915061207582611f78565b60c082019050919050565b5f61208a82611f26565b91506120968284611f48565b91506120a18261205e565b915081905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6120d0826120ac565b6120da81856120b6565b93506120ea8185602086016117ed565b6120f381611815565b840191505092915050565b5f6080820190506121115f83018761190b565b61211e602083018661190b565b61212b604083018561199b565b818103606083015261213d81846120c6565b905095945050505050565b5f815190506121568161174b565b92915050565b5f6020828403121561217157612170611718565b5b5f61217e84828501612148565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506121c75f83018561190b565b6121d4602083018461199b565b939250505056fea2646970667358221220db29e40b621673da1b0896fa686042e9d712784a944b9b2daf9d9e47c909fc5664736f6c634300081400330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000194e656f6e20566967696c616e7465206279204172736f6e69630000000000000000000000000000000000000000000000000000000000000000000000000000044e656f6e00000000000000000000000000000000000000000000000000000000