Overview ERC1155
Total Supply:
0 RYCA

Holders:
2
Profile Summary
Blockchain:
Arbitrum Sepolia (421614)

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

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 1000 runs

Created At:
Mon, 23 Sep 2024 13:36:45 GMT
VenlyErc1155.sol
contracts
VenlyErc1155.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "name_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "symbol_",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "contractURI_",
        "type": "string"
      },
      {
        "internalType": "address",
        "name": "childChainManager",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address[]",
        "name": "additionalOwners",
        "type": "address[]"
      },
      {
        "internalType": "bool",
        "name": "_autoApprovedAddressesLocked",
        "type": "bool"
      },
      {
        "internalType": "address",
        "name": "royaltyReceiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "royaltyFeeNumerator",
        "type": "uint96"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "numerator",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "denominator",
        "type": "uint256"
      }
    ],
    "name": "ERC2981InvalidDefaultRoyalty",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC2981InvalidDefaultRoyaltyReceiver",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "numerator",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "denominator",
        "type": "uint256"
      }
    ],
    "name": "ERC2981InvalidTokenRoyalty",
    "type": "error"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "ERC2981InvalidTokenRoyaltyReceiver",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "account",
        "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": false,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "allowed",
        "type": "bool"
      }
    ],
    "name": "AutoApprove",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "typeIds",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "maxSupplies",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "bool[]",
        "name": "fungible",
        "type": "bool[]"
      },
      {
        "indexed": false,
        "internalType": "bool[]",
        "name": "burnable",
        "type": "bool[]"
      },
      {
        "indexed": false,
        "internalType": "string[]",
        "name": "uri",
        "type": "string[]"
      }
    ],
    "name": "BatchTypeCreation",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "FungibleBatchMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "FungibleMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "address",
        "name": "userAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "address payable",
        "name": "relayerAddress",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bytes",
        "name": "functionSignature",
        "type": "bytes"
      }
    ],
    "name": "MetaTransactionExecuted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      }
    ],
    "name": "NonFungibleBatchMinted",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "NonFungibleMinted",
    "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": "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": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "indexed": false,
        "internalType": "uint256[]",
        "name": "values",
        "type": "uint256[]"
      }
    ],
    "name": "TransferBatch",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "TransferSingle",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "fungible",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "burnable",
        "type": "bool"
      },
      {
        "indexed": false,
        "internalType": "string",
        "name": "uri",
        "type": "string"
      }
    ],
    "name": "TypeCreation",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "string",
        "name": "value",
        "type": "string"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "URI",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "DEFAULT_ADMIN_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEPOSITOR_ROLE",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "ERC712_VERSION",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "autoApprovedAddressesLocked",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      }
    ],
    "name": "balanceOfBatch",
    "outputs": [
      {
        "internalType": "uint256[]",
        "name": "",
        "type": "uint256[]"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "burn",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "burnBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "contractURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "fungible",
        "type": "bool"
      },
      {
        "internalType": "bool",
        "name": "burnable",
        "type": "bool"
      },
      {
        "internalType": "string",
        "name": "uri_",
        "type": "string"
      }
    ],
    "name": "createType",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "burnable",
        "type": "bool"
      },
      {
        "internalType": "string",
        "name": "uri_",
        "type": "string"
      },
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "createTypeAndMintFungibleBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "maxSupply",
        "type": "uint256"
      },
      {
        "internalType": "bool",
        "name": "burnable",
        "type": "bool"
      },
      {
        "internalType": "string",
        "name": "uri_",
        "type": "string"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      }
    ],
    "name": "createTypeAndMintNonFungibleBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "typeIds",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "maxSupplies",
        "type": "uint256[]"
      },
      {
        "internalType": "bool[]",
        "name": "fungible",
        "type": "bool[]"
      },
      {
        "internalType": "bool[]",
        "name": "burnable",
        "type": "bool[]"
      },
      {
        "internalType": "string[]",
        "name": "uris_",
        "type": "string[]"
      }
    ],
    "name": "createTypes",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "typeId",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxSupply",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "fungible",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "burnable",
            "type": "bool"
          },
          {
            "internalType": "string",
            "name": "uri",
            "type": "string"
          },
          {
            "internalType": "uint256[]",
            "name": "ids",
            "type": "uint256[]"
          },
          {
            "internalType": "address[]",
            "name": "accounts",
            "type": "address[]"
          },
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct TypedERC1155.CreateTypeAndMintCommand[]",
        "name": "commands",
        "type": "tuple[]"
      }
    ],
    "name": "createTypesAndMint",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "deleteDefaultRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "depositData",
        "type": "bytes"
      }
    ],
    "name": "deposit",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "userAddress",
        "type": "address"
      },
      {
        "internalType": "bytes",
        "name": "functionSignature",
        "type": "bytes"
      },
      {
        "internalType": "bytes32",
        "name": "sigR",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "sigS",
        "type": "bytes32"
      },
      {
        "internalType": "uint8",
        "name": "sigV",
        "type": "uint8"
      }
    ],
    "name": "executeMetaTransaction",
    "outputs": [
      {
        "internalType": "bytes",
        "name": "",
        "type": "bytes"
      }
    ],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getChainId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getDomainSeperator",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "user",
        "type": "address"
      }
    ],
    "name": "getNonce",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "nonce",
        "type": "uint256"
      }
    ],
    "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": "account",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isAutoApproved",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "maxSupplyForType",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "typeId",
            "type": "uint256"
          },
          {
            "internalType": "uint256[]",
            "name": "ids",
            "type": "uint256[]"
          },
          {
            "internalType": "address[]",
            "name": "accounts",
            "type": "address[]"
          },
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "internalType": "struct TypedERC1155.MintCommand[]",
        "name": "commands",
        "type": "tuple[]"
      }
    ],
    "name": "mintBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "mintFungible",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "mintFungibleBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "mintNonFungible",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "address[]",
        "name": "accounts",
        "type": "address[]"
      }
    ],
    "name": "mintNonFungibleBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "mintNumber",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "noTokensForType",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "owner",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "renounceOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "role",
        "type": "bytes32"
      },
      {
        "internalType": "address",
        "name": "account",
        "type": "address"
      }
    ],
    "name": "renounceRole",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "resetTokenRoyalty",
    "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": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "salePrice",
        "type": "uint256"
      }
    ],
    "name": "royaltyInfo",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      },
      {
        "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": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeBatchTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "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": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "allowed",
        "type": "bool"
      }
    ],
    "name": "setAutoApprovedAddress",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bool",
        "name": "locked",
        "type": "bool"
      }
    ],
    "name": "setAutoApprovedAddressesLocked",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "_contractURI",
        "type": "string"
      }
    ],
    "name": "setContractURI",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "feeNumerator",
        "type": "uint96"
      }
    ],
    "name": "setDefaultRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      },
      {
        "internalType": "uint96",
        "name": "feeNumerator",
        "type": "uint96"
      }
    ],
    "name": "setTokenRoyalty",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "typeId",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "uri_",
        "type": "string"
      }
    ],
    "name": "setUriForTokenType",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newOwner",
        "type": "address"
      }
    ],
    "name": "transferOwnership",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "typeForToken",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "typeIsBurnable",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "typeIsFungible",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      }
    ],
    "name": "uri",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "",
        "type": "uint256"
      }
    ],
    "name": "usedIds",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256[]",
        "name": "ids",
        "type": "uint256[]"
      },
      {
        "internalType": "uint256[]",
        "name": "amounts",
        "type": "uint256[]"
      }
    ],
    "name": "withdrawBatch",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "id",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "withdrawSingle",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
60806040526007805460ff191690553480156200001b57600080fd5b5060405162006047380380620060478339810160408190526200003e916200070f565b888684808383620000707f8f4f2da22e8ac8f11e15f9fc141cddbb5deea8800186560abb6e68c5496619a982620001cc565b6200007b82620001dc565b50506007805460ff19169115159190911790555050506001600160a01b038516620000ed5760405162461bcd60e51b815260206004820152601960248201527f416e206f776e6572206d75737420626520737570706c6965640000000000000060448201526064015b60405180910390fd5b620000fa600086620001cc565b6012620001088a82620008b7565b506013620001178982620008b7565b506014620001268882620008b7565b5060005b8451811015620001a55760006001600160a01b031685828151811062000154576200015462000983565b60200260200101516001600160a01b0316146200019c576200019c6000801b86838151811062000188576200018862000983565b6020026020010151620001cc60201b60201c565b6001016200012a565b50620001b28282620002b2565b620001bd8562000359565b50505050505050505062000999565b620001d88282620003ab565b5050565b600354600160a81b900460ff1680620001ff5750600354600160a01b900460ff16155b620002645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620000e4565b600354600160a81b900460ff161580156200028f576003805461ffff60a01b191661010160a01b1790555b6200029a8262000451565b8015620001d8576003805460ff60a81b191690555050565b6127106001600160601b038216811015620002f357604051636f483d0960e01b81526001600160601b038316600482015260248101829052604401620000e4565b6001600160a01b0383166200031f57604051635b6cc80560e11b815260006004820152602401620000e4565b50604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217601055565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16620001d85760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556200040d620004f3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6040518060800160405280604f815260200162005ff8604f9139805160209182012082519282019290922060408051808201825260018152603160f81b90840152805180840194909452838101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608401523060808401524660a0808501919091528151808503909101815260c090930190528151910120600455565b6000620004ff62000504565b905090565b60003033036200055c57600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b031691506200055f9050565b50335b90565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620005a357620005a362000562565b604052919050565b600082601f830112620005bd57600080fd5b81516001600160401b03811115620005d957620005d962000562565b6020620005ef601f8301601f1916820162000578565b82815285828487010111156200060457600080fd5b60005b838110156200062457858101830151828201840152820162000607565b506000928101909101919091529392505050565b80516001600160a01b03811681146200065057600080fd5b919050565b600082601f8301126200066757600080fd5b815160206001600160401b0382111562000685576200068562000562565b8160051b6200069682820162000578565b9283528481018201928281019087851115620006b157600080fd5b83870192505b84831015620006db57620006cb8362000638565b82529183019190830190620006b7565b979650505050505050565b805180151581146200065057600080fd5b80516001600160601b03811681146200065057600080fd5b60008060008060008060008060006101208a8c0312156200072f57600080fd5b89516001600160401b03808211156200074757600080fd5b620007558d838e01620005ab565b9a5060208c01519150808211156200076c57600080fd5b6200077a8d838e01620005ab565b995060408c01519150808211156200079157600080fd5b6200079f8d838e01620005ab565b9850620007af60608d0162000638565b9750620007bf60808d0162000638565b965060a08c0151915080821115620007d657600080fd5b50620007e58c828d0162000655565b945050620007f660c08b01620006e6565b92506200080660e08b0162000638565b9150620008176101008b01620006f7565b90509295985092959850929598565b600181811c908216806200083b57607f821691505b6020821081036200085c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008b2576000816000526020600020601f850160051c810160208610156200088d5750805b601f850160051c820191505b81811015620008ae5782815560010162000899565b5050505b505050565b81516001600160401b03811115620008d357620008d362000562565b620008eb81620008e4845462000826565b8462000862565b602080601f8311600181146200092357600084156200090a5750858301515b600019600386901b1c1916600185901b178555620008ae565b600085815260208120601f198616915b82811015620009545788860151825594840194600190910190840162000933565b5085821015620009735787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b61564f80620009a96000396000f3fe60806040526004361061038b5760003560e01c80638a616bc0116101dc578063bd378c7111610102578063f242432a116100a0578063f807393a1161006f578063f807393a14610b62578063fc86b66214610b82578063fcb440b614610baf578063fea6b5d214610bcf57600080fd5b8063f242432a14610ad5578063f2fde38b14610af5578063f44b815814610b15578063f79f20b514610b3557600080fd5b8063d547741f116100dc578063d547741f14610a60578063e8a3d48514610a80578063e985e9c514610a95578063f09d4db014610ab557600080fd5b8063bd378c71146109f0578063cf2c52cb14610a10578063d3d57d8914610a3057600080fd5b8063a217fddf1161017a578063aa1b103f11610149578063aa1b103f1461095b578063aed0ddf214610970578063b88cbbd2146109a0578063bb720188146109c057600080fd5b8063a217fddf146108d2578063a22cb465146108e7578063a3b0b5a314610907578063a582e8f81461093b57600080fd5b8063938e3d7b116101b6578063938e3d7b1461085d57806393f7d6c71461087d57806395d89b411461089d5780639eea5f66146108b257600080fd5b80638a616bc0146107cf5780638da5cb5b146107ef57806391d148541461081757600080fd5b8063248a9ca3116102c157806336568abe1161025f57806364c589941161022e57806364c5899414610753578063715018a61461077357806379920951146107885780637c638212146107b557600080fd5b806336568abe146106c65780634e1273f4146106e65780635944c753146107135780635c5fb5211461073357600080fd5b80632eb2c2d61161029b5780632eb2c2d61461063a5780632f2ff15d1461065a5780633199da021461067a5780633408e470146106b357600080fd5b8063248a9ca3146105955780632a55205a146105c55780632d0335ab1461060457600080fd5b80630f7e59701161032e5780631f55a2bc116103085780631f55a2bc1461052057806320379ee5146105405780632262f53f1461055557806323a283251461057557600080fd5b80630f7e59701461049757806314564cfb146104e05780631aeab0581461050057600080fd5b806306fdde031161036a57806306fdde03146104155780630c53c51c146104375780630e89341c1461044a5780630f699e801461046a57600080fd5b8062fdd58e1461039057806301ffc9a7146103c357806304634d8d146103f3575b600080fd5b34801561039c57600080fd5b506103b06103ab36600461416f565b610bef565b6040519081526020015b60405180910390f35b3480156103cf57600080fd5b506103e36103de3660046141af565b610c9b565b60405190151581526020016103ba565b3480156103ff57600080fd5b5061041361040e3660046141e8565b610dd3565b005b34801561042157600080fd5b5061042a610df5565b6040516103ba919061426b565b61042a610445366004614335565b610e83565b34801561045657600080fd5b5061042a6104653660046143b1565b611089565b34801561047657600080fd5b506103b06104853660046143b1565b600a6020526000908152604090205481565b3480156104a357600080fd5b5061042a6040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b3480156104ec57600080fd5b506104136104fb36600461440f565b611138565b34801561050c57600080fd5b5061041361051b366004614499565b61125f565b34801561052c57600080fd5b5061041361053b366004614551565b611299565b34801561054c57600080fd5b506004546103b0565b34801561056157600080fd5b506104136105703660046145c3565b6112eb565b34801561058157600080fd5b506104136105903660046145e5565b611301565b3480156105a157600080fd5b506103b06105b03660046143b1565b60009081526002602052604090206001015490565b3480156105d157600080fd5b506105e56105e03660046145c3565b611574565b604080516001600160a01b0390931683526020830191909152016103ba565b34801561061057600080fd5b506103b061061f366004614627565b6001600160a01b031660009081526005602052604090205490565b34801561064657600080fd5b506104136106553660046146dc565b611631565b34801561066657600080fd5b50610413610675366004614779565b61197e565b34801561068657600080fd5b506103e3610695366004614627565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156106bf57600080fd5b50466103b0565b3480156106d257600080fd5b506104136106e1366004614779565b6119a6565b3480156106f257600080fd5b5061070661070136600461479c565b611a3e565b6040516103ba91906148a3565b34801561071f57600080fd5b5061041361072e3660046148b6565b611b74565b34801561073f57600080fd5b5061041361074e3660046148f2565b611b93565b34801561075f57600080fd5b5061041361076e36600461495e565b611c08565b34801561077f57600080fd5b50610413611cd8565b34801561079457600080fd5b506103b06107a33660046143b1565b60096020526000908152604090205481565b3480156107c157600080fd5b506007546103e39060ff1681565b3480156107db57600080fd5b506104136107ea3660046143b1565b611cf3565b3480156107fb57600080fd5b506003546040516001600160a01b0390911681526020016103ba565b34801561082357600080fd5b506103e3610832366004614779565b60009182526002602090815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561086957600080fd5b50610413610878366004614988565b611d13565b34801561088957600080fd5b506104136108983660046149c5565b611d2d565b3480156108a957600080fd5b5061042a611e67565b3480156108be57600080fd5b506104136108cd366004614a39565b611e74565b3480156108de57600080fd5b506103b0600081565b3480156108f357600080fd5b5061041361090236600461495e565b611f69565b34801561091357600080fd5b506103b07f8f4f2da22e8ac8f11e15f9fc141cddbb5deea8800186560abb6e68c5496619a981565b34801561094757600080fd5b50610413610956366004614a6e565b612090565b34801561096757600080fd5b506104136120b6565b34801561097c57600080fd5b506103e361098b3660046143b1565b600c6020526000908152604090205460ff1681565b3480156109ac57600080fd5b506104136109bb366004614aab565b6120ce565b3480156109cc57600080fd5b506103e36109db3660046143b1565b600b6020526000908152604090205460ff1681565b3480156109fc57600080fd5b50610413610a0b36600461440f565b61213a565b348015610a1c57600080fd5b50610413610a2b366004614ad7565b612251565b348015610a3c57600080fd5b506103e3610a4b3660046143b1565b600d6020526000908152604090205460ff1681565b348015610a6c57600080fd5b50610413610a7b366004614779565b612326565b348015610a8c57600080fd5b5061042a61234e565b348015610aa157600080fd5b506103e3610ab0366004614b5a565b6123e0565b348015610ac157600080fd5b50610413610ad03660046145e5565b61243a565b348015610ae157600080fd5b50610413610af0366004614b84565b6124e4565b348015610b0157600080fd5b50610413610b10366004614627565b61273d565b348015610b2157600080fd5b50610413610b30366004614bdd565b6127db565b348015610b4157600080fd5b506103b0610b503660046143b1565b6000908152600e602052604090205490565b348015610b6e57600080fd5b50610413610b7d366004614a39565b612990565b348015610b8e57600080fd5b506103b0610b9d3660046143b1565b60086020526000908152604090205481565b348015610bbb57600080fd5b50610413610bca366004614cce565b6129ef565b348015610bdb57600080fd5b50610413610bea366004614499565b612a6f565b60006001600160a01b038316610c725760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b031982167f7965db0b000000000000000000000000000000000000000000000000000000001480610cfe57506001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000145b80610d3257506001600160e01b031982167fd9b67a2600000000000000000000000000000000000000000000000000000000145b80610d6657506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b80610d9a57506001600160e01b031982167ff79f20b500000000000000000000000000000000000000000000000000000000145b80610c9557506001600160e01b031982167f2a55205a000000000000000000000000000000000000000000000000000000001492915050565b6000610de681610de1612a9e565b612aad565b610df08383612b2d565b505050565b60128054610e0290614ce9565b80601f0160208091040260200160405190810160405280929190818152602001828054610e2e90614ce9565b8015610e7b5780601f10610e5057610100808354040283529160200191610e7b565b820191906000526020600020905b815481529060010190602001808311610e5e57829003601f168201915b505050505081565b60408051606081810183526001600160a01b03881660008181526005602090815290859020548452830152918101869052610ec18782878787612c11565b610f335760405162461bcd60e51b815260206004820152602160248201527f5369676e657220616e64207369676e617475726520646f206e6f74206d61746360448201527f68000000000000000000000000000000000000000000000000000000000000006064820152608401610c69565b6001600160a01b038716600090815260056020526040902054610f57906001612d19565b6001600160a01b0388166000908152600560205260409081902091909155517f5845892132946850460bff5a0083f71031bc5bf9aadcd40f1de79423eac9b10b90610fa790899033908a90614d23565b60405180910390a1600080306001600160a01b0316888a604051602001610fcf929190614d58565b60408051601f1981840301815290829052610fe991614d8f565b6000604051808303816000865af19150503d8060008114611026576040519150601f19603f3d011682016040523d82523d6000602084013e61102b565b606091505b50915091508161107d5760405162461bcd60e51b815260206004820152601c60248201527f46756e6374696f6e2063616c6c206e6f74207375636365737366756c000000006044820152606401610c69565b98975050505050505050565b6000818152600a60209081526040808320548352600f90915290208054606091906110b390614ce9565b80601f01602080910402602001604051908101604052809291908181526020018280546110df90614ce9565b801561112c5780601f106111015761010080835404028352916020019161112c565b820191906000526020600020905b81548152906001019060200180831161110f57829003601f168201915b50505050509050919050565b600061114681610de1612a9e565b8382146111bb5760405162461bcd60e51b815260206004820152602f60248201527f6e756d626572206f66206163636f756e7473206d75737420657175616c206e7560448201527f6d626572206f6620616d6f756e747300000000000000000000000000000000006064820152608401610c69565b60005b848110156112175761120f878787848181106111dc576111dc614dab565b90506020020160208101906111f19190614627565b86868581811061120357611203614dab565b90506020020135612d25565b6001016111be565b507fbc11d48c1996f53e33584d90e8717cf38a41a8b337a2a6cebffea04c02c18fbf868686868660405161124f959493929190614e48565b60405180910390a1505050505050565b600061126d81610de1612a9e565b61127b898960008a8a611299565b811561128e5761128e898686868661213a565b505050505050505050565b60006112a781610de1612a9e565b6112b48686868686612ef2565b7fdd645363ea6a3195510fb1e3a13913d327810ec8b23034aa40445504879df82b868686868660405161124f959493929190614e75565b6112fd6112f6612a9e565b838361302b565b5050565b600061130f81610de1612a9e565b606080606080606060005b8781101561152a573689898381811061133557611335614dab565b90506020028101906113479190614eaf565b9050806000013587838151811061136057611360614dab565b602002602001018181525050806020013586838151811061138357611383614dab565b602090810291909101015261139e6060820160408301614cce565b8583815181106113b0576113b0614dab565b911515602092830291909101909101526113d06080820160608301614cce565b8483815181106113e2576113e2614dab565b911515602092830291909101909101526113ff6080820182614ec5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250508551869250859150811061144757611447614dab565b60200260200101819052506114c9816000013582602001358360400160208101906114729190614cce565b6114826080860160608701614cce565b61148f6080870187614ec5565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612ef292505050565b6114d96060820160408301614cce565b15611502576114fd81356114f060c0840184614f0c565b6104fb60e0860186614f0c565b611521565b611521813561151460a0840184614f0c565b610a0b60c0860186614f0c565b5060010161131a565b507f033bdc44ed09ce27d875236b5e356eb738c886bcbe86b77335f35f199230c4748585858585604051611562959493929190614f89565b60405180910390a15050505050505050565b60008281526011602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046bffffffffffffffffffffffff169282019290925282916115f35750604080518082019091526010546001600160a01b0381168252600160a01b90046bffffffffffffffffffffffff1660208201525b602081015160009061271090611617906bffffffffffffffffffffffff1687615050565b6116219190615067565b91519350909150505b9250929050565b81518351146116935760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610c69565b6001600160a01b0384166116f75760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610c69565b6116ff612a9e565b6001600160a01b0316856001600160a01b03161480611725575061172585610ab0612a9e565b6117975760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610c69565b60006117a1612a9e565b905060005b84518110156119105760008582815181106117c3576117c3614dab565b6020026020010151905060008583815181106117e1576117e1614dab565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156118745760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610c69565b61187e8282615089565b60008085815260200190815260200160002060008c6001600160a01b03166001600160a01b03168152602001908152602001600020819055508160008085815260200190815260200160002060008b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546118fc919061509c565b9091555050600190930192506117a6915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516119609291906150af565b60405180910390a46119768187878787876131b8565b505050505050565b60008281526002602052604090206001015461199c81610de1612a9e565b610df0838361335d565b6119ae612a9e565b6001600160a01b0316816001600160a01b031614611a345760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610c69565b6112fd8282613400565b60608151835114611ab75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610c69565b6000835167ffffffffffffffff811115611ad357611ad361427e565b604051908082528060200260200182016040528015611afc578160200160208202803683370190505b50905060005b8451811015611b6c57611b47858281518110611b2057611b20614dab565b6020026020010151858381518110611b3a57611b3a614dab565b6020026020010151610bef565b828281518110611b5957611b59614dab565b6020908102919091010152600101611b02565b509392505050565b6000611b8281610de1612a9e565b611b8d8484846134a1565b50505050565b611b8d611b9e612a9e565b858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208089028281018201909352888252909350889250879182918501908490808284376000920191909152506135a492505050565b6000611c1681610de1612a9e565b60075460ff1615611c745760405162461bcd60e51b815260206004820152602260248201527f4175746f2d617070726f7665642061646472657373657320617265206c6f636b604482015261195960f21b6064820152608401610c69565b6001600160a01b038316600081815260066020908152604091829020805460ff19168615159081179091558251938452908301527ff945d041acd49baaff5c00a7e747c411751a1eb0d0b3e77d4c147eb27feb1183910160405180910390a1505050565b6000611ce681610de1612a9e565b611cf060006137e5565b50565b6000611d0181610de1612a9e565b50600090815260116020526040812055565b6000611d2181610de1612a9e565b6014610df0838261511c565b611d35612a9e565b6001600160a01b0316826001600160a01b03161480611d5b5750611d5b82610ab0612a9e565b611da75760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610c69565b60005b8351811015611e5b57600b6000600a6000878581518110611dcd57611dcd614dab565b6020026020010151815260200190815260200160002054815260200190815260200160002060009054906101000a900460ff1615156001151514611e535760405162461bcd60e51b815260206004820152601e60248201527f54797065206f6620746f6b656e206d757374206265206275726e61626c6500006044820152606401610c69565b600101611daa565b50610df08284836135a4565b60138054610e0290614ce9565b6000838152600a60209081526040808320548352600b90915290205460ff161515600114611ee45760405162461bcd60e51b815260206004820152601e60248201527f54797065206f6620746f6b656e206d757374206265206275726e61626c6500006044820152606401610c69565b611eec612a9e565b6001600160a01b0316826001600160a01b03161480611f125750611f1282610ab0612a9e565b611f5e5760405162461bcd60e51b815260206004820181905260248201527f43616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665646044820152606401610c69565b610df082848361302b565b816001600160a01b0316611f7b612a9e565b6001600160a01b031603611ff75760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610c69565b8060016000612004612a9e565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155612048612a9e565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051612084911515815260200190565b60405180910390a35050565b600061209e81610de1612a9e565b6000838152600f60205260409020611b8d838261511c565b60006120c481610de1612a9e565b611cf06000601055565b60006120dc81610de1612a9e565b6120e784848461384f565b60408051858152602081018590526001600160a01b038416918101919091527faa31d15dd62975f7f98b676018f8787ef55d604ec8c765132c34e398919afb74906060015b60405180910390a150505050565b600061214881610de1612a9e565b8382146121bd5760405162461bcd60e51b815260206004820152602b60248201527f6e756d626572206f6620696473206d75737420657175616c206e756d6265722060448201527f6f66206163636f756e74730000000000000000000000000000000000000000006064820152608401610c69565b60005b8481101561221957612211878787848181106121de576121de614dab565b905060200201358686858181106121f7576121f7614dab565b905060200201602081019061220c9190614627565b61384f565b6001016121c0565b507f16a6af95050d3c05c617a7c59f4ab66345c532ef8bf5575e13b8b25cb7ed13c1868686868660405161124f9594939291906151dc565b7f8f4f2da22e8ac8f11e15f9fc141cddbb5deea8800186560abb6e68c5496619a961227e81610de1612a9e565b6000808061228e85870187615209565b919450925090506001600160a01b0387166123115760405162461bcd60e51b815260206004820152602a60248201527f4368696c644d696e7461626c65455243313135353a20494e56414c49445f444560448201527f504f5349545f55534552000000000000000000000000000000000000000000006064820152608401610c69565b61231d87848484613a35565b50505050505050565b60008281526002602052604090206001015461234481610de1612a9e565b610df08383613400565b60606014805461235d90614ce9565b80601f016020809104026020016040519081016040528092919081815260200182805461238990614ce9565b80156123d65780601f106123ab576101008083540402835291602001916123d6565b820191906000526020600020905b8154815290600101906020018083116123b957829003601f168201915b5050505050905090565b6001600160a01b03808316600090815260016020908152604080832093851683529290529081205460ff168061243357506001600160a01b03821660009081526006602052604090205460ff1615156001145b9392505050565b600061244881610de1612a9e565b60005b82811015611b8d573684848381811061246657612466614dab565b90506020028101906124789190615287565b80356000908152600c602052604090205490915060ff1615156001036124bc576124b781356124aa6040840184614f0c565b6104fb6060860186614f0c565b6124db565b6124db81356124ce6020840184614f0c565b610a0b6040860186614f0c565b5060010161244b565b6001600160a01b0384166125485760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610c69565b612550612a9e565b6001600160a01b0316856001600160a01b03161480612576575061257685610ab0612a9e565b6125e85760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610c69565b60006125f2612a9e565b905061261381878761260388613bfb565b61260c88613bfb565b5050505050565b6000848152602081815260408083206001600160a01b038a168452909152902054838110156126975760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610c69565b6126a18482615089565b6000868152602081815260408083206001600160a01b038c811685529252808320939093558816815290812080548692906126dd90849061509c565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461231d828888888888613c46565b600061274b81610de1612a9e565b6001600160a01b0382166127c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610c69565b6127d0826137e5565b6112fd60008361197e565b60006127e981610de1612a9e565b89881480156127f757508986145b801561280257508984145b801561280d57508982145b61287f5760405162461bcd60e51b815260206004820152602560248201527f417272617920617267756d656e7473206d75737420686176652073616d65206c60448201527f656e6774680000000000000000000000000000000000000000000000000000006064820152608401610c69565b60005b8a811015612939576129318c8c8381811061289f5761289f614dab565b905060200201358b8b848181106128b8576128b8614dab565b905060200201358a8a858181106128d1576128d1614dab565b90506020020160208101906128e69190614cce565b8989868181106128f8576128f8614dab565b905060200201602081019061290d9190614cce565b88888781811061291f5761291f614dab565b905060200281019061148f9190614ec5565b600101612882565b507f033bdc44ed09ce27d875236b5e356eb738c886bcbe86b77335f35f199230c4748b8b8b8b8b8b8b8b8b8b60405161297b9a999897969594939291906152fb565b60405180910390a15050505050505050505050565b600061299e81610de1612a9e565b6129a9848484612d25565b604080518581526001600160a01b03851660208201529081018390527f6a47e9a7fdc397ac645d72459fcca69dbb90f878280bf1fc79d95889ab51c1989060600161212c565b60006129fd81610de1612a9e565b60075460ff1615612a5b5760405162461bcd60e51b815260206004820152602260248201527f4175746f2d617070726f7665642061646472657373657320617265206c6f636b604482015261195960f21b6064820152608401610c69565b506007805460ff1916911515919091179055565b6000612a7d81610de1612a9e565b612a8b898960018a8a611299565b831561128e5761128e8986868686611138565b6000612aa8613d42565b905090565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff166112fd57612aeb816001600160a01b03166014613d9e565b612af6836020613d9e565b604051602001612b079291906153f2565b60408051601f198184030181529082905262461bcd60e51b8252610c699160040161426b565b6127106bffffffffffffffffffffffff8216811015612b8f576040517f6f483d090000000000000000000000000000000000000000000000000000000081526bffffffffffffffffffffffff8316600482015260248101829052604401610c69565b6001600160a01b038316612bd2576040517fb6d9900a00000000000000000000000000000000000000000000000000000000815260006004820152602401610c69565b50604080518082019091526001600160a01b039092168083526bffffffffffffffffffffffff9091166020909201829052600160a01b90910217601055565b60006001600160a01b038616612c8f5760405162461bcd60e51b815260206004820152602560248201527f4e61746976654d6574615472616e73616374696f6e3a20494e56414c49445f5360448201527f49474e45520000000000000000000000000000000000000000000000000000006064820152608401610c69565b6001612ca2612c9d87613f7f565b613ffc565b6040805160008152602081018083529290925260ff851690820152606081018690526080810185905260a0016020604051602081039080840390855afa158015612cf0573d6000803e3d6000fd5b505050602060405103516001600160a01b0316866001600160a01b031614905095945050505050565b6000612433828461509c565b6000612d3381610de1612a9e565b60008411612d4057600080fd5b60008211612d905760405162461bcd60e51b815260206004820152601460248201527f416d6f756e742073686f756c64206265203e20300000000000000000000000006044820152606401610c69565b600084815260086020908152604080832054600990925290912054612db59084612d19565b1115612e295760405162461bcd60e51b815260206004820152603b60248201527f4d696e74696e6720776f756c642065786365656420746865206d6178206e756d60448201527f626572206f66206974656d7320666f7220676976656e207479706500000000006064820152608401610c69565b6000848152600c602052604090205460ff161515600114612e8c5760405162461bcd60e51b815260206004820152601760248201527f747970654964206973206e6f742066756e6769626c652e0000000000000000006044820152606401610c69565b600084815260096020526040902054612ea59083612d19565b600085815260096020526040812091909155611b8d908490869085905b6040519080825280601f01601f191660200182016040528015612eec576020820181803683370190505b50614047565b6000612f0081610de1612a9e565b6000868152600d602052604090205460ff1615612f5f5760405162461bcd60e51b815260206004820152601f60248201527f537570706c6965642074797065496420697320616c72656164792075736564006044820152606401610c69565b60008511612faf5760405162461bcd60e51b815260206004820152601660248201527f6d617820737570706c79206d757374206265203e2030000000000000000000006044820152606401610c69565b6000868152600860209081526040808320889055600c825280832080548815801560ff1992831617909255600b84528285208054891515908316179055600d909352922080549091166001179055613013576000868152600a602052604090208690555b6000868152600f6020526040902061231d838261511c565b6001600160a01b03831661308d5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610c69565b6000613097612a9e565b90506130c8818560006130a987613bfb565b6130b287613bfb565b5050604080516020810190915260009052505050565b6000838152602081815260408083206001600160a01b0388168452909152902054828110156131455760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610c69565b61314f8382615089565b6000858152602081815260408083206001600160a01b038a811680865291845282852095909555815189815292830188905292938616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6001600160a01b0384163b156119765760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906131fc9089908990889088908890600401615473565b6020604051808303816000875af1925050508015613237575060408051601f3d908101601f19168201909252613234918101906154c5565b60015b6132ec576132436154e2565b806308c379a00361327c57506132576154fd565b80613262575061327e565b8060405162461bcd60e51b8152600401610c69919061426b565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610c69565b6001600160e01b0319811663bc197c8160e01b1461231d5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610c69565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff166112fd5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff191660011790556133bc612a9e565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526002602090815260408083206001600160a01b038516845290915290205460ff16156112fd5760008281526002602090815260408083206001600160a01b03851684529091529020805460ff1916905561345d612a9e565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6127106bffffffffffffffffffffffff821681101561350a576040517fdfd1fc1b000000000000000000000000000000000000000000000000000000008152600481018590526bffffffffffffffffffffffff8316602482015260448101829052606401610c69565b6001600160a01b038316613554576040517f969f08520000000000000000000000000000000000000000000000000000000081526004810185905260006024820152604401610c69565b506040805180820182526001600160a01b0393841681526bffffffffffffffffffffffff92831660208083019182526000968752601190529190942093519051909116600160a01b029116179055565b6001600160a01b0383166136065760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610c69565b80518251146136685760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610c69565b6000613672612a9e565b604080516020810190915260009052905060005b83518110156137865760008482815181106136a3576136a3614dab565b6020026020010151905060008483815181106136c1576136c1614dab565b602090810291909101810151600084815280835260408082206001600160a01b038c16835290935291909120549091508181101561374d5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610c69565b6137578282615089565b6000938452602084815260408086206001600160a01b038c168752909152909320929092555050600101613686565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb86866040516137d79291906150af565b60405180910390a450505050565b600380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061385d81610de1612a9e565b6000831161386a57600080fd5b600084815260086020908152604080832054600990925290912054613890906001612d19565b11156139045760405162461bcd60e51b815260206004820152603b60248201527f4d696e74696e6720776f756c642065786365656420746865206d6178206e756d60448201527f626572206f66206974656d7320666f7220676976656e207479706500000000006064820152608401610c69565b6000838152600d602052604090205460ff16156139635760405162461bcd60e51b815260206004820152601b60248201527f537570706c69656420696420697320616c7265616479207573656400000000006044820152606401610c69565b6000848152600c602052604090205460ff16156139c25760405162461bcd60e51b815260206004820152601660248201527f476976656e20747970652069732066756e6769626c65000000000000000000006044820152606401610c69565b6000838152600d60209081526040808320805460ff191660019081179091558784526009909252909120546139f691612d19565b6000858152600960209081526040808320938455868352600a82528083208890559254600e90915291812091909155611b8d9083908590600190612ec2565b6001600160a01b038416613a955760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610c69565b8151835114613af75760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b6064820152608401610c69565b6000613b01612a9e565b905060005b8451811015613b9357838181518110613b2157613b21614dab565b6020026020010151600080878481518110613b3e57613b3e614dab565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254613b86919061509c565b9091555050600101613b06565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051613be49291906150af565b60405180910390a461260c816000878787876131b8565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613c3557613c35614dab565b602090810291909101015292915050565b6001600160a01b0384163b156119765760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190613c8a9089908990889088908890600401615587565b6020604051808303816000875af1925050508015613cc5575060408051601f3d908101601f19168201909252613cc2918101906154c5565b60015b613cd1576132436154e2565b6001600160e01b0319811663f23a6e6160e01b1461231d5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610c69565b6000303303613d9857600080368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050503601516001600160a01b03169150613d9b9050565b50335b90565b60606000613dad836002615050565b613db890600261509c565b67ffffffffffffffff811115613dd057613dd061427e565b6040519080825280601f01601f191660200182016040528015613dfa576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110613e3157613e31614dab565b60200101906001600160f81b031916908160001a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613e7c57613e7c614dab565b60200101906001600160f81b031916908160001a9053506000613ea0846002615050565b613eab90600161509c565b90505b6001811115613f30577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110613eec57613eec614dab565b1a60f81b828281518110613f0257613f02614dab565b60200101906001600160f81b031916908160001a90535060049490941c93613f29816155bf565b9050613eae565b5083156124335760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c69565b60006040518060800160405280604381526020016155d76043913980516020918201208351848301516040808701518051908601209051613fdf950193845260208401929092526001600160a01b03166040830152606082015260800190565b604051602081830303815290604052805190602001209050919050565b600061400760045490565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201613fdf565b6001600160a01b0384166140a75760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610c69565b60006140b1612a9e565b90506140c38160008761260388613bfb565b6000848152602081815260408083206001600160a01b0389168452909152812080548592906140f390849061509c565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461260c81600087878787613c46565b80356001600160a01b038116811461416a57600080fd5b919050565b6000806040838503121561418257600080fd5b61418b83614153565b946020939093013593505050565b6001600160e01b031981168114611cf057600080fd5b6000602082840312156141c157600080fd5b813561243381614199565b80356bffffffffffffffffffffffff8116811461416a57600080fd5b600080604083850312156141fb57600080fd5b61420483614153565b9150614212602084016141cc565b90509250929050565b60005b8381101561423657818101518382015260200161421e565b50506000910152565b6000815180845261425781602086016020860161421b565b601f01601f19169290920160200192915050565b602081526000612433602083018461423f565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff811182821017156142ba576142ba61427e565b6040525050565b600082601f8301126142d257600080fd5b813567ffffffffffffffff8111156142ec576142ec61427e565b604051614303601f8301601f191660200182614294565b81815284602083860101111561431857600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561434d57600080fd5b61435686614153565b9450602086013567ffffffffffffffff81111561437257600080fd5b61437e888289016142c1565b9450506040860135925060608601359150608086013560ff811681146143a357600080fd5b809150509295509295909350565b6000602082840312156143c357600080fd5b5035919050565b60008083601f8401126143dc57600080fd5b50813567ffffffffffffffff8111156143f457600080fd5b6020830191508360208260051b850101111561162a57600080fd5b60008060008060006060868803121561442757600080fd5b85359450602086013567ffffffffffffffff8082111561444657600080fd5b61445289838a016143ca565b9096509450604088013591508082111561446b57600080fd5b50614478888289016143ca565b969995985093965092949392505050565b8035801515811461416a57600080fd5b60008060008060008060008060c0898b0312156144b557600080fd5b88359750602089013596506144cc60408a01614489565b9550606089013567ffffffffffffffff808211156144e957600080fd5b6144f58c838d016142c1565b965060808b013591508082111561450b57600080fd5b6145178c838d016143ca565b909650945060a08b013591508082111561453057600080fd5b5061453d8b828c016143ca565b999c989b5096995094979396929594505050565b600080600080600060a0868803121561456957600080fd5b853594506020860135935061458060408701614489565b925061458e60608701614489565b9150608086013567ffffffffffffffff8111156145aa57600080fd5b6145b6888289016142c1565b9150509295509295909350565b600080604083850312156145d657600080fd5b50508035926020909101359150565b600080602083850312156145f857600080fd5b823567ffffffffffffffff81111561460f57600080fd5b61461b858286016143ca565b90969095509350505050565b60006020828403121561463957600080fd5b61243382614153565b600067ffffffffffffffff82111561465c5761465c61427e565b5060051b60200190565b600082601f83011261467757600080fd5b8135602061468482614642565b6040516146918282614294565b80915083815260208101915060208460051b8701019350868411156146b557600080fd5b602086015b848110156146d157803583529183019183016146ba565b509695505050505050565b600080600080600060a086880312156146f457600080fd5b6146fd86614153565b945061470b60208701614153565b9350604086013567ffffffffffffffff8082111561472857600080fd5b61473489838a01614666565b9450606088013591508082111561474a57600080fd5b61475689838a01614666565b9350608088013591508082111561476c57600080fd5b506145b6888289016142c1565b6000806040838503121561478c57600080fd5b8235915061421260208401614153565b600080604083850312156147af57600080fd5b823567ffffffffffffffff808211156147c757600080fd5b818501915085601f8301126147db57600080fd5b813560206147e882614642565b6040516147f58282614294565b83815260059390931b850182019282810191508984111561481557600080fd5b948201945b8386101561483a5761482b86614153565b8252948201949082019061481a565b9650508601359250508082111561485057600080fd5b5061485d85828601614666565b9150509250929050565b60008151808452602080850194506020840160005b838110156148985781518752958201959082019060010161487c565b509495945050505050565b6020815260006124336020830184614867565b6000806000606084860312156148cb57600080fd5b833592506148db60208501614153565b91506148e9604085016141cc565b90509250925092565b6000806000806040858703121561490857600080fd5b843567ffffffffffffffff8082111561492057600080fd5b61492c888389016143ca565b9096509450602087013591508082111561494557600080fd5b50614952878288016143ca565b95989497509550505050565b6000806040838503121561497157600080fd5b61497a83614153565b915061421260208401614489565b60006020828403121561499a57600080fd5b813567ffffffffffffffff8111156149b157600080fd5b6149bd848285016142c1565b949350505050565b6000806000606084860312156149da57600080fd5b833567ffffffffffffffff808211156149f257600080fd5b6149fe87838801614666565b9450614a0c60208701614153565b93506040860135915080821115614a2257600080fd5b50614a2f86828701614666565b9150509250925092565b600080600060608486031215614a4e57600080fd5b83359250614a5e60208501614153565b9150604084013590509250925092565b60008060408385031215614a8157600080fd5b82359150602083013567ffffffffffffffff811115614a9f57600080fd5b61485d858286016142c1565b600080600060608486031215614ac057600080fd5b83359250602084013591506148e960408501614153565b600080600060408486031215614aec57600080fd5b614af584614153565b9250602084013567ffffffffffffffff80821115614b1257600080fd5b818601915086601f830112614b2657600080fd5b813581811115614b3557600080fd5b876020828501011115614b4757600080fd5b6020830194508093505050509250925092565b60008060408385031215614b6d57600080fd5b614b7683614153565b915061421260208401614153565b600080600080600060a08688031215614b9c57600080fd5b614ba586614153565b9450614bb360208701614153565b93506040860135925060608601359150608086013567ffffffffffffffff8111156145aa57600080fd5b60008060008060008060008060008060a08b8d031215614bfc57600080fd5b8a3567ffffffffffffffff80821115614c1457600080fd5b614c208e838f016143ca565b909c509a5060208d0135915080821115614c3957600080fd5b614c458e838f016143ca565b909a50985060408d0135915080821115614c5e57600080fd5b614c6a8e838f016143ca565b909850965060608d0135915080821115614c8357600080fd5b614c8f8e838f016143ca565b909650945060808d0135915080821115614ca857600080fd5b50614cb58d828e016143ca565b915080935050809150509295989b9194979a5092959850565b600060208284031215614ce057600080fd5b61243382614489565b600181811c90821680614cfd57607f821691505b602082108103614d1d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006001600160a01b03808616835280851660208401525060606040830152614d4f606083018461423f565b95945050505050565b60008351614d6a81846020880161421b565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b60008251614da181846020870161421b565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b8183526000602080850194508260005b85811015614898576001600160a01b03614dea83614153565b1687529582019590820190600101614dd1565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e2f57600080fd5b8260051b80836020870137939093016020019392505050565b858152606060208201526000614e62606083018688614dc1565b828103604084015261107d818587614dfd565b8581528460208201528315156040820152821515606082015260a060808201526000614ea460a083018461423f565b979650505050505050565b6000823560fe19833603018112614da157600080fd5b6000808335601e19843603018112614edc57600080fd5b83018035915067ffffffffffffffff821115614ef757600080fd5b60200191503681900382131561162a57600080fd5b6000808335601e19843603018112614f2357600080fd5b83018035915067ffffffffffffffff821115614f3e57600080fd5b6020019150600581901b360382131561162a57600080fd5b60008151808452602080850194506020840160005b83811015614898578151151587529582019590820190600101614f6b565b60a081526000614f9c60a0830188614867565b602083820381850152614faf8289614867565b91508382036040850152614fc38288614f56565b91508382036060850152614fd78287614f56565b915083820360808501528185518084528284019150828160051b85010183880160005b8381101561502857601f1987840301855261501683835161423f565b94860194925090850190600101614ffa565b50909c9b505050505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610c9557610c9561503a565b60008261508457634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c9557610c9561503a565b80820180821115610c9557610c9561503a565b6040815260006150c26040830185614867565b8281036020840152614d4f8185614867565b601f821115610df0576000816000526020600020601f850160051c810160208610156150fd5750805b601f850160051c820191505b8181101561197657828155600101615109565b815167ffffffffffffffff8111156151365761513661427e565b61514a816151448454614ce9565b846150d4565b602080601f83116001811461517f57600084156151675750858301515b600019600386901b1c1916600185901b178555611976565b600085815260208120601f198616915b828110156151ae5788860151825594840194600190910190840161518f565b50858210156151cc5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8581526060602082015260006151f6606083018688614dfd565b828103604084015261107d818587614dc1565b60008060006060848603121561521e57600080fd5b833567ffffffffffffffff8082111561523657600080fd5b61524287838801614666565b9450602086013591508082111561525857600080fd5b61526487838801614666565b9350604086013591508082111561527a57600080fd5b50614a2f868287016142c1565b60008235607e19833603018112614da157600080fd5b8183526000602080850194508260005b85811015614898576152be82614489565b1515875295820195908201906001016152ad565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60a08152600061530f60a083018c8e614dfd565b602083820381850152615323828c8e614dfd565b91508382036040850152615338828a8c61529d565b9150838203606085015261534d82888a61529d565b84810360808601528581529150808201600586901b830182018760005b888110156153da57858303601f190184528135368b9003601e1901811261539057600080fd5b8a01858101903567ffffffffffffffff8111156153ac57600080fd5b8036038213156153bb57600080fd5b6153c68582846152d2565b95870195945050509084019060010161536a565b5050809450505050509b9a5050505050505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161542a81601785016020880161421b565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000601791840191820152835161546781602884016020880161421b565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a0604083015261549f60a0830186614867565b82810360608401526154b18186614867565b9050828103608084015261107d818561423f565b6000602082840312156154d757600080fd5b815161243381614199565b600060033d1115613d9b5760046000803e5060005160e01c90565b600060443d101561550b5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561553b57505050505090565b82850191508151818111156155535750505050505090565b843d870101602082850101111561556d5750505050505090565b61557c60208286010187614294565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152614ea460a083018461423f565b6000816155ce576155ce61503a565b50600019019056fe4d6574615472616e73616374696f6e2875696e74323536206e6f6e63652c616464726573732066726f6d2c62797465732066756e6374696f6e5369676e617475726529a2646970667358221220f3bac5ec441c7cfab056cda5c21ed0be8268f24822ef2d5e3c244d7e9643458a64736f6c63430008180033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c6164647265737320766572696679696e67436f6e74726163742c627974657333322073616c74290000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d918233c016691e3bd134e8ea0dfe620808c7bdb00000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000d918233c016691e3bd134e8ea0dfe620808c7bdb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e5279616e204361726e6174696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045259434100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003a68747470733a2f2f6d657461646174612d73746167696e672e76656e6c792e696f2f6d657461646174612f636f6e7472616374732f3637353532000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000031cdc69b5699f0a722d70585c5b3a331011bb837