{
  "contractName": "ICreatorCore",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "ApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "DefaultRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "ExtensionApproveTransferUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionBlacklisted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionRegistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "ExtensionRoyaltiesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ExtensionUnregistered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "MintPermissionsUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "indexed": false,
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "RoyaltiesUpdated",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getExtensions",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "baseURI",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "baseURIIdentical",
          "type": "bool"
        }
      ],
      "name": "registerExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "unregisterExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "blacklistExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        },
        {
          "internalType": "bool",
          "name": "identical",
          "type": "bool"
        }
      ],
      "name": "setBaseTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefixExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenId",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uri",
          "type": "string[]"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURIExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setBaseTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "prefix",
          "type": "string"
        }
      ],
      "name": "setTokenURIPrefix",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "string",
          "name": "uri",
          "type": "string"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256[]",
          "name": "tokenIds",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "uris",
          "type": "string[]"
        }
      ],
      "name": "setTokenURI",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "permissions",
          "type": "address"
        }
      ],
      "name": "setMintPermissions",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        }
      ],
      "name": "setApproveTransferExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "tokenExtension",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyalties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        },
        {
          "internalType": "address payable[]",
          "name": "receivers",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "basisPoints",
          "type": "uint256[]"
        }
      ],
      "name": "setRoyaltiesExtension",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getRoyalties",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeRecipients",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFeeBps",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        }
      ],
      "name": "getFees",
      "outputs": [
        {
          "internalType": "address payable[]",
          "name": "",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "tokenId",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "royaltyInfo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "extension",
          "type": "address"
        }
      ],
      "name": "setApproveTransfer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getApproveTransfer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"ApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"DefaultRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"ExtensionApproveTransferUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionBlacklisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"ExtensionRoyaltiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ExtensionUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"MintPermissionsUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"RoyaltiesUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"blacklistExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApproveTransfer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getExtensions\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeBps\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFeeRecipients\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getFees\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getRoyalties\",\"outputs\":[{\"internalType\":\"address payable[]\",\"name\":\"\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"baseURI\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"baseURIIdentical\",\"type\":\"bool\"}],\"name\":\"registerExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"royaltyInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"setApproveTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setApproveTransferExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"identical\",\"type\":\"bool\"}],\"name\":\"setBaseTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"permissions\",\"type\":\"address\"}],\"name\":\"setMintPermissions\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyalties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"},{\"internalType\":\"address payable[]\",\"name\":\"receivers\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"basisPoints\",\"type\":\"uint256[]\"}],\"name\":\"setRoyaltiesExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uris\",\"type\":\"string[]\"}],\"name\":\"setTokenURI\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenId\",\"type\":\"uint256[]\"},{\"internalType\":\"string[]\",\"name\":\"uri\",\"type\":\"string[]\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"}],\"name\":\"setTokenURIExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefix\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"prefix\",\"type\":\"string\"}],\"name\":\"setTokenURIPrefixExtension\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenExtension\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"extension\",\"type\":\"address\"}],\"name\":\"unregisterExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Core creator interface\",\"kind\":\"dev\",\"methods\":{\"blacklistExtension(address)\":{\"details\":\"blacklist an extension.  Can only be called by contract owner or admin. This function will destroy all ability to reference the metadata of any tokens created by the specified extension. It will also unregister the extension if needed. Returns True if removed, False if already removed.\"},\"getApproveTransfer()\":{\"details\":\"Get the default approve transfer contract location.\"},\"getExtensions()\":{\"details\":\"gets address of all extensions\"},\"getRoyalties(uint256)\":{\"details\":\"Get royalites of a token.  Returns list of receivers and basisPoints\"},\"registerExtension(address,string)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added.\"},\"registerExtension(address,string,bool)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added.\"},\"setApproveTransfer(address)\":{\"details\":\"Set the default approve transfer contract location.\"},\"setApproveTransferExtension(bool)\":{\"details\":\"Configure so transfers of tokens created by the caller (must be extension) gets approval from the extension before transferring\"},\"setBaseTokenURI(string)\":{\"details\":\"set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin. For tokens with no uri configured, tokenURI will return \\\"uri+tokenId\\\"\"},\"setBaseTokenURIExtension(string)\":{\"details\":\"set the baseTokenURI of an extension.  Can only be called by extension.\"},\"setBaseTokenURIExtension(string,bool)\":{\"details\":\"set the baseTokenURI of an extension.  Can only be called by extension. For tokens with no uri configured, tokenURI will return \\\"uri+tokenId\\\"\"},\"setMintPermissions(address,address)\":{\"details\":\"set a permissions contract for an extension.  Used to control minting.\"},\"setRoyalties(address[],uint256[])\":{\"details\":\"Set default royalties\"},\"setRoyalties(uint256,address[],uint256[])\":{\"details\":\"Set royalties of a token\"},\"setRoyaltiesExtension(address,address[],uint256[])\":{\"details\":\"Set royalties of an extension\"},\"setTokenURI(uint256,string)\":{\"details\":\"set the tokenURI of a token with no extension.  Can only be called by owner/admin.\"},\"setTokenURI(uint256[],string[])\":{\"details\":\"set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin.\"},\"setTokenURIExtension(uint256,string)\":{\"details\":\"set the tokenURI of a token extension.  Can only be called by extension that minted token.\"},\"setTokenURIExtension(uint256[],string[])\":{\"details\":\"set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token.\"},\"setTokenURIPrefix(string)\":{\"details\":\"set the common prefix for tokens with no extension.  Can only be called by owner/admin. If configured, and a token has a uri set, tokenURI will return \\\"prefixURI+tokenURI\\\" Useful if you want to use ipfs/arweave\"},\"setTokenURIPrefixExtension(string)\":{\"details\":\"set the common prefix of an extension.  Can only be called by extension. If configured, and a token has a uri set, tokenURI will return \\\"prefixURI+tokenURI\\\" Useful if you want to use ipfs/arweave\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenExtension(uint256)\":{\"details\":\"get the extension of a given token\"},\"unregisterExtension(address)\":{\"details\":\"add an extension.  Can only be called by contract owner or admin. Returns True if removed, False if already removed.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/ICreatorCore.sol\":\"ICreatorCore\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":25},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"project:/contracts/core/ICreatorCore.sol\":{\"keccak256\":\"0x6bdcb757953594d3a259f1d68ec3d208ca42dba02115f08a6e32e2936ccb0349\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd1853dabcd57eb9b735b3991cf59259cd28cdeca1353495b5c59dc0db2d85df\",\"dweb:/ipfs/QmfJLFZ7RoMvdR7kJLR7QmqreS1x5VNJSa7xvjVsC4mXte\"]}},\"version\":1}",
  "bytecode": "0x",
  "deployedBytecode": "0x",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "",
  "deployedSourceMap": "",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8.0;\n\n/// @author: manifold.xyz\n\nimport \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\n\n/**\n * @dev Core creator interface\n */\ninterface ICreatorCore is IERC165 {\n\n    event ExtensionRegistered(address indexed extension, address indexed sender);\n    event ExtensionUnregistered(address indexed extension, address indexed sender);\n    event ExtensionBlacklisted(address indexed extension, address indexed sender);\n    event MintPermissionsUpdated(address indexed extension, address indexed permissions, address indexed sender);\n    event RoyaltiesUpdated(uint256 indexed tokenId, address payable[] receivers, uint256[] basisPoints);\n    event DefaultRoyaltiesUpdated(address payable[] receivers, uint256[] basisPoints);\n    event ApproveTransferUpdated(address extension);\n    event ExtensionRoyaltiesUpdated(address indexed extension, address payable[] receivers, uint256[] basisPoints);\n    event ExtensionApproveTransferUpdated(address indexed extension, bool enabled);\n\n    /**\n     * @dev gets address of all extensions\n     */\n    function getExtensions() external view returns (address[] memory);\n\n    /**\n     * @dev add an extension.  Can only be called by contract owner or admin.\n     * extension address must point to a contract implementing ICreatorExtension.\n     * Returns True if newly added, False if already added.\n     */\n    function registerExtension(address extension, string calldata baseURI) external;\n\n    /**\n     * @dev add an extension.  Can only be called by contract owner or admin.\n     * extension address must point to a contract implementing ICreatorExtension.\n     * Returns True if newly added, False if already added.\n     */\n    function registerExtension(address extension, string calldata baseURI, bool baseURIIdentical) external;\n\n    /**\n     * @dev add an extension.  Can only be called by contract owner or admin.\n     * Returns True if removed, False if already removed.\n     */\n    function unregisterExtension(address extension) external;\n\n    /**\n     * @dev blacklist an extension.  Can only be called by contract owner or admin.\n     * This function will destroy all ability to reference the metadata of any tokens created\n     * by the specified extension. It will also unregister the extension if needed.\n     * Returns True if removed, False if already removed.\n     */\n    function blacklistExtension(address extension) external;\n\n    /**\n     * @dev set the baseTokenURI of an extension.  Can only be called by extension.\n     */\n    function setBaseTokenURIExtension(string calldata uri) external;\n\n    /**\n     * @dev set the baseTokenURI of an extension.  Can only be called by extension.\n     * For tokens with no uri configured, tokenURI will return \"uri+tokenId\"\n     */\n    function setBaseTokenURIExtension(string calldata uri, bool identical) external;\n\n    /**\n     * @dev set the common prefix of an extension.  Can only be called by extension.\n     * If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\"\n     * Useful if you want to use ipfs/arweave\n     */\n    function setTokenURIPrefixExtension(string calldata prefix) external;\n\n    /**\n     * @dev set the tokenURI of a token extension.  Can only be called by extension that minted token.\n     */\n    function setTokenURIExtension(uint256 tokenId, string calldata uri) external;\n\n    /**\n     * @dev set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token.\n     */\n    function setTokenURIExtension(uint256[] memory tokenId, string[] calldata uri) external;\n\n    /**\n     * @dev set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin.\n     * For tokens with no uri configured, tokenURI will return \"uri+tokenId\"\n     */\n    function setBaseTokenURI(string calldata uri) external;\n\n    /**\n     * @dev set the common prefix for tokens with no extension.  Can only be called by owner/admin.\n     * If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\"\n     * Useful if you want to use ipfs/arweave\n     */\n    function setTokenURIPrefix(string calldata prefix) external;\n\n    /**\n     * @dev set the tokenURI of a token with no extension.  Can only be called by owner/admin.\n     */\n    function setTokenURI(uint256 tokenId, string calldata uri) external;\n\n    /**\n     * @dev set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin.\n     */\n    function setTokenURI(uint256[] memory tokenIds, string[] calldata uris) external;\n\n    /**\n     * @dev set a permissions contract for an extension.  Used to control minting.\n     */\n    function setMintPermissions(address extension, address permissions) external;\n\n    /**\n     * @dev Configure so transfers of tokens created by the caller (must be extension) gets approval\n     * from the extension before transferring\n     */\n    function setApproveTransferExtension(bool enabled) external;\n\n    /**\n     * @dev get the extension of a given token\n     */\n    function tokenExtension(uint256 tokenId) external view returns (address);\n\n    /**\n     * @dev Set default royalties\n     */\n    function setRoyalties(address payable[] calldata receivers, uint256[] calldata basisPoints) external;\n\n    /**\n     * @dev Set royalties of a token\n     */\n    function setRoyalties(uint256 tokenId, address payable[] calldata receivers, uint256[] calldata basisPoints) external;\n\n    /**\n     * @dev Set royalties of an extension\n     */\n    function setRoyaltiesExtension(address extension, address payable[] calldata receivers, uint256[] calldata basisPoints) external;\n\n    /**\n     * @dev Get royalites of a token.  Returns list of receivers and basisPoints\n     */\n    function getRoyalties(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);\n    \n    // Royalty support for various other standards\n    function getFeeRecipients(uint256 tokenId) external view returns (address payable[] memory);\n    function getFeeBps(uint256 tokenId) external view returns (uint[] memory);\n    function getFees(uint256 tokenId) external view returns (address payable[] memory, uint256[] memory);\n    function royaltyInfo(uint256 tokenId, uint256 value) external view returns (address, uint256);\n\n    /**\n     * @dev Set the default approve transfer contract location.\n     */\n    function setApproveTransfer(address extension) external; \n\n    /**\n     * @dev Get the default approve transfer contract location.\n     */\n    function getApproveTransfer() external view returns (address);\n}\n",
  "sourcePath": "/Users/chung/git/manifoldxyz/solidity/creator-core-solidity/contracts/core/ICreatorCore.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/ICreatorCore.sol",
    "exportedSymbols": {
      "ICreatorCore": [
        15197
      ],
      "IERC165": [
        2338
      ]
    },
    "id": 15198,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14905,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:23:36"
      },
      {
        "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
        "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
        "id": 14906,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 15198,
        "sourceUnit": 2339,
        "src": "85:65:36",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 14908,
              "name": "IERC165",
              "nameLocations": [
                "217:7:36"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 2338,
              "src": "217:7:36"
            },
            "id": 14909,
            "nodeType": "InheritanceSpecifier",
            "src": "217:7:36"
          }
        ],
        "canonicalName": "ICreatorCore",
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 14907,
          "nodeType": "StructuredDocumentation",
          "src": "152:38:36",
          "text": " @dev Core creator interface"
        },
        "fullyImplemented": false,
        "id": 15197,
        "linearizedBaseContracts": [
          15197,
          2338
        ],
        "name": "ICreatorCore",
        "nameLocation": "201:12:36",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "eventSelector": "d8cb8ba4086944eabf43c5535b7712015e4d4c714b24bf812c040ea5b7a3e42a",
            "id": 14915,
            "name": "ExtensionRegistered",
            "nameLocation": "238:19:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14914,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14911,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "274:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14915,
                  "src": "258:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14910,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "258:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14913,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "301:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14915,
                  "src": "285:22:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14912,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "285:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "257:51:36"
            },
            "src": "232:77:36"
          },
          {
            "anonymous": false,
            "eventSelector": "d19cf84cf0fec6bec9ddfa29c63adf83a55707c712f32c8285d6180a78901479",
            "id": 14921,
            "name": "ExtensionUnregistered",
            "nameLocation": "320:21:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14920,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14917,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "358:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14921,
                  "src": "342:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "342:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14919,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "385:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14921,
                  "src": "369:22:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14918,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "341:51:36"
            },
            "src": "314:79:36"
          },
          {
            "anonymous": false,
            "eventSelector": "05ac7bc5a606cd92a63365f9fda244499b9add0526b22d99937b6bd88181059c",
            "id": 14927,
            "name": "ExtensionBlacklisted",
            "nameLocation": "404:20:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14926,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14923,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "441:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14927,
                  "src": "425:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "425:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14925,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "468:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14927,
                  "src": "452:22:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14924,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "452:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "424:51:36"
            },
            "src": "398:78:36"
          },
          {
            "anonymous": false,
            "eventSelector": "6a835c4fcf7e0d398db3762332fdaa1471814ad39f1e2d6d0b3fdabf8efee3e0",
            "id": 14935,
            "name": "MintPermissionsUpdated",
            "nameLocation": "487:22:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14934,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14929,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "526:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14935,
                  "src": "510:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14928,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "510:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14931,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "permissions",
                  "nameLocation": "553:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14935,
                  "src": "537:27:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14930,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "537:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14933,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "582:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14935,
                  "src": "566:22:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "566:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "509:80:36"
            },
            "src": "481:109:36"
          },
          {
            "anonymous": false,
            "eventSelector": "abb46fe0761d77584bde75697647804ffd8113abd4d8d06bc664150395eccdee",
            "id": 14945,
            "name": "RoyaltiesUpdated",
            "nameLocation": "601:16:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14944,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14937,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "634:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14945,
                  "src": "618:23:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14936,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "618:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14940,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "661:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14945,
                  "src": "643:27:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14938,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "643:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 14939,
                    "nodeType": "ArrayTypeName",
                    "src": "643:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14943,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "682:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14945,
                  "src": "672:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14941,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "672:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14942,
                    "nodeType": "ArrayTypeName",
                    "src": "672:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "617:77:36"
            },
            "src": "595:100:36"
          },
          {
            "anonymous": false,
            "eventSelector": "2b6849d5976d799a5b0ca4dfd6b40a3d7afe9ea72c091fa01a958594f9a2659b",
            "id": 14953,
            "name": "DefaultRoyaltiesUpdated",
            "nameLocation": "706:23:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14952,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14948,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "748:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14953,
                  "src": "730:27:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14946,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "730:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 14947,
                    "nodeType": "ArrayTypeName",
                    "src": "730:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14951,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "769:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14953,
                  "src": "759:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14949,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "759:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14950,
                    "nodeType": "ArrayTypeName",
                    "src": "759:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "729:52:36"
            },
            "src": "700:82:36"
          },
          {
            "anonymous": false,
            "eventSelector": "959c0e47a2fe3cf01e237ba4892e2cc3194d77cbfb33e434e40873225d6b595f",
            "id": 14957,
            "name": "ApproveTransferUpdated",
            "nameLocation": "793:22:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14955,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "824:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14957,
                  "src": "816:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14954,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "816:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "815:19:36"
            },
            "src": "787:48:36"
          },
          {
            "anonymous": false,
            "eventSelector": "535a93d2cb000582c0ebeaa9be4890ec6a287f98eb2df00c54c300612fd78d8f",
            "id": 14967,
            "name": "ExtensionRoyaltiesUpdated",
            "nameLocation": "846:25:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14966,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14959,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "888:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14967,
                  "src": "872:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14958,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "872:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14962,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "917:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14967,
                  "src": "899:27:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14960,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "899:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 14961,
                    "nodeType": "ArrayTypeName",
                    "src": "899:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14965,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "938:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14967,
                  "src": "928:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14963,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "928:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 14964,
                    "nodeType": "ArrayTypeName",
                    "src": "928:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "871:79:36"
            },
            "src": "840:111:36"
          },
          {
            "anonymous": false,
            "eventSelector": "072a7592283e2c2d1d56d21517ff6013325e0f55483f4828373ff4d98b0a1a36",
            "id": 14973,
            "name": "ExtensionApproveTransferUpdated",
            "nameLocation": "962:31:36",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14969,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1010:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14973,
                  "src": "994:25:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14968,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14971,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "enabled",
                  "nameLocation": "1026:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14973,
                  "src": "1021:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14970,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1021:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "993:41:36"
            },
            "src": "956:79:36"
          },
          {
            "documentation": {
              "id": 14974,
              "nodeType": "StructuredDocumentation",
              "src": "1041:54:36",
              "text": " @dev gets address of all extensions"
            },
            "functionSelector": "83b7db63",
            "id": 14980,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getExtensions",
            "nameLocation": "1109:13:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14975,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1122:2:36"
            },
            "returnParameters": {
              "id": 14979,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14978,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14980,
                  "src": "1148:16:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 14976,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1148:7:36",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 14977,
                    "nodeType": "ArrayTypeName",
                    "src": "1148:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1147:18:36"
            },
            "scope": 15197,
            "src": "1100:66:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14981,
              "nodeType": "StructuredDocumentation",
              "src": "1172:231:36",
              "text": " @dev add an extension.  Can only be called by contract owner or admin.\n extension address must point to a contract implementing ICreatorExtension.\n Returns True if newly added, False if already added."
            },
            "functionSelector": "3071a0f9",
            "id": 14988,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerExtension",
            "nameLocation": "1417:17:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14986,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14983,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1443:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14988,
                  "src": "1435:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14982,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1435:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14985,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1470:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14988,
                  "src": "1454:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14984,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1454:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1434:44:36"
            },
            "returnParameters": {
              "id": 14987,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1487:0:36"
            },
            "scope": 15197,
            "src": "1408:80:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14989,
              "nodeType": "StructuredDocumentation",
              "src": "1494:231:36",
              "text": " @dev add an extension.  Can only be called by contract owner or admin.\n extension address must point to a contract implementing ICreatorExtension.\n Returns True if newly added, False if already added."
            },
            "functionSelector": "3f0f37f6",
            "id": 14998,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "registerExtension",
            "nameLocation": "1739:17:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14996,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14991,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "1765:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14998,
                  "src": "1757:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14990,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1757:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14993,
                  "mutability": "mutable",
                  "name": "baseURI",
                  "nameLocation": "1792:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14998,
                  "src": "1776:23:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 14992,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1776:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14995,
                  "mutability": "mutable",
                  "name": "baseURIIdentical",
                  "nameLocation": "1806:16:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 14998,
                  "src": "1801:21:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14994,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1801:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1756:67:36"
            },
            "returnParameters": {
              "id": 14997,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1832:0:36"
            },
            "scope": 15197,
            "src": "1730:103:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14999,
              "nodeType": "StructuredDocumentation",
              "src": "1839:147:36",
              "text": " @dev add an extension.  Can only be called by contract owner or admin.\n Returns True if removed, False if already removed."
            },
            "functionSelector": "ce8aee9d",
            "id": 15004,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "unregisterExtension",
            "nameLocation": "2000:19:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15002,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15001,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "2028:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15004,
                  "src": "2020:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15000,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2020:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2019:19:36"
            },
            "returnParameters": {
              "id": 15003,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2047:0:36"
            },
            "scope": 15197,
            "src": "1991:57:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15005,
              "nodeType": "StructuredDocumentation",
              "src": "2054:331:36",
              "text": " @dev blacklist an extension.  Can only be called by contract owner or admin.\n This function will destroy all ability to reference the metadata of any tokens created\n by the specified extension. It will also unregister the extension if needed.\n Returns True if removed, False if already removed."
            },
            "functionSelector": "02e7afb7",
            "id": 15010,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "blacklistExtension",
            "nameLocation": "2399:18:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15008,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15007,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "2426:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15010,
                  "src": "2418:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15006,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2418:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2417:19:36"
            },
            "returnParameters": {
              "id": 15009,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2445:0:36"
            },
            "scope": 15197,
            "src": "2390:56:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15011,
              "nodeType": "StructuredDocumentation",
              "src": "2452:95:36",
              "text": " @dev set the baseTokenURI of an extension.  Can only be called by extension."
            },
            "functionSelector": "3e6134b8",
            "id": 15016,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseTokenURIExtension",
            "nameLocation": "2561:24:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15014,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15013,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "2602:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15016,
                  "src": "2586:19:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15012,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2586:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2585:21:36"
            },
            "returnParameters": {
              "id": 15015,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2615:0:36"
            },
            "scope": 15197,
            "src": "2552:64:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15017,
              "nodeType": "StructuredDocumentation",
              "src": "2622:172:36",
              "text": " @dev set the baseTokenURI of an extension.  Can only be called by extension.\n For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
            },
            "functionSelector": "82dcc0c8",
            "id": 15024,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseTokenURIExtension",
            "nameLocation": "2808:24:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15022,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15019,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "2849:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15024,
                  "src": "2833:19:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15018,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2833:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15021,
                  "mutability": "mutable",
                  "name": "identical",
                  "nameLocation": "2859:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15024,
                  "src": "2854:14:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15020,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2854:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2832:37:36"
            },
            "returnParameters": {
              "id": 15023,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2878:0:36"
            },
            "scope": 15197,
            "src": "2799:80:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15025,
              "nodeType": "StructuredDocumentation",
              "src": "2885:233:36",
              "text": " @dev set the common prefix of an extension.  Can only be called by extension.\n If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\"\n Useful if you want to use ipfs/arweave"
            },
            "functionSelector": "66d1e9d0",
            "id": 15030,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIPrefixExtension",
            "nameLocation": "3132:26:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15028,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15027,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "3175:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15030,
                  "src": "3159:22:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15026,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3159:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3158:24:36"
            },
            "returnParameters": {
              "id": 15029,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3191:0:36"
            },
            "scope": 15197,
            "src": "3123:69:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15031,
              "nodeType": "StructuredDocumentation",
              "src": "3198:114:36",
              "text": " @dev set the tokenURI of a token extension.  Can only be called by extension that minted token."
            },
            "functionSelector": "e92a89f6",
            "id": 15038,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIExtension",
            "nameLocation": "3326:20:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15033,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3355:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15038,
                  "src": "3347:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15032,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3347:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15035,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "3380:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15038,
                  "src": "3364:19:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15034,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3364:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3346:38:36"
            },
            "returnParameters": {
              "id": 15037,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3393:0:36"
            },
            "scope": 15197,
            "src": "3317:77:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15039,
              "nodeType": "StructuredDocumentation",
              "src": "3400:134:36",
              "text": " @dev set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token."
            },
            "functionSelector": "61e5bc6b",
            "id": 15048,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIExtension",
            "nameLocation": "3548:20:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15046,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15042,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "3586:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15048,
                  "src": "3569:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15040,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "3569:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15041,
                    "nodeType": "ArrayTypeName",
                    "src": "3569:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15045,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "3613:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15048,
                  "src": "3595:21:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15043,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "3595:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 15044,
                    "nodeType": "ArrayTypeName",
                    "src": "3595:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3568:49:36"
            },
            "returnParameters": {
              "id": 15047,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3626:0:36"
            },
            "scope": 15197,
            "src": "3539:88:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15049,
              "nodeType": "StructuredDocumentation",
              "src": "3633:187:36",
              "text": " @dev set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin.\n For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
            },
            "functionSelector": "30176e13",
            "id": 15054,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setBaseTokenURI",
            "nameLocation": "3834:15:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15051,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "3866:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15054,
                  "src": "3850:19:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15050,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3850:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3849:21:36"
            },
            "returnParameters": {
              "id": 15053,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3879:0:36"
            },
            "scope": 15197,
            "src": "3825:55:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15055,
              "nodeType": "StructuredDocumentation",
              "src": "3886:248:36",
              "text": " @dev set the common prefix for tokens with no extension.  Can only be called by owner/admin.\n If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\"\n Useful if you want to use ipfs/arweave"
            },
            "functionSelector": "99e0dd7c",
            "id": 15060,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURIPrefix",
            "nameLocation": "4148:17:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15058,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15057,
                  "mutability": "mutable",
                  "name": "prefix",
                  "nameLocation": "4182:6:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15060,
                  "src": "4166:22:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15056,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4166:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4165:24:36"
            },
            "returnParameters": {
              "id": 15059,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4198:0:36"
            },
            "scope": 15197,
            "src": "4139:60:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15061,
              "nodeType": "StructuredDocumentation",
              "src": "4205:106:36",
              "text": " @dev set the tokenURI of a token with no extension.  Can only be called by owner/admin."
            },
            "functionSelector": "162094c4",
            "id": 15068,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURI",
            "nameLocation": "4325:11:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15066,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15063,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "4345:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15068,
                  "src": "4337:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15062,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4337:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15065,
                  "mutability": "mutable",
                  "name": "uri",
                  "nameLocation": "4370:3:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15068,
                  "src": "4354:19:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_calldata_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 15064,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4354:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4336:38:36"
            },
            "returnParameters": {
              "id": 15067,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4383:0:36"
            },
            "scope": 15197,
            "src": "4316:68:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15069,
              "nodeType": "StructuredDocumentation",
              "src": "4390:114:36",
              "text": " @dev set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin."
            },
            "functionSelector": "aafb2d44",
            "id": 15078,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setTokenURI",
            "nameLocation": "4518:11:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15072,
                  "mutability": "mutable",
                  "name": "tokenIds",
                  "nameLocation": "4547:8:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15078,
                  "src": "4530:25:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15070,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "4530:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15071,
                    "nodeType": "ArrayTypeName",
                    "src": "4530:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15075,
                  "mutability": "mutable",
                  "name": "uris",
                  "nameLocation": "4575:4:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15078,
                  "src": "4557:22:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15073,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "4557:6:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 15074,
                    "nodeType": "ArrayTypeName",
                    "src": "4557:8:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4529:51:36"
            },
            "returnParameters": {
              "id": 15077,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4589:0:36"
            },
            "scope": 15197,
            "src": "4509:81:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15079,
              "nodeType": "StructuredDocumentation",
              "src": "4596:94:36",
              "text": " @dev set a permissions contract for an extension.  Used to control minting."
            },
            "functionSelector": "f0cdc499",
            "id": 15086,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setMintPermissions",
            "nameLocation": "4704:18:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15084,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15081,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "4731:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15086,
                  "src": "4723:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15080,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4723:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15083,
                  "mutability": "mutable",
                  "name": "permissions",
                  "nameLocation": "4750:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15086,
                  "src": "4742:19:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15082,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4742:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4722:40:36"
            },
            "returnParameters": {
              "id": 15085,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4771:0:36"
            },
            "scope": 15197,
            "src": "4695:77:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15087,
              "nodeType": "StructuredDocumentation",
              "src": "4778:158:36",
              "text": " @dev Configure so transfers of tokens created by the caller (must be extension) gets approval\n from the extension before transferring"
            },
            "functionSelector": "ac0c8cfa",
            "id": 15092,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setApproveTransferExtension",
            "nameLocation": "4950:27:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15090,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15089,
                  "mutability": "mutable",
                  "name": "enabled",
                  "nameLocation": "4983:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15092,
                  "src": "4978:12:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 15088,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4978:4:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4977:14:36"
            },
            "returnParameters": {
              "id": 15091,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5000:0:36"
            },
            "scope": 15197,
            "src": "4941:60:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15093,
              "nodeType": "StructuredDocumentation",
              "src": "5007:58:36",
              "text": " @dev get the extension of a given token"
            },
            "functionSelector": "239be317",
            "id": 15100,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "tokenExtension",
            "nameLocation": "5079:14:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15096,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15095,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5102:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15100,
                  "src": "5094:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15094,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5094:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5093:17:36"
            },
            "returnParameters": {
              "id": 15099,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15098,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15100,
                  "src": "5134:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15097,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5134:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5133:9:36"
            },
            "scope": 15197,
            "src": "5070:73:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15101,
              "nodeType": "StructuredDocumentation",
              "src": "5149:45:36",
              "text": " @dev Set default royalties"
            },
            "functionSelector": "332dd1ae",
            "id": 15110,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRoyalties",
            "nameLocation": "5208:12:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15108,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15104,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "5248:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15110,
                  "src": "5221:36:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15102,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5221:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15103,
                    "nodeType": "ArrayTypeName",
                    "src": "5221:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15107,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "5278:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15110,
                  "src": "5259:30:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15105,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5259:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15106,
                    "nodeType": "ArrayTypeName",
                    "src": "5259:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5220:70:36"
            },
            "returnParameters": {
              "id": 15109,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5299:0:36"
            },
            "scope": 15197,
            "src": "5199:101:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15111,
              "nodeType": "StructuredDocumentation",
              "src": "5306:48:36",
              "text": " @dev Set royalties of a token"
            },
            "functionSelector": "20e4afe2",
            "id": 15122,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRoyalties",
            "nameLocation": "5368:12:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15120,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15113,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5389:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15122,
                  "src": "5381:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15112,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5381:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15116,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "5425:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15122,
                  "src": "5398:36:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15114,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5398:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15115,
                    "nodeType": "ArrayTypeName",
                    "src": "5398:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15119,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "5455:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15122,
                  "src": "5436:30:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15117,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5436:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15118,
                    "nodeType": "ArrayTypeName",
                    "src": "5436:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5380:87:36"
            },
            "returnParameters": {
              "id": 15121,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5476:0:36"
            },
            "scope": 15197,
            "src": "5359:118:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15123,
              "nodeType": "StructuredDocumentation",
              "src": "5483:53:36",
              "text": " @dev Set royalties of an extension"
            },
            "functionSelector": "b0fe87c9",
            "id": 15134,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setRoyaltiesExtension",
            "nameLocation": "5550:21:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15125,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "5580:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15134,
                  "src": "5572:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15124,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5572:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15128,
                  "mutability": "mutable",
                  "name": "receivers",
                  "nameLocation": "5618:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15134,
                  "src": "5591:36:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15126,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5591:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15127,
                    "nodeType": "ArrayTypeName",
                    "src": "5591:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15131,
                  "mutability": "mutable",
                  "name": "basisPoints",
                  "nameLocation": "5648:11:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15134,
                  "src": "5629:30:36",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15129,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5629:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15130,
                    "nodeType": "ArrayTypeName",
                    "src": "5629:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5571:89:36"
            },
            "returnParameters": {
              "id": 15133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5669:0:36"
            },
            "scope": 15197,
            "src": "5541:129:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15135,
              "nodeType": "StructuredDocumentation",
              "src": "5676:92:36",
              "text": " @dev Get royalites of a token.  Returns list of receivers and basisPoints"
            },
            "functionSelector": "bb3bafd6",
            "id": 15146,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getRoyalties",
            "nameLocation": "5782:12:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15138,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15137,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5803:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15146,
                  "src": "5795:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15136,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5795:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5794:17:36"
            },
            "returnParameters": {
              "id": 15145,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15141,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15146,
                  "src": "5835:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15139,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "5835:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15140,
                    "nodeType": "ArrayTypeName",
                    "src": "5835:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15144,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15146,
                  "src": "5861:16:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15142,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "5861:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15143,
                    "nodeType": "ArrayTypeName",
                    "src": "5861:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5834:44:36"
            },
            "scope": 15197,
            "src": "5773:106:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b9c4d9fb",
            "id": 15154,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getFeeRecipients",
            "nameLocation": "5949:16:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15149,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15148,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "5974:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15154,
                  "src": "5966:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15147,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5966:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5965:17:36"
            },
            "returnParameters": {
              "id": 15153,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15152,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15154,
                  "src": "6006:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15150,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6006:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15151,
                    "nodeType": "ArrayTypeName",
                    "src": "6006:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6005:26:36"
            },
            "scope": 15197,
            "src": "5940:92:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0ebd4c7f",
            "id": 15162,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getFeeBps",
            "nameLocation": "6046:9:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15157,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15156,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6064:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15162,
                  "src": "6056:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15155,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6056:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6055:17:36"
            },
            "returnParameters": {
              "id": 15161,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15160,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15162,
                  "src": "6096:13:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15158,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "6096:4:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15159,
                    "nodeType": "ArrayTypeName",
                    "src": "6096:6:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6095:15:36"
            },
            "scope": 15197,
            "src": "6037:74:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "d5a06d4c",
            "id": 15173,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getFees",
            "nameLocation": "6125:7:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15164,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6141:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15173,
                  "src": "6133:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15163,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6133:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6132:17:36"
            },
            "returnParameters": {
              "id": 15172,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15168,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15173,
                  "src": "6173:24:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_memory_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15166,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "6173:15:36",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 15167,
                    "nodeType": "ArrayTypeName",
                    "src": "6173:17:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15171,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15173,
                  "src": "6199:16:36",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 15169,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "6199:7:36",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 15170,
                    "nodeType": "ArrayTypeName",
                    "src": "6199:9:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6172:44:36"
            },
            "scope": 15197,
            "src": "6116:101:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "2a55205a",
            "id": 15184,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "royaltyInfo",
            "nameLocation": "6231:11:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15178,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15175,
                  "mutability": "mutable",
                  "name": "tokenId",
                  "nameLocation": "6251:7:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15184,
                  "src": "6243:15:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15174,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6243:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15177,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "6268:5:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15184,
                  "src": "6260:13:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15176,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6260:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6242:32:36"
            },
            "returnParameters": {
              "id": 15183,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15180,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15184,
                  "src": "6298:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15179,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6298:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15182,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15184,
                  "src": "6307:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15181,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6307:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6297:18:36"
            },
            "scope": 15197,
            "src": "6222:94:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15185,
              "nodeType": "StructuredDocumentation",
              "src": "6322:75:36",
              "text": " @dev Set the default approve transfer contract location."
            },
            "functionSelector": "596798ad",
            "id": 15190,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "setApproveTransfer",
            "nameLocation": "6411:18:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15187,
                  "mutability": "mutable",
                  "name": "extension",
                  "nameLocation": "6438:9:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 15190,
                  "src": "6430:17:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15186,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6430:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6429:19:36"
            },
            "returnParameters": {
              "id": 15189,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6457:0:36"
            },
            "scope": 15197,
            "src": "6402:56:36",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 15191,
              "nodeType": "StructuredDocumentation",
              "src": "6465:75:36",
              "text": " @dev Get the default approve transfer contract location."
            },
            "functionSelector": "22f374d0",
            "id": 15196,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getApproveTransfer",
            "nameLocation": "6554:18:36",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15192,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6572:2:36"
            },
            "returnParameters": {
              "id": 15195,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15194,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 15196,
                  "src": "6598:7:36",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15193,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6598:7:36",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6597:9:36"
            },
            "scope": 15197,
            "src": "6545:62:36",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 15198,
        "src": "191:6418:36",
        "usedErrors": []
      }
    ],
    "src": "33:6577:36"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.19+commit.7dd6d404.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.12",
  "updatedAt": "2023-03-22T17:07:39.752Z",
  "devdoc": {
    "details": "Core creator interface",
    "kind": "dev",
    "methods": {
      "blacklistExtension(address)": {
        "details": "blacklist an extension.  Can only be called by contract owner or admin. This function will destroy all ability to reference the metadata of any tokens created by the specified extension. It will also unregister the extension if needed. Returns True if removed, False if already removed."
      },
      "getApproveTransfer()": {
        "details": "Get the default approve transfer contract location."
      },
      "getExtensions()": {
        "details": "gets address of all extensions"
      },
      "getRoyalties(uint256)": {
        "details": "Get royalites of a token.  Returns list of receivers and basisPoints"
      },
      "registerExtension(address,string)": {
        "details": "add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added."
      },
      "registerExtension(address,string,bool)": {
        "details": "add an extension.  Can only be called by contract owner or admin. extension address must point to a contract implementing ICreatorExtension. Returns True if newly added, False if already added."
      },
      "setApproveTransfer(address)": {
        "details": "Set the default approve transfer contract location."
      },
      "setApproveTransferExtension(bool)": {
        "details": "Configure so transfers of tokens created by the caller (must be extension) gets approval from the extension before transferring"
      },
      "setBaseTokenURI(string)": {
        "details": "set the baseTokenURI for tokens with no extension.  Can only be called by owner/admin. For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
      },
      "setBaseTokenURIExtension(string)": {
        "details": "set the baseTokenURI of an extension.  Can only be called by extension."
      },
      "setBaseTokenURIExtension(string,bool)": {
        "details": "set the baseTokenURI of an extension.  Can only be called by extension. For tokens with no uri configured, tokenURI will return \"uri+tokenId\""
      },
      "setMintPermissions(address,address)": {
        "details": "set a permissions contract for an extension.  Used to control minting."
      },
      "setRoyalties(address[],uint256[])": {
        "details": "Set default royalties"
      },
      "setRoyalties(uint256,address[],uint256[])": {
        "details": "Set royalties of a token"
      },
      "setRoyaltiesExtension(address,address[],uint256[])": {
        "details": "Set royalties of an extension"
      },
      "setTokenURI(uint256,string)": {
        "details": "set the tokenURI of a token with no extension.  Can only be called by owner/admin."
      },
      "setTokenURI(uint256[],string[])": {
        "details": "set the tokenURI of multiple tokens with no extension.  Can only be called by owner/admin."
      },
      "setTokenURIExtension(uint256,string)": {
        "details": "set the tokenURI of a token extension.  Can only be called by extension that minted token."
      },
      "setTokenURIExtension(uint256[],string[])": {
        "details": "set the tokenURI of a token extension for multiple tokens.  Can only be called by extension that minted token."
      },
      "setTokenURIPrefix(string)": {
        "details": "set the common prefix for tokens with no extension.  Can only be called by owner/admin. If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\" Useful if you want to use ipfs/arweave"
      },
      "setTokenURIPrefixExtension(string)": {
        "details": "set the common prefix of an extension.  Can only be called by extension. If configured, and a token has a uri set, tokenURI will return \"prefixURI+tokenURI\" Useful if you want to use ipfs/arweave"
      },
      "supportsInterface(bytes4)": {
        "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
      },
      "tokenExtension(uint256)": {
        "details": "get the extension of a given token"
      },
      "unregisterExtension(address)": {
        "details": "add an extension.  Can only be called by contract owner or admin. Returns True if removed, False if already removed."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}