Overview ERC721
Total Supply:
0 HERO

Holders:
6
Profile Summary
Blockchain:
Blast Sepolia (168587773)

Contract Source Code Verified (Exact Match)
Contract Name:
HeroCards

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 999999 runs

Created At:
Fri, 21 Jun 2024 10:00:16 GMT
AccessControl.sol
@openzeppelin
contracts
access
AccessControl.sol


Contract ABI
[
  {
    "inputs": [],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "AccessControlBadConfirmation",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint48",
        "name": "schedule",
        "type": "uint48"
      }
    ],
    "name": "AccessControlEnforcedDefaultAdminDelay",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "AccessControlEnforcedDefaultAdminRules",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "defaultAdmin",
        "type": "address"
      }
    ],
    "name": "AccessControlInvalidDefaultAdmin",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "bytes32",
        "name": "neededRole",
        "type": "bytes32"
      }
    ],
    "name": "AccessControlUnauthorizedAccount",
    "type": "error"
  },
  {
    "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": "uint8",
        "name": "bits",
        "type": "uint8"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "SafeCastOverflowedUintDowncast",
    "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": [],
    "name": "DefaultAdminDelayChangeCanceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint48",
        "name": "newDelay",
        "type": "uint48"
      },
      {
        "indexed": false,
        "internalType": "uint48",
        "name": "effectSchedule",
        "type": "uint48"
      }
    ],
    "name": "DefaultAdminDelayChangeScheduled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [],
    "name": "DefaultAdminTransferCanceled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "newAdmin",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint48",
        "name": "acceptSchedule",
        "type": "uint48"
      }
    ],
    "name": "DefaultAdminTransferScheduled",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "previousAdminRole",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "newAdminRole",
        "type": "bytes32"
      }
    ],
    "name": "RoleAdminChanged",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleGranted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "sender",
        "type": "address"
      }
    ],
    "name": "RoleRevoked",
    "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"
  },
  {
    "stateMutability": "payable",
    "type": "fallback"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "EXECUTION_DELEGATE_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "acceptDefaultAdminTransfer",
    "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": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newAdmin",
        "type": "address"
      }
    ],
    "name": "beginDefaultAdminTransfer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "cancelDefaultAdminTransfer",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint48",
        "name": "newDelay",
        "type": "uint48"
      }
    ],
    "name": "changeDefaultAdminDelay",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultAdmin",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultAdminDelay",
    "outputs": [
      {
        "internalType": "uint48",
        "name": "",
        "type": "uint48"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "defaultAdminDelayIncreaseWait",
    "outputs": [
      {
        "internalType": "uint48",
        "name": "",
        "type": "uint48"
      }
    ],
    "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": "bytes32",
        "name": "role",
        "type": "bytes32"
      }
    ],
    "name": "getRoleAdmin",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "grantRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "hasRole",
    "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": "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": "pendingDefaultAdmin",
    "outputs": [
      {
        "internalType": "address",
        "name": "newAdmin",
        "type": "address"
      },
      {
        "internalType": "uint48",
        "name": "schedule",
        "type": "uint48"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pendingDefaultAdminDelay",
    "outputs": [
      {
        "internalType": "uint48",
        "name": "newDelay",
        "type": "uint48"
      },
      {
        "internalType": "uint48",
        "name": "schedule",
        "type": "uint48"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "revokeRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "rollbackDefaultAdminDelay",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "safeMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      }
    ],
    "name": "safeMintwithCounter",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "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": "_baseURI",
        "type": "string"
      }
    ],
    "name": "setBaseURI",
    "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": "tokenCounter",
    "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": [
      {
        "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"
  },
  {
    "stateMutability": "payable",
    "type": "receive"
  }
]


Contract Creation Code
608060409080825234620003305760009033156200031c5750600180546001600160d01b031681556002549091906001600160a01b0381166200030b576001600160a01b0319163390811760025562000058906200039c565b506200006660035462000335565b90601f91828111620002a1575b50604f60035560038152666172642f76312f60c81b83602083207f68747470733a2f2f6465762d6170692e6865726f782e6170702f6865726f2d638155015573430000000000000000000000000000000000000290813b156200025c578451634e606c4760e01b8152818160048183875af18015620002975762000285575b5090803b1562000269578180916024875180948193631d70c8d360e31b83523360048401525af180156200025f579082916200026d575b5050732fc95838c71e76ec69ff817983bff17c710f34e0803b15620002695781809160248751809481936336b91f2b60e01b83523360048401525af180156200025f5762000244575b50506200018160055462000335565b81811162000212575b506008634865726f60e01b01600555600654620001a79062000335565b90808211620001ce575b6008634845524f60e01b016006558351612f7290816200042e8239f35b60066000520160051c7ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f908101905b81811015620001b157600081558201620001fd565b600560005282826020600020920160051c8201915b828110620002375750506200018a565b6000815501839062000227565b62000250829162000372565b6200025c578062000172565b80fd5b85513d84823e3d90fd5b5080fd5b620002789062000372565b6200025c57803862000129565b620002909062000372565b38620000f2565b86513d84823e3d90fd5b60038252820160051c7fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01837fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d5b828110620002ff57505062000073565b838155018490620002ef565b8351631fe1e13d60e11b8152600490fd5b602491636116401160e11b82526004820152fd5b600080fd5b90600182811c9216801562000367575b60208310146200035157565b634e487b7160e01b600052602260045260246000fd5b91607f169162000345565b6001600160401b0381116200038657604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200042957818052816020526040822081835260205260408220600160ff1982541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b509056fe608060408181526004918236101561001f575b505050361561001d57005b005b600092833560e01c91826301ffc9a714611ef057508163022d63fb14611eb457816306fdde0314611dec578163081812fc14611d86578163095ea7b314611c2f5781630aa6220b14611b4857816323b872dd14611a8b578163248a9ca314611a435781632f2ff15d146119e157816336568abe1461186357816340d097c31461180857816342842e0e146117d757816342966c681461167257816355f804b314611445578163634e93da146112f25781636352211e1461129f578163649a5ec7146110655781636c0360eb14610f9d57816370a0823114610f04578163846ff23c14610eab57816384ef8ffc14610e585781638da5cb5b14610e5857816391d1485414610de857816395d89b4114610cc7578163a1eda53c14610c37578163a217fddf14610bfe578163a22cb46514610afa578163b88d4fde146109c0578163c87b56dd146106ac578163cc8463c814610662578163cefc1429146104c9578163cf6eefb714610465578163d082e38114610425578163d547741f14610398578163d602b9fd146102fb578163e201872614610241575063e985e9c5146101c65780610012565b3461023d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5760ff816020936102026120da565b61020a612102565b73ffffffffffffffffffffffffffffffffffffffff9182168352600a875283832091168252855220549151911615158152f35b5080fd5b83833461023d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5761028d61027d6120da565b610285612346565b8454906129de565b61029783546127ba565b918284557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83019283116102cf576020838351908152f35b806011857f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b833461039557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610395576103326122d5565b600180547fffffffffffff0000000000000000000000000000000000000000000000000000811690915560a01c65ffffffffffff1661036e5780f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051098180a180f35b80fd5b8391503461023d57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5780356103d3612102565b9181156103fe57506103f560018495836103fa965286602052862001546123a2565b61252d565b5080f35b84517f3fc3c27a000000000000000000000000000000000000000000000000000000008152fd5b90503461046157827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126104615760209250549051908152f35b8280fd5b82843461039557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103955750600154815173ffffffffffffffffffffffffffffffffffffffff8216815260a09190911c65ffffffffffff166020820152f35b83833461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5760015473ffffffffffffffffffffffffffffffffffffffff90811633036106335760015473ffffffffffffffffffffffffffffffffffffffff811692919060a01c65ffffffffffff1680158015610629575b6105fa575060025490610586817fffffffffffffffffffffffff00000000000000000000000000000000000000009384811660025516612597565b50600254928184166105d257506105a694955083169116176002556123c8565b507fffffffffffff00000000000000000000000000000000000000000000000000006001541660015580f35b8690517f3fc3c27a000000000000000000000000000000000000000000000000000000008152fd5b856024918451917f19ca5ebb000000000000000000000000000000000000000000000000000000008352820152fd5b504281101561054b565b81517fc22c80220000000000000000000000000000000000000000000000000000000081523381860152602490fd5b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5760209065ffffffffffff6106a46126ed565b915191168152f35b9050823461039557602091827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5780356106eb81612d12565b50600354906106f982612282565b156109a55791839083907a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008281811015610998575b5050866d04ee2d6d415b85acef81000000008084101561098a575b5050662386f26fc100008083101561097b575b506305f5e1008083101561096c575b5061271080831015610960575b50506064811015610952575b600a80911015610948575b600192838301916107b261079d84612211565b936107aa8b5195866121d0565b808552612211565b958560218a8601967fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0809a01368937860101905b6108ee575b50505087519580946107fc83612282565b928982821691826000146108ab575050600114610852575b505050938261083d9361083083969461084e9851938491612074565b01039081018352826121d0565b925b51928284938452830190612097565b0390f35b8893949550600382527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b8383106108965750505085010191908181610830610814565b8054898401860152899490920191810161087d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016818b0152841515909402890190930195508492508391506108309050610814565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff839101917f30313233343536373839616263646566000000000000000000000000000000008282061a8353049086826107e657506107eb565b906001019061078a565b60646002910491019061077f565b92019190048780610773565b60089193920491019188610766565b60109193920491019188610757565b930192909104908689610744565b8994500491508880610729565b50505061084e908351906109b882612185565b81529261083f565b8391503461023d5760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d576109fa6120da565b610a02612102565b6044359160643567ffffffffffffffff8111610af65736602382011215610af657610a36903690602481880135910161224b565b93610a3f612346565b610a47612346565b73ffffffffffffffffffffffffffffffffffffffff80841615610ac757610a6f3386866127e7565b8116908316808203610a8c57505050610a89949550612d73565b80f35b6064935085908951937f64283d7b00000000000000000000000000000000000000000000000000000000855284015260248301526044820152fd5b602482888a51917f64a0ae92000000000000000000000000000000000000000000000000000000008352820152fd5b8580fd5b9190503461046157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046157610b336120da565b9060243591821515809303610bfa5773ffffffffffffffffffffffffffffffffffffffff16928315610bcc5750338452600a6020528084208385526020528084207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff8416179055519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b8360249251917f5b08ba18000000000000000000000000000000000000000000000000000000008352820152fd5b8480fd5b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5751908152602090f35b82843461039557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610395576002548060d01c9182151580610cbd575b15610caf575065ffffffffffff61084e9160a01c1691925b5165ffffffffffff928316815292909116602083015281906040820190565b9283925061084e9150610c90565b5042831015610c78565b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5780519082600654610d0781612282565b80855291600191808316908115610da25750600114610d45575b505050610d338261084e9403836121d0565b51918291602083526020830190612097565b9450600685527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f5b828610610d8a57505050610d3382602061084e9582010194610d21565b80546020878701810191909152909501948101610d6d565b61084e975086935060209250610d339491507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682840152151560051b82010194610d21565b90503461046157817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610461578160209360ff92610e27612102565b9035825281865273ffffffffffffffffffffffffffffffffffffffff83832091168252855220541690519015158152f35b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5760209073ffffffffffffffffffffffffffffffffffffffff600254169051908152f35b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d57602090517f5fd5b2f6247f15ca406161db23ae5fb61b1d0a4e5cc0dcb766481246ee4f316b8152f35b8284346103955760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103955773ffffffffffffffffffffffffffffffffffffffff610f526120da565b16928315610f6f5750806020938392526008845220549051908152f35b9060249251917f89c62b64000000000000000000000000000000000000000000000000000000008352820152fd5b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5780519082600354610fdd81612282565b80855291600191808316908115610da2575060011461100857505050610d338261084e9403836121d0565b9450600385527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b82861061104d57505050610d3382602061084e9582010194610d21565b80546020878701810191909152909501948101611030565b83833461023d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d57823565ffffffffffff80821690818303610bfa576110b26122d5565b6110bb4261276f565b91816110c56126ed565b168082111561123957509495507ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b946111a992611113929091620697808082101561123257505b1690612726565b926002548060d01c806111af575b50506002805473ffffffffffffffffffffffffffffffffffffffff1660a085901b79ffffffffffff0000000000000000000000000000000000000000161760d086901b7fffffffffffff0000000000000000000000000000000000000000000000000000161790555165ffffffffffff92831681529190921660208201529081906040820190565b0390a180f35b4211156112085779ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff00000000000000000000000000000000000000000000000000006001549260301b169116176001555b8680611121565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec58680a1611201565b905061110c565b03908111611273577ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b9495506111a9916111139190612726565b6024856011887f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8284346103955760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610395575073ffffffffffffffffffffffffffffffffffffffff6106a460209335612d12565b50503461023d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d577f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed6602061134e6120da565b6113566122d5565b6113706113624261276f565b61136a6126ed565b90612726565b9073ffffffffffffffffffffffffffffffffffffffff6113b36001549065ffffffffffff73ffffffffffffffffffffffffffffffffffffffff83169260a01c1690565b9290501694600154867fffffffffffff000000000000000000000000000000000000000000000000000079ffffffffffff00000000000000000000000000000000000000008660a01b169216171760015565ffffffffffff80921661141c575b5191168152a280f35b7f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a96051098780a1611413565b8334610395576020807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5767ffffffffffffffff833581811161166e573660238201121561166e576114a6903690602481880135910161224b565b936114af6122d5565b845191821161164257506003916114c68354612282565b601f81116115e1575b5080601f8311600114611526575083948293949261151b575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8260011b92841b1c191617905580f35b0151905084806114e8565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08316958486527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9286905b8882106115c957505083600195969710611593575b505050811b01905580f35b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f884871b161c19169055848080611588565b80600185968294968601518155019501930190611573565b8385527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c810191838510611638575b601f0160051c01905b81811061162d57506114cf565b858155600101611620565b9091508190611617565b8360416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b8380fd5b919050346104615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610461578135906116af612346565b818452600760205273ffffffffffffffffffffffffffffffffffffffff818520541682858215928315611768575b82825260076020528482207fffffffffffffffffffffffff000000000000000000000000000000000000000081541690557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a461173a578380f35b6024935051917f7e273289000000000000000000000000000000000000000000000000000000008352820152fd5b6117a183600052600960205260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b80825260086020528482207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81540190556116dd565b8391503461023d576117e836612125565b916117f1612346565b8551936117fd85612185565b858552610a3f612346565b83903461023d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d576118546118446120da565b61184c612346565b8254906129de565b61185e81546127ba565b905580f35b83833461023d57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d57823561189d612102565b918115806119bd575b6118fb575b3373ffffffffffffffffffffffffffffffffffffffff8416036118d35750906103fa9161252d565b8490517f6697b232000000000000000000000000000000000000000000000000000000008152fd5b60015465ffffffffffff60a082901c169073ffffffffffffffffffffffffffffffffffffffff16158015906119ad575b801561199b575b61196457507fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff600154166001556118ab565b8565ffffffffffff60249351927f19ca5ebb0000000000000000000000000000000000000000000000000000000084521690820152fd5b504265ffffffffffff82161015611932565b5065ffffffffffff81161561192b565b5073ffffffffffffffffffffffffffffffffffffffff8060025416908416146118a6565b8391503461023d57827ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d578035611a1c612102565b9181156103fe5750611a3e60018495836103fa965286602052862001546123a2565b612483565b9050346104615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046157816020936001923581528085522001549051908152f35b9190503461046157611a9c36612125565b9190611aa6612346565b73ffffffffffffffffffffffffffffffffffffffff9081811615611b1957611ad182918533916127e7565b9216911692818403611ae1578580f35b6064955051937f64283d7b00000000000000000000000000000000000000000000000000000000855284015260248301526044820152fd5b602486888751917f64a0ae92000000000000000000000000000000000000000000000000000000008352820152fd5b833461039557807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261039557611b7f6122d5565b6002548060d01c80611bac575b8273ffffffffffffffffffffffffffffffffffffffff6002541660025580f35b421115611c055779ffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffff00000000000000000000000000000000000000000000000000006001549260301b169116176001555b8180611b8c565b507f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec58180a1611bfe565b9190503461046157807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046157611c686120da565b9160243590611c7682612d12565b9033151580611d66575b80611d31575b611d015750819073ffffffffffffffffffffffffffffffffffffffff809516948591167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258780a4835260096020528220907fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b6024908451907fa9fbf51f0000000000000000000000000000000000000000000000000000000082523390820152fd5b5073ffffffffffffffffffffffffffffffffffffffff82168652600a60205283862033875260205260ff848720541615611c86565b503373ffffffffffffffffffffffffffffffffffffffff83161415611c80565b9050346104615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610461578160209373ffffffffffffffffffffffffffffffffffffffff9235611ddb81612d12565b508152600985522054169051908152f35b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5780519082600554611e2c81612282565b80855291600191808316908115610da25750600114611e5757505050610d338261084e9403836121d0565b9450600585527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db05b828610611e9c57505050610d3382602061084e9582010194610d21565b80546020878701810191909152909501948101611e7f565b50503461023d57817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261023d5760209051620697808152f35b8491346104615760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261046157357fffffffff00000000000000000000000000000000000000000000000000000000811680910361046157602092507f80ac58cd00000000000000000000000000000000000000000000000000000000811490811561204a575b8115612020575b8115611f90575b5015158152f35b7f3149878600000000000000000000000000000000000000000000000000000000811491508115611fc3575b5083611f89565b7f7965db0b00000000000000000000000000000000000000000000000000000000811491508115611ff6575b5083611fbc565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483611fef565b7f314987860000000000000000000000000000000000000000000000000000000081149150611f82565b7f5b5e139f0000000000000000000000000000000000000000000000000000000081149150611f7b565b60005b8381106120875750506000910152565b8181015183820152602001612077565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936120d381518092818752878088019101612074565b0116010190565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036120fd57565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff821682036120fd57565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126120fd5773ffffffffffffffffffffffffffffffffffffffff9060043582811681036120fd579160243590811681036120fd579060443590565b6020810190811067ffffffffffffffff8211176121a157604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176121a157604052565b67ffffffffffffffff81116121a157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b92919261225782612211565b9161226560405193846121d0565b8294818452818301116120fd578281602093846000960137010152565b90600182811c921680156122cb575b602083101461229c57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612291565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff161561230f5750565b604490604051907fe2517d3f0000000000000000000000000000000000000000000000000000000082523360048301526024820152fd5b3360009081527f924aaf648b2e60bffdabce3a95a3cb144165e2b25cb34b5e318fb5316b5eb23460205260409020547f5fd5b2f6247f15ca406161db23ae5fb61b1d0a4e5cc0dcb766481246ee4f316b9060ff161561230f5750565b80600052600060205260406000203360005260205260ff604060002054161561230f5750565b73ffffffffffffffffffffffffffffffffffffffff1660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff1661247f5781805281602052604082208183526020526040822060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905533917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b5090565b906000918083528260205273ffffffffffffffffffffffffffffffffffffffff6040842092169182845260205260ff604084205416156000146125285780835282602052604083208284526020526040832060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9061254391801580612573575b6125465761264c565b90565b7fffffffffffffffffffffffff00000000000000000000000000000000000000006002541660025561264c565b5073ffffffffffffffffffffffffffffffffffffffff80600254169083161461253a565b73ffffffffffffffffffffffffffffffffffffffff1660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff161561247f578180528160205260408220818352602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905533917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b8180a4600190565b906000918083528260205273ffffffffffffffffffffffffffffffffffffffff6040842092169182845260205260ff604084205416600014612528578083528260205260408320828452602052604083207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a4600190565b6002548060d01c801515908161271c575b50156127125760a01c65ffffffffffff1690565b5060015460d01c90565b90504211386126fe565b91909165ffffffffffff8080941691160191821161274057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b65ffffffffffff90818111612782571690565b604490604051907f6dfcc650000000000000000000000000000000000000000000000000000000008252603060048301526024820152fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146127405760010190565b916000928284526020916007835273ffffffffffffffffffffffffffffffffffffffff94604086808284205416978894168015158061290e575b505060079084957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef956128a0575b16958661288a575b878452528120847fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580a490565b8684526008815282842060018154019055612857565b6128d989600052600960205260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b868552600888528385207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff815401905561284f565b939592945090928061299d575b1561292c5791828894929593612821565b8684918915600014612968575060249151907f7e2732890000000000000000000000000000000000000000000000000000000082526004820152fd5b9060449251917f177e802f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5080881480156129c2575b8061291b575086855260098652808385872054161461291b565b50878552600a8652838520818652865260ff84862054166129a8565b60408051926129ec84612185565b60009081855273ffffffffffffffffffffffffffffffffffffffff94858516948515612ce25782845260209660078852858520541683878215159283612c74575b81885260088b528888206001815401905582885260078b52888820827fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8880a4612c44573b612aa6575b505050505050565b85612afd9185969798949551809381927f150b7a0200000000000000000000000000000000000000000000000000000000968784523360048501528960248501526044840152608060648401526084830190612097565b0381878a5af1849181612bec575b50612b82575050503d600014612b7a573d612b2581612211565b90612b32845192836121d0565b81528091853d92013e5b80519384612b74576024848451907f64a0ae920000000000000000000000000000000000000000000000000000000082526004820152fd5b84925001fd5b506060612b3c565b9092507fffffffff000000000000000000000000000000000000000000000000000000009195501603612bbc575050388080808080612a9e565b6024925051907f64a0ae920000000000000000000000000000000000000000000000000000000082526004820152fd5b9091508781813d8311612c3d575b612c0481836121d0565b81010312610bfa57517fffffffff0000000000000000000000000000000000000000000000000000000081168103610bfa579038612b0b565b503d612bfa565b6024848651907f73c6ac6e0000000000000000000000000000000000000000000000000000000082526004820152fd5b612cad83600052600960205260406000207fffffffffffffffffffffffff00000000000000000000000000000000000000008154169055565b80885260088b528888207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055612a2d565b6024848651907f64a0ae920000000000000000000000000000000000000000000000000000000082526004820152fd5b80600052600760205273ffffffffffffffffffffffffffffffffffffffff60406000205416908115612d42575090565b602490604051907f7e2732890000000000000000000000000000000000000000000000000000000082526004820152fd5b813b612d80575b50505050565b73ffffffffffffffffffffffffffffffffffffffff949192939480931693604051937f150b7a02000000000000000000000000000000000000000000000000000000009283865233600487015216602485015260448401526080606484015282612df06020966084830190612097565b039285816000958187895af1849181612ee4575b50612e7c575050503d600014612e74573d612e1e81612211565b90612e2c60405192836121d0565b81528091843d92013e5b80519283612e6f57602483604051907f64a0ae920000000000000000000000000000000000000000000000000000000082526004820152fd5b019050fd5b506060612e36565b9092507fffffffff000000000000000000000000000000000000000000000000000000009194501603612eb3575038808080612d7a565b602490604051907f64a0ae920000000000000000000000000000000000000000000000000000000082526004820152fd5b9091508681813d8311612f35575b612efc81836121d0565b81010312610bfa57517fffffffff0000000000000000000000000000000000000000000000000000000081168103610bfa579038612e04565b503d612ef256fea2646970667358221220bf07bfe77cb20c36993cd77c83c39acc7072131cb35127b7556e8a40635311d864736f6c63430008140033